Back to Intelligence

AMOS Stealer, N4D Mesh Controller & 'BRIDGEHEAD' npm Campaign: OTX Pulse Analysis — Infostealer Detection Pack for Enterprise SOCs

SA
Security Arsenal Team
August 20, 2026
10 min read

Five concurrent OTX pulses paint a single, coherent picture for Q3 2026: credential and cryptocurrency theft is the dominant monetization model across every delivery surface — social engineering, developer supply chain, exposed infrastructure, browser extension stores, and seasonal phishing. While no single named APT links all five pulses, they share tradecraft patterns consistent with the broader infostealer-as-a-service economy and commodity crews buying access from initial access brokers.

The pulse set breaks down into five distinct attack chains:

  1. Post-DEF CON ClickFix phishing — A threat actor impersonated CoinDesk's VP of Marketing on X, targeting Black Hat/DEF CON attendees with a malicious Google Apps Script embedded in a Google Doc. The lure used ClickFix-style social engineering (instructing victims to paste/execute commands themselves) plus manual download links, delivering AMOS / Atomic macOS Stealer and NetSupport RAT payloads. Target: cryptocurrency wallets on security-community macOS machines — high-value targets.

  2. BRIDGEHEAD npm typosquatting — Forty typosquatted packages mimicking chalk, axios, commander, lodash, react, and typescript. Install scripts profile the host; on Windows or WSL they pull a 22MB Rust executable from GitHub that executes entirely in-memory, steals browser credentials and crypto wallets, and exfiltrates via Telegram.

  3. N4D Mesh Controller / go-titan — An evolved Linux campaign exploiting exposed Model Context Protocol (MCP) servers, Ray dashboards, and internet-facing services (CVE-2023-48022 plus four 2026 CVEs). New loader-to-agent chain with a UPX-packed agent labeled "33.8-go-titan," rotated C2 infrastructure (209.99.186.235), performing credential theft and lateral movement.

  4. Offside Wallet Theft Factory — 77 Firefox extensions (40 confirmed malicious) impersonating Web3 wallets, exfiltrating recovery phrases and private keys through Supabase remote switches, Cloudflare Workers, and hardcoded C2 — 164 indicators in total.

  5. Back-to-school phishing surge — Education remains the most-attacked sector (4,696 weekly attacks/org, 8% YoY increase). Actors register student-themed domains (checkmyschool.org, studentloansyyyy.com, students-portal.com) for credential-harvesting pages.

Collective objective: harvest credentials, session tokens, browser data, and crypto wallet secrets at scale, then monetize via dark web marketplaces or direct wallet drainage.

Threat Actor / Malware Profile

AMOS / Atomic macOS Stealer (ClickFix Delivery)

  • Distribution: X direct messages impersonating media executives; malicious Google Docs hosting Google Apps Script; ClickFix fake-verification prompts tricking users into pasting commands into Terminal.
  • Payload behavior: Steals Keychain passwords, browser cookies/autofill, cryptocurrency wallet data (Exodus, Electrum, MetaMask), Telegram sessions, and files from Desktop/Documents.
  • C2: Domains include docsend.online, 1foqo.lat, gapidriver.com. Exfiltration typically over HTTPS to attacker-controlled panels.
  • Persistence/anti-analysis: Mach-O binaries (hashes in IOC section), often signed with ad-hoc certs; ClickFix delivery bypasses email gateways and EDR download-scanning because the user executes the payload. Secondary stage drops NetSupport RAT (legitimate remote-admin tool abused for persistence and interactive access).

BRIDGEHEAD Rust Stealer

  • Distribution: npm typosquats with malicious postinstall scripts — developer machines and CI/CD runners are the beachhead.
  • Payload behavior: Host profiling (OS, WSL detection); conditional download of 22MB Rust binary from GitHub (living-off-trusted-sites); targets browser credential stores and wallet extensions.
  • C2/Exfil: Telegram Bot API — blends with legitimate TLS traffic to api.telegram.org.
  • Anti-analysis: Fileless in-memory execution — no disk artifacts, defeating hash-based detection and most AV scanning. WSL-to-Windows crossover expands blast radius across hybrid dev environments.

N4D Mesh Controller / go-titan

  • Distribution: Exploitation of exposed MCP servers and Ray dashboards (CVE-2023-48022, CVE-2026-26220, CVE-2026-27944, CVE-2026-33032, CVE-2026-39987).
  • Payload behavior: Loader-to-agent chain; UPX-packed Go agent (33.8-go-titan); credential harvesting, lateral movement, mesh-style C2.
  • C2: Rotated infrastructure at 209.99.186.235, domain cdnorigin.net.
  • Anti-analysis: UPX packing thwarts static signatures; mesh controller architecture allows peer-style relay, complicating C2 takedown.

