HTB Sherlock KitsuneHook

Threat intelligence attribution exercise tracing a Winnti/APT41 campaign (RevivalStone and Operation CuckooBees) across vendor reporting, MITRE ATT&CK mappings, and malware tooling.

By 0xG10D | Last updated: July 8, 2026 | 7 minutes read
Information #htb#sherlock#threat-intel#apt41#winnti#mitre-attack#malware-analysis#osint

Scenario: Threat Intelligence Analyst assignment. SOC detected suspicious activity targeting manufacturing and energy companies; the only lead is that Winnti is behind it. Goal: attribute the actor, map the campaign, and enumerate the tooling.

Status: All 15 tasks answered and verified against primary sources (LAC, Cybereason, MITRE ATT&CK). Two answers commonly gotten wrong (Task 8, Task 13) and one attribution trap (Task 1) are flagged below.


Answer Key (TL;DR)

#TaskAnswer
1Primary APT designation (active since 2012)APT41 (MITRE G0096)
2Symantec’s name for the groupBlackfly
3Campaign vs. manufacturing/materials/energyRevivalStone
4Security-contractor leak (Linux controller)i-Soon leak (aka Anxun leak)
5Geology-themed Linux C2 control panelTreadStone
6Latest malware version designation in samplesStoneV5 (→ Winnti v5.0)
7Initial-access vulnerability typeSQL injection (SQLi)
8Third web shell (besides China Chopper, Behinder)sqlmap file uploader
9Behinder key = first 16 chars of MD5 of…rebeyond
10Malware using MS Graph API for email C2CUNNINGPIGEON
11Loader + kernel rootkitPRIVATELOG (loader) → WINNKIT (rootkit)
12Service abused for DLL side-loading (TSMSISrv.dll)SessionEnv
13AES mode for DAT file decryptionOFB (Output Feedback)
142021 campaign (prntvpt.dll timestamps)Operation CuckooBees
15Rootkit sound/hardware device object\Device\Beep

Detailed Findings

Task 1 — APT designation number

Answer: APT41 (MITRE ATT&CK G0096)

The wording “active since at least 2012” is the exact descriptor on APT41’s MITRE page. This is a deliberate disambiguation clue: MITRE dates the Winnti Group (G0044) to 2010, and APT41 (G0096) to 2012. Since the question pins 2012, the intended answer is APT41. RevivalStone’s actor is assessed as a subset of APT41.

Trap: It is easy to answer G0044 because the scenario keeps saying “Winnti.” The date clue rules that out. Winnti Group is a cluster that overlaps with / is tracked under APT41.

Task 2 — Symantec’s name

Answer: Blackfly

Vendor name-mapping for this actor: Symantec = Blackfly, Trend Micro = Earth Freybug, Cybereason = Operation CuckooBees, Microsoft = Brass Typhoon (formerly BARIUM), Mandiant = APT41 / Wicked Panda.

Task 3 — Campaign name

Answer: RevivalStone

LAC (Japanese security firm) named the March 2024 campaign targeting Japanese manufacturing, materials, and energy companies RevivalStone. It also overlaps with Earth Freybug (Trend Micro) and Operation CuckooBees (Cybereason).

Task 4 — Contractor leak

Answer: i-Soon leak (aka Anxun / Anxun Information Technology leak)

Internal documents from Chinese security contractor i-Soon were uploaded to GitHub in Feb 2024. They exposed a Linux malware control panel (TreadStone) tied to the Winnti toolset, giving rare visibility into China’s private-sector hacking industry.

Task 5 — Linux C2 control panel (geology-themed codename)

Answer: TreadStone

TreadStone is a controller engineered to manage the Winnti malware ecosystem. LAC found references to it in RevivalStone; it also appeared in the i-Soon leak as a Linux malware control panel, and was named in the 2019 U.S. grand jury indictment of Chengdu 404 employees. (“Stone” = the geology theme.)

Task 6 — Version designation

Answer: StoneV5 (indicating Winnti v5.0)

LAC found the string StoneV5 in the samples, interpreted as Winnti v5.0 — the latest iteration, featuring improved obfuscation, updated encryption, and enhanced evasion.

Task 7 — Initial-access vulnerability

Answer: SQL injection (SQLi)

The attack chain began with a SQL injection vulnerability in a public-facing ERP system, allowing web shell deployment.

