Back to Intelligence

GoSerpent RAT + HelloNet ViPNet Supply-Chain Campaign: OTX Pulse Analysis — State-Sponsored Intrusion Detection Pack

SA
Security Arsenal Team
August 15, 2026
9 min read

Threat Summary

Two concurrent OTX pulses published 2026-08-15 reveal mature, long-running state-nexus intrusion campaigns targeting government infrastructure on opposite sides of the geopolitical map — and both share a common tradecraft DNA: proxy-capable backdoors, credential theft tooling, and abuse of trusted software update and directory structures.

Campaign 1 — GoSerpent (TetrisPhantom): Active since 2021 with a major escalation observed since late 2025, this operation targets government and diplomatic entities across Southeast Asia. The core implant is a Go-based remote access trojan with built-in proxy capabilities, allowing operators to pivot through victim networks. GoSerpent receives encrypted command-line arguments and stages a full post-exploitation arsenal: Mimikatz and QuarksDumpLocalHash for credential theft, Stowaway for network tunneling, TmcLoader/TmcPayload for payload staging, and McMx/ThumbcacheService supporting components. Newer variants have migrated to AES-CBC encryption and ChaCha20 for C2 communications — a deliberate protocol evolution to evade legacy network detection signatures.

Campaign 2 — HelloNet (Unknown, assessed Chinese APT nexus): Discovered in May 2026, this campaign compromises the ViPNet update system — a trusted Russian government/CNI VPN software channel — to deliver a five-component modular toolkit against large Russian organizations in government, energy, transportation, education, and aerospace. Persistence is achieved via DLL sideloading of a malicious wtsapi32.dll planted in legitimate ViPNet directories, meaning the malware executes every time the trusted ViPNet service starts. The toolkit comprises HelloInjector (loader), HelloProxy (traffic proxying/payload delivery), HelloExecutor (backdoor), HelloBackdoor (Rust-based implant), and HelloCleaner (anti-forensics/log wiping).

Collective assessment: Both campaigns demonstrate the modern APT playbook — living off trusted infrastructure (ViPNet updates), modular staged tooling, proxy/pivot capabilities for deep network access, and aggressive credential harvesting as a precursor to lateral movement and long-term data exfiltration. Organizations running ViPNet anywhere in their stack, and diplomatic/government entities in Southeast Asia, should treat both pulses as active-compromise indicators, not theoretical risk.

Threat Actor / Malware Profile

TetrisPhantom / GoSerpent

  • Distribution: Targeted delivery to government and diplomatic entities in Southeast Asia; implants receive encrypted arguments at execution, complicating sandbox detonation
  • Payload behavior: Go-based RAT with SOCKS-style proxy capability enabling internal network pivoting; stages secondary tooling including Mimikatz, QuarksDumpLocalHash (local SAM hash dumping), Stowaway (multi-hop network tunneling), and TmcLoader/TmcPayload (reflective payload staging)
  • C2 communication: Evolved from earlier variants to AES-CBC encrypted and ChaCha20-based channels, defeating older static network signatures
  • Persistence: Deployed via supporting services (ThumbcacheService masquerading as a legitimate Windows thumbnail cache service name)
  • Anti-analysis: Encrypted runtime arguments (payload inert without correct key material), Go binary obfuscation, staged execution to separate loader from final payload

HelloNet Toolkit

  • Distribution: Supply-chain compromise of the ViPNet update mechanism — malicious updates delivered through a channel that security teams explicitly trust and often exclude from inspection
  • Payload behavior: Modular five-component architecture: HelloInjector loads subsequent stages; HelloProxy proxies C2 traffic and delivers payloads; HelloExecutor executes commands and manages the backdoor; HelloBackdoor (Rust-based) provides resilient remote access; HelloCleaner wipes logs and forensic artifacts
  • Persistence: DLL sideloading — malicious wtsapi32.dll placed inside legitimate ViPNet installation directories; loaded automatically by the trusted ViPNet binary at service start, inheriting its trust, code signing reputation, and often its EDR allowlisting
  • C2 communication: Proxied through HelloProxy to blend with legitimate ViPNet-encrypted traffic
  • Anti-analysis: Rust-based backdoor (harder static analysis than C/C++), legitimate-directory masquerading, dedicated cleaner component for anti-forensics

IOC Analysis