Offside Wallet Theft Factory (Firefox Extensions)

  • Distribution: Mozilla add-on store submissions impersonating legitimate Web3 wallets.
  • Payload behavior: Hooks wallet interactions, captures recovery phrases/private keys at input time.
  • C2: Supabase-hosted remote kill/config switches, Cloudflare Workers relay, hardcoded fallback C2; domains include browser-app.com, browsify.net, e-wl.com.
  • Anti-analysis: Remote switches keep extensions benign until activated — evading store review and sandbox detonation.

IOC Analysis

The indicator set spans four operational classes:

TypeExamplesOperationalization
Domains (C2/lure)docsend.online, 1foqo.lat, gapidriver.com, cdnorigin.net, browser-app.com, browsify.net, checkmyschool.org, education-gov.com, studentdiscount.online, studentloansyyyy.com, students-portal.comPush to DNS sinkhole/proxy block lists; add to EDR network indicators; alert on historical DNS resolution (30-day lookback)
IPv4 (C2)209.99.186.235Block at egress firewall; hunt NetFlow/Zeek logs; check for TLS connections with self-signed certs
File hashes (MD5/SHA1/SHA256)AMOS Mach-O MD5s; BRIDGEHEAD SHA256s (6f088ade..., 52c11f24..., 6888d4c5...); N4D ca024acead8f54cfe5b07ac4bdf7fcea; Firefox extension SHA256sImport into EDR blocklists and threat intel platforms (MISP, Sentinel TAXII); note: BRIDGEHEAD is fileless — hashes only catch the installer scripts
CVEsCVE-2023-48022 (Ray), CVE-2026-26220/27944/33032/39987Feed to vulnerability scanner; prioritize any internet-exposed MCP/Ray/AI-infrastructure assets

SOC tooling guidance: Normalize IOCs into STIX/TAXII via your TIP. Because BRIDGEHEAD executes in memory and Firefox extensions are store-delivered, behavioral detection (below) matters more than hash matching for three of the five campaigns. Treat the npm package names and Firefox extension IDs as supply-chain indicators — audit package-lock.json files, CI build logs, and extension inventories, not just endpoints.

Detection Engineering

YAML
---
title: ClickFix-Style User-Executed Terminal Command (AMOS/Atomic Stealer Delivery)
id: 7a1c2e41-8f3b-4c5d-9e2a-1b4f6d8a0c11
status: experimental
description: Detects ClickFix social engineering pattern where users paste curl/wget piped to shell, commonly delivering AMOS/Atomic macOS Stealer or cross-platform RATs such as NetSupport.
author: Security Arsenal Threat Intel
logsource:
  category: process_creation
  product: macos
detection:
  selection_shell:
    Image|endswith:
      - '/zsh'
      - '/bash'
      - '/sh'
  selection_pipe:
    CommandLine|contains:
      - 'curl'
      - 'wget'
  selection_exec:
    CommandLine|contains:
      - '| sh'
      - '| bash'
      - '| zsh'
      - 'base64 -d'
      - 'osascript'
  filter_terminal:
    ParentImage|endswith:
      - '/Terminal.app/Contents/MacOS/Terminal'
      - '/iTerm2'
  condition: selection_shell and selection_pipe and selection_exec and filter_terminal
level: high
tags:
  - attack.t1204
  - attack.t1059
  - attack.t1105
falsepositives:
  - Legitimate developer install scripts pasted manually
fields:
  - CommandLine
  - User
  - ParentImage
date: 2026/08/21
---
title: npm Install Script Spawning Suspicious Child Process (BRIDGEHEAD Typosquatting)
id: 9b3d5f62-2a4c-4e6f-8d1b-3c5e7a9b1d22
status: experimental
description: Detects npm/node install scripts spawning curl, wget, or direct executables — consistent with BRIDGEHEAD npm typosquat packages fetching Rust-based in-memory credential stealers from GitHub.
author: Security Arsenal Threat Intel
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith:
      - '\node.exe'
      - '\npm.cmd'
      - '\npm.exe'
      - '\npx.cmd'
  selection_child:
    Image|endswith:
      - '\curl.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\cmd.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\wsl.exe'
  selection_args:
    CommandLine|contains:
      - 'github.com'
      - 'raw.githubusercontent.com'
      - 'http'
  condition: selection_parent and selection_child and selection_args