Task 8 — Third web shell

Answer: sqlmap file uploader

The trio dropped after the ERP SQLi was China Chopper, Behinder (IceScorpion), and the sqlmap file uploader. Since the initial access vector was SQL injection, sqlmap’s file-upload functionality is the logical third shell.

Correction: Common wrong answers are Godzilla and b374k — both are hallucinations. Multiple independent outlets citing the LAC report explicitly list “sqlmap file uploader.”

Task 9 — Behinder hardcoded key word

Answer: rebeyond

Behinder (Bingxia / IceScorpion) uses a default AES key that is the first 16 chars of the MD5 hash of “rebeyond” (the tool’s author), producing key e45e329feb5d925b.

  • General Behinder/IceScorpion analysis (default key md5("rebeyond")[:16]), corroborated across web shell IR references.

Task 10 — Graph API email C2 malware

Answer: CUNNINGPIGEON

CUNNINGPIGEON abuses the Microsoft Graph API to fetch commands from email messages, supporting file management and proxy operations.

Task 11 — Loader + kernel rootkit

Answer: Loader = PRIVATELOG, Rootkit = WINNKIT (RAT in between = DEPLOYLOG)

The Winnti multi-stage chain: PRIVATELOG (loader) extracts and deploys DEPLOYLOG (the RAT / user-mode agent), which in turn installs WINNKIT, the kernel-level rootkit. WINNKIT is signed with a stolen (BenQ) certificate to bypass Driver Signature Enforcement and hooks TCP/IP by talking directly to the NIC.

Full chain: STASHLOG → SPARKLOG → PRIVATELOG → DEPLOYLOG → WINNKIT.

Task 12 — Service abused for DLL side-loading

Answer: SessionEnv

The malware persists via the SessionEnv service (Remote Desktop Configuration), which side-loads the malicious TSMSISrv.dll. LAC observed legitimate DLLs (e.g. SessEnv.dll) replaced with malicious counterparts to load the Winnti Loader.

Task 13 — AES mode for DAT decryption

Answer: OFB (Output Feedback)

DAT files are encrypted with AES + ChaCha20; keys are derived from the victim’s IP address, MAC address, and network interface GUID. The AES decryption routine uses OFB (Output Feedback) mode with multiple SHA256 hash calculations.

Correction: Common wrong answer is AES-256-CBC. LAC’s report specifies OFB. (OFB turns AES into a stream cipher — no padding — which is why malware authors favor it for variable-length config blobs.)

Task 14 — 2021 campaign (prntvpt.dll)

Answer: Operation CuckooBees

The prntvpt.dll samples (May 12, 2021 and Aug 17, 2021) map to Operation CuckooBees, Cybereason’s 2021 investigation of Winnti/APT41. In that chain, SPARKLOG drops PRIVATELOG as prntvpt.dll into the print-spooler drivers directory and abuses the PrintNotify service to side-load it.

Task 15 — Rootkit sound/hardware device object

Answer: \Device\Beep

To detect whether the rootkit is already running, the loader (DEPLOYLOG) first tries to open a handle to the Beep device object — full form \\?\GLOBALROOT\Device\Beep — then sends a custom IOCTL. If that fails it falls back to \Device\Null. \Device\Beep is the PC-speaker/beeper, i.e. the hardware-level sound device. The two device strings in LAC’s Winnti_Rootkit YARA rule are \Device\Beep and \Device\Null.


Analyst Note — Two Campaigns, One Actor

These tasks intentionally blend two campaigns by the same actor. Keep them separate to avoid mis-attributing IOCs:

RevivalStone (2024)Operation CuckooBees (2021)
ReporterLACCybereason
TargetsJapanese manufacturing / materials / energyGlobal tech & manufacturing IP
Initial accessSQLi in ERPRCE in ERP + JSP web shells
Malware versionWinnti v5.0 / StoneV5—
Shared componentsPRIVATELOG, DEPLOYLOG, WINNKIT, Winnti rootkitPRIVATELOG, DEPLOYLOG, WINNKIT, Spyder Loader

Tasks 11 and 15 draw on the CuckooBees deep-dive (component chain + device objects); Tasks 3–13 are RevivalStone-specific.


Sources (by authority)

Primary

Strong secondaries

Context / summaries

Authorized security practice only. These notes are for lab, CTF, and explicitly permitted environments.