Back to Intelligence

Help Desk Vishing + AitM Token Theft: Defending Microsoft 365 Against Executive-Targeted Data Theft and Extortion

SA
Security Arsenal Team
September 7, 2026
12 min read

Threat hunters have disclosed a widespread data theft and extortion threat cluster targeting Microsoft 365 and other SaaS platforms — and the initial access vector isn't a zero-day or a misconfiguration. It's a phone call.

The campaign combines three techniques that defenders must treat as a single kill chain:

  1. IT help desk vishing — attackers impersonate internal IT support and call directors, VPs, and other executives directly, walking them through a fake "security issue" or "account migration" that requires immediate action.
  2. Adversary-in-the-middle (AitM) token theft — the victim is steered to a reverse-proxy phishing page that relays the real Microsoft 365 login flow, capturing the session token after MFA completes. MFA is bypassed not by defeating it, but by stealing its output.
  3. Residential-proxy sign-ins — stolen session tokens are replayed from residential proxy networks, making the attacker's traffic look like ordinary home-user ISP traffic and evading ASN-based blocking and impossible-travel alerts tuned only for datacenter/VPN egress.

The objective is SaaS data theft — mailbox contents, SharePoint/OneDrive documents, and other SaaS repositories — followed by extortion. Executive targeting is deliberate: their mailboxes contain M&A material, financials, and legal communications with maximum leverage value.

No CVE is associated with this campaign. This is identity-layer tradecraft, not a software vulnerability — which means patching won't save you. Detection and identity hardening will.

Technical Analysis: How the Attack Chain Works

Phase 1 — Vishing the Help Desk (or the Executive Directly)

Two variants are in play. In the first, attackers call the help desk impersonating an executive to drive an MFA reset or new device enrollment. In the second — increasingly common in this cluster — they call the executive impersonating IT, citing urgency ("suspicious login detected," "mailbox migration") and directing them to a link.

The pretext works because it inverts the trust model: the victim believes they are receiving support, not being attacked. Caller ID spoofing of internal help desk numbers and reconnaissance from LinkedIn/organizational charts make the pitch credible.

Phase 2 — AitM Reverse Proxy Session Theft

The phishing link leads to an AitM reverse proxy (the tradecraft class popularized by Evilginx-style frameworks and now industrialized in phishing-as-a-service platforms). The proxy sits between the victim and login.microsoftonline.com:

  • The victim sees a pixel-perfect Microsoft login page on an attacker-controlled domain.
  • Credentials and the MFA challenge are relayed to Microsoft in real time.
  • When Microsoft issues the session cookie (e.g., the ESTSAUTH / ESTSAUTHPERSISTENT cookies for Entra ID), the proxy captures it.
  • The attacker replays the cookie in their own browser — fully authenticated, no further MFA prompt required.

This is why "we have MFA" is not a sufficient answer. Only phishing-resistant MFA (FIDO2/WebAuthn, Windows Hello for Business, certificate-based auth) defeats token replay, because the cryptographic challenge is bound to the legitimate origin domain.

Phase 3 — Residential Proxy Replay and Data Theft

The stolen session is replayed from a residential proxy exit node — IP space belonging to Comcast, AT&T, Vodafone, and similar consumer ISPs. Consequences for defenders:

  • GeoVelocity/impossible-travel alerts may not fire if the proxy egress is in the victim's own metro area.
  • ASN reputation lookups return "residential ISP," not "hosting provider."
  • The sign-in appears to come from a new device but an otherwise plausible network.

From there, the actor accesses Exchange Online, SharePoint, and OneDrive, stages bulk downloads (often via eDiscovery-style exports or sync clients), and pivots to other SaaS (the cluster targets additional platforms beyond Microsoft 365). Extortion follows, typically weeks later, after data valuation.

Exploitation Status

  • Confirmed active, widespread exploitation. This is an in-the-wild threat cluster with named victim pressure via extortion.
  • No CVE / no CISA KEV entry — there is no patchable flaw; this is technique-based intrusion (MITRE ATT&CK: T1656 Impersonation, T1666 Modify Cloud Authentication Infrastructure-adjacent MFA manipulation, T1557 Adversary-in-the-Middle, T1539 Steal Web Session Cookie, T1090.003 Multi-hop Proxy).

Detection & Response