Both pulses are dominated by FileHash-MD5 indicators (23 total sample hashes across the two campaigns) — covering GoSerpent variants, credential dumping tooling, and the HelloNet component set. This indicator profile tells us two things: (1) these are sample-level artifacts from reverse-engineering operations, ideal for retro-hunting file systems and email/EDR telemetry; (2) hash-only intel ages quickly, so behavioral detection is mandatory.

Operationalization guidance for SOC teams:

  • Push all MD5 hashes into your EDR blocklist and SIEM threat-intel watchlists immediately. Note: MD5 is provided here as-source; where possible pivot to SHA-256 equivalents via your sandbox/VirusTotal enrichment before blocking, but use MD5 for historical hunting since EDR telemetry often retains it
  • Retro-hunt DeviceFileEvents / file creation logs for 90+ days — these campaigns are long-dwell operations (GoSerpent since 2021)
  • For HelloNet: hash matching alone is insufficient — hunt the persistence artifact (wtsapi32.dll in ViPNet paths) and unsigned/unexpected DLL loads by ViPNet binaries, which survives recompilation
  • Tooling: enrich hashes through OTX, VirusTotal, or Hybrid Analysis; decode GoSerpent's encrypted arguments and ChaCha20/AES-CBC C2 traffic with sandbox detonation (CAPE, ANY.RUN) plus the published Securelist analysis referenced in each pulse

Detection Engineering

YAML
---
title: DLL Sideloading via Malicious wtsapi32.dll in ViPNet Directory (HelloNet)
id: 7c3a1f22-9b4e-4d1a-8f5c-hellonet0001
status: experimental
description: Detects creation or loading of wtsapi32.dll inside ViPNet installation directories, a persistence technique used by the HelloNet APT campaign targeting Russian government and critical infrastructure organizations.
author: Security Arsenal Threat Intelligence
date: 2026/08/15
references:
    - https://securelist.com/tr/hellonet-vipnet/120700/
logsource:
    category: image_load
    product: windows
detection:
    selection_dll:
        ImageLoaded|endswith: '\wtsapi32.dll'
    selection_path:
        ImageLoaded|contains:
            - '\ViPNet\'
            - '\Infotecs\'
    filter_system:
        ImageLoaded|startswith: 'C:\Windows\System32\'
    condition: selection_dll and selection_path and not filter_system
falsepositives:
    - Legitimate ViPNet updates (validate digital signature on the DLL)
level: high
tags:
    - attack.persistence
    - attack.t1574.002
---
title: GoSerpent Credential Dumping Tool Execution (Mimikatz / QuarksDumpLocalHash)
id: 8d4b2e33-1c5f-5e2b-9a6d-goserpent002
status: experimental
description: Detects execution of credential dumping tooling associated with the TetrisPhantom GoSerpent campaign targeting Southeast Asian government and diplomatic entities, including QuarksDumpLocalHash and Mimikatz variants.
author: Security Arsenal Threat Intelligence
date: 2026/08/15
references:
    - https://securelist.com/goserpent-backdoor-in-southeast-asia/120687/
logsource:
    category: process_creation
    product: windows
detection:
    selection_names:
        Image|endswith:
            - '\QuarksDumpLocalHash.exe'
            - '\mimikatz.exe'
            - '\Stowaway.exe'
            - '\TmcLoader.exe'
    selection_cmdline:
        CommandLine|contains:
            - 'QuarksDumpLocalHash'
            - 'sekurlsa::'
            - 'lsadump::'
    selection_service:
        Image|endswith: '\ThumbcacheService.exe'
    condition: 1 of selection_*
falsepositives:
    - Authorized penetration testing activity
level: critical
tags:
    - attack.credential_access
    - attack.t1003
    - attack.execution
---
title: Suspicious Go/Rust Binary Network Beaconing with Encrypted Arguments
description: Detects processes launched with unusually long or high-entropy argument strings followed by outbound network activity, consistent with GoSerpent's encrypted-argument execution model and staged Go/Rust implants.
author: Security Arsenal Threat Intelligence
date: 2026/08/15
status: experimental
id: 9e5c3f44-2d6a-6f3c-ab7e-encargs003
logsource:
    category: process_creation
    product: windows
detection:
    selection_long_args:
        CommandLine|re: '^.{200,}$'
    selection_nonstandard_path:
        Image|contains:
            - '\Temp\'
            - '\AppData\'
            - '\ProgramData\'
            - '\Users\Public\'
    filter_known:
        Image|endswith:
            - '\chrome.exe'
            - '\msedge.exe'
            - '\Teams.exe'
    condition: selection_long_args and selection_nonstandard_path and not filter_known
