2013년 8월 9일 금요일

청첩장 피싱 메시지 리버스 엔지니어링

모르는 번호로부터의 청첩장, 등으로 소액결제 또는 피싱에 많이들 당한다고 한다.
당하지도 않을 뿐더러 청첩장 메시지는 받은 적이 없었는데 어제 나도 드디어 '북한, 이게 끝이 아니다' 라는 내용과 URL이 담긴 메시지를 수신.
클릭해보니 dulala.apk 라는 놈을 다운로드 / 설치 유도하는 것이 보여서 이놈들 혼내줄 방법을 찾아볼까... 하다가 까발려 보기로 했다.

2013 서울 디지털포럼에서 '보통 사람의 잉여로움으로 세상에 기여하자' 라고 주장한 모 연사의 말도 좀 기억이 나고. 오늘은 시간이 잉여롭게 남기도 했고 ㅠㅠ

1. reverse engineering을 위해 쓴 툴은 아래 세가지
o apktool: https://code.google.com/p/android-apktool/
 - apktool d xxx.apk
 - 필요에 따라 resource, smali 등을 편집 또는 re-packing

o dex2jar: https://code.google.com/p/dex2jar/
 - apk의 압축을 풀고, dex2jar classes.dex를 하면 jar 파일이 생성된다.

o jd-gui: http://java.decompiler.free.fr/?q=jdgui
 - dex2jar 실행물로 생성된 jar 파일을 jd-gui로 열고 source로 저장 가능.

2. 리소스 파일들은 주요 은행앱의 리소스를 그대로 사용했다.


3. 널리 알려진 바와 같이 보안카드 번호 전체 입력을 유도한다.


4. 맞춤법에도 안맞는 어처구니 없는 피싱 메시지들을 사용함.
아래는 소스중 일부.
private void setupView()  {
    this.mDPM = ((DevicePolicyManager)getSystemService("device_policy"));
    this.mAM = ((ActivityManager)getSystemService("activity"));
    this.mDeviceComponentName = new ComponentName(this, deviceAdminReceiver.class);
    Intent localIntent = new Intent("android.app.action.ADD_DEVICE_ADMIN");
    localIntent.putExtra("android.app.extra.DEVICE_ADMIN", this.mDeviceComponentName);
    localIntent.putExtra("android.app.extra.ADD_EXPLANATION", "암호화 된 데이터 전송입니다, 귀하의 개인 정보는 꾸준한 보호받을수잇습니다");
    startActivityForResult(localIntent, 1);
  }
급했나, 아니면 조선족이 만들었나. 나보고 만들으라면 절대 이렇게 안만든다 ;;; 

5. 이런 세상의 말종같은 놈들의 서버라도 좀 죽여볼까 했는데 이미 죽어서 더는 할게 없고. 


뜯어봐도 너무 허접하다는 것 외에는 특별한 감흥은 없었다. 
보안은 시스템보다는 결국엔 역시 사람이 더 중요할 수 밖에 없다는 생각이 좀 들었고. 

그냥.... 잘 모르시는 분들은 그냥 URL을 클릭하지 마시는게 상책, 대충 아는 분들도 설치까지 시도하는 건 한번 고민해보시고, 

이런 애들 혼내줄 좋은 방법이 있으신 분은 공유해주세요.