The highest-fidelity detection opportunities sit in Entra ID sign-in and audit logs, not on endpoints. Focus on three moments: (1) anomalous MFA method changes, (2) token replay indicators (new device + unfamiliar ISP ASN + Office workload access), and (3) bulk data access. Endpoint detection matters for a secondary scenario: vishers who convince users to run remote-access tooling (Quick Assist, AnyDesk) instead of visiting a phishing page.

Sigma Rules

YAML
---
title: Microsoft 365 Sign-In from Residential Proxy ASN with New Device
description: Detects successful Entra ID sign-ins to Office 365 workloads from residential ISP ASNs not previously observed for the user, combined with a new or unregistered device state — consistent with AitM session-token replay through residential proxy networks.
references:
  - https://attack.mitre.org/techniques/T1539/
  - https://attack.mitre.org/techniques/T1557/
author: Security Arsenal
date: 2026/09/10
status: experimental
tags:
  - attack.credential_access
  - attack.t1539
  - attack.t1557
logsource:
  product: azure
  service: signinlogs
detection:
  selection:
    properties.authenticationDetails.authenticationMethod|contains:
      - 'Previously satisfied'
    properties.deviceDetail.browser|contains:
      - 'Chrome'
      - 'Edge'
      - 'Firefox'
    properties.isFirstSignInFromDevice: true
  filter_known_device:
    properties.deviceDetail.trustType:
      - 'Azure AD joined'
      - 'Hybrid AD joined'
      - 'Compliant'
  condition: selection and not filter_known_device
falsepositives:
  - Executives signing in from home or hotel networks on new personal devices
  - Legitimate travel — correlate with impossible-travel distance and help desk ticket history
level: high
---
title: Anomalous MFA Method Registration Following Sign-In
description: Detects registration of a new authentication method (phone, authenticator app, FIDO key) on an account from a sign-in session not originating from a managed device — a hallmark of help-desk-vishing MFA resets and attacker persistence after token theft.
references:
  - https://attack.mitre.org/techniques/T1098/
author: Security Arsenal
date: 2026/09/10
status: experimental
tags:
  - attack.persistence
  - attack.t1098
logsource:
  product: azure
  service: auditlogs
detection:
  selection:
    operationName|contains:
      - 'User registered security info'
      - 'User started registration of security info'
      - 'Add phone authentication method'
      - 'Admin updated security info'
  condition: selection
falsepositives:
  - Onboarding of new employees
  - Legitimate self-service MFA changes — alert only when no corresponding help desk ticket exists
level: medium
---
title: Suspicious Remote Access Tool Execution on Executive Workstations
description: Detects execution of Quick Assist, AnyDesk, TeamViewer, ScreenConnect, or similar remote-access tooling frequently abused during vishing calls where the 'help desk' convinces a user to grant screen access instead of visiting a phishing link.
references:
  - https://attack.mitre.org/techniques/T1219/
author: Security Arsenal
date: 2026/09/10
status: experimental
tags:
  - attack.command_and_control
  - attack.t1219
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith:
      - '\quickassist.exe'
      - '\AnyDesk.exe'
      - '\TeamViewer.exe'
      - '\ScreenConnect.ClientService.exe'
      - '\splashtop.exe'
      - '\SR_Manager.exe'
      - '\rustdesk.exe'
      - '\ammyy.exe'
  filter_approved:
    ParentImage|endswith:
      - '\sccm\ccmexec.exe'
      - '\Microsoft.Management.Services.IntuneWindowsAgent.exe'
  condition: selection and not filter_approved
falsepositives:
  - Environments where remote support tooling is standard — suppress via approved deployment parents and tighten scope to executive OU hosts
level: high

KQL Hunt — Session Token Replay and MFA Tampering (Microsoft Sentinel)

This query joins sign-in telemetry with audit events to surface the two highest-signal moments of this kill chain: a new device signing in from an unfamiliar residential ISP, and any security-info (MFA) change outside corporate egress. Run it against executive accounts first.