falsepositives:
    - Legitimate software installers with encoded parameters
level: medium
tags:
    - attack.execution
    - attack.t1027
KQL — Microsoft Sentinel / Defender
// Hunt: HelloNet DLL sideloading + GoSerpent tooling execution + known-bad hashes
// Microsoft Sentinel / Defender XDR — run over last 30 days minimum
let BadHashes = dynamic([
  "ebffd5a76aaa690bcdb922f82e0bacc5","dc506ff7bb72735444fb3703a6bee6d8",
  "d6e86bf8a90e9b632add5fa495f97fbc","cb6c4c70a3b171fa3404b8e1a3382116",
  "64e9d1950e42bc98486dfd9919463d1c","cbbb6d483737ea3566726e51752dff40",
  "7f223ee0716ce2ad56f55d3744419449","19f8befcb035f52bf70094e6b4f5779a",
  "0cfdffc56f0fa325d0c4d24780b46597","16c211c96735f2fae9361b89bd7a31bf",
  "1bfe2b9493128574907a8279256a8bcc","41c938b3cd7e55d4077e34976929b140",
  "6001829a128fe264b4403138700c11a8","9f5606a0755bc633b9bd7db6d179c09e",
  "b103cd21280b4061f88b2bcc51394894","ee4ff46ddd8489e81447962f927bc3f6"]);
let HashHits = union isfuzzy=true
    (DeviceFileEvents
     | where MD5 in (BadHashes)
     | project HitType="HashMatch-FileEvent", TimeGenerated, DeviceName, FileName, FolderPath, MD5),
    (DeviceProcessEvents
     | where MD5 in (BadHashes)
     | project HitType="HashMatch-ProcessExec", TimeGenerated, DeviceName, FileName, FolderPath, MD5, ProcessCommandLine);
let SideloadHits = DeviceImageLoadEvents
    | where FileName =~ "wtsapi32.dll"
    | where FolderPath has_any ("ViPNet", "Infotecs")
    | where not(FolderPath startswith "C:\\Windows\\System32")
    | project HitType="ViPNet-DLL-Sideload", TimeGenerated, DeviceName, FileName, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine;
let CredToolHits = DeviceProcessEvents
    | where FileName has_any ("QuarksDumpLocalHash", "mimikatz", "Stowaway", "TmcLoader", "ThumbcacheService")
       or ProcessCommandLine has_any ("sekurlsa::", "lsadump::", "QuarksDumpLocalHash")
    | project HitType="GoSerpent-CredTooling", TimeGenerated, DeviceName, FileName, FolderPath, ProcessCommandLine, AccountName;
union isfuzzy=true HashHits, SideloadHits, CredToolHits
| order by TimeGenerated desc
PowerShell
# GoSerpent / HelloNet host IOC hunt — run elevated on suspected endpoints
# Checks: ViPNet DLL sideload persistence, credential tooling artifacts, suspicious services

Write-Output "=== [1] ViPNet wtsapi32.dll sideload check (HelloNet) ==="
$vipnetPaths = @("$env:ProgramFiles\Infotecs", "${env:ProgramFiles(x86)}\Infotecs", "$env:ProgramFiles\ViPNet", "${env:ProgramFiles(x86)}\ViPNet")
foreach ($p in $vipnetPaths) {
    if (Test-Path $p) {
        Get-ChildItem -Path $p -Recurse -Filter "wtsapi32.dll" -ErrorAction SilentlyContinue | ForEach-Object {
            $sig = Get-AuthenticodeSignature $_.FullName
            Write-Output "FOUND: $($_.FullName) | Signature: $($sig.Status) | Signer: $($sig.SignerCertificate.Subject)"
            Write-Output "  MD5: $((Get-FileHash $_.FullName -Algorithm MD5).Hash)"
            if ($sig.Status -ne 'Valid') { Write-Output "  !!! UNSIGNED/INVALID — likely sideloaded payload !!!" }
        }
    }
}

Write-Output "`n=== [2] GoSerpent tooling artifacts ==="
$toolNames = @("QuarksDumpLocalHash*","TmcLoader*","TmcPayload*","Stowaway*","ThumbcacheService*","McMx*")
$searchDirs = @("$env:TEMP", "$env:ProgramData", "C:\Users\Public", "$env:APPDATA", "$env:LOCALAPPDATA")
foreach ($d in $searchDirs) {
    foreach ($t in $toolNames) {
        Get-ChildItem -Path $d -Recurse -Filter $t -ErrorAction SilentlyContinue | ForEach-Object {
            Write-Output "SUSPICIOUS: $($_.FullName) | MD5: $((Get-FileHash $_.FullName -Algorithm MD5).Hash)"
        }
    }
}

