Astaroth WhatsApp Web Spambot
Executive Summary
What happened: CrowdStrike published a technical analysis on 29 July 2026 of an Astaroth/Guildma component that automates WhatsApp Web to propagate malicious archives. Acronis independently documented the Boto Cor-de-Rosa WhatsApp worm activity in January, and the SANS Internet Storm Center reported a fresh Brazilian Portuguese Guildma infection on 1 September. Together, the sources support both an active malware family and a concrete browser-automation behavior worth hunting.
How the module works: The Windows component copies an existing Chromium user profile into C:\Users\Public\Temp\ChromeAuto_<ID><date>, selects a random local debugging port from 31175 through 39999, and starts Chrome or Edge headlessly through a downloaded WebDriver with flags such as --headless and --disable-infobars. It loads WPPConnect/WA-JS logic, reads WhatsApp contacts from the authenticated browser session, and sends malicious attachments. Acronis observed a related distribution chain using ZIP/VBS delivery and a Python-based WhatsApp worm before the banking payload.
Why detection belongs in browser lineage and filesystem context: Q01 detects the distinctive ChromeAuto profile-copy directory, Q02 and Q03 bind headless browser flags to WebDriver or public-temp context, Q04 hunts WebDriver acquisition, and Q05 provides exact current hash pivots. These behaviors survive domain rotation better than infrastructure alone. A copied browser session also creates account and token exposure risk even when the final banking module is not observed.
Operational limit: Directory and command-line events can show automation but cannot prove that WhatsApp messages were sent or credentials were stolen. Browser-extension content, session-token use, and attachment delivery require browser artifacts, identity records, and host acquisition. All CQL remains static-reviewed only: no Falcon parser, positive fixture, benign baseline, scheduled search, IOA, or prevention deployment is claimed.
| Priority | Why now | Coverage delivered | Key limitation |
|---|---|---|---|
| Find and contain independently corroborated behavior | Current 2026 technical and government reporting | 5 CQL designs with native pivots | Static-only; tenant and host-result semantics unverified |
Source and Claim Review
Current-run sanitized plain-text snapshots were hashed before assembly. Every source was treated as untrusted data; no embedded instruction, command, code, payload, or destination was executed.
| ID | Publisher | Tier | Independence | Accessed | Status |
|---|---|---|---|---|---|
| S01 | CrowdStrike | T1 | crowdstrike | 2026-09-06T11:06:41Z | successful sanitized technical extraction |
| S02 | Acronis Threat Research Unit | T1 | acronis | 2026-09-06T11:06:41Z | successful sanitized technical extraction |
| S03 | SANS Internet Storm Center | T2 | sans-isc | 2026-09-06T11:06:41Z | successful sanitized technical diary |
| S04 | Microsoft Learn | T1 | microsoft | 2026-09-06T11:06:41Z | successful authoritative control summary |
| S05 | Microsoft Learn | T1 | microsoft | 2026-09-06T11:06:41Z | successful authoritative control summary |
| S06 | Microsoft Learn | T1 | microsoft | 2026-09-06T11:06:41Z | successful authoritative policy summary |
| Claim | Statement | Sources | Confidence |
|---|---|---|---|
| C01 | CrowdStrike documented an Astaroth component that automates WhatsApp Web for malware propagation. | S01 | high |
| C02 | The component copies a Chromium profile to a ChromeAuto directory under Public Temp and uses a random local port between 31175 and 39999. | S01 | high |
| C03 | Chrome or Edge is launched headlessly through WebDriver with automation-related flags and WPPConnect/WA-JS logic. | S01 | high |
| C04 | The module reads WhatsApp contacts and sends malicious attachments through an authenticated browser session. | S01, S02 | high |
| C05 | Acronis independently documented Astaroth WhatsApp worm propagation using ZIP/VBS and Python components in Brazil. | S02 | high |
| C06 | SANS ISC documented a current September 2026 Guildma infection from a Brazilian Portuguese email lure. | S03 | high |
| C07 | Microsoft App Control guidance supports audit-first restriction of unapproved binaries and scripts. | S04 | high |
| C08 | Microsoft ASR guidance includes rules for script-launched downloaded content and credential stealing from LSASS, with prerequisites and audit modes. | S05 | high |
| C09 | Microsoft Edge policy supports controlling extension installation through managed allow and block policy. | S06 | high |
Hunt Brief and Attack Chain
The scaffold separates discrete endpoint and network observables from host-acquisition gaps. Each queryable hypothesis names an event and safe validation plan.
| Step | Claims | Behavior | Platform | Goal |
|---|---|---|---|---|
| 1 | C05,C06 | user opens malicious archive or script from localized email | Windows | Identify script and archive execution |
| 2 | C02 | malware copies an authenticated Chromium profile to Public Temp | Windows | Find distinctive ChromeAuto directory creation |
| 3 | C03 | WebDriver starts Chrome or Edge headlessly | Windows | Bind browser automation to parent and command line |
| 4 | C03 | component loads WhatsApp automation logic | Windows | Preserve browser and extension artifacts |
| 5 | C04 | authenticated session enumerates contacts and sends attachments | Windows | Scope account, recipients, and downstream infections |
| ID | Behavior | Telemetry | Use | Lookback | Validation |
|---|---|---|---|---|---|
| H01 | ChromeAuto browser-profile directory under Public Temp | TargetDirectoryName | alert-candidate | 30d | Create and remove an inert ChromeAuto_TEST directory on an isolated host; baseline legitimate test automation directories. |
| H02 | Headless Chromium using a copied Public Temp profile | ProcessRollup2 | alert-candidate | 30d | Run approved WebDriver against an empty temporary profile; baseline enterprise browser test farms and accessibility tooling. |
| H03 | WebDriver parent launching headless browser automation | ProcessRollup2 | hunt | 30d | Run an approved driver fixture and confirm lineage fields; inventory known Selenium and browser-testing owners. |
| H04 | PowerShell or script host obtaining WebDriver binaries | ProcessRollup2 | hunt | 30d | Use an inert local filename in a lab without a remote download and baseline approved driver-management tools. |
| H05 | Execution of current Astaroth hashes | ProcessRollup2 | hunt | 90d | Verify exact-hash matching against an approved harmless fixture hash; baseline security-research systems. |
| H06 | Messages or attachments sent through WhatsApp Web | browser and identity artifacts | gap | N/A | Acquire browser databases and session records under authorization; portable Falcon endpoint events cannot prove a sent message. |
Affected surface and telemetry
Windows endpoints with Falcon process, file, DNS, and network telemetry are in scope. Proxy, IPv6, resolver, process-context, browser, memory, and file-integrity evidence remain repository- and tenant-dependent.
Consolidated IOC Table
| ID | Type | Value | Source | Use |
|---|---|---|---|---|
| I01 | sha256 | d891d38b5a15fe750cd48ad29b26d7737c23ef6b47d6ec018dbb74264c578ddb | S01 | detect and investigate |
| I02 | sha256 | c7c62332bb91d144feb53993479244856b4ecfdaed151bab2a1a6a645e4bda5d | S01 | detect and investigate |
| I03 | sha256 | ec43a79fa53b048231cf45f3e7ebee03816d052e280063577f425369ad10a1e2 | S01 | detect and investigate |
| I04 | domain | stretar7.contabilfacil.sbs | S01 | hunt and enrich |
| I05 | domain | graconxonjal.empresaeficiente.sbs | S01 | hunt and enrich |
| I06 | domain | plansonval.impostosrapido.top | S01 | hunt and enrich |
Values are defanged only in analyst handling; the machine-readable appendix retains exact source text for matching. Revalidate ownership and time context before blocking.
ATT&CK Mapping
Every technique row is an analyst inference from source-backed behavior, not a vendor attribution statement.
| Tactic | Technique | Name | Behavior | Basis | Sources |
|---|---|---|---|---|---|
| Execution | T1059.005 | Visual Basic | VBS delivery in independently documented campaign | analyst inference | S02 |
| Execution | T1059.006 | Python | Python WhatsApp propagation component | analyst inference | S02 |
| Credential Access | T1539 | Steal Web Session Cookie | copying authenticated Chromium profile material | analyst inference | S01 |
| Command and Control | T1102.002 | Web Service: Bidirectional Communication | WhatsApp Web automation for propagation | analyst inference | S01,S02 |
| Discovery | T1087.003 | Cloud Account | enumeration of WhatsApp contacts from authenticated session | analyst inference | S01 |
| Execution | T1204.002 | Malicious File | user execution of malicious archive or script | analyst inference | S02,S03 |
Native / Non-CQL Hunts
| Hunt | Log source | Logic | Response |
|---|---|---|---|
| WhatsApp Web artifact review | Acquired Chromium profile and browser history databases | Inspect the copied profile for WhatsApp Web session, IndexedDB, extension, and download artifacts; preserve hashes and timestamps. | Coordinate session revocation and recipient scoping with identity and legal owners. |
| Script and archive entry review | Windows Security 4688, PowerShell 4104, email gateway, and archive telemetry | Correlate ZIP, VBS, Python, or script-host execution to the process tree and localized delivery message. | Preserve the original email and attachment; do not open or execute it. |
| Recipient and session scoping | Approved WhatsApp account and identity records | Review authenticated sessions and organization-owned recipient evidence for the bounded incident window. | Revoke exposed sessions only under account-owner and incident authority. |
CrowdStrike LogScale CQL Hunt Queries
Looks for: creation of the distinctive ChromeAuto profile-copy directory beneath Public Temp. Accomplishes: catches the spambot's browser-session staging before contact enumeration while keeping directory naming and host context for triage.
// HUNT: ChromeAuto browser-profile directory creation // HYPOTHESIS: H01 // USE: alert-candidate // MITRE: T1539 // CONF: high // FP: low // COST: low // TIMEFRAME: 30d — bounded analyst review window // REQUIRES: TargetDirectoryName plus ComputerName, UserName, aid // FALSE POSITIVES: authorized browser-automation research or a deliberately named test directory // TUNING: exclude only owner-approved lab assets and exact documented test windows // VALIDATION: STATIC-ONLY #event_simpleName = /^(NewExecutableWritten|PeFileWritten|ZipFileWritten)$/ | test(@timestamp >= now() - 2592000000) | TargetFileName = /\\Users\\Public\\Temp\\ChromeAuto_[^\\]+/i | table([@timestamp, ComputerName, UserName, ContextBaseFileName, TargetFileName, SHA256HashData, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: Chrome or Edge launched headlessly with a user-data directory under the ChromeAuto Public Temp path. Accomplishes: combines two distinctive automation behaviors into a strong process signal without depending on rotating Astaroth infrastructure.
// HUNT: Headless Chromium with copied Public Temp profile // HYPOTHESIS: H02 // USE: alert-candidate // MITRE: T1539, T1102.002 // CONF: high // FP: medium // COST: low // TIMEFRAME: 30d — bounded analyst review window // REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName // FALSE POSITIVES: authorized Selenium tests, kiosk automation, or accessibility tooling // TUNING: exclude only signed owner-approved automation with fixed host and command evidence // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 2592000000) | ImageFileName = /(?:chrome|msedge)\.exe$/i | CommandLine = /--headless/i | CommandLine = /--user-data-dir[^ ]*\\Users\\Public\\Temp\\ChromeAuto_/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: ChromeDriver or EdgeDriver starting a headless Chromium process with automation flags. Accomplishes: exposes the browser-control stage for same-host correlation, while acknowledging legitimate testing frameworks as a substantial benign population.
// HUNT: WebDriver parent launching headless browser // HYPOTHESIS: H03 // USE: hunt // MITRE: T1102.002 // CONF: medium // FP: high // COST: low // TIMEFRAME: 30d — bounded analyst review window // REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; ParentBaseFileName, ImageFileName, CommandLine // FALSE POSITIVES: Selenium grids, QA automation, kiosk management, and accessibility tooling // TUNING: inventory automation owners and exclude by signed parent path plus managed host group // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 2592000000) | ParentBaseFileName = /^(?:chromedriver|msedgedriver)\.exe$/i | ImageFileName = /(?:chrome|msedge)\.exe$/i | CommandLine = /(?:--headless|--disable-infobars|--remote-debugging-port)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: PowerShell, script host, or Python command lines that reference ChromeDriver or EdgeDriver with retrieval semantics. Accomplishes: catches a preparatory stage before browser automation but needs owner and download context to separate driver management.
// HUNT: Script tooling acquiring WebDriver binaries // HYPOTHESIS: H04 // USE: hunt // MITRE: T1105 // CONF: medium // FP: medium // COST: low // TIMEFRAME: 30d — bounded analyst review window // REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; ImageFileName, CommandLine, ParentBaseFileName // FALSE POSITIVES: approved browser driver managers, QA bootstrap scripts, and developer tools // TUNING: exclude signed enterprise driver managers only after owner, path, and destination review // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 2592000000) | ImageFileName = /(?:powershell|pwsh|wscript|cscript|python)\.exe$/i | CommandLine = /(?:chromedriver|msedgedriver)/i | CommandLine = /(?:invoke-webrequest|iwr|curl|downloadfile|downloadstring|https?:)/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Looks for: process events carrying one of three SHA-256 values published with the spambot analysis. Accomplishes: gives responders an exact current pivot for known samples while keeping hash volatility and research-system exceptions visible.
// HUNT: Execution of current Astaroth component hashes // HYPOTHESIS: H05 // USE: hunt // MITRE: T1204.002 // CONF: high // FP: low // COST: low // TIMEFRAME: 90d — bounded analyst review window // REQUIRES: ProcessRollup2 or SyntheticProcessRollup2; SHA256HashData, ImageFileName, CommandLine // FALSE POSITIVES: authorized malware-analysis systems or preserved historical telemetry // TUNING: exclude only isolated research assets with case ownership and a bounded analysis window // VALIDATION: STATIC-ONLY #event_simpleName = /^(ProcessRollup2|SyntheticProcessRollup2)$/ | test(@timestamp >= now() - 7776000000) | SHA256HashData = /^(?:d891d38b5a15fe750cd48ad29b26d7737c23ef6b47d6ec018dbb74264c578ddb|c7c62332bb91d144feb53993479244856b4ecfdaed151bab2a1a6a645e4bda5d|ec43a79fa53b048231cf45f3e7ebee03816d052e280063577f425369ad10a1e2)$/i | table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine, SHA256HashData, TargetProcessId, aid]) | sort(@timestamp, order=desc, limit=1000)
Operationalization and IOA Candidates
Alert-candidate rows have complete design-only packages. No query was scheduled, no notification route was activated, and no IOA or prevention rule was created.
| Query | Use | Decision | Readiness | Rationale |
|---|---|---|---|---|
| Q01 | alert-candidate | alert-package | design-only | Tenant parsing, positive testing, and benign baseline are not recorded. |
| Q02 | alert-candidate | alert-package | design-only | Tenant parsing, positive testing, and benign baseline are not recorded. |
| Q03 | hunt | hunt-only | design-only | Tenant parsing, positive testing, and benign baseline are not recorded. |
| Q04 | hunt | hunt-only | design-only | Tenant parsing, positive testing, and benign baseline are not recorded. |
| Q05 | hunt | hunt-only | design-only | Tenant parsing, positive testing, and benign baseline are not recorded. |
Machine-Readable IOC Appendix
Exact current-run values are source tagged and expire for mandatory review on 2026-12-06; expiration is not evidence of safety.
type,value,action,severity,expiration,description,tags sha256,d891d38b5a15fe750cd48ad29b26d7737c23ef6b47d6ec018dbb74264c578ddb,detect,high,2026-12-06,detect and investigate,source:S01 sha256,c7c62332bb91d144feb53993479244856b4ecfdaed151bab2a1a6a645e4bda5d,detect,high,2026-12-06,detect and investigate,source:S01 sha256,ec43a79fa53b048231cf45f3e7ebee03816d052e280063577f425369ad10a1e2,detect,high,2026-12-06,detect and investigate,source:S01 domain,stretar7.contabilfacil.sbs,detect,high,2026-12-06,hunt and enrich,source:S01 domain,graconxonjal.empresaeficiente.sbs,detect,high,2026-12-06,hunt and enrich,source:S01 domain,plansonval.impostosrapido.top,detect,high,2026-12-06,hunt and enrich,source:S01
d891d38b5a15fe750cd48ad29b26d7737c23ef6b47d6ec018dbb74264c578ddb c7c62332bb91d144feb53993479244856b4ecfdaed151bab2a1a6a645e4bda5d ec43a79fa53b048231cf45f3e7ebee03816d052e280063577f425369ad10a1e2 stretar7.contabilfacil.sbs graconxonjal.empresaeficiente.sbs plansonval.impostosrapido.top
Current source provenance proves transcription, not maliciousness, ownership, or safe blocking. Corroborate every hit.
Hardening — Tiered and Deployable
- Revoke exposed browser and WhatsApp sessions after evidence capture (M1018; CTRL01) — capture browser profile and session evidence first, then revoke affected sessions under account-owner authority deployable-design Verify: verify no unrecognized sessions remain and business access is restored Rollback: restore access only through approved reauthentication, not by reusing copied profile data Authority: Vendor account security and incident-response procedure.
- Audit script-launched downloaded executables (M1038; CTRL02) — set ASR D3E037E1-3EB8-44C8-A917-57927947596D to Audit for a representative pilot before Block deployable-design Verify: retain policy state, ASR events, application-owner decisions, and benign fixture result Rollback: return the rule to its exported prior action through the same policy channel Authority: Microsoft ASR reference accessed 2026-09-06.
- Constrain unapproved WebDriver and public-temp binaries (M1038; CTRL03) — build an audit policy for unsigned drivers and executables from Public Temp; enforce only after pilot review deployable-design Verify: confirm approved Selenium owners still function and retain policy XML plus events Rollback: deploy the prepared rollback policy or return the cohort to audit Authority: Microsoft App Control guidance accessed 2026-09-06.
- Block unapproved browser extensions by managed policy (M1042; CTRL04) — pilot a default block list with explicit owner-approved extension allow entries deployable-design Verify: inspect edge://policy and verify required extensions plus rollback on pilot endpoints Rollback: restore the exported policy and verify prior extension behavior Authority: Microsoft Edge ExtensionInstallBlocklist accessed 2026-09-06.
- Govern browser automation and authenticated messaging clients (M1018; CTRL05) — assign owners to WebDriver, extension, and messaging automation exceptions with quarterly expiry review deployable-design Verify: sample ten exceptions for owner, signer, path, purpose, approval, and expiry Rollback: grant a time-bounded emergency exception under change control Authority: Microsoft App Control and Edge policy guidance accessed 2026-09-06.
Deployable playbook · PB01 · guarded pilot and rollback
- Export current App Control, ASR, and Edge policy state
- inventory browser automation owners
- apply audit controls to a limited representative cohort
- verify policy convergence with inert browser-automation and script fixtures
- perform application-owner and help-desk checks
- expand only when every exception is owned
- rollback through exported policies if a stop condition fires
- retain configuration, events, decisions, and recovery evidence.
Containment Runbook
| Phase | Trigger | Authority | Owner | Evidence | Recovery |
|---|---|---|---|---|---|
| 1. Validate and preserve | Q01 or Q02 plus unapproved automation | SOC lead | SOC analyst | raw rows, directory, process tree, browser profile and hashes | none; preservation is read-only |
| 2. Scope delivery and recipients | malicious automation corroborated | incident commander | email and endpoint responders | email, archive, scripts, browser and recipient evidence | record approved test explanation or continue |
| 3. Isolate affected endpoints | active propagation or banking payload evidence | incident commander plus service owner | endpoint operations | isolation time, network exceptions, business impact | temporary access only under continuity plan |
| 4. Revoke exposed sessions | copied authenticated profile confirmed | incident commander plus account owner | identity operations | session actions, account audit, recipient list | restore access through approved reauthentication |
| 5. Eradicate, recover, re-hunt | scope stable and evidence preserved | incident commander and system owner | endpoint engineering and SOC | rebuild/cleanup record and fresh Q01-Q05 results | return after no unexplained hits and owner sign-off |
Preservation order: raw results, events, process tree, files and hashes, network/DNS, identity/session state, relevant policy, analyst notes and tool logs. Closure: known-good recovery, explained re-hunt results, and incident-commander plus system-owner approval.
Detection Coverage and Validation Evidence
Validation state: STATIC REVIEW PASSED only after the local gate suite completes. This is not Falcon parsing, canary success, schedule creation, or deployment evidence.
| Technique | Coverage | Query or handoff | Evidence | Limitation |
|---|---|---|---|---|
| T1059.005 | Static or design | Q01, Q02, Q03, Q04, Q05 | local structure, field, syntax, provenance, safety review | tenant parser, baseline, positive and benign tests absent |
| T1059.006 | Static or design | native and same-host correlation | local structure, field, syntax, provenance, safety review | tenant parser, baseline, positive and benign tests absent |
| T1539 | Static or design | native and same-host correlation | local structure, field, syntax, provenance, safety review | tenant parser, baseline, positive and benign tests absent |
| T1102.002 | Static or design | native and same-host correlation | local structure, field, syntax, provenance, safety review | tenant parser, baseline, positive and benign tests absent |
| T1087.003 | Static or design | native and same-host correlation | local structure, field, syntax, provenance, safety review | tenant parser, baseline, positive and benign tests absent |
| T1204.002 | Static or design | native and same-host correlation | local structure, field, syntax, provenance, safety review | tenant parser, baseline, positive and benign tests absent |
Recorded evidence and next tests
- Every CQL card retains VALIDATION: STATIC-ONLY; no Falcon tenant was contacted.
- The offline tenant dry run checks extraction and profile readiness only.
- Next: parse the strongest query in the intended repository over one hour, verify fields, then run approved inert positive and 30-day benign tests.
Hunt Summary Ticket
TITLE: Astaroth / Guildma hunt — v0.1 Draft SEVERITY: high — active malware behavior can enable propagation or follow-on compromise SCOPE: Windows Falcon endpoint, DNS, file, and network telemetry plus approved host pivots HYPOTHESIS: H01 alert-candidate — ChromeAuto browser-profile directory under Public Temp; H02 alert-candidate — Headless Chromium using a copied Public Temp profile; H03 hunt — WebDriver parent launching headless browser automation; H04 hunt — PowerShell or script host obtaining WebDriver binaries; H05 hunt — Execution of current Astaroth hashes; H06 gap — Messages or attachments sent through WhatsApp Web QUERIES RUN: Q01 alert-candidate; Q02 alert-candidate; Q03 hunt; Q04 hunt; Q05 hunt DO FIRST: Q01 over 30d FINDINGS: GAPS: tenant parsing, baseline, positive/benign tests, and external host semantics ACTIONS: SOC validates the strongest query; endpoint engineering preserves and scopes evidence OWNER: Security Operations / Endpoint Detection Engineering VERSION: v0.1 Draft · 2026-09-06 · STATIC REVIEW PASSED