Intro
SysAnalyzer 는 오픈소스 기반의 자동화 악성코드 분석 도구이다. 기본적으로 여러 도구의 기능이나 기타 편의적인 기능이 제공되고 있다. 아래는 공식홈페이지에서 제공하는 설명이다.
SysAnalyzer Overview
SysAnalyzer is an open source application that was designed to give malcode analysts an automated tool to quickly collect, compare, and report on the actions a binary took while running on the system.
A full installer for the application is available and can be downloaded here . The application supports windows 2000 - windows 10. Including x64 support.
The main components of SysAnalyzer work off of comparing snapshots of the system over a user specified time interval. The reason a snapshot mechanism was used compared to a live logging implementation is to reduce the amount of data that analysts must wade through when conducting their analysis. By using a snapshot system, we can effectively present viewers with only the persistent changes found on the system since the application was first run.
Interface
실행 시 기본적인 인터페이스는 아래와 같다.
|
Example
해당 Tool 을 사용하여 몇 샘플을 분석해보자.
참고 : 아무 동작을 하지 않고 종료되는 프로세스가 있을 수도 있으므로, Process Explorer 는 같이 켜놓는게 좋다.
실행 파일 지정 및 시작
|
하단에 두번째 Snapshot 까지 남은 시간을 기록함.
|
두 번째 snapshot 을 찍은 후, 상기의 화면 외에 Report File Viewer 가 새로 나타남. 내용은 동일.
|
이래한 결과들이 analysis 폴더에 파일로 저장됨.
|
샘플 분석 결과 정리
Process
|
File
|
Registry
|
Network
|
이와 같이 직접 확인해도 되지만, SysAnalyzer 의 강점은 바로 Report 를 출력해준다. 아래 내용은 "Report File Viewer" 의 "Report_실행시간.log" 결과 내용이다.
Processes:
PID ParentPID User Path * Service
--------------------------------------------------
3076 3304 Administrator C:\Windows\system32\svchost.exe
Ports:
Port PID Type Path * Service
--------------------------------------------------
65531 3076 TCP C:\Windows\system32\svchost.exe
Mutexes:
PID Name *
--------------------------------------------------
3076 \Sessions\1{EDFF96B3-5333-47AE-8DE6-022BB460FD36}
Tasks:
Name Executable
--------------------------------------------------
Monitored Process Dlls:
pid cnt Name
--------------------------------------------------
Loaded Drivers:
Driver File * Company Name Description
--------------------------------------------------
Monitored RegKeys
Path Value *
--------------------------------------------------
HKLM\Software\Microsoft\Windows\CurrentVersion\Run {EDFF96B3-5333-47AE-8DE6-022BB460FD36}=C:\Windows\CppServer.exe
DirwatchData
Action Size File
--------------------------------------------------
WatchDir Initilized OK
Watching C \
Created C:\Windows\CppServer.exe
Modifed C:\Windows
Modifed C:\Windows\CppServer.exe
Modifed C:\Windows\Prefetch
Modifed 40000 C:\Windows\System32\config\SOFTWARE.LOG1
Modifed 1740000 C:\Windows\System32\config\SOFTWARE
Modifed 40000 C:\Users\Administrator\ntuser.dat.LOG1
Modifed 1F400 C:\Users\Administrator\AppData\Local\Microsoft\Windows\UsrClass.dat.LOG1
Modifed 40000 C:\Users\Administrator\AppData\Local\Microsoft\Windows\UsrClass.dat
Created C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen_service.lock
Modifed C:\Windows\Microsoft.NET\Framework\v2.0.50727
Modifed 1E84A0 + C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen_service.log
예제 샘플(CppServer.exe) 는 실행 시 svchost.exe 를 생성 후, 자기 자신을 인젝션(RunPE)한다. 이러한 점을 참고하였을때 SysAnalyzer 는 자동으로 생성 된 프로세스 덤프 한다. 첫 번째와 두 번째는 실제 인젝션 된 CppServer.exe 와 동일하다. 마지막 세 번째(svchost_sample.exe_) 의 경우 해당 환경에 존재하는 정상 svchost.exe 파일임을 확인했다.
|
|
|
API Log 부분에 대해 자세히 확인해보자. installing hooks 의 경우, 실행시킬 악성코드에 대해 Hook 을 설치하는 것이다. 실제 악성코드의 동작은 굵게 표시한 부분부터 시작된다. CopyFile, RegSetValueEx, VirtualAllocEx 등이 존재한다. 하지만 실제 파일의 코드를 확인해보면 VirtualAllocEx 이후, NtWriteProcessMemory, NtGetThreadContext, NtSetThreadContext, NtResumeThread 등이 호출된다. 이에 대해서는 기록되지 않았다. 이외에도 svchost.exe 를 생성할 때 사용된 API 인, NtCreateProcess 도 존재하지 않다.
--------------------------------------------------
ce8,464,***** Installing Hooks *****
ce8,464,***config:handler:100079f0
ce8,464,***config:noSleep
ce8,464,***config:noGetProc
ce8,464,***config:noRegistry
ce8,464,***config:queryGetTick
ce8,464,***config:blockOpenProcess
ce8,464,***config:blockDebugControl
ce8,464,***config:ignoreExitProcess
ce8,464,***config:hooklibLogLevel
ce8,464,76ef19ff GetSystemTime()
ce8,464,Install hook CreateProcessInternalW failed...Error:
ce8,464,77043c4c ExitThread()
ce8,dc8,1331780 GetStartupInfoW()
ce8,dc8,13324b4 GetStartupInfoW()
ce8,dc8,133148f CopyFileA(C:\Users\Administrator\Desktop\CppServer.exe->C:\Windows\CppServer.exe)
ce8,dc8,77028fcf CloseHandle(h=80)
ce8,dc8,7702a963 CloseHandle(h=84)
ce8,dc8,7702ad07 CloseHandle(h=80)
ce8,dc8,7702ad15 CloseHandle(h=7c)
ce8,dc8,13314b2 RegCreateKeyA (HKLM\Software\Microsoft\Windows\CurrentVersion\Run)
ce8,dc8,13314df RegSetValueExA ({EDFF96B3-5333-47AE-8DE6-022BB460FD36})
ce8,dc8,75b67a17 VirtualAllocEx(h=ffffffff, addr=0, sz=8e00,type=3000, prot=4) = 100000
ce8,dc8,133160c VirtualAllocEx(h=80, addr=400000, sz=d000,type=3000, prot=40) = 400000
ce8,dc8,7703caa4 CloseHandle(h=0)
ce8,dc8,***** Injected Process Terminated *****
중간 사용 후기
얼마 사용하지 않았지만, 느낀점은 아래와 같다.
- 여러 도구가 하나로 종합 된 느낌
- 간단한 동적 분석을 하기에 아주 용이
- 프로세스 생성 시, 그에 대한 Dump 와 Sample 파일까지 보여주는 것은 아주 훌륭(귀찮음을 덜어줌)
- 친숙해지면 아주 편리한 도구가 될 것같음
- API Log 의 경우, Nt- Zw- 함수는 기록되지 않는 것 같다.
'Reversing > Theory' 카테고리의 다른 글
IQY File - Using Malware Campaign (0) | 2018.10.23 |
---|---|
Linux 동적 분석 Tool (3) | 2018.04.08 |
Process Doppelganging (0) | 2018.02.13 |
Dynamic Data Exchange (DDE) (0) | 2017.11.12 |
Atombombing 기법 (0) | 2017.05.28 |