악성코드 분석/정적 분석

실전 악성코드와 멀웨어 분석 - 실습 1-4

IT공부 2020. 1. 6. 16:13
반응형

Lab01-01.exe 파일을 분석하라

질문 

 

1. http://www.virustotla.com/ 에 Lab01-04.exe 파일을 업로드하자. 기존 안티바이러스에 정의된 것과 일치하는가?

A : 70개의 엔진 중 56개 엔진이 탐지하였다.

2. 이 파일이 패킹되거나 난독화된 징후가 있는가? 그렇다면 무엇으로 판단했는가? 파일이 패킹돼 있고 가능하다면 언패킹 해보자. 

A : PEID로 확인했을 경우 패킹된 흔적을 찾을 수 없었다.

3. 이 프로그램은 언제 컴파일되었는가? 

A : 2019/08/30 22:26:59 UTC에 컴파일된 것으로 보인다.

4. 임포트를 보고 악성코드의 기능을 알아낼 수 있는가? 그렇다면 어떤 임포트를 보고 알 수 있는가?

KERNEL32.DLL

위의 사진에서 lstrcmp\ lstrcpy\ lstrcat\ lstrlen\을 본 결과 C언어에 string 내장 함수가 생각났다. 문자열을 확인하고, 문자열의 길이를 구하며, 문자열 비교와 복사를 하는 기능을 하는 것으로 짐작이 간다. 

 

 위의 사진은 Event를 생성하는 함수, file을 생성하는 함수, Process를 생성하는 함수를 보아 악성코드가 실제 실행이 되었을 시 각각을 생성하는 기능이 있다는 것을 알 수 있었다. 

 

ADVAPI.DLL

 

OpenProcessToken : 프로세스의 토크 핸들 값을 획득하는 함수

LookupPrivilegeValue : 명시된 권한을 표한할 LUID를 검색(LUID : 특정 권한을 표현하는 구조체)

AdjustTokenPrivileges : 권한을 조정하는 함수 

 

저의 생각으로는 프로세스의 토큰 핸들 값을 획득하면, 명시했던 권한을 검색한 후에 AdjustTokenPrivileges로 권한을 조정하는 기능을 하는 것 같습니다. 

 

5. 감염된 시스템에서 악성코드를 인식하는데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는가? 

Strings 도구로 Lab01-04.exe 파일을 확인한 결과 

!This program cannot be run in DOS mode.
Wy
Rich
.text
`.rdata
@.data
.rsrc
 0@
@
$0@
@
(0@
*0@
@
D @
t;
,1@
(1@
H @
H @
Pj(
@ @
H @
jjj
h,0@
h@0@
 1@
D @
jjj
 1@
( @
4 @
hL0@
Qhd0@
T @
0 @
hl0@
hp0@
, @
@
L @
$ @
@
  @
@
@
H @
@j
hx0@
,1@
(1@
$1@
=$1@
=(1@
=,1@
$1@
t:

4 @
@
T @
< @
@
T @
8 @
 SVW
@1@
D1@
| @
<1@
x @
81@
t @
H1@
p @
41@
501@
h @
d @
` @
X @
%\ @
%l @

@
CloseHandle
OpenProcess
GetCurrentProcess
CreateRemoteThread
GetProcAddress
LoadLibraryA
WinExec
WriteFile
CreateFileA
SizeofResource
LoadResource
FindResourceA
GetModuleHandleA
GetWindowsDirectoryA
MoveFileA
GetTempPathA
KERNEL32.dll
AdjustTokenPrivileges
LookupPrivilegeValueA
OpenProcessToken
ADVAPI32.dll
_snprintf
MSVCRT.dll
_exit
_XcptFilter
exit
__p___initenv
__getmainargs
_initterm
__setusermatherr
_adjust_fdiv
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
_stricmp
winlogon.exe
<not real>
SeDebugPrivilege
sfc_os.dll
\system32\wupdmgr.exe
%s%s
BIN
#101
EnumProcessModules
psapi.dll
GetModuleBaseNameA
psapi.dll
EnumProcesses
psapi.dll
\system32\wupdmgr.exe
%s%s
\winup.exe
%s%s
BIN
!This program cannot be run in DOS mode.
Rich
.text
`.rdata
@.data


@
h$0@
Rh<0@
jj
QhD0@
j
%L @
hX @
 SVW
@ @
< @
8 @
4 @
=x0@
0 @
( @
$ @
  @
%, @

%D @
GetWindowsDirectoryA
WinExec
GetTempPathA
KERNEL32.dll
URLDownloadToFileA
urlmon.dll
_snprintf
MSVCRT.dll
_exit
_XcptFilter
exit
__p___initenv
__getmainargs
_initterm
__setusermatherr
_adjust_fdiv
__p__commode
__p__fmode
__set_app_type
_except_handler3
_controlfp
\winup.exe
%s%s
\system32\wupdmgrd.exe
%s%s
http://www.practicalmalwareanalysis.com/updater.exe

! THIS Program cannot be run is DOS mode 하단 부분의. text. rdate은 PE(Portable Excutable) 파일 포맷 구조에서 항상 있는 것 이기 때문에 파일이 2개란 것을 추측할 수 있었습니다.  /system32/wupdmgr.exe 파일과 /system32/wupdmgrd.exe 와 http://www.practicalmalwareanalysis.com/updater.exe의 URL 주소를 확인할 수 있었다.

 

6. 이 파일은 리소스 섹션에 하나의 리소스가 있다. Resource Hacker를 이용해 리소스를 추출해보자. 리소스로부터 무엇을 알 수 있는가?

 

Resource Hacker로 확인한 결과 BIN폴더 안에 파일이 PE 파일 구조를 MZ라는 시그니쳐를 보고 알 수 있었다.

winup.exe과 \system32\wupdmgrd.exe 파일을 이용하여 URL 주소를 사용한다는 것을 알 수 있었습니다.