아래 내용은 연구 목적으로 작성되었으며, 해당 소스코드를 악의적인 목적으로 사용하는것은 절대 엄금합니다. 악의적으로 사용하여 발생할수 있는 모든 문제는 사용한 사용자에게 있습니다. |
1. 개요
miracle.apk는 아래와 같은 광고 메시지를 통해 전파되고 있다.
Filename: | miracle.apk |
MD5: | 121372b7c1b3b7395fc243074eb16ea3 |
SHA-1: | 8d951a858214eeee7a31a55335bc76bacc8617d1 |
File Size: | 40733 Bytes |
2. 분석 내용
디바이스 관리자에 등록이 되면, 앱 서랍에 존재하였던 miracle 아이콘은 삭제되며, 해당 앱은 백그라운드에서 계속 실행 되고 있다.
miracle.apk는 아래와 같이 7가지 권한 (User Permission)을 요구한다.
유저 권한 (User Permission) |
android.permission.INTERNET android.permission.READ_PHONE_STATE android.permission.READ_SMS android.permission.SEND_SMS android.permission.RECEIVE_BOOT_COMPLETED android.permission.RECEIVE_SMS android.permission.WRITE_SETTINGS |
7가지 권한 (User Permission) 중 빨간색으로 표시된 권한이 악의적인 목적으로 사용될 수 있는 권한으로 내용은 아래와 같다.
권한 (User Permission) |
내 용 |
android.permission.INTERNET |
응용 프로그램(앱)이 네트워크 소켓을 만들 수 있도록 한다. |
android.permission.READ_PHONE_STATE |
응용 프로그램이 휴대 전화의 상태를 읽을 수 있도록 허용 한다. 이 경우 악성 앱이 전화 번호 및 IMEI, 통화 상태 등의 정보를 수집할 수 있다. |
android.permission.SEND_SMS |
응용 프로그램이 SMS 메시지를 보낼 수 있도록 한다. 이 경우 악성 앱이 사용자의 확인 없이 메시지를 전송하여 요금을 부과 할 수 있다. |
android.permission.READ_SMS |
응용 프로그램이 휴대 전화 또는 SIM 카드에 저장되어 있는 SMS 메시지를 읽을 수 있도록 허용한다. 이 경우 악성 앱이 기밀 메시지를 읽을 수 있다. |
android.permission.RECEIVE_SMS |
응용프로그램이 SMS 메시지를 받고 처리 할 수 있도록 허용 한다. 이 경우 악성 앱이 메시지를 모니터링 하거나 사용자가 SMS 메시지를 읽기 전에 삭제할 수 있다. |
아래는 MainActivity 클래스 소스코드의 일부로 APP이 실행되면, getPackageManager().setComponentEnabledSetting을 이용하여 앱 서랍에 존재하는 아이콘을 삭제한다. 다음으로 SharedPreferences를 이용하여, 아래와 같이 UI 상태를 저장한다. 안드로이드는 메모리가 부족할 경우 메모리에 올라와있는 앱들 중 아무거나 강제 종료시킬 가능성이 존재한다. 액티비티 및 어플리케이션이 메모리 부족 등으로 인해 강제 종료된 후, 사용자가 다시 해당 앱을 실행시켰을 때 종료되기 전 그대로 다시 복구시켜주는 역할을 바로 SharedPreferences를 이용해서 저장해 둔다.
|
아래는 RegDPMActivity 클래스의 소스코드 일부이다. RegDPMActivity 클래스에서는 DevicePolicyManager의 isAdminActive를 이용하여, 디바이스 관리자 권한이 활성화 되어 있는지 확인한다. 만약 디바이스 관리자 권한이 활성화 되어 있지 않으면 디바이스 권한 활성화를 요구한다.
|
아래는 Util 클래스의 소스코드 일부 이다. Util 클래스에서는 TelephonyManager를 이용하여 안드로이드 폰의 정보를 가져온다. 사용된 TelephonyManager의 매소드는 getLine1Number(), getSimSerialNumber(), getDeviceId(), getNetworkOperatorName()이며, 각 매소드의 역할은 전화번호, 시리얼번호, 디바이스 ID, 현재 등록된 망 사업자 명을 가져온다.
|
|
TelephonyManager를 이용하여 가져온 정보는 아래와 같이 서버로 전송한다.
|
아래는 SMSBroadcastReceiver 클래스의 소스코드 일부이다. SMSBroadcastReceiver 클래스는 SMS 메시지를 모니터링 하고 있다가 SMS 메시지가 도착시 Util 클래스에서 확인한 전화번호를 이용하여, SMS 메세지를 보낼 수 있는지 서버로 전송한다. SMS 메시지를 보낼 수 있는 상태 이면, SmsMessage의 getOriginatingAddress()를 이용하여 SMS 문자 메시지를 보낸 측의 전화번호를 수집한다. 다음으로 SmsMessage의 getMessageBody()를 이용하여, 수신된 SMS 메시지의 본문 내용을 수집한다. 수집된 보낸 측 전화번호와 본문 내용은 miracle.apk에 감염된 디바이스 전화번호와 함께 다시한번 서버로 전송된다.
|
소스코드내에서 확인된 IP주소는 중국이며, 현재는 차단된 상태이다.
'Analysis' 카테고리의 다른 글
[Android Malware] mervice.apk 분석 (0) | 2013.12.18 |
---|---|
[Android Malware] App.apk 분석 (0) | 2013.11.15 |
기본적인 Telnet Packet 분석 (0) | 2013.07.12 |
[Android Malware] 스타벅스 쿠폰 위장 악성 앱 (sb.apk) 분석 (0) | 2013.07.01 |
[Android Malware] 알약 모바일 백신 위장 변종 (danal.apk) 분석 (0) | 2013.05.29 |