GoSerpent - Go-Based Espionage Backdoor & Multi-Tool Chain
Executive Summary
GoSerpent is a Go-based remote access Trojan with proxy capabilities that serves as the entry stage of a carefully staged, multi-tool espionage operation. The most recent variant receives an AES-CBC encrypted, Base64-encoded command-line argument (fixed IV 31323334353637383930616263646566) carrying its C2 address and communication password, then beacons over a ChaCha20-encrypted channel keyed by the SHA256 of that password. Older 2021-era variants that take plaintext command-line arguments are still deployed alongside the newer build.
The operation is deliberately phased over months. In the initial phase GoSerpent drops ThumbcacheService (a DLL Windows service that harvests .doc/.docx/.pdf/.xls/.xlsx documents, archives them with 7-Zip under a hardcoded password, and stages them in C:\Users\Public\thumbcache_605a.db) plus the credential dumpers Mimikatz (LSASS) and QuarksDumpLocalHash (SAM hive). Weeks later the actor returns with Stowaway (an SSH-capable proxy/RAT) which delivers TmcLoader/TmcPayload, a C++ service loader that injects into svchost.exe, reads an encrypted config ({BBF061R2-BE25-4F6D-8B2D-1A6A39C3FSA2}.db), and exfiltrates the staged archive over network shares using the previously stolen credentials.
C:\Users\Public\, 7-Zip archiving with a fixed password, service-installed DLLs, credential dumping, and svchost injection followed by SMB egress are the durable signals. Hunt the chain, block the atomic IOCs, and harden service creation + LSASS/SAM access.
Source Review & Web-Hunter Notes
Two sources were fetched and saved verbatim to GoSerpent-Hunt-sources/. Securelist is the IOC-authoritative primary; The Hacker News corroborates the narrative and toolset.
| Tier | Source | Key Finding | Carry Fwd |
|---|---|---|---|
| 1 (Primary) | Securelist / Kaspersky GReAT (Noushin Shabab), 2026-07-16 | Full technical writeup + IOC appendix: 11 C2 IPs, 11 MD5 hashes, tool internals, encryption schemes, staging artifacts. | yes |
| 2 (Corroborating) | The Hacker News, 2026-07 | Confirms toolset, attack phases, command set, and TetrisPhantom overlap. No additional atomic IOCs. | partial |
Hunt Brief & Attack Chain
| # | Stage | Behavior | Telemetry | Hunt Angle |
|---|---|---|---|---|
| 1 | Foothold | GoSerpent runs, masquerading as lass.exe / updates.exe; decrypts AES-CBC arg; beacons ChaCha20. | ProcessRollup2, NetworkConnectIP4 | Masqueraded names; C2 IP callbacks (Q1–Q3) |
| 2 | Tooling | GoSerpent downloads ThumbcacheService, Mimikatz, QuarksDumpLocalHash. McMx config built via echo batch. | ProcessRollup2, ServiceInstalled | Service install; cred-dump sigils (Q6, Q8) |
| 3 | Collection | ThumbcacheService harvests documents, 7-Zip archives them under a fixed password into thumbcache_605a.db. | File-write, ProcessRollup2 | Staging DB write; archive password (Q4, Q7) |
| 4 | Cred access | Mimikatz dumps LSASS; QuarksDumpLocalHash reads the SAM hive. | ProcessRollup2 | LSASS/SAM access command lines (Q8) |
| 5 | Re-entry | Weeks later Stowaway deploys with SOCKS5 / SSH tunneling; delivers TmcLoader + encrypted config DB. | ProcessRollup2, NetworkListenIP4 | Proxy/tunnel listeners; config DB write (Q5, Q9) |
| 6 | Exfil | TmcLoader injects TmcPayload into svchost; reads share creds; copies the archive out over SMB. | ProcessRollup2, NetworkConnectIP4 | svchost SMB egress after config DB (Q5, Q9) |
Consolidated IOC Table
All indicators below are drawn verbatim from the saved Securelist snapshot. IPs are shown defanged for safety; the machine-readable appendix (§10) ships fanged, import-ready values.
| Type | Value | Attribution | Conf | Action |
|---|---|---|---|---|
| MD5 | EBFFD5A76AAA690BCDB922F82E0BACC5 | GoSerpent | high | Block + hunt |
| MD5 | DC506FF7BB72735444FB3703A6BEE6D8 | GoSerpent | high | Block + hunt |
| MD5 | D6E86BF8A90E9B632ADD5FA495F97FBC | McMx RAT | high | Block + hunt |
| MD5 | CB6C4C70A3B171FA3404B8E1A3382116 | ThumbcacheService | high | Block + hunt |
| MD5 | 64E9D1950E42BC98486DFD9919463D1C | ThumbcacheService | high | Block + hunt |
| MD5 | CBBB6D483737EA3566726E51752DFF40 | Stowaway | high | Block + hunt |
| MD5 | 7F223EE0716CE2AD56F55D3744419449 | Stowaway | high | Block + hunt |
| MD5 | 19F8BEFCB035F52BF70094E6B4F5779A | Stowaway | high | Block + hunt |
| MD5 | 846EF7C1C7323849B2A778C5E4CDA162 | Stowaway | high | Block + hunt |
| MD5 | D08A059E8B815E3B891505BC8777FC28 | TmcLoader | high | Block + hunt |
| MD5 | 93A1569D5D5AB2C4761FEDF84F83709E | TmcLoader | high | Block + hunt |
| C2 IP | 152.32.160[.]239 | C2 (Alibaba/UCLOUD) | high | Block + hunt |
| C2 IP | 8.220.194[.]108 | C2 | high | Block + hunt |
| C2 IP | 8.220.214[.]132 | C2 | high | Block + hunt |
| C2 IP | 8.220.209[.]155 | C2 | high | Block + hunt |
| C2 IP | 8.220.193[.]189 | C2 | high | Block + hunt |
| C2 IP | 101.36.104[.]87 | C2 | high | Block + hunt |
| C2 IP | 144.48.6[.]46 | C2 | high | Block + hunt |
| C2 IP | 103.138.13[.]30 | C2 | high | Block + hunt |
| C2 IP | 47.80.22[.]58 | C2 | high | Block + hunt |
| C2 IP | 152.32.222[.]113 | C2 | high | Block + hunt |
| C2 IP | 43.106.30[.]226 | C2 | high | Block + hunt |
| Filename | lass.exe | GoSerpent masquerade | med | Hunt |
| Filename | updates.exe | GoSerpent masquerade | med | Hunt |
| Filename | thumbcache_605a.db | ThumbcacheService staging archive | high | Hunt |
| Config file | {BBF061R2-BE25-4F6D-8B2D-1A6A39C3FSA2}.db | TmcLoader config | high | Hunt |
| Archive pw | @vx0a9n5W2M0c3D6.# | 7-Zip password (ThumbcacheService) | high | Hunt |
Affected Surface & Telemetry Matrix
| Surface | Required Telemetry | Falcon Events | Priority | Gap Risk |
|---|---|---|---|---|
| Endpoint process exec | Process create + command line | ProcessRollup2, SyntheticProcessRollup2 | high | low |
| File staging / collection | File write to C:\Users\Public | File-write events (TargetFileName) | high | medium |
| Windows services | Service install / start | ServiceInstalled, ServiceStarted | high | medium |
| Network C2 / proxy | Outbound conns + listeners | NetworkConnectIP4, NetworkListenIP4 | high | low |
| Credential access | LSASS / SAM access | ProcessRollup2 (cmdline) | high | medium |
| Lateral / exfil (SMB) | Network logon + share access | UserLogon, NetworkConnectIP4 (445) | med | high |
ATT&CK Mapping
| Tactic | Technique | ID | Observed |
|---|---|---|---|
| Execution | Command & Scripting Interpreter | T1059.003 | McMx config built via echo batch files |
| Persistence / Priv-Esc | System Service: Windows Service | T1543.003 | ThumbcacheService & TmcLoader registered as services |
| Command & Control | Ingress Tool Transfer | T1105 | GoSerpent downloads ThumbcacheService, Mimikatz, QuarksDumpLocalHash |
| Defense Evasion | Masquerading: Match Legitimate Name | T1036.005 | lass.exe, updates.exe |
| Defense Evasion | Process Injection | T1055 | TmcPayload injected into svchost.exe |
| Defense Evasion | Obfuscated/Encrypted Info | T1027 | XOR 0x13, circular XOR + Base64 API hiding |
| Credential Access | OS Credential Dumping: LSASS | T1003.001 | Mimikatz LSASS memory dump |
| Credential Access | OS Credential Dumping: SAM | T1003.002 | QuarksDumpLocalHash SAM hive extraction |
| Collection | Data from Local System | T1005 | ThumbcacheService document harvesting |
| Collection | Archive via Utility | T1560.001 | 7-Zip password-protected archive |
| Collection | Local Data Staging | T1074.001 | thumbcache_605a.db staging DB |
| Command & Control | Encrypted Channel | T1573 | AES-CBC / ChaCha20 / AES-256-GCM |
| Command & Control | Proxy: Internal Proxy | T1090.001 | SOCKS5 via GoSerpent / McMx / Stowaway |
| Command & Control | Protocol Tunneling | T1572 | Stowaway SSH-based tunneling |
| Lateral Movement | Remote Services: SMB Admin Shares | T1021.002 | Exfil via network shared drives |
| Exfiltration | Exfil Over Alternative Protocol (SMB) | T1048 | TmcPayload copies the staged archive to a remote SMB share (not over the C2 channel) |
Native Audit-Log Hunts (non-CQL)
- Windows Service creation — Security 4697 / System 7045: review new services whose ImagePath is a DLL under
svchost -kor an EXE inC:\Users\Public. Maps to ThumbcacheService / TmcLoader. - SAM hive access — Security 4663 on
HKLM\SAMandreg save hklm\samprocess events (QuarksDumpLocalHash). - LSASS access — Sysmon EventID 10 with
GrantedAccess=0x1410/0x1010targetinglsass.exe(Mimikatz). - Staging file — File-system auditing on
C:\Users\Public\for creation ofthumbcache_605a.dbor files underC:\Users\Public\Libraries\. - SMB egress — Security 5140/5145 network share access correlated with newly-dumped local accounts.
CrowdStrike LogScale CQL Hunt Queries
Nine queries ordered high-fidelity first. Pick your cloud, then Copy CQL or Open in Falcon per card. Validate field names against your tenant data model before scheduling.
// HUNT: GoSerpent / McMx / ThumbcacheService / Stowaway / TmcLoader known MD5 hashes
// MITRE: T1204, T1543.003
// CONF: high FP: low COST: low
// REQUIRES: ProcessRollup2 with MD5HashData
// FALSE POSITIVES: none expected for exact hash matches
#event_simpleName=/^(ProcessRollup2|PeFileWritten)$/
| MD5HashData=/^(EBFFD5A76AAA690BCDB922F82E0BACC5|DC506FF7BB72735444FB3703A6BEE6D8|D6E86BF8A90E9B632ADD5FA495F97FBC|CB6C4C70A3B171FA3404B8E1A3382116|64E9D1950E42BC98486DFD9919463D1C|CBBB6D483737EA3566726E51752DFF40|7F223EE0716CE2AD56F55D3744419449|19F8BEFCB035F52BF70094E6B4F5779A|846EF7C1C7323849B2A778C5E4CDA162|D08A059E8B815E3B891505BC8777FC28|93A1569D5D5AB2C4761FEDF84F83709E)$/i
| table([ComputerName, UserName, FileName, ImageFileName, MD5HashData, CommandLine], limit=max)
// HUNT: Outbound connections to the 11 published C2 IPs
// MITRE: T1071, T1573
// CONF: high FP: low COST: low
// REQUIRES: NetworkConnectIP4
// FALSE POSITIVES: none expected; IPs are dedicated C2 (rotate quickly)
#event_simpleName=/^NetworkConnectIP4$/
| RemoteAddressIP4=/^(152\.32\.160\.239|8\.220\.194\.108|8\.220\.214\.132|8\.220\.209\.155|8\.220\.193\.189|101\.36\.104\.87|144\.48\.6\.46|103\.138\.13\.30|47\.80\.22\.58|152\.32\.222\.113|43\.106\.30\.226)$/
| table([ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort, Protocol], limit=max)
// HUNT: Execution of masqueraded GoSerpent process names
// MITRE: T1036.005
// CONF: medium FP: medium COST: low
// REQUIRES: ProcessRollup2
// FALSE POSITIVES: legit updater binaries also named updates.exe
// TUNING: exclude signed updates.exe under \Program Files\ and known vendor paths;
// lass.exe (note: NOT lsass.exe) is high-signal on its own
#event_simpleName=/^ProcessRollup2$/
| FileName=/^(lass|updates)\.exe$/i
| ImageFileName!=/\\Program Files/i
| table([ComputerName, UserName, FileName, ImageFileName, ParentBaseFileName, CommandLine, MD5HashData], limit=200)
// HUNT: Creation of the distinctive collection archive thumbcache_605a.db
// MITRE: T1074.001, T1005
// CONF: medium FP: low COST: low
// TELEMETRY: thumbcache_605a.db is a 7-Zip archive renamed .db, so the matching
// event is SevenZipFileWritten (Falcon types archive writes by content, not by
// extension). ZipFileWritten/PE variants are kept for the loader binaries.
// FALSE POSITIVES: legit thumbcache_*.db live in AppData, NOT C:\Users\Public
#event_simpleName=/^(SevenZipFileWritten|ZipFileWritten|NewExecutableWritten|PeFileWritten)$/
| TargetFileName=/thumbcache_605a\.db$/i
| table([ComputerName, UserName, ContextBaseFileName, TargetFileName], limit=200)
// HUNT: Encrypted TmcLoader configuration DB (GUID-named)
// MITRE: T1074 (NOTE: the T1055 svchost injection that TmcPayload performs is NOT
// observed by this file-write query -- see the Detection Coverage Map gap row.)
// CONF: medium FP: low COST: low
// TELEMETRY: same SevenZipFileWritten reasoning as Q4.
// SOURCE CAVEAT: the config filename below is reproduced VERBATIM from Securelist and
// contains non-hex characters (R, S) -- it may be an OCR artifact in the source. If
// the real on-disk name is a valid GUID, this literal will not match. Hunt/enrich only.
#event_simpleName=/^(SevenZipFileWritten|ZipFileWritten|NewExecutableWritten|PeFileWritten)$/
| TargetFileName=/\{BBF061R2-BE25-4F6D-8B2D-1A6A39C3FSA2\}\.db$/i
| table([ComputerName, UserName, ContextBaseFileName, TargetFileName], limit=200)
// HUNT: 7-Zip invoked with the ThumbcacheService archive password
// MITRE: T1560.001
// CONF: high FP: low COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// FALSE POSITIVES: none; password literal is campaign-specific
#event_simpleName=/^ProcessRollup2$/
| CommandLine=/@vx0a9n5W2M0c3D6/
| table([ComputerName, UserName, FileName, CommandLine, MD5HashData], limit=200)
// HUNT: Service install whose ImagePath resolves under C:\Users\Public
// MITRE: T1543.003
// CONF: medium FP: low COST: medium
// REQUIRES: ServiceInstalled
// NOTE: the earlier svchost.*-k branch was removed -- "svchost.exe -k <group>" is the
// normal ImagePath of nearly every built-in Windows service and matched all of
// them. A service binary under a user-writable path is the real anomaly here.
// FALSE POSITIVES: rare legit installers that stage under Public; exclude signed ones.
#event_simpleName=/^(CreateService|ModifyServiceBinary)$/
| ServiceImagePath=/\\Users\\Public\\/i
| table([ComputerName, UserName, ServiceDisplayName, ServiceImagePath], limit=200)
// HUNT: Command-line sigils of LSASS/SAM credential dumping
// MITRE: T1003.001, T1003.002
// CONF: medium FP: medium COST: low
// REQUIRES: ProcessRollup2 with CommandLine
// FALSE POSITIVES: admins running reg save / backup of SAM legitimately
// TUNING: scope to non-admin or unexpected parent processes; exclude sanctioned
// backup/IR tooling by MD5HashData allowlist
#event_simpleName=/^ProcessRollup2$/
| CommandLine=/sekurlsa|lsadump|privilege::debug|reg(\.exe)?\s+save\s+hk(lm|ey_local_machine)\\sam|QuarksDump/i
| table([ComputerName, UserName, FileName, ParentBaseFileName, CommandLine, MD5HashData], limit=200)
// HUNT: SOCKS5/SSH tunnel setup and McMx plaintext-config creation
// MITRE: T1090.001, T1572, T1059.003
// CONF: medium FP: high COST: medium
// REQUIRES: ProcessRollup2 (cmdline)
// FALSE POSITIVES: legit admin ssh -R/-D tunnels; batch scripts using echo
// TUNING: restrict to non-IT hosts; require an uncommon parent (cmd spawned by a
// Public-dir binary) and exclude sanctioned jump-box / bastion accounts
#event_simpleName=/^ProcessRollup2$/
| CommandLine=/ssh(\.exe)?\s+.*-[RDL]\s|socks5|echo\s+.*(secret|rhost|rport).*>/i
| ParentBaseFileName!=/^(devenv|code|WindowsTerminal)\.exe$/i
| table([ComputerName, UserName, FileName, ParentBaseFileName, CommandLine], limit=200)
CrowdStrike Custom IOA Recommendations
| IOA | Basis | Rule Type | Action |
|---|---|---|---|
| Public-dir staging DB | Q4 — file thumbcache_605a.db created in C:\Users\Public | File Creation | Detect → Block (high conf) |
| TmcLoader config DB | Q5 — GUID-named .db in Public\Libraries | File Creation | Detect (high conf) |
| Fixed archive password | Q6 — command line contains @vx0a9n5W2M0c3D6 | Process Creation | Detect → Block |
| lass.exe execution | Q3 — process named lass.exe | Process Creation | Detect (medium conf) |
| Public-dir service install | Q7 — service ImagePath under \Users\Public | Service Creation | Detect (tune first) |
Machine-Readable IOC Appendix
Grouped Quick-Copy grid for fast pivoting, plus an import-ready CSV for Falcon IOC Management.
152.32.160.239 8.220.194.108 8.220.214.132 8.220.209.155 8.220.193.189 101.36.104.87 144.48.6.46 103.138.13.30 47.80.22.58 152.32.222.113 43.106.30.226
EBFFD5A76AAA690BCDB922F82E0BACC5 DC506FF7BB72735444FB3703A6BEE6D8 D6E86BF8A90E9B632ADD5FA495F97FBC CB6C4C70A3B171FA3404B8E1A3382116 64E9D1950E42BC98486DFD9919463D1C CBBB6D483737EA3566726E51752DFF40 7F223EE0716CE2AD56F55D3744419449 19F8BEFCB035F52BF70094E6B4F5779A 846EF7C1C7323849B2A778C5E4CDA162 D08A059E8B815E3B891505BC8777FC28 93A1569D5D5AB2C4761FEDF84F83709E
lass.exe
updates.exe
thumbcache_605a.db (C:\Users\Public\)
{BBF061R2-BE25-4F6D-8B2D-1A6A39C3FSA2}.db (C:\Users\Public\Libraries\)
7-Zip archive password: @vx0a9n5W2M0c3D6.#
AES-CBC fixed IV: 31323334353637383930616263646566
type,value,action,severity,description ipv4,152.32.160.239,detect,high,GoSerpent C2 ipv4,8.220.194.108,detect,high,GoSerpent C2 ipv4,8.220.214.132,detect,high,GoSerpent C2 ipv4,8.220.209.155,detect,high,GoSerpent C2 ipv4,8.220.193.189,detect,high,GoSerpent C2 ipv4,101.36.104.87,detect,high,GoSerpent C2 ipv4,144.48.6.46,detect,high,GoSerpent C2 ipv4,103.138.13.30,detect,high,GoSerpent C2 ipv4,47.80.22.58,detect,high,GoSerpent C2 ipv4,152.32.222.113,detect,high,GoSerpent C2 ipv4,43.106.30.226,detect,high,GoSerpent C2 md5,EBFFD5A76AAA690BCDB922F82E0BACC5,detect,high,GoSerpent md5,DC506FF7BB72735444FB3703A6BEE6D8,detect,high,GoSerpent md5,D6E86BF8A90E9B632ADD5FA495F97FBC,detect,high,McMx RAT md5,CB6C4C70A3B171FA3404B8E1A3382116,detect,high,ThumbcacheService md5,64E9D1950E42BC98486DFD9919463D1C,detect,high,ThumbcacheService md5,CBBB6D483737EA3566726E51752DFF40,detect,high,Stowaway md5,7F223EE0716CE2AD56F55D3744419449,detect,high,Stowaway md5,19F8BEFCB035F52BF70094E6B4F5779A,detect,high,Stowaway md5,846EF7C1C7323849B2A778C5E4CDA162,detect,high,Stowaway md5,D08A059E8B815E3B891505BC8777FC28,detect,high,TmcLoader md5,93A1569D5D5AB2C4761FEDF84F83709E,detect,high,TmcLoader filename,lass.exe,detect,medium,GoSerpent masquerade filename,updates.exe,hunt,medium,GoSerpent masquerade (generic name; hunt-only to avoid FP on legit updaters) filename,thumbcache_605a.db,detect,high,ThumbcacheService staging archive
Detection Validation Gates
- Every atomic IOC (11 IPs, 11 MD5, 3 filenames) traces to the saved Securelist snapshot in
GoSerpent-Hunt-sources/. - All CQL fields validated against the Falcon data model (ProcessRollup2, NetworkConnectIP4, ServiceInstalled, file-write events).
- Regexes match basenames via
FileName/TargetFileName— no unescaped path slashes inside/.../. - Every FP medium/high card (Q3, Q7, Q8, Q9) carries a
// TUNING:exclusion. - Date stamped 2026-07-22 across sidebar, header, changelog, ticket and footer.
- Before deploy: confirm your tenant emits
ServiceInstalledand a file-write event carryingTargetFileName(Q4/Q5/Q7 depend on these).
Hardening — Tiered
Immediate (this week)
| Control | MITRE | Authority | Verify |
|---|---|---|---|
| Enable LSASS protection (RunAsPPL) to block Mimikatz memory reads | M1043 | MS Security Baseline; CIS Win 18.x | reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL |
Block untrusted executables in C:\Users\Public\ via WDAC/AppLocker path + publisher rules | M1038 | CIS Win; MS WDAC guidance | Get-AppLockerPolicy -Effective |
| Push the 11 C2 IPs + 11 MD5 to Falcon IOC Management (detect/block) | M1031 | CrowdStrike IOC Mgmt | Falcon → IOC Management → search hash/IP |
Near term (1–4 weeks)
| Control | MITRE | Authority | Verify |
|---|---|---|---|
| Restrict new service creation to admins; alert on service ImagePath under user-writable dirs | M1028 | CIS Win 2.2 / 5.x | Event 4697 monitoring; Q7 |
Enable SAM/SECURITY hive object-access auditing; deny non-admin reg save | M1041 | CIS Win 17.x; DISA STIG | auditpol /get /subcategory:"Registry" |
| Segment SMB — restrict admin-share access to jump hosts; enable SMB signing | M1037 / M1035 | CIS Win; MS SMB hardening | Get-SmbServerConfiguration | select RequireSecuritySignature |
Strategic (1–3 months)
| Control | MITRE | Authority | Verify |
|---|---|---|---|
| Tiered administration model; LAPS for local accounts to blunt SAM-hash reuse | M1026 / M1027 | MS Enterprise Access Model | LAPS policy applied; unique local pw per host |
| Egress filtering / proxy allowlisting to break SOCKS5 & SSH tunneling | M1037 | NIST 800-41; vendor FW guides | Deny-by-default outbound; log tunnel attempts |
Deployable Playbooks
Enable LSASS RunAsPPL (blocks Mimikatz)
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPLBoot /t REG_DWORD /d 1 /f # Reboot required. Verify after reboot: reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL
AppLocker deny rule for user-writable staging dir (PowerShell)
<!-- Deny execution from C:\Users\Public, where GoSerpent drops its collection tooling. -->
<!-- Import: Group Policy -> Computer Configuration -> Windows Settings -> Security
Settings -> Application Control Policies -> AppLocker -> Executable Rules -->
<!-- SHIPS AS AuditOnly ON PURPOSE. Run it for at least a week and review EventID
8003 before flipping EnforcementMode to "Enabled". -->
<RuleCollection Type="Exe" EnforcementMode="AuditOnly">
<!-- Microsoft default allow rules -- DO NOT REMOVE. Without them, enforcing this
collection blocks every executable on the machine, including your RMM agent. -->
<FilePathRule Id="921cc481-6e17-4653-8f75-050b80acca20" Name="(Default) All files in Program Files"
Description="Allows Everyone to run applications in Program Files."
UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions><FilePathCondition Path="%PROGRAMFILES%\*" /></Conditions>
</FilePathRule>
<FilePathRule Id="a61c8b2c-a319-4cd0-9690-d2177cad7b51" Name="(Default) All files in Windows"
Description="Allows Everyone to run applications in the Windows folder."
UserOrGroupSid="S-1-1-0" Action="Allow">
<Conditions><FilePathCondition Path="%WINDIR%\*" /></Conditions>
</FilePathRule>
<FilePathRule Id="fd686d83-a829-4351-8ff4-27c7de5755d2" Name="(Default) All files -- Administrators"
Description="Allows local Administrators to run all applications."
UserOrGroupSid="S-1-5-32-544" Action="Allow">
<Conditions><FilePathCondition Path="*" /></Conditions>
</FilePathRule>
<!-- Some installers stage to Users\Public. Audit for a week, then enforce and confirm the collection tooling cannot run from that path. -->
<FilePathRule Id="e58a1c94-6d20-47b3-bf09-2a4c8e1d5f77" Name="Deny execution from Users\Public for standard users"
Description="GoSerpent drops and runs collection tooling from the Public profile"
UserOrGroupSid="S-1-5-32-545" Action="Deny">
<Conditions>
<FilePathCondition Path="%SYSTEMDRIVE%\Users\Public\*" />
</Conditions>
</FilePathRule>
</RuleCollection>
Prerequisites: the Application Identity service (AppIDSvc) must be
Running/Automatic, set via GPO -- AppLocker evaluates nothing without it. Pilot OU.
Reboot required: no (gpupdate /force to refresh policy).
Verify: during the AuditOnly week, review Applications and Services Logs
> Microsoft > Windows > AppLocker > EXE and DLL for EventID 8003
(would-have-blocked). Zero unexpected entries means it is safe to set
EnforcementMode="Enabled"; a real block then logs EventID 8004.
Rollback: set EnforcementMode="NotConfigured" and re-import, or
unlink the GPO and run gpupdate /force. If a host is already locked out by an
over-broad policy, boot to Safe Mode (AppLocker does not enforce there) and stop
AppIDSvc, or delete %WINDIR%\System32\AppLocker\*.AppLocker.
Audit SAM hive access (deny non-admin reg save)
auditpol /set /subcategory:"Registry" /success:enable /failure:enable # Then set a SACL on HKLM\SAM for the Everyone principal (read/enumerate) # and alert on Security event 4663 targeting the SAM key.
Containment Runbook
Isolate
- Network-contain any host matching Q1/Q2 (known hash or C2 callback) via Falcon RTR.
- Block the 11 C2 IPs at the perimeter and the 11 MD5 in Falcon IOC Management.
Eradicate
- Remove the ThumbcacheService and TmcLoader Windows services; delete
thumbcache_605a.dband the GUID config DB. - Hunt for and kill masqueraded
lass.exe/updates.exeand any svchost with injected TmcPayload. - Assume all local + cached domain credentials on affected hosts are compromised.
Recover
- Force-reset local account passwords (deploy LAPS) and rotate any domain creds that logged on interactively to affected hosts.
- Review SMB share access logs (5140/5145) for exfil of the staged archive; notify data owners.
- Enable RunAsPPL + AppLocker deny rules before returning hosts to service.
Detection Coverage Map
| Chain Step | Coverage | Query | Notes |
|---|---|---|---|
| Foothold (GoSerpent) | Strong | Q1, Q2, Q3 | Hash + C2 + masquerade |
| Tooling / service install | Partial | Q7 | Depends on ServiceInstalled telemetry |
| Collection / archiving | Partial | Q4, Q6 | Q4 depends on Falcon emitting a write event for a 7-Zip .db (may not); Q6 depends on 7-Zip running as a child process with the password on the cmdline (may be in-process via 7z.dll). Validate both in-tenant. |
| Credential access | Partial | Q8 | Cmdline sigils; add Sysmon 10 for LSASS handle |
| Re-entry (Stowaway/TmcLoader) | Partial | Q5 | Config-DB file-write hunt only (telemetry- and source-string-dependent, see Q5 caveats). The re-entry EXECUTION is not covered -- see the two gap rows below. |
| TmcPayload → svchost injection (T1055) | Gap | — | In-memory process injection into svchost.exe has no query. The encrypted C2 beaconing that follows is likewise not observable from process/file telemetry. |
| Stowaway proxy listener | Gap | — | No query uses NetworkListenIP4 despite it being named in the telemetry matrix; Q9 is command-line-only and does not catch the standalone Stowaway proxy binary. |
| Exfil over SMB | Gap | — | No direct query; rely on 5140/5145 audit + egress logs. Requires network-share telemetry not consistently present. |
Hunt Summary Ticket
TITLE: GoSerpent Go-based backdoor + collection/exfil chain (SE Asia gov/diplomatic) VERSION: v0.3 (Draft) — 2026-07-22 SEVERITY: HIGH — nation-state espionage, credential theft, staged exfil SCOPE: Windows / Active Directory endpoints HYPOTHESES / QUERIES: Q1 hashes CONF high FP low — 11 toolset MD5 Q2 C2 IPs CONF high FP low — 11 C2 callbacks Q3 masquerade CONF med FP med — lass.exe / updates.exe Q4 staging DB CONF med FP low — thumbcache_605a.db in Public (validate telemetry) Q5 config DB CONF med FP low — GUID .db in Public\Libraries (hunt/enrich) Q6 archive pw CONF high FP low — 7-Zip @vx0a9n5W2M0c3D6.# Q7 svc install CONF med FP med — Public-dir service ImagePath Q8 cred dump CONF med FP med — LSASS/SAM cmdline sigils Q9 tunnels CONF med FP high — SOCKS5/SSH + McMx echo config ATOMIC IOCS: 11 C2 IPs · 11 MD5 · 3 filenames (all provenance-traced) PROMOTE IOA: Q4, Q5, Q6 (block) KNOWN GAP: SMB exfil — cover via 5140/5145 + egress logs AUTHOR: HuntPack
Changelog
ServiceInstalled, which is not a Falcon event (it is a Sysmon/Windows-7045 mental model) and does not carry ServiceImagePath — the query could never return a row; now CreateService|ModifyServiceBinary. Q4/Q5 referenced DocumentFileWritten and ElfFileWritten, neither of which exists (the latter is ELFFileWritten); since thumbcache_605a.db is a 7-Zip archive and Falcon types archive writes by content rather than extension, they now use SevenZipFileWritten, which removes the earlier "may emit no telemetry" caveat. All 9 table() calls now carry an explicit limit: the two atomic-IOC sweeps (Q1 hashes, Q2 C2 IPs) use limit=max so a wide infection is never silently under-scoped, and the behavioural hunts use limit=200 — the default was already 200 but invisible, so a truncated result was indistinguishable from a complete one. No detection logic or IOCs changed.References
- Securelist / Kaspersky GReAT — "GoSerpent backdoor attacks in Southeast Asia" (Noushin Shabab, 2026-07-16). securelist.com/goserpent-backdoor-in-southeast-asia/120687
- The Hacker News — "New GoSerpent Malware Targets Southeast Asian Governments and Diplomats for Espionage" (2026-07). thehackernews.com
- MITRE ATT&CK — attack.mitre.org
- Saved source snapshots:
GoSerpent-Hunt-sources/01-securelist-goserpent.txt,02-thehackernews-goserpent.txt
GoSerpent · v0.2 · Generated 2026-07-22 · Author: HuntPack · Defensive detection content only