Back to Intelligence

Octagon Android Banking Bot + Mirage2FA Session Hijacking + APT36 Operation RapidRust: OTX Pulse Analysis — Enterprise Credential Theft Detection Pack

SA
Security Arsenal Team
September 17, 2026
11 min read

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

YAML
---
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
KQL — Microsoft Sentinel / Defender
// 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
PowerShell
# 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.com to 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.