Notice : 해당 자료가 저작권등에 의해서 문제가 있다면 바로 삭제하겠습니다.
연구목적으로 사용하지 않고 악의적인 목적으로 이용할 경우 발생할 수 있는 법적은 책임은 모두 본인에게 있습니다.
실전 악성코드와 멀웨어 분석 – 1장 기초 정적분석 실습 1-1
실전 악성코드와 멀웨어 분석 – 1장 기초 정적분석 실습 1-2
실전 악성코드와 멀웨어 분석 – 1장 기초 정적분석 실습 1-3
실전 악성코드와 멀웨어 분석 – 1장 기초 정적분석 실습 1-4
실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-1
실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-2
실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-3
실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-4
실습문제 다운로드 받는 곳 : http://nostarch.com/malware
실습 3-2
기초 동적분석 도구를 이용해 Lab03-02.dll 파일에서 발견된 악성코드를 분석하라.
질문
1. 악성코드 자체가 어떻게 설치됐는가?
A : 먼저 악성코드 파일을 보니 DLL 파일이다. DLL을 설치하려면 rundll23.exe 을 사용해서 설치을 해야 할 것으로 보인다.
그래서 Dependency Walker를 사용해서 Lab03-02.dll에서 익스포트된 함수를 확인해보았다.
확인해보니 5개의 익스포트 함수가 있었고, 악성코드 설치를 위해 아래와 같이 실행하였다.
그리고 설치된 후 스냅샷을 확인해보니 아래와 같이 레지스트리에 변화가 있는 것을 확인했다.
2. 설치 후 악성코드를 어떻게 실행할 수 있는가?
A : 위의 스냅샷으로 보아 해당 악성코드는 IPRIP 서비스로 구동하는 것으로 보인다.
확인하기 위해 strings를 실행해보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
Strings v2.51 Copyright (C) 1999-2013 Mark Russinovich Sysinternals - www.sysinternals.com !This program cannot be run in DOS mode. Rich ... GetModuleFileNameA Sleep TerminateThread WaitForSingleObject GetSystemTime CreateThread GetProcAddress LoadLibraryA GetLongPathNameA GetTempPathA ReadFile CloseHandle CreateProcessA GetStartupInfoA CreatePipe GetCurrentDirectoryA GetLastError lstrlenA SetLastError OutputDebugStringA KERNEL32.dll RegisterServiceCtrlHandlerA RegSetValueExA RegCreateKeyA CloseServiceHandle CreateServiceA OpenSCManagerA RegCloseKey RegQueryValueExA RegOpenKeyExA DeleteService OpenServiceA SetServiceStatus ADVAPI32.dll WSASocketA WS2_32.dll InternetReadFile HttpQueryInfoA HttpSendRequestA HttpOpenRequestA InternetConnectA InternetOpenA InternetCloseHandle WININET.dll memset wcstombs strncpy strcat strcpy atoi fclose fflush fwrite fopen strrchr atol sscanf strlen strncat strstr _itoa strchr __CxxFrameHandler _EH_prolog _CxxThrowException _except_handler3 MSVCRT.dll free _initterm malloc _adjust_fdiv _strnicmp _chdir _stricmp Lab03-02.dll Install ServiceMain UninstallService installA uninstallA Y29ubmVjdA== practicalmalwareanalysis.com serve.html dW5zdXBwb3J0 c2xlZXA= Y21k cXVpdA== Windows XP 6.11 CreateProcessA kernel32.dll .exe GET HTTP/1.1 %s %s 1234567890123456 quit exit getfile cmd.exe /c ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ --!> <!-- .PAX .PAD DependOnService RpcSs ServiceDll GetModuleFileName() get dll path Parameters Type Start ObjectName LocalSystem ErrorControl DisplayName Description Depends INA+, Collects and stores network configuration and location information, and notifies applications when this information changes. ImagePath %SystemRoot%\System32\svchost.exe -k SYSTEM\CurrentControlSet\Services\ CreateService(%s) error %d Intranet Network Awareness (INA+) %SystemRoot%\System32\svchost.exe -k netsvcs OpenSCManager() You specify service name not in Svchost//netsvcs, must be one of following: RegQueryValueEx(Svchost\netsvcs) netsvcs RegOpenKeyEx(%s) KEY_QUERY_VALUE success. RegOpenKeyEx(%s) KEY_QUERY_VALUE error . SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost IPRIP uninstall success OpenService(%s) error 2 OpenService(%s) error 1 uninstall is starting ... |
SYSTEM\CurrentControlSet\Services\, SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost 등과 같이 레지스트리도 보이고, 서비스관련 함수들과 HTTP 함수들도 볼 수 있고, 서비스 관련 문구들과 http 관련 string을 확인해볼 수 있다.
그리고 인터넷 주소(practicalmalwareanalysis.com)와 uri(serve.html) 와 base64으로 인코딩된 것으로 보이는 문자열도 볼 수 있다.
3. 악성코드가 동작할 때 어떤 프로세스를 발견할 수 있는가?
A : 동적분석을 위해 준비를 하고 해당 악성코드를 구동시켜 보았다.
악성코드는 서비스이므로 svchost.exe 프로세스로 구동이 될 것으로 보인다. 하지만 프로세스 리스트에서는 svchost.exe가 여러개이고 속성만으로는 어떤 프로세스가 악성인지 확인이 안되서 File > Find Handle or DLL..을 사용해 Lab03-02.dll을 찾아보니, 1128 PID를 가지는 프로세스가 범인임을 확인했다.
4. 정보를 수집하는 ProcMon을 사용하기 위해 어떤 필터를 설정했는가?
A : 위의 Process Explorer에서 확인한 PID(1128)를 필터로 사용하면 된다.
하지만 나는 보통 ProcMon보다는 시스템 익스플로러의 스냅샷 기능을 더 애용하는 편이다.
파일과 레지스트리를 동시에 볼 수 있고, tree형태 또는 text 형태를 변화를 볼 수 있어서 편하다.
5. 악성코드임을 의미하는 호스트 기반 표시자는 무엇인가?
A : 해당 악성코드의 특징 중 하나는 IPRIP 서비스를 등록하는 것이며, 서비스의 설명이 “Depends INA+, Collects and stores network configuration and location information, and notifies applications when this information changes.” 으로 표시된다.
그리고 레지스트리에 ServiceDll을 정의하는데 dll 파일명을 그대로 사용한다.
6. 악성코드에서 유용한 네트워크 기반 시그니쳐가 존재하는가?
A : 악성코드를 실행후 패킷을 Wireshark 를 통해 practicalmalwareanalysis.com 도메인에 대해 dns 질의를 하는 것을 확인할 수 있었다.
hosts 파일에 해당 도메인을 설정하고 응답을 받아보니 아래와 같이 GET으로 /serve.html 파일을 요청하는 것을 확인할 수 있었다.
6 Responses to 실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-2