Intelligence Category: Infostealer & Credential Theft Campaigns TLP: WHITE Pulse Author: AlienVault Attribution: LinX Coders
Threat Summary
AlienVault OTX pulse data confirms an active, large-scale Phishing-as-a-Service (PhaaS) operation tracked as Mirage2FA, attributed to the threat actor group LinX Coders. The campaign is purpose-built to defeat multi-factor authentication on Microsoft 365 tenants by proxying the entire authentication flow through an Adversary-in-the-Middle (AitM) infrastructure — capturing not just credentials but the authenticated session tokens issued after MFA succeeds.
Key findings from the pulse:
- Scale: Over 4,000 confirmed victims, with 63.7% located in the United States. Compromise events span 2024 through the present (2026), indicating a durable, monetized operation rather than a smash-and-grab campaign.
- Targeting: Technology, Manufacturing, Education, Finance, Healthcare, and Telecommunications verticals. Secondary victim geographies include Canada, the UK, India, Saudi Arabia, Singapore, and South Africa.
- Attack chain: Phishing lure → HTML smuggling delivery (obfuscated HTML attachments that assemble the phishing page client-side, bypassing email gateway inspection) → AitM reverse-proxy phishing page impersonating Microsoft 365 login → real-time credential and MFA relay over WebSocket channels → theft of session cookies (e.g.,
ESTSAUTH/ESTSAUTHPERSISTENT) → session replay and full mailbox/tenant access without triggering MFA. - Objective: Credential and session theft at scale, enabling Business Email Compromise (BEC), mailbox rule abuse, internal phishing pivoting, and downstream data exfiltration — the classic PhaaS monetization pipeline sold to downstream criminal customers.
Because the victim successfully completes MFA against the real Microsoft login service (proxied by the attacker), conditional access alerts and "MFA passed" logs provide false comfort. The session token itself is the stolen asset.
Threat Actor / Malware Profile
LinX Coders — Mirage2FA PhaaS Toolkit
Mirage2FA is not traditional endpoint malware — it is a server-side phishing framework sold as a service, which fundamentally changes the detection surface. The "infection" happens in the identity layer, not on disk.
Distribution Method
- Bulk phishing emails with HTML attachments or links to attacker-controlled landing pages.
- HTML smuggling: JavaScript embedded in the attachment reconstructs the phishing payload in the browser via Blob/Data URI assembly, evading attachment sandboxing and URL rewriting.
- Lures themed around Microsoft 365 password expiry, voicemail notifications, shared documents (SharePoint/OneDrive), and HR/payroll notices — consistent with the targeted verticals (Education, Healthcare, Finance).
Payload Behavior
- Victim lands on a pixel-perfect clone of the Microsoft 365 login portal hosted on attacker infrastructure (e.g.,
office.pcvgtech.store,ver.verpox.shop). - The kit acts as a transparent reverse proxy to
login.microsoftonline.com, relaying username, password, and MFA responses in real time. - WebSocket channels stream keystrokes and session data from the victim browser to the operator panel, enabling real-time session theft and immediate replay before token expiry.
C2 / Exfiltration Communication
- WebSocket (WSS) connections from the phishing page to operator infrastructure for live credential/session streaming.
- PhaaS panel infrastructure on cheap bulletproof-adjacent hosting (observed IPs in the 181.214.x.x, 192.52.x.x, 83.147.x.x ranges — typical of low-reputation VPS providers).
- Telegram bot integration is common in this kit class for operator notification (typical PhaaS tradecraft).
Persistence Mechanism
- No endpoint persistence. Persistence is achieved via the stolen session cookie, which remains valid until expiry or revocation — and via attacker-created mailbox rules, added MFA methods, or registered OAuth applications once inside the tenant.
Anti-Analysis Techniques
- HTML smuggling to bypass static email inspection.
- Bot/scanner filtering on phishing pages (IP geofencing, user-agent checks, redirect loops for known sandboxes).
- Fast infrastructure rotation — the 75 indicators in this pulse represent a snapshot; domains like
sopbtech.storeandgalatasaraydanhaberler.comare disposable.
Relevant MITRE ATT&CK Techniques
- T1566.002 — Phishing: Spearphishing Link / T1566.001 — Spearphishing Attachment
- T1027.006 — HTML Smuggling
- T1557 — Adversary-in-the-Middle
- T1539 — Steal Web Session Cookie
- T1550.004 — Use Alternate Authentication Material: Web Session Cookie
- T1078 — Valid Accounts
- T1114.003 — Email Collection: Email Forwarding Rule (post-compromise)
IOC Analysis
The pulse contains 75 indicators, dominated by two types:
| Type | Examples | Role |
|---|---|---|
| IPv4 | 192.52.166.55, 209.205.197.130, 181.214.165.173, 83.147.53.130 | PhaaS hosting / AitM proxy servers / panel infrastructure |
| Domain/Hostname | galatasaraydanhaberler.com, sopbtech.store, office.pcvgtech.store, ver.verpox.shop | Phishing landing pages, M365-lookalike subdomains, WebSocket exfil endpoints |
Operationalization guidance for SOC teams:
- Block at egress/proxy/DNS immediately. All IPs and domains should be pushed to firewalls, secure web gateways, and DNS filtering (protective DNS). The
office.*subdomain pattern is a deliberate Microsoft 365 impersonation signal. - Retrohunt network telemetry for 90+ days. This campaign has been active since 2024 — point-in-time blocking misses historical sessions. Query DNS, proxy, and TLS SNI logs for any host that has ever resolved or connected to these indicators.
- Correlate with identity logs. Any user whose browser touched this infrastructure must be treated as session-compromised, not merely credential-compromised — password resets alone do NOT revoke stolen session tokens.
- Tooling: Load indicators into your TIP (OpenCTI, MISP), enrich via AlienVault OTX lookups, and operationalize in Microsoft Sentinel / Splunk via threat intelligence indicator matching. AbuseIPDB and passive DNS (SecurityTrails, VirusTotal) help identify sibling infrastructure on the same ASNs.
Important caveat: PhaaS infrastructure churns fast. Treat these IOCs as hunting seeds — the durable detections are behavioral (HTML smuggling, AitM proxy patterns, impossible-travel session reuse), not indicator-based.
Detection Engineering
---
title: HTML Smuggling Attachment Opened by Browser or Email Client
id: 7f2a1c4e-9b3d-4e2a-8c1f-mirage2fa001
status: production
description: Detects execution of HTML attachments from email clients consistent with Mirage2FA HTML smuggling delivery, where browser or msedge/chrome is spawned from Outlook/Teams with an .html/.htm attachment in a temp or downloads path.
references:
- https://any.run/cybersecurity-blog/mirage2fa-phishing-targets-us-companies/
author: Security Arsenal Threat Intelligence
date: 2026/08/20
tags:
- attack.initial_access
- attack.t1566.001
- attack.t1027.006
logsource:
category: process_creation
product: windows
detection:
selection_browser:
Image|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
- '\brave.exe'
selection_parent_mail:
ParentImage|endswith:
- '\OUTLOOK.EXE'
- '\ms-teams.exe'
- '\thunderbird.exe'
selection_html_path:
CommandLine|contains:
- '\Temp\'
- '\Downloads\'
- '\INetCache\'
- 'Content.Outlook'
selection_ext:
CommandLine|contains:
- '.htm'
- '.html'
condition: selection_browser and selection_parent_mail and selection_html_path and selection_ext
falsepositives:
- Legitimate HTML reports opened from email
level: high
---
title: Suspicious WebSocket Connection to Known Mirage2FA PhaaS Infrastructure
id: 8a3b2d5f-1c4e-5f3b-9d2a-mirage2fa002
status: production
description: Detects network connections from browser processes to Mirage2FA phishing infrastructure identified in OTX pulse, indicating a user may have entered Microsoft 365 credentials on an AitM proxy page.
references:
- https://any.run/cybersecurity-blog/mirage2fa-phishing-targets-us-companies/
author: Security Arsenal Threat Intelligence
date: 2026/08/20
tags:
- attack.collection
- attack.t1557
- attack.t1539
logsource:
category: network_connection
product: windows
detection:
selection_ip:
DestinationIp:
- '192.52.166.55'
- '209.205.197.130'
- '181.214.165.173'
- '83.147.53.130'
selection_domain:
DestinationHostname|contains:
- 'galatasaraydanhaberler.com'
- 'sopbtech.store'
- 'pcvgtech.store'
- 'verpox.shop'
selection_browser:
Image|endswith:
- '\chrome.exe'
- '\msedge.exe'
- '\firefox.exe'
condition: (selection_ip or selection_domain) and selection_browser
falsepositives:
- None expected; these are dedicated phishing infrastructure indicators
level: critical
---
title: Microsoft 365 Session Token Replay — Impossible Travel After Phishing Infrastructure Contact
id: 9c4d3e6a-2f5b-6a4c-1e3b-mirage2fa003
status: production
description: Detects post-compromise session hijacking behavior following Mirage2FA AitM theft — Entra ID sign-in from anomalous ASN/geography using a previously issued session token (no new MFA prompt) within hours of user contact with phishing infrastructure.
references:
- https://any.run/cybersecurity-blog/mirage2fa-phishing-targets-us-companies/
author: Security Arsenal Threat Intelligence
date: 2026/08/20
tags:
- attack.initial_access
- attack.t1550.004
- attack.t1078
logsource:
product: azure
service: signinlogs
detection:
selection_success:
properties.status.errorCode: 0
selection_token_reuse:
properties.authenticationRequirement: 'singleFactorAuthentication'
selection_risk:
properties.riskLevelDuringSignIn:
- 'medium'
- 'high'
- 'none'
filter_microsoft_asns:
properties.networkLocationDetails|contains: 'Microsoft'
condition: selection_success and selection_token_reuse and not filter_microsoft_asns
falsepositives:
- VPN egress changes
- Mobile carrier NAT traversal
level: high
// Mirage2FA AitM PhaaS Hunt — Microsoft Sentinel / Defender XDR
// Hunts for endpoint contact with OTX phishing infrastructure, then pivots to identity compromise
let Mirage2FA_IPs = dynamic(["192.52.166.55", "209.205.197.130", "181.214.165.173", "83.147.53.130"]);
let Mirage2FA_Domains = dynamic(["galatasaraydanhaberler.com", "sopbtech.store", "pcvgtech.store", "verpox.shop"]);
let NetworkHits =
DeviceNetworkEvents
| where TimeGenerated > ago(90d)
| where RemoteIP in (Mirage2FA_IPs)
or RemoteUrl has_any (Mirage2FA_Domains)
| project NetworkTime=TimeGenerated, DeviceName, DeviceId, InitiatingProcessAccountName,
InitiatingProcessFileName, RemoteIP, RemoteUrl, RemotePort, ActionType;
NetworkHits
| join kind=inner (
SigninLogs
| where TimeGenerated > ago(90d)
| where ResultType == 0
| where AuthenticationRequirement == "singleFactorAuthentication" // session token replay — no fresh MFA
| project SigninTime=TimeGenerated, UserPrincipalName, IPAddress, AppDisplayName,
UserAgent, LocationDetails, RiskLevelDuringSignIn
) on $left.InitiatingProcessAccountName == $right.UserPrincipalName
| where SigninTime between (NetworkTime .. NetworkTime + 48h)
| summarize FirstNetworkContact=min(NetworkTime), SuspiciousSignins=count(),
SigninIPs=make_set(IPAddress), Apps=make_set(AppDisplayName),
Locations=make_set(LocationDetails)
by UserPrincipalName, DeviceName, RemoteUrl
| order by FirstNetworkContact asc
<#
.SYNOPSIS
Mirage2FA AitM Compromise Hunt — Security Arsenal IR Script
.DESCRIPTION
Checks a Windows endpoint for evidence of Mirage2FA phishing contact:
1. DNS cache hits for known PhaaS domains
2. Active/historical TCP connections to OTX-listed IPs
3. Browser history artifacts (Edge/Chrome) for phishing URLs
4. Recently opened HTML attachments in Outlook temp paths (HTML smuggling)
5. Scheduled tasks / run keys created around contact window (post-BEC staging)
.NOTES
Run elevated. Output written to $env:TEMP\Mirage2FA_Hunt_<timestamp>.txt
#>
$ReportFile = "$env:TEMP\Mirage2FA_Hunt_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
$BadIPs = @('192.52.166.55','209.205.197.130','181.214.165.173','83.147.53.130')
$BadDomains = @('galatasaraydanhaberler.com','sopbtech.store','pcvgtech.store','verpox.shop','ver.verpox.shop','office.pcvgtech.store')
"=== Mirage2FA Endpoint Hunt — $(Get-Date) ===" | Out-File $ReportFile
"`n[1] DNS Cache Check`n------------------" | Out-File $ReportFile -Append
$dns = Get-DnsClientCache -ErrorAction SilentlyContinue | Where-Object {
$d = $_.Entry; $BadDomains | Where-Object { $d -like "*$_*" }
}
if ($dns) { $dns | Format-Table Entry, Data, TimeToLive | Out-String | Out-File $ReportFile -Append
"[!] ALERT: Phishing domain found in DNS cache — user likely visited AitM page" | Out-File $ReportFile -Append }
else { "[+] No malicious domains in DNS cache" | Out-File $ReportFile -Append }
"`n[2] Network Connection Check`n----------------------------" | Out-File $ReportFile -Append
$conns = Get-NetTCPConnection -ErrorAction SilentlyContinue | Where-Object { $BadIPs -contains $_.RemoteAddress }
if ($conns) { $conns | Format-Table LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess | Out-String | Out-File $ReportFile -Append
"[!] ALERT: Active/historical connection to Mirage2FA infrastructure" | Out-File $ReportFile -Append }
else { "[+] No connections to known Mirage2FA IPs" | Out-File $ReportFile -Append }
"`n[3] HTML Smuggling Artifact Check (Outlook Secure Temp)`n--------------------------------------------------------" | Out-File $ReportFile -Append
$outlookTemp = Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Windows\INetCache\Content.Outlook" -Recurse -Include *.htm,*.html -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) }
if ($outlookTemp) { $outlookTemp | Format-Table FullName, LastWriteTime | Out-String | Out-File $ReportFile -Append
foreach ($f in $outlookTemp) {
$content = Get-Content $f.FullName -Raw -ErrorAction SilentlyContinue
if ($content -match 'atob|Blob|createObjectURL|msSaveBlob|login.microsoftonline' -and $content -match $BadDomains -join '|') {
"[!] ALERT: Suspicious HTML smuggling attachment: $($f.FullName)" | Out-File $ReportFile -Append
}
}
} else { "[+] No recent HTML attachments in Outlook cache" | Out-File $ReportFile -Append }
"`n[4] Browser History Check (Edge)`n----------------------------------" | Out-File $ReportFile -Append
$histPath = "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\History"
if (Test-Path $histPath) {
$tmpHist = "$env:TEMP\edge_hist_copy.db"
Copy-Item $histPath $tmpHist -Force -ErrorAction SilentlyContinue
$raw = [System.IO.File]::ReadAllBytes($tmpHist) | ForEach-Object { [char]$_ }
$rawStr = -join $raw
foreach ($d in $BadDomains) {
if ($rawStr -match [regex]::Escape($d)) {
"[!] ALERT: Phishing domain '$d' present in Edge history database" | Out-File $ReportFile -Append
}
}
Remove-Item $tmpHist -Force -ErrorAction SilentlyContinue
} else { "[i] Edge history not found — check Chrome/Firefox manually" | Out-File $ReportFile -Append }
"`n[5] Persistence Check (Run Keys / Recent Scheduled Tasks)`n-----------------------------------------------------------" | Out-File $ReportFile -Append
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run' -ErrorAction SilentlyContinue |
Out-String | Out-File $ReportFile -Append
Get-ScheduledTask -ErrorAction SilentlyContinue | Where-Object {
$_.Date -and ([datetime]$_.Date) -gt (Get-Date).AddDays(-14)
} | Format-Table TaskName, TaskPath, Date | Out-String | Out-File $ReportFile -Append
"`n=== Hunt complete. If any [!] ALERT present: treat user as session-compromised — revoke Entra ID refresh tokens, reset credentials, review MFA methods and inbox rules. ===" | Out-File $ReportFile -Append
Write-Host "Report written to $ReportFile"
Response Priorities
Immediate (0–4 hours)
- Block all 75 OTX indicators at DNS filtering, secure web gateway, and firewall egress. Add wildcard blocks for the disposable TLD patterns (
.store,.shop) where business-justified. - Hunt retroactively 90+ days using the KQL query above — any endpoint that touched this infrastructure represents a potentially compromised Microsoft 365 session.
- Search mail flow logs for HTML attachments matching Mirage2FA lure themes (password expiry, voicemail, shared document) and purge unopened copies.
24 Hours (Identity Response — this is a credential/session theft campaign)
- For every user who contacted phishing infrastructure: revoke all Entra ID refresh tokens and active sessions (
Revoke-MgUserSignInSession/Revoke-AzureADUserAllRefreshToken) — a password reset alone does NOT invalidate stolen session cookies. - Reset credentials and review registered MFA methods for attacker-added devices; audit for newly created inbox forwarding rules (T1114.003) and suspicious OAuth app consents.
- Review Entra sign-in logs for single-factor (token replay) authentications from anomalous ASNs within 48h of phishing contact.
- Notify downstream risk: check sent items for attacker-originated internal phishing or payment redirection (BEC).
1 Week (Architecture Hardening)
- Migrate to phishing-resistant MFA — FIDO2/passkeys or certificate-based auth. Mirage2FA exists precisely because TOTP/push MFA is proxyable. This is the single highest-value control against AitM PhaaS.
- Enforce Conditional Access token protection and compliant-device requirements so stolen session cookies cannot be replayed from attacker infrastructure.
- Block or sandbox HTML attachments at the email gateway; restrict browser execution of attachments from email contexts via attack surface reduction.
- Deploy Entra ID Protection risk-based policies and tune impossible-travel / unfamiliar-sign-in-properties detections for token replay scenarios.
- Brief Finance/HR on BEC payment verification out-of-band procedures given the Finance and Manufacturing targeting.
This briefing is based on live AlienVault OTX pulse data (TLP:WHITE) and is intended for enterprise defenders. Indicators are snapshots — prioritize the behavioral detections above for durable coverage against the Mirage2FA PhaaS platform.
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.