Tech

심심해서 분석해본 안드로이드 악성코드

악성코드 문자 SMS

요즘에 악성앱들이 참 교묘해졌습니다. 청첩장이나 전화요금 심지어 고소장으로 둔갑해서 날아오니 말이죠. 많은 신문 기사에서는 URL클릭만해도 ‘안드로이드 악성코드’가 ‘감염’된다고 말합니다.?이 때문에 문자메시지로 날아온 URL 링크 클릭하기도 겁난다고 합니다.

한순간 부주의에… 눈뜨고 코베이는 스마트폰 범죄 – 머니투데이, 2013.05.23
서울시, ‘스마트폰 무료쿠폰 문자에 속지마세요’ – 뉴시스, 2013.01.21

하지만?한편으론 그렇게 겁낼필요가 없는게?안드로이드에서는 악성코드도 일종의 프로그램이기 때문에 APK 형태로 설치해야 하는 것이고 링크를 클릭했다고 해도 이 APK만 안깔면 감염따윈 없는 겁니다. 그렇기 때문에 평소에 APK를 직접 설치하는 습관을 들이지 마세요 : )?암튼 이런 악성코드는 여러가지 유형으로 사람들에게?퍼뜨리는데 저한테는 요즘 청첩장 형태로 날아오더라구요. ㅎㅎ

악성코드 문자 SMS
누구세요?

이런 SMS가 계속 날아와서 빡쳐서 분석해봤습니다. 바쁜 와중에도 귀한 시간 1시간을 쓰면서… 먼저 패키지 네임입니다. ?cn.dd1d.demo0928입니다.

<manifest android:versionCode="1" android:versionName="1.0" package="cn.dd1d.demo0928"
xmlns:android="http://schemas.android.com/apk/res/android">

AndroidManifest.xml을 보면 수신되는 SMS를 읽어들입니다. 또한 장비를 제어할 수 있는 BIND_DEVICE_ADMIN 권한을 가지네요.

<receiver android:name="cn.dd1d.broadcast.SMSBroadcastReceiver">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver android:label="sample_device_admin" android:name="cn.dd1d.service.Lycreen" android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin" android:resource="@xml/lock_screen" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
<service android:name="cn.dd1d.service.SendService" />

게다가 어마어마한 권한을 요구합니다. SMS을 읽고 받고 쓰고는 기본이요, 연락처를 읽고 쓰고 무슨 앱이 실행되고 있는지, 소리 녹음도 하며, ?이 폰의 전화번호가 무엇인지 등 거의 모든 것을 다 할 수 있네요. 아 그런데 여기서 중국어가 튀어나오는군요.

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.READ_USER_DICTIONARY" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />//?取?系人?限
<uses-permission android:name="android.permission.WRITE_CONTACTS" />//??系人?限
<uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

중국에서 작성된 안드로이드 악성코드

“?取?系人?限” – 연락처 읽기 권한이란 뜻이고 “??系人?限”- 연락처 쓰기 권한이라는 뜻입니다. 이런 중국어는 소스파일 곳곳에서 찾을 수 있었습니다.

System.out.println("\u63A5\u6536\u5230\u6D88\u606F\u77ED\u4FE1");
smsobserver.sendSMS(s, "\u5168\u90E8\u8BB0\u5F55\u53D1\u9001\u6210\u529F\u8BF7\u67E5\u6536");

소스 코드 내 중국어는 전부 UTF-16으로 인코딩되어 있었습니다. ?”接收到消息短信” : SMS 수신 받음,??”全部???送成功??收”: 전부 기록 전송 성공.확인해주삼 .. 이런 코드가 곳곳에 널려 있었습니다.

이 앱은 무엇을 하는가?

다른 일로 바쁜 관계로 대략적으로만 살펴봤습니다. 먼저, 수신되는 SMS를 가로채는게 아니라 자신도 같이 읽습니다. 읽고나서 그 내용과 전화번호를 JavaMail을 이용해서 특정 이메일 주소로 보냅니다. 또한 전화가 오면 몰래 녹음해서 파일에 저장시킨 후, 나중에 전송을 하는군요. 누구와 얼마나 통화를 했는지도 보냅니다.

꼴에 table 태그까지 써가면서 예쁘게(?) 정보를 만들어서 특정 메일 주소로 전송하더군요. ?정보를 전달할 때 메일의 제목을 보니 좀 섬짓하긴 하네요.

“手机?探” (핸드폰 스파이)

Leave a Reply

Leave a Reply

Your email address will not be published. Required fields are marked *