KQL — Microsoft Sentinel / Defender
let lookback = 14d;
let execUsers = dynamic([]); // Populate with UPNs of directors/VPs/C-suite, or resolve from a watchlist
let corpEgress = dynamic([]); // Populate with known corporate/VPN egress IP prefixes as strings
let SuspiciousSignins =
    SigninLogs
    | where TimeGenerated > ago(lookback)
    | where ResultType == 0
    | where isempty(execUsers) or UserPrincipalName in (execUsers)
    | where AppDisplayName has_any ("Office 365", "Microsoft Office", "SharePoint", "Exchange")
    | where NetworkLocationDetails has "residential"
        or NetworkLocationDetails !has "datacenter"
    | extend DeviceTrust = tostring(DeviceDetail.trustType),
             AuthMethod = tostring(AuthenticationDetails[0].authenticationMethod),
             SessionId = tostring(SessionId)
    | where isempty(DeviceTrust) or DeviceTrust !in~ ("Azure AD joined", "Hybrid Azure AD joined", "Compliant")
    | where IPAddress !in (corpEgress)
    | summarize FirstSeen = min(TimeGenerated),
                Apps = make_set(AppDisplayName),
                IPs = make_set(IPAddress),
                Locations = make_set(Location),
                Networks = make_set(NetworkLocationDetails)
        by UserPrincipalName, DeviceTrust, AuthMethod;
let MfaChanges =
    AuditLogs
    | where TimeGenerated > ago(lookback)
    | where OperationName has_any ("security info", "authentication method")
    | extend TargetUser = tostring(TargetResources[0].userPrincipalName),
             Actor = tostring(InitiatedBy.user.userPrincipalName),
             ActorIp = tostring(InitiatedBy.user.ipAddress)
    | where Actor !has "onmicrosoft.com"
    | project MfaChangeTime = TimeGenerated, OperationName, TargetUser, Actor, ActorIp;
SuspiciousSignins
| join kind=leftouter (MfaChanges) on $left.UserPrincipalName == $right.TargetUser
| project UserPrincipalName, FirstSeen, IPs, Locations, Networks, AuthMethod,
          MfaChangeTime, OperationName, Actor, ActorIp
| sort by FirstSeen desc

Velociraptor VQL — Endpoint Hunt for Remote-Access Tooling and Browser Artifacts

For executive workstations, hunt for remote access tools invoked around the timeframe of reported vishing calls, plus browser history hits on non-Microsoft login domains (AitM proxies live on lookalike or throwaway domains).

VQL — Velociraptor
-- Hunt: Vishing-assisted remote access tools + AitM phishing page artifacts
-- Scope: Executive workstations during the suspected intrusion window

LET rats <= SELECT Pid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Exe =~ '(?i)(quickassist|anydesk|teamviewer|screenconnect|splashtop|rustdesk|ammyy|goxtoassist|zoho)'

LET history <= SELECT * FROM foreach(
  row={ SELECT FullPath FROM glob(globs='C:/Users/*/AppData/Local/*/Chrome/User Data/*/History') },
  query={ SELECT url, title, last_visit_time
          FROM sqlite(file=FullPath, query='SELECT url, title, last_visit_time FROM urls ORDER BY last_visit_time DESC LIMIT 5000')
          WHERE url =~ '(?i)(login|signin|okta|microsoft|office)'
            AND url !~ '(?i)(login\\.microsoftonline\\.com|login\\.microsoft\\.com|login\\.live\\.com|myapplications\\.microsoft\\.com)' })

SELECT * FROM rats
UNION ALL
SELECT NULL AS Pid, 'BROWSER_HISTORY' AS Name, url AS Exe,
       title AS CommandLine, NULL AS Username, last_visit_time AS CreateTime
FROM history

Hardening & Triage Script (PowerShell)

Use Microsoft Graph PowerShell to (1) revoke all sessions for a suspected victim, (2) inventory their registered auth methods for rogue additions, (3) surface suspicious inbox rules, and (4) flag recent risky sign-ins.

PowerShell
# Requires: Microsoft.Graph PowerShell SDK, run with an admin holding
# User.ReadWrite.All, Directory.Read.All, IdentityRiskyUser.Read.All, MailboxSettings.Read
Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.Read.All","IdentityRiskyUser.Read.All","MailboxSettings.Read" -NoWelcome

$VictimUPN = Read-Host "Enter UPN of the suspected compromised executive"

# 1. Revoke all active sessions and refresh tokens (kills replayed AitM tokens)
Revoke-MgUserSignInSession -UserId $VictimUPN
Write-Host "[+] All sessions and refresh tokens revoked for $VictimUPN" -ForegroundColor Green