level: high
tags:
  - attack.t1195.002
  - attack.t1105
  - attack.t1059
falsepositives:
  - Legitimate packages with native build steps fetching dependencies
fields:
  - CommandLine
  - ParentCommandLine
  - User
date: 2026/08/21
---
title: N4D Mesh Controller / go-titan C2 or MCP Exploitation Artifact
id: 4e6a8b13-7d5f-4a2b-9c3e-5f7a9c1e3d44
status: experimental
description: Detects network connections to known N4D Mesh Controller C2 infrastructure (209.99.186.235, cdnorigin.net) and execution of UPX-packed Go binaries from temporary paths consistent with the go-titan agent.
author: Security Arsenal Threat Intel
logsource:
  category: network_connection
  product: linux
detection:
  selection_c2_ip:
    DestinationIp:
      - '209.99.186.235'
  selection_c2_domain:
    DestinationHostname|contains:
      - 'cdnorigin.net'
  selection_tmp_exec:
    Image|startswith:
      - '/tmp/'
      - '/dev/shm/'
      - '/var/tmp/'
  condition: selection_c2_ip or selection_c2_domain or (selection_tmp_exec and selection_c2_ip)
level: critical
tags:
  - attack.t1071
  - attack.t1059
  - attack.t1027.002
falsepositives:
  - None expected for hard C2 indicators
fields:
  - DestinationIp
  - DestinationHostname
  - Image
  - User
date: 2026/08/21
KQL — Microsoft Sentinel / Defender
// BRIDGEHEAD + ClickFix + N4D + Wallet Factory combined network hunt — 30-day lookback
let BadDomains = dynamic(["docsend.online","1foqo.lat","gapidriver.com","cdnorigin.net","browser-app.com","browsify.net","gemachriverdale.org","e-wl.com","checkmyschool.org","education-gov.com","studentdiscount.online","studentloansyyyy.com","students-portal.com"]);
let BadIPs = dynamic(["209.99.186.235"]);
let NetEvents = DeviceNetworkEvents
| where Timestamp > ago(30d)
| where RemoteUrl has_any (BadDomains) or RemoteIP in (BadIPs)
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort;
// Fileless BRIDGEHEAD behavior: node/npm spawning network-capable children hitting GitHub or Telegram
let NpmBehavior = DeviceProcessEvents
| where Timestamp > ago(30d)
| where InitiatingProcessFileName has_any ("node.exe","npm.cmd","npm.exe","npx.cmd","node")
| where FileName in~ ("curl.exe","powershell.exe","pwsh.exe","cmd.exe","wsl.exe","wget")
   or ProcessCommandLine has_any ("raw.githubusercontent.com","api.telegram.org","IEX","Invoke-WebRequest")
| project Timestamp, DeviceName, AccountName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, SHA256;
// ClickFix pattern: Terminal-spawned shells piping downloads (macOS via MDE)
let ClickFix = DeviceProcessEvents
| where Timestamp > ago(30d)
| where FileName in~ ("zsh","bash","sh","osascript")
| where ProcessCommandLine has_all ("curl", "| ") or ProcessCommandLine has "base64"
| where InitiatingProcessFileName has_any ("Terminal","iTerm2")
| project Timestamp, DeviceName, AccountName, ProcessCommandLine, InitiatingProcessCommandLine;
NetEvents
| union NpmBehavior, ClickFix
| sort by Timestamp desc
PowerShell
# Security Arsenal — Infostealer Campaign IOC Hunt (AMOS/BRIDGEHEAD/N4D cross-surface sweep)
# Run elevated on Windows endpoints; adapt paths for macOS/Linux triage.

$BadHashes = @(
    "281f1d9e0638517ac90d61e47fd8be60","6dd77235aaa99153ad790b5e59b49372",
    "8ca79bd95f73a7f984b95e487dc1552b","cd08e22dbfe032d15b54217f4f4ed350",
    "f4769ba9e8065727ef26cca72e894f83","325d5de03758e3850dfae33e509afee9",
    "6d0bd9615d730b0b828f7f91c346085f","ca024acead8f54cfe5b07ac4bdf7fcea"
)
$BadSha256 = @(
    "6f088ade49456db2422c3edfbb9998f4a3e9cce7c4c00a7279fb45d672a82b7d",
    "52c11f246309cce5556a00408bafb9868622114903dbd8128dc4ce3eca2df27a",
    "6888d4c54ef2b5bf23889f9637c2efe77e1d2af4724d315b73d646cf5547dc73"
)
$BadDomains = @("docsend.online","1foqo.lat","gapidriver.com","cdnorigin.net","browser-app.com","browsify.net","e-wl.com","checkmyschool.org","education-gov.com","studentdiscount.online","studentloansyyyy.com","students-portal.com")

