악성코드분석보고서 학번 20156161 작성자김진홍작성일 2015 년 5 월 14 일 Keyword Downloader, Mouse cursor modification, Registry modification 1. 개요 1.1 요약 해당악성코드는악성코드를다운로드하는역할을하는 Dropper.exe, 실제악성행위를유발하는 malware.exe, reverse connection 을요청하는 nc.exe 로구성되어있다. 최초유포된 Dropper.exe를실행하게되면명령에따라지정된 URL에서실행에필요한 malware.exe와 nc.exe excutenc.vbs를다운로드하고다운로드받은파일의 URL 캐시를제거한뒤실행한다. malware.exe가실행되면레지스트리값들의수정을통해재부팅시에도악성행위를실행하도록하고, 사용자에게공격이일어났다는것을보여주기위해서마우스위치를임의로조작하며, Internet Explorer를실행한뒤 gsis.kaist.ac.kr로이동한다. 또한 nc.exe 파일을실행시켜 143.248.102.118:100 번지로 SYN 패킷을보내게된다. 1.2 악성코드기본정보 악성코드명 Dropper.exe 분류 Downloader 샘플수집일 2015 년 5 월 13 일형태 PE EXE 파일크기 33.0KB 대상플랫폼 Win32 대표증상감염, 설치경로 MD5 SHA-1 SHA-256 ➀ malware.exe와 maiware.exe 추가파일다운로드 ➁ 디렉토리생성 ➂ URLCacheEntry제거팀별분배 60db683a295d561adebe243659aa2f92 36f28cfa42700d499245b5003822852050ba0cf8 239ba6b794f55c3aa08978c02269b649a05716744df863d742af80d1af9492fe KAIST Graduate School of Information Security Malware Analysis Report 1
악성코드명 malware.exe 분류 Trojan 샘플수집일 2015 년 5 월 13 일형태 PE EXE 파일크기 73.5KB 대상플랫폼 Win32 대표적증상감염, 설치경로 MD5 SHA-1 SHA-256 ➀ cipher.exe 실행, 마우스커서위치변경 ➁ nc.exe와 excutenc.vbs 파일추가다운로드 ➂ run 레지스트리에 excutenc 등록, ➃ 현재열려있는윈도우가 IEFrame이아니면프로세스종료후 gsis.kaist.ac.kr 홈페이지열기. Dropper.exe를통한추가파일다운로드 040a70fc7c40fee389bfa8a75f5218c2 1dbfea66e6306ccd882629cd4eed863359010544 c366861918e41e7bf906bebd8871e335310c0904cf21cc2226b96f357d9bb148 악성코드명 excutenc.vbs 분류 샘플수집일 2015 년 5 월 13 일형태 vbs 파일크기 1KB 대상플랫폼 Win32 대표적증상감염, 설치경로 MD5 SHA-1 SHA-256 nc.exe 실행을통해 143.248.102.118:100으로패킷전송 malware.exe를통한추가파일다운로드 9a8ddd83b54a66ab55091ba4102ad572 f7e3fcfb0f49c5cbdd4c6b97b5b05b64f25745ff cf66b39cab1c1bacc5c80b0af39392b4bec2d8a8689cc649951f7ab3af4c5743 악성코드명 nc.exe 분류 Trojan 샘플수집일 2015 년 5 월 13 일형태 PE EXE 파일크기 58KB 대상플랫폼 Win32 대표적증상감염, 설치경로 MD5 SHA-1 SHA-256 상용프로그램임.(netcat) malware.exe를통한추가파일다운로드 e0fb946c00b140693e3cf5de258c22a1 57f0839433234285cc9df96198a6ca58248a4707 be4211fe5c1a19ff393a2bcfa21dad8d0a687663263a63789552bda446d9421b KAIST Graduate School of Information Security Malware Analysis Report 2
2. 설명 2.1 악성코드증상요약 1) 마우스조작 : 마우스를화면의중간에위치하게함.( 프로그램실행 -> 마우스조작 ) [ 그림 1] 마우스위치조작 2) IE 실행 : 인터넷익스프롤러가열려있을경우닫고, gsis.kaist.ac.kr 로이동하는페이지를반복해서 띄움.( 프로그램실행 -> IE 실행 -> IE 가닫히고 gsis 홈페이지반복실행 ) [ 그림 2] IE 실행 KAIST Graduate School of Information Security Malware Analysis Report 3
2.2 악성코드상세분석 (1) IDA 를사용한정적분석 1) Dropper.exe - malware.exe 다운로드, 실행 ➀ 윈도우이름에 AlYac 이라고이름을붙임. ➀ malware.exe 와 maiware.exe 를 C:\\windows\\system32 에다운받고있음. ➁ SetFileAttributesA api 를이용하여숨김파일로지정함. ➂ MakeSureDirectoryPathExists api 를이용하여 syste m32 디렉토리를생성 ➀ 다운받아숨겨놓은 malware.exe 를실행시킴 ➁ Url 캐시를지움. KAIST Graduate School of Information Security Malware Analysis Report 4
[ 사용된 trick] ➀ syste m32 가아닌 system32 에있는 malware 를실행시키면위와같은창이뜸. [ 그림 3] system32 폴더내부 [ 그림 4] 가짜 malware.exe ➁ 악성코드에서실행하는 malware 는 syste m32 에있는 malware.exe 임. [ 그림 5] 진짜 malware.exe KAIST Graduate School of Information Security Malware Analysis Report 5
2) malware.exe ➀ 프로세스모니터라고이름붙임 ➀ cipher.exe 실행시킴.( 프로그램이실행될뿐악성행위없음 ) ➀ 커서포지션을화면의중앙으로위치시킴 ➁ 메소드 401220() 실행 (nc.exe excutenc.vbs 다운과레지스트리변조메소드 ) KAIST Graduate School of Information Security Malware Analysis Report 6
➀ 무한루프를내부에서 EnumWindows(EnumFunc) 실행 (EnumWindws 는운영체제상의모든윈도우목록을조사해서콜백함수로넘김.) ➁ 마우스커서의위치를계산하면서커서의위치를계속해서설정. (x 좌표제곱 + y 좌표제곱 ) 을 루트를씌우고 5 로나눈값을 x 와 y 좌표에더하면서커서를설정함. KAIST Graduate School of Information Security Malware Analysis Report 7
[in 401220()] ➀ nc.exe 와 excutenc.vbs 를다운받을 URL 을 memcpy ➁ 기록된문자열을통해파일다운로드 ➀ run 레지스트리를변조하여 excutenc.vbs 를실행시킴 ➁ 해당레지스트리에등록된 value KAIST Graduate School of Information Security Malware Analysis Report 8
[ 그림 6] excutenc.vbs 내용 ➀ excutenc.vbs 파일내용을실행시킴. ➁ nc.exe는 netcat 프로그램이며, nettcat(nc.exe) 과관련된내용은다음을참조. (http://noon.tistory.com/346) ➀.vbs 파일의내용을직접실행시킴. [ 그림 7] vbs 내용을실행 [ 그림 8] 실행후 netstat 결과 ➁ netstat 으로확인해본결과 143.248.102.118:100 의 state 에서 SYN_SENT 를확인. KAIST Graduate School of Information Security Malware Analysis Report 9
[ 그림 9] 실행후 wireshark 캡쳐결과 ➂ Wireshark 를통해본네트워크상의캡쳐된패킷내용 Flags:0x02(SYN) ➃ 해당 ip:port 로연결을설정하는커맨드임을알수있음.( 백도어로의이용추측 ) KAIST Graduate School of Information Security Malware Analysis Report 10
[EnumFunc] 메소드 ➀ 활성화된창의 classname 을얻어옴. ➁ 이값이 IEFrame 과같지않을경우종료시킴. ➂ gsis.kaist.ac.kr 을인자로하여 iexplore.exe 를실행시킴. KAIST Graduate School of Information Security Malware Analysis Report 11
(2) 올리디버거를이용한동적분석 [ 그림 10] 올리디버거 api에 break 설정먼저 Dropper에서쓰이는 API들의목록이다. API목록에오른쪽버튼을눌러 Set breakpoint on every reference를하여모든호출에 break를건다. 나머지도같은방법으로한다. F8 : step over(call 내부로진입하지않고수행한다.) F7: step into(call 내부로진입한다.) KAIST Graduate School of Information Security Malware Analysis Report 12
(1) Dropper.exe [ 그림 11] Dropper.exe 분석시작 [ 그림 12] stack 내용 위그림은 URL 주소를저장하고 URLDownloadToFileA api 를 call 하기직전의코드를보여주고있으며 call 직전 stack 영역에쌓여있는파라미터들을보여주고있다. [ 그림 13] SetFileAttributesA call 부분 그리고 setfileattributesa 를통해다운받은 malware.exe 를숨김파일로설정해주고있다. KAIST Graduate School of Information Security Malware Analysis Report 13
[ 그림 14] URLDownloadToFileA 호출직전 [ 그림 15] stack 의모습 위그림은 URLDownloadToFileA 로다른 malware.exe 를받는코드를보여주고있다. 그아래그림은 call 직전의 stack 의모습이다. [ 그림 16] shellexecutea 로 malware.exe 를실행 KAIST Graduate School of Information Security Malware Analysis Report 14
[ 그림 17] stack 의모습 [ 그림 18] DeleteUrlCacheEntryA shellexecutea api 를통해다운받은 malware.exe 를실행하고있으며, DeleteUrlCacheEntryA api 를통 해캐시를삭제하고있다. KAIST Graduate School of Information Security Malware Analysis Report 15
(2) malware.exe [ 그림 19] ShellExcuteA 로 cipher.exe 를실행 [ 그림 20] stack 의모습 cipher.exe 를실행하는부분이다. 스택에파라미터들이쌓여있다. api 를이용하여화면사이즈를호출하는부분이다. [ 그림 21] GetSystemMetrics [ 그림 22] SetCursorPos 호출 KAIST Graduate School of Information Security Malware Analysis Report 16
[ 그림 23] Stack의모습위그림의 004010F0번지는마우스의 cursor를설정하는부분이다. 스택에는 x좌표 y좌표가쌓여있다. 그리고다음으로 004010F6 부분에는 nc를다운받는 4010220() 메소드를실행하게된다. [ 그림 24] 4010220() 내부로진입한뒤의모습 4010220() 내부로들어가보면위그림과같이 url 과위치를지정하게된다. [ 그림 25] URLDownloadToFileA [ 그림 26] stack 의모습 URLDownloadToFileA 를호출하게되어 nc.exe 를다운받는다. 이와관련된파라미터들은스택에저 장되어있다. [ 그림 27] URLDownloadToFile KAIST Graduate School of Information Security Malware Analysis Report 17
위와같은원리로 excutenc.vbs 파일을받는다. [ 그림 28] stack 의모습 [ 그림 29] RegCreateKeyExA 파라미터를스택에쌓아놓고 RegCreateKeyExA 를호출하여 run 레지스트리의키를생성한다. [ 그림 30] RegSetValueExA [ 그림 31] stack 의모습 run 레지스트리에 exc 라는이름을가진값을쓰게되는데이값은직접확인해보면.vbs 를실행시키 는내용을지니고있다. [ 그림 32] ShellExcecuteA [ 그림 33] stack 의모습 shellexcutea api 를호출하여 excutenc.vbs 를실행시키고있다. 4010220() 이완료되면다시리턴됨. KAIST Graduate School of Information Security Malware Analysis Report 18
[ 그림 34] Return 후 401220 을빠져나온그림 [ 그림 34] SetCursorPos의반복 ida 코드를통해봤던계산루틴을지나마우스커서를다시셋팅하고반복문을돌기위해다시돌아간다. 다음으로 EnumWindows를호출하는함수로들어가게되면 [ 그림 35] EnumWindows 내부로진입한그림 활성화되어있는윈도우에대한핸들을얻어오는 iswindowvisible, 클래스이름을가져오는 GetClassNameA 을실행하게된다. KAIST Graduate School of Information Security Malware Analysis Report 19
[ 그림 36] GetClassNameA 호출직전 [ 그림 37] Stack의모습현재수행결과 EAX와 ECX에는다음의값이들어있다. EAX와 ECX의값이다르므로인터넷창을반복띄우던악성행위가수행되지않는다. 따라서테스트를위해분기코드를수정하고실행한다. [ 그림 38] 코드수정 하지만현재프로세스는올리디버거이므로계속실행하게되면디버거가종료되게된다. 따라서 NOP 나 JMP 처리하여종료되지않고진행할수있게한다. KAIST Graduate School of Information Security Malware Analysis Report 20
[ 그림 39] IE 를띄우는코드로접근하기위한코드수정후 ShellExecuteA 호출직전 [ 그림 40] stack 의모습 마지막으로 ShellExcuteA api 를통해 gsis.kaist.ac.kr 을띄우는 iexplore.exe 를실행하게된다. KAIST Graduate School of Information Security Malware Analysis Report 21
[ 그림 41] ShellExecuteA 호출후 무한루프로인해증상이반복실행되지만재부팅시 nc.exe 만실행될뿐다른악성행위는실행되지않 는다. KAIST Graduate School of Information Security Malware Analysis Report 22
3. 대응방안 1) 네트워크를통한명령차단및추가파일다운로드차단 피해시스템은네트워크를통해명령을전달받는형태이며, 최초 downloader 에감염시추가로파일 을다운로드한다. 따라서해당 IP 에대한차단이반드시필요하다. 2) 레지스트리수정 분석한악성코드는 excutenc.vbs 를실행하게끔레지스트리를수정하고있으므로수정된레지스트리를 바로잡아준다. 3) 연결요청하는 ip 와 port 차단 분석한악성코드는 nc.exe 를이용하여 143.248.102.118:100 로연결을요청하고있으므로해당파일을 지우거나막는다. 4) 재부팅 마우스커서를움직이게하는코드와 IE 를띄우는코드는재부팅이시작되면동작하지않으므로재부팅 하여악성코드에대응하는데불편함이없게한다. KAIST Graduate School of Information Security Malware Analysis Report 23