# 2. Inventory authentication methods — look for unfamiliar phones/apps added recently
$methods = Get-MgUserAuthenticationMethod -UserId $VictimUPN -All
$methods | Select-Object Id, CreatedDateTime,
    @{n='MethodType';e={$_.AdditionalProperties.'@odata.type'}} |
    Format-Table -AutoSize
Write-Host "[!] Review the list above. Any phone number or app not verified with the user must be deleted:" -ForegroundColor Yellow
Write-Host '    Remove-MgUserAuthenticationPhoneMethod -UserId $u -PhoneAuthenticationMethodId <id>' -ForegroundColor DarkGray

# 3. Check for malicious inbox rules (auto-forward/delete to hide extortion comms or exfil)
$rules = Get-MgUserMailFolderMessageRule -UserId $VictimUPN -MailFolderId inbox -All
$rules | Where-Object {
    $_.Actions.ForwardTo -or $_.Actions.RedirectTo -or $_.Actions.Delete
} | Select-Object DisplayName, IsEnabled,
    @{n='ForwardTo';e={$_.Actions.ForwardTo.emailAddress.address -join ','}},
    @{n='RedirectTo';e={$_.Actions.RedirectTo.emailAddress.address -join ','}} |
    Format-List

# 4. Recent risky sign-ins for the account
Get-MgRiskyUser -Filter "userPrincipalName eq '$VictimUPN'" |
    Select-Object UserPrincipalName, RiskLevel, RiskState, RiskLastUpdatedDateTime

# 5. Force password reset as belt-and-suspenders (does NOT invalidate stolen cookies by itself —
#    session revocation in step 1 is the critical action)
Write-Host "[!] Next steps: reset the password, re-register MFA from a KNOWN-GOOD device," -ForegroundColor Yellow
Write-Host "    verify no new Conditional Access exclusions, and sweep mailbox/SharePoint audit logs." -ForegroundColor Yellow

Remediation & Prevention

Immediate (if you suspect an active compromise)

  1. Revoke sessions first, reset passwords second. A stolen session cookie survives a password change. Use Revoke-MgUserSignInSession (or the Entra portal "Revoke sessions" button) before or simultaneously with the password reset.
  2. Audit and purge authentication methods — remove any phone/app/FIDO key the user cannot verify, and confirm whether the attacker registered their own method for persistence.
  3. Purge malicious inbox rules and check MailItemsAccessed audit records (requires the Purview Audit Premium / unified audit log) to scope what was read or exported.
  4. Review app consent grants for rogue OAuth applications added during the session.
  5. Preserve evidence: export SigninLogs, AuditLogs, and UAL records for the victim before retention windows roll. Residential proxy IPs and ASN data are your attribution trail.

Strategic (close the technique, not a CVE)

  1. Deploy phishing-resistant MFA for all executives — now. FIDO2 security keys or Windows Hello for Business, enforced via Entra Conditional Access authentication strengths. This is the single control that structurally defeats AitM token theft. Microsoft documents this in their phishing-resistant MFA deployment guidance.
  2. Enforce Conditional Access device compliance — require compliant/hybrid-joined devices for Office 365 workloads so a replayed token from an attacker device is rejected outright. Token protection (Continuous Access Evaluation + token binding in preview/GA features) further hardens session cookies against replay.
  3. Lock down the help desk. Require out-of-band verification (callback to a registered number, manager approval, or Entra Temporary Access Pass) before any MFA reset or security-info change for privileged and executive accounts. Log and alert on every admin-initiated security-info update.
  4. Alert on MFA method changes and new-device sign-ins using the detection content above. Feed SigninLogs and AuditLogs into Sentinel if you haven't.
  5. Run vishing-specific tabletop exercises for executives and help desk staff. The initial vector is a phone call — technical controls must be backed by a workforce that treats unsolicited "IT support" calls as hostile by default. Establish a published internal policy: IT will never call and ask you to visit a login link or read back a code.
  6. Monitor for bulk SaaS access — enable and alert on SharePoint/OneDrive mass-download and Exchange export activity, and cap what executive accounts can reach in other SaaS platforms via least-privilege role design.

There is no patch to deploy and no KEV deadline to meet — the remediation currency here is identity architecture and human-process hardening. Organizations that have already rolled out FIDO2 and device-bound Conditional Access to their executive tier are largely immune to this exact chain; everyone else is a phone call away from a breach.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.