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.dllplaced 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.dllin 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
---
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
// 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
# 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.dllin 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.