Write-Host "[*] Checking DNS cache for malicious domain resolution..." -ForegroundColor Cyan
Get-DnsClientCache | Where-Object { $e=$_.Entry; $BadDomains | Where-Object { $e -like "*$_*" } } |
    Select-Object Entry, Data, TimeToLive

Write-Host "[*] Checking active/recent TCP connections to N4D C2 209.99.186.235..." -ForegroundColor Cyan
Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $_.RemoteAddress -eq "209.99.186.235" } |
    Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess

Write-Host "[*] Hashing suspicious temp/download locations for known payloads..." -ForegroundColor Cyan
$SearchPaths = @("$env:TEMP","$env:USERPROFILE\Downloads","C:\ProgramData","$env:LOCALAPPDATA\Temp")
foreach ($p in $SearchPaths) {
    if (Test-Path $p) {
        Get-ChildItem -Path $p -Recurse -File -ErrorAction SilentlyContinue |
          Where-Object { $_.Length -lt 60MB } | ForEach-Object {
            $md5 = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash
            if ($BadHashes -contains $md5) { Write-Host "[HIT-MD5] $($_.FullName)" -ForegroundColor Red }
            $s256 = (Get-FileHash $_.FullName -Algorithm SHA256 -ErrorAction SilentlyContinue).Hash
            if ($BadSha256 -contains $s256) { Write-Host "[HIT-SHA256] $($_.FullName)" -ForegroundColor Red }
        }
    }
}

Write-Host "[*] Auditing for NetSupport RAT persistence (services/tasks/run keys)..." -ForegroundColor Cyan
Get-ScheduledTask | Where-Object { $_.TaskName -match "NetSupport|client32|NSM" } | Select-Object TaskName,TaskPath,State
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -ErrorAction SilentlyContinue |
    Out-String | Select-String -Pattern "netsupport|client32|nsm" -AllMatches
Get-Service | Where-Object { $_.Name -match "NetSupport|NSM|client32" } | Select-Object Name,Status,StartType

Write-Host "[*] Checking WSL for BRIDGEHEAD crossover artifacts..." -ForegroundColor Cyan
wsl -e bash -c "grep -ril 'api.telegram.org' /tmp /home 2>/dev/null; ls -la /tmp | head -50" 2>$null

Write-Host "[*] Audit complete. Escalate any [HIT] findings to IR immediately." -ForegroundColor Green

Response Priorities

Immediate (0–4 hours)

  • Block all listed domains and 209.99.186.235 at DNS, proxy, and egress firewall; add hashes to EDR prevention (not just detection) mode.
  • Deploy the Sigma rules and KQL query; run the 30-day retrospective network hunt before attackers rotate infrastructure.
  • Freeze npm installs from untrusted sources; force installs through an internal registry proxy with typosquat detection; audit package-lock.json across repos for the 40 malicious packages.
  • Pull inventory of Firefox extensions across managed endpoints; remove anything outside an allowlist.

24 Hours

  • All five campaigns steal credentials — treat any host with an IOC hit as fully identity-compromised. Force password resets and revoke sessions/tokens for affected users (email, SSO, VPN, cloud consoles, Telegram, GitHub).
  • Rotate exposed API keys, SSH keys, and CI/CD secrets on any developer machine that installed an npm package in the last 30 days.
  • For macOS users matching the ClickFix pattern, assume Keychain compromise: reset Keychain-stored credentials and check for hardware-wallet drain attempts; review crypto wallet transactions for affected users.
  • Revoke and reissue OAuth grants for browser profiles where malicious extensions were present.

1 Week

  • Patch or isolate internet-exposed MCP servers, Ray dashboards (CVE-2023-48022), and the four 2026 CVEs; place AI/ML infrastructure behind authenticated gateways — N4D proves these are active initial-access vectors.
  • Implement browser extension allowlisting via enterprise policy (Firefox ExtensionSettings, Chrome equivalents).
  • Gate ClickFix-style risk at the human layer: flag emails/docs instructing users to paste commands into Terminal/Run dialog; add this lure to phishing simulations — especially for security staff post-conference season and education-sector users during enrollment periods.
  • Deploy in-memory execution detection (ETW, AMSI telemetry, osquery on macOS/Linux) since BRIDGEHEAD drops nothing to disk.

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.