실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-2

 

Notice : 해당 자료가 저작권등에 의해서 문제가 있다면 바로 삭제하겠습니다.
연구목적으로 사용하지 않고 악의적인 목적으로 이용할 경우 발생할 수 있는 법적은 책임은 모두 본인에게 있습니다.

Practical_Malware_Analysis
[구매하기]

실전 악성코드와 멀웨어 분석 – 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에서 익스포트된 함수를 확인해보았다.
3-2-1

확인해보니 5개의 익스포트 함수가 있었고, 악성코드 설치를 위해 아래와 같이 실행하였다.
3-2-2

그리고 설치된 후 스냅샷을 확인해보니 아래와 같이 레지스트리에 변화가 있는 것을 확인했다.
3-2-3

2. 설치 후 악성코드를 어떻게 실행할 수 있는가?
A : 위의 스냅샷으로 보아 해당 악성코드는 IPRIP 서비스로 구동하는 것으로 보인다.
확인하기 위해 strings를 실행해보았다.

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 : 동적분석을 위해 준비를 하고 해당 악성코드를 구동시켜 보았다.
3-2-4

악성코드는 서비스이므로 svchost.exe 프로세스로 구동이 될 것으로 보인다. 하지만 프로세스 리스트에서는 svchost.exe가 여러개이고 속성만으로는 어떤 프로세스가 악성인지 확인이 안되서 File > Find Handle or DLL..을 사용해 Lab03-02.dll을 찾아보니, 1128 PID를 가지는 프로세스가 범인임을 확인했다.
3-2-5

3-2-6 3-2-7

4. 정보를 수집하는 ProcMon을 사용하기 위해 어떤 필터를 설정했는가?
A : 위의 Process Explorer에서 확인한 PID(1128)를 필터로 사용하면 된다.
하지만 나는 보통 ProcMon보다는 시스템 익스플로러의 스냅샷 기능을 더 애용하는 편이다.
파일과 레지스트리를 동시에 볼 수 있고, tree형태 또는 text 형태를 변화를 볼 수 있어서 편하다.
3-2-8 3-2-9

5. 악성코드임을 의미하는 호스트 기반 표시자는 무엇인가?
A : 해당 악성코드의 특징 중 하나는 IPRIP 서비스를 등록하는 것이며, 서비스의 설명이 “Depends INA+, Collects and stores network configuration and location information, and notifies applications when this information changes.” 으로 표시된다.
3-2-10

그리고 레지스트리에 ServiceDll을 정의하는데 dll 파일명을 그대로 사용한다.
3-2-11

6. 악성코드에서 유용한 네트워크 기반 시그니쳐가 존재하는가?
A : 악성코드를 실행후 패킷을 Wireshark 를 통해 practicalmalwareanalysis.com 도메인에 대해 dns 질의를 하는 것을 확인할 수 있었다.
3-2-12

hosts 파일에 해당 도메인을 설정하고 응답을 받아보니 아래와 같이 GET으로 /serve.html 파일을 요청하는 것을 확인할 수 있었다.
3-2-13

 

This entry was posted in Reading, Reversing and tagged , . Bookmark the permalink.

6 Responses to 실전 악성코드와 멀웨어 분석 – 3장 기초 동적 분석 실습 3-2

댓글 남기기