Threat Summary
Three concurrent OTX pulses paint a coherent picture of a threat landscape dominated by credential and session theft at industrial scale — spanning mobile endpoints, cloud identity platforms, and government networks.
Octagon is a newly documented Android fraud bot sold as malware-as-a-service (MaaS) by the Russian-speaking actor AndroidKitKat for $1,400/month. It targets cryptocurrency wallets, exchanges, and banking applications using accessibility-service abuse, hidden VNC sessions, overlay attacks, SMS interception, and unlock-pattern capture. This represents the continued commoditization of mobile banking fraud — any affiliate with $1,400 can now run a full-featured mobile theft operation.
Mirage2FA, operated by LinX Coders, is a phishing-as-a-service (PhaaS) toolkit executing Adversary-in-the-Middle (AiTM) attacks against Microsoft 365. Rather than stealing static passwords, it proxies live authentication flows and captures authenticated session tokens — rendering MFA ineffective. Over 4,000 victims have been identified in the United States (63.7% of the total), with Technology, Manufacturing, Education, Finance, Healthcare, and Telecommunications sectors hit hardest. The kit uses HTML smuggling for initial payload delivery and WebSocket channels for real-time session relay.
Operation RapidRust is an APT36 (Pakistan-nexus, tracked alongside Operation C-Major) campaign targeting government and defense organizations in India and Afghanistan. The August 2026 wave deploys a refreshed arsenal: RUSTYSHADE (Rust-based backdoor with AES-256-GCM encrypted C2 over private GitHub repositories), RUSTYMOVE (USB-based lateral movement), PSNATCH and BASHNATCH (PowerShell/Bash credential and data theft), plus GITSHELLPAD and GOSHELL. The use of legitimate GitHub infrastructure for C2 is a deliberate attempt to blend malicious traffic into normal developer workflows.
Collective objective: All three campaigns converge on the same endgame — theft of authenticated access (credentials, session tokens, wallet keys, unlock patterns) that can be monetized directly or leveraged for espionage follow-on operations.
Threat Actor / Malware Profile
Octagon (AndroidKitKat)
- Distribution: MaaS model ($1,400/month subscription), distributed via sideloaded APKs and droppers impersonating legitimate finance/utility apps.
- Payload behavior: Accessibility-service abuse to read screen content and balances, inject overlay screens over banking/crypto apps, capture unlock patterns, intercept SMS (2FA codes), and stream hidden VNC sessions giving operators live device control.
- C2 communication: Operator panel over standard web infrastructure; VNC channel for interactive fraud sessions.
- Persistence: Accessibility service permissions + device admin privileges; resists uninstall once granted.
- Anti-analysis: Obfuscated APK payloads; hidden VNC operates without visible indicators on device.
Mirage2FA (LinX Coders)
- Distribution: Phishing emails delivering HTML smuggling payloads; phishing pages hosted on typosquatted and freshly registered domains (e.g.,
sopbtech.store,pcvgtech.store,verpox.shop,pslcertlive.site,rsxbenefits.com,vslbertlive.info) impersonating Microsoft 365, ADP, and benefits portals. - Payload behavior: Reverse-proxy AiTM kit that sits between victim and genuine Microsoft login, capturing credentials AND post-authentication session cookies in real time.
- C2 communication: WebSocket channels relay live session data to operators, enabling immediate session replay before token expiry.
- Persistence: Stolen session tokens reused from attacker infrastructure; conditional-access/token-theft replay bypasses password resets.
- Anti-analysis: HTML smuggling evades email gateway attachment scanning; domain churn across low-reputation TLDs (.store, .shop, .site, .info).
APT36 Operation RapidRust
- Distribution: Spear phishing against government/defense personnel in India and Afghanistan.
- Payload behavior: RUSTYSHADE (Rust backdoor), RUSTYMOVE (USB lateral movement), PSNATCH (PowerShell credential/data theft), BASHNATCH (Linux variant), GITSHELLPAD, GOSHELL (Go-based shell).
- C2 communication: Private GitHub repositories as dead-drop/C2 channels, AES-256-GCM encrypted tasking and exfiltration — traffic appears as normal GitHub API activity.
- Persistence: Script-based implants (PowerShell/Bash) favor living-off-the-land persistence (scheduled tasks, shell profiles, startup entries).
- Anti-analysis: Rust/Go compilation frustrates signature detection and sandbox detonation; encrypted C2 defeats content inspection.
IOC Analysis
The indicator sets across these pulses fall into three operational classes:
File hashes (MD5/SHA1/SHA256): The Octagon and RapidRust pulses provide binary fingerprints for droppers and payloads. MD5/SHA1 values should be treated as secondary pivot material only — SHA256 values are the reliable detection-grade artifacts. Load all hashes into your EDR blocklist, threat intelligence platform (MISP/OpenCTI), and retro-hunt in VirusTotal/ANY.RUN for sandbox reports revealing dropped files, mutexes, and C2 endpoints not present in the pulse sample.
Domains/hostnames (Mirage2FA, 68 indicators): These are active phishing infrastructure on high-churn TLDs. Operationalize by: (1) adding to DNS sinkhole/proxy blocklists immediately, (2) querying proxy and DNS logs for historical resolution to identify victims retroactively, (3) monitoring for NEW domain registrations matching the naming patterns (*.store, *.shop, *.site, *.info with office., adp., ver., ans., ari. subdomain prefixes). Note the impersonation themes: Microsoft Office, ADP payroll, employee benefits portals.
Behavioral indicators (no IOCs, highest value): GitHub-API-as-C2 (RapidRust), accessibility-service abuse (Octagon), WebSocket session relay (Mirage2FA). These require behavioral detections, not blocklists — covered below.
Tooling: OTX DirectConnect API for automated ingestion; MISP for correlation; VirusTotal/ANY.RUN for hash pivots; DNSTwist for lookalike domain monitoring; urlscan.io for phishing page fingerprinting.
Detection Engineering
---
title: Octagon Android Bot - Accessibility Overlay and VNC Fraud Behavior
description: Detects Android accessibility service abuse, overlay injection, and hidden VNC indicators associated with the Octagon banking trojan MaaS distributed by AndroidKitKat
status: experimental
author: Security Arsenal Threat Intelligence
logsource:
category: process_creation
product: android
service: accessibility
detection:
selection_accessibility:
event_type:
- 'accessibility_service_enabled'
- 'TYPE_WINDOW_STATE_CHANGED'
package_name|contains:
- 'crypto'
- 'wallet'
- 'bank'
- 'exchange'
selection_overlay:
action:
- 'SYSTEM_ALERT_WINDOW'
- 'TYPE_APPLICATION_OVERLAY'
- 'FLAG_FULLSCREEN'
selection_vnc:
network_port:
- 5900
- 5901
- 5902
condition: selection_accessibility and (selection_overlay or selection_vnc)
fields:
- package_name
- accessibility_service
- overlay_target
tags:
- attack.t1517
- attack.t1636
- attack.mobile.t1517
falsepositives:
- Legitimate screen readers and password managers using accessibility APIs
level: high
---
title: Mirage2FA AiTM Phishing - HTML Smuggling and WebSocket Session Relay
description: Detects HTML smuggling delivery and WebSocket-based session relay patterns consistent with Mirage2FA adversary-in-the-middle phishing kit targeting Microsoft 365 credentials and session tokens
id: a1b2c3d4-aitm-mirage2fa-0001
status: experimental
author: Security Arsenal Threat Intelligence
logsource:
product: windows
category: network_connection
detection:
selection_browser:
Image|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\brave.exe'
selection_websocket:
DestinationHostname|contains:
- '.store'
- '.shop'
- '.site'
- '.info'
Initiated: 'true'
selection_phish_domains:
DestinationHostname|contains:
- 'sopbtech.store'
- 'pcvgtech.store'
- 'verpox.shop'
- 'pslcertlive.site'
- 'rsxbenefits.com'
- 'vslbertlive.info'
- 'galatasaraydanhaberler.com'
- 'cementslabconstruction.com'
condition: selection_browser and (selection_phish_domains or selection_websocket)
fields:
- DestinationHostname
- DestinationIp
- ProcessId
falsepositives:
- Legitimate sites on low-cost TLDs (rare in enterprise context)
level: high
---
title: APT36 RUSTYSHADE - GitHub Repository C2 and Encrypted Tasking
description: Detects non-developer processes making outbound connections to GitHub API endpoints consistent with RUSTYSHADE backdoor using private GitHub repositories as AES-256-GCM encrypted C2 channels in Operation RapidRust
id: b2c3d4e5-rapidrust-gh-c2-0002
status: experimental
author: Security Arsenal Threat Intelligence
logsource:
product: windows
category: network_connection
detection:
selection_github:
DestinationHostname|contains:
- 'api.github.com'
- 'raw.githubusercontent.com'
- 'github.com'
selection_suspicious_process:
Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\cmd.exe'
filter_dev_tools:
Image|endswith:
- '\git.exe'
- '\gh.exe'
- '\code.exe'
- '\devenv.exe'
- '\idea64.exe'
condition: selection_github and selection_suspicious_process and not filter_dev_tools
fields:
- Image
- CommandLine
- DestinationHostname
falsepositives:
- PowerShell module installers (Install-Module), admin scripts pulling from GitHub - tune by repository path
level: high
// Mirage2FA AiTM + RapidRust GitHub C2 + Octagon IOC retro-hunt
// Microsoft Sentinel unified hunt — run over last 30 days
let Mirage2FADomains = dynamic([
"galatasaraydanhaberler.com", "sopbtech.store", "pcvgtech.store",
"verpox.shop", "cementslabconstruction.com", "pslcertlive.site",
"rsxbenefits.com", "vslbertlive.info"
]);
let OctagonHashes = dynamic([
"3530b1600e059468e585d48482bb2f375edfe5cb5c23862b01d8405ab56376b9",
"41d922a220ac28a4af8cbed3ffff517bfc5087f11c52801a1be0353e22a71fe0",
"54bccb0626f91a85d70803f4ecadd5cbd303f5e9"
]);
// PART 1: Mirage2FA phishing infrastructure hits
let PhishHits = DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteUrl has_any (Mirage2FADomains)
| project PhishHitTime=TimeGenerated, DeviceName, InitiatingProcessAccountName,
RemoteUrl, RemoteIP, InitiatingProcessFileName;
// PART 2: GitHub-as-C2 behavioral detection (RUSTYSHADE pattern)
let GitHubC2 = DeviceNetworkEvents
| where TimeGenerated > ago(30d)
| where RemoteUrl has_any ("api.github.com", "raw.githubusercontent.com")
| where InitiatingProcessFileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe",
"wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe")
| project GHTime=TimeGenerated, DeviceName, InitiatingProcessCommandLine,
RemoteUrl, InitiatingProcessAccountName;
// PART 3: Octagon hash matches on any synced mobile/endpoint file events
let HashHits = DeviceFileEvents
| where TimeGenerated > ago(30d)
| where SHA256 has_any (OctagonHashes) or MD5 in (
"3530b1600e059468e585d48482bb2f37", "41d922a220ac28a4af8cbed3ffff517b",
"471bcf065c6ed44282c5776ee78bc6d0", "b7e9072e5bda17e0c68db01010658481",
"d472e984c6e8f3d4d7352125ebcc7c3c")
| project HashTime=TimeGenerated, DeviceName, FileName, FolderPath, SHA256;
// PART 4: Identity correlation — risky sign-ins for users who hit phishing infra
let CompromisedUsers = PhishHits
| distinct InitiatingProcessAccountName;
let IdentityRisk = SigninLogs
| where TimeGenerated > ago(30d)
| where UserPrincipalName has_any (CompromisedUsers)
| where ResultType != 0 or (RiskLevelDuringSignIn in ("high", "medium"))
| project SigninTime=TimeGenerated, UserPrincipalName, IPAddress,
ResultType, RiskLevelDuringSignIn, AppDisplayName, Location;
union PhishHits, HashHits
| sort by PhishHitTime desc;
GitHubC2;
IdentityRisk
# Security Arsenal — Operation RapidRust / Mirage2FA endpoint hunt script
# Checks for persistence artifacts, suspicious GitHub C2 connections,
# and phishing-domain DNS cache residue. Run elevated on Windows endpoints.
$Report = @()
$Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Write-Host "[*] RapidRust/Mirage2FA IOC Hunt — $Timestamp" -ForegroundColor Cyan
# 1. Hunt for suspicious processes with active GitHub API connections (RUSTYSHADE pattern)
Write-Host "`n[1] Checking for non-dev processes with GitHub connections..." -ForegroundColor Yellow
$SuspectProcs = @("powershell","pwsh","cmd","wscript","cscript","mshta","rundll32","regsvr32")
$GitHubConns = Get-NetTCPConnection -State Established -ErrorAction SilentlyContinue |
Where-Object { $_.RemotePort -eq 443 } |
ForEach-Object {
$proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
if ($proc -and $SuspectProcs -contains $proc.ProcessName) {
$dns = (Resolve-DnsName $_.RemoteAddress -ErrorAction SilentlyContinue).NameHost
if ($dns -match "github|githubusercontent") {
[PSCustomObject]@{
Type = "GitHubC2-Suspect"; Process = $proc.ProcessName
PID = $proc.Id; RemoteIP = $_.RemoteAddress; Resolved = $dns
}
}
}
}
if ($GitHubConns) { $Report += $GitHubConns; $GitHubConns | Format-Table -AutoSize }
else { Write-Host " No suspicious GitHub connections found." -ForegroundColor Green }
# 2. DNS cache check for Mirage2FA phishing domains
Write-Host "`n[2] Checking DNS cache for Mirage2FA phishing infrastructure..." -ForegroundColor Yellow
$PhishDomains = @("sopbtech.store","pcvgtech.store","verpox.shop","pslcertlive.site",
"rsxbenefits.com","vslbertlive.info","galatasaraydanhaberler.com","cementslabconstruction.com")
$DNSHits = Get-DnsClientCache -ErrorAction SilentlyContinue |
Where-Object { $d = $_.Entry; $PhishDomains | Where-Object { $d -like "*$_*" } }
if ($DNSHits) {
$DNSHits | ForEach-Object { $Report += [PSCustomObject]@{
Type="PhishDNS-Cache"; Process="n/a"; PID="n/a"; RemoteIP=$_.Data; Resolved=$_.Entry } }
$DNSHits | Format-Table Entry, Data -AutoSize
} else { Write-Host " No phishing domain cache residue." -ForegroundColor Green }
# 3. Persistence sweep — scheduled tasks with PowerShell/script payloads (PSNATCH pattern)
Write-Host "`n[3] Sweeping scheduled tasks for script-based persistence..." -ForegroundColor Yellow
$SusTasks = Get-ScheduledTask | Where-Object {
$_.Actions.Execute -match "powershell|pwsh|wscript|cscript|mshta|cmd" -and
$_.Actions.Arguments -match "-enc|-w hidden|bypass|iex|downloadstring|github" -and
$_.TaskPath -notmatch "\\Microsoft\\"
}
if ($SusTasks) {
$SusTasks | ForEach-Object { $Report += [PSCustomObject]@{
Type="Persistence-Task"; Process=$_.TaskName; PID="n/a"
RemoteIP="n/a"; Resolved=$_.Actions.Arguments } }
$SusTasks | Format-Table TaskName, TaskPath -AutoSize
} else { Write-Host " No suspicious scheduled tasks." -ForegroundColor Green }
# 4. Run-key persistence check
Write-Host "`n[4] Checking Run keys for suspicious entries..." -ForegroundColor Yellow
$RunKeys = @("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
foreach ($key in $RunKeys) {
Get-ItemProperty $key -ErrorAction SilentlyContinue | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Value -match "powershell|appdata|temp|github|\.ps1" -and
$_.Name -notmatch "^PS"
} | ForEach-Object {
$Report += [PSCustomObject]@{
Type="Persistence-RunKey"; Process=$_.Name; PID="n/a"
RemoteIP="n/a"; Resolved=$_.Value }
Write-Host " [HIT] $key -> $($_.Name) = $($_.Value)" -ForegroundColor Red
}
}
}
# 5. Export findings
if ($Report.Count -gt 0) {
$OutFile = "$env:TEMP\RapidRust_Hunt_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv"
$Report | Export-Csv $OutFile -NoTypeInformation
Write-Host "`n[!] $($Report.Count) findings exported to $OutFile" -ForegroundColor Red
} else {
Write-Host "`n[+] Hunt complete — no indicators found." -ForegroundColor Green
}
Response Priorities
Immediate (0-4 hours):
- Push all Mirage2FA domains/hostnames to DNS sinkhole, web proxy, and email gateway blocklists. Block the full TLD patterns (.store/.shop/.site/.info) at the proxy for non-business-approved categories.
- Import all SHA256/SHA1/MD5 hashes into EDR block rules and retro-scan. Deploy the Sigma rules above to your SIEM.
- Hunt for GitHub-API connections from script interpreters (Sigma rule 3 + KQL Part 2) — this is the highest-fidelity RapidRust signal.
- Alert on any DNS resolution of the listed phishing domains and treat resolving hosts as presumptively compromised.
24 hours:
- Identity response is the critical path. For any user whose device touched Mirage2FA infrastructure: revoke all active sessions and refresh tokens in Entra ID (
Revoke-MgUserSignInSession), force password reset, re-register MFA, and review mailbox rules and OAuth app consents for attacker persistence. - Audit sign-in logs for impossible travel, token replay from unfamiliar ASN/geography, and session reuse after the phishing timestamp — AiTM-stolen cookies survive password resets unless explicitly revoked.
- For mobile fleets (Octagon): audit MDM for sideloaded APKs, devices with unexpected accessibility services enabled, and apps holding device-admin rights outside policy.
1 week:
- Deploy phishing-resistant MFA (FIDO2/passkeys) for all Microsoft 365 users — this is the only durable mitigation against AiTM session theft; TOTP/SMS/push are all proxyable.
- Enable token protection / conditional access session binding in Entra ID so stolen cookies fail replay from foreign devices.
- Egress-control GitHub API access: restrict
api.github.comto approved developer tools/processes via proxy or firewall process-aware rules. - Enforce MDM policies blocking sideloading and restricting accessibility-service grants to an allowlist on managed Android devices.
- Brief finance and payroll staff specifically — ADP/benefits-portal impersonation is Mirage2FA's primary lure theme.
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.