Write-Output "`n=== [3] Masquerading persistence services (ThumbcacheService etc.) ==="
Get-CimInstance Win32_Service | Where-Object { $_.PathName -match "Thumbcache|wtsapi|TmcLoader|Stowaway" } |
    Select-Object Name, DisplayName, State, PathName, StartName | Format-List

Write-Output "`n=== [4] Known-bad hash sweep (recent downloads/temp) ==="
$badMD5 = @("ebffd5a76aaa690bcdb922f82e0bacc5","dc506ff7bb72735444fb3703a6bee6d8","d6e86bf8a90e9b632add5fa495f97fbc",
"cb6c4c70a3b171fa3404b8e1a3382116","64e9d1950e42bc98486dfd9919463d1c","cbbb6d483737ea3566726e51752dff40",
"7f223ee0716ce2ad56f55d3744419449","19f8befcb035f52bf70094e6b4f5779a","0cfdffc56f0fa325d0c4d24780b46597",
"16c211c96735f2fae9361b89bd7a31bf","1bfe2b9493128574907a8279256a8bcc","41c938b3cd7e55d4077e34976929b140",
"6001829a128fe264b4403138700c11a8","9f5606a0755bc633b9bd7db6d179c09e","b103cd21280b4061f88b2bcc51394894","ee4ff46ddd8489e81447962f927bc3f6")
foreach ($d in $searchDirs) {
    Get-ChildItem -Path $d -Recurse -File -ErrorAction SilentlyContinue | Where-Object { $_.Length -lt 50MB } | ForEach-Object {
        $h = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash
        if ($h -and ($badMD5 -contains $h.ToLower())) { Write-Output "!!! IOC MATCH: $($_.FullName) [$h] !!!" }
    }
}

Write-Output "`n=== [5] Outbound proxy/tunnel connections (Stowaway/HelloProxy behavior) ==="
Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
    Where-Object { $_.RemotePort -in @(1080,8080,8443,4443) -and $_.OwningProcess -ne 4 } |
    ForEach-Object { $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
        Write-Output "$($proc.ProcessName) (PID $($_.OwningProcess)) -> $($_.RemoteAddress):$($_.RemotePort)" }

Response Priorities

Immediate (0–4 hours):

  • Ingest all 23 MD5 indicators into EDR blocklists, SIEM watchlists, and email gateway/secure web gateway hash filtering
  • If ViPNet is deployed anywhere in your environment: inventory all installations and verify the digital signature of every wtsapi32.dll in ViPNet directories — this is the single highest-fidelity HelloNet artifact
  • Deploy the Sigma and KQL detections above; run the PowerShell hunt script on domain controllers, exchange servers, and any host handling diplomatic/government data
  • Audit outbound connections on proxy/tunnel ports (1080, 8080, 8443) for Stowaway/HelloProxy-style tunneling

24 hours:

  • GoSerpent deploys Mimikatz and QuarksDumpLocalHash — treat any hash or credential-tool hit as full credential compromise. Force resets for all accounts with logons on affected hosts, prioritizing privileged and service accounts
  • Invalidate active sessions and Kerberos tickets (krbtgt double-reset if DC exposure is confirmed); review new account creation, group membership changes, and abnormal logon patterns in the 30 days preceding any detection
  • Verify no ViPNet update infrastructure connects to your network segment; temporarily block/quarantine update channels pending vendor integrity confirmation

1 week:

  • Implement application control (WDAC/AppLocker) to prevent unsigned DLL loading from application directories — the definitive kill-shot for the HelloNet sideload technique
  • Segment government/diplomatic user VLANs and restrict east-west traffic to break GoSerpent's proxy-pivot model; deploy TLS-inspection or JA3/JA4 fingerprinting to catch ChaCha20/AES-CBC beaconing anomalies
  • Establish software supply-chain integrity verification (hash/signature validation of all updates before deployment) for any trusted update channel, not just ViPNet
  • Extend credential-theft detection: enable LSASS protection (RunAsPPL), Credential Guard, and alert on any non-system process accessing lsass.exe memory

Related Resources

Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.