OTP relay via social engineering
The attacker starts a real login and calls the victim posing as support, asking them to read back the one-time code that just arrived. The code is genuine; the request is not.
How it works
OTP relay via social engineering is persuading a person to hand over a one-time passcode that the attacker caused to be sent, so the attacker can complete a real sign-in with it. No code is intercepted technically. The victim reads it out, types it into a lookalike page, or forwards it, believing they are helping stop fraud. It is the human-operated twin of an AiTM phishing proxy, and it works against every phishable MFA method that produces something a person can repeat: SMS and voice codes, TOTP authenticator codes, email codes.
The code's validity window sets the clock.
- Get the first factor. The attacker has the victim's password from a phishing page, an infostealer log or a breach, or, for consumer accounts, enough personal detail to start a login or recovery flow.
- Trigger the code. They start a genuine sign-in, password reset or payment on the real service. The service sends a real code to the victim's phone or inbox.
- Call or text with a pretext. By phone or by text message (smishing), posing as IT support, the bank's fraud team or the platform itself, the attacker explains the code away: "we are verifying a suspicious login," "read me the code to cancel this transfer," "IT needs it to finish your migration." This is vishing or smishing with a single goal.
- Relay. The victim reads the code aloud or enters it into a page the attacker watches. The attacker enters it into the real login within seconds or minutes.
- Persist. The first thing a careful attacker does is register their own authenticator, so they no longer need the victim. In the Retool case, one code let the attacker add their own device to the employee's Okta account.
The calling itself is now being automated. SOCRadar documented AnonyMousKIT, a phishing-as-a-service platform that rents commercial voice AI to run a persona in three languages, calling victims and asking for a passcode and a live two-factor code, at a cost of about ten cents per call. SOCRadar counted 200 calls across nine months and 30 installations: not mass scale yet, but it removes the need for a skilled human caller who speaks the victim's language.
Why it works
An OTP proves that the holder received a message. It says nothing about which session, site or transaction it belongs to, so the person reading it cannot tell a real verification from a relay of their own login. Anything a human can read, type or repeat can be relayed by someone faster and more convincing than the defense assumes. NIST draws the line in SP 800-63B-4: authenticators that involve manual entry of an output, which includes OTP and out-of-band codes, are not phishing resistant.
The usual hardening does not help here. Number matching stops blind approval of push prompts, but over a live call the attacker simply reads the number on their screen to the victim. Rate limits do not help either, because the attacker needs only one code. And cloud-synced authenticators can turn one compromised account into every factor: Retool wrote that because Google Authenticator synced its codes to the cloud, compromising the employee's Google account exposed all of them. It is a talk-past attack: the victim satisfies authentication on the attacker's behalf.
How to detect it
- Okta System Log.
system.sms.send_factor_verify_messageorsystem.voice.send_mfa_challenge_callfollowed by a successfuluser.authentication.auth_via_mfafrom an IP, ASN or device never seen for the user, thenuser.mfa.factor.activatefor a new factor shortly after. That last pairing, a code-based sign-in followed by a fresh enrollment, is the strongest signal.user.account.report_suspicious_activity_by_endusercatches victims who realize afterward. - Microsoft Entra sign-in logs. In the
authenticationDetailsof a sign-in,authenticationMethodvaluesSMS,VoiceorSoftware OATH tokenon a session from an unfamiliar location or device, followed in the audit log byUser registered security info.authenticationStepResultDetailrecords cases such as "fraud code entered." - Repeated code sends. Several code deliveries for one account in a few minutes, which can mean an attacker retrying while keeping the victim on the line.
- Recovery and help desk context. A call to support from the account holder just before or after a suspicious sign-in. It can be the victim reporting, or the attacker's own pretext call.
Be honest about the limits: a victim who receives a real code and later reports it looks the same in the logs as one being scammed in real time, and the relayed sign-in uses the right password and the right code. Detection leans on location and device novelty, on what happens in the first minutes after sign-in, and on user reporting. It arrives after access, so automatic session revocation on a confirmed report matters more than the alert itself.
How to stop it
Ranked by effect:
- Move to phishing-resistant MFA. A passkey or a hardware key such as a Yubico YubiKey has no code to read aloud, which removes the relay path. Retool's own recommendation after its breach was FIDO2 hardware keys, because no shareable code exists. Microsoft is retiring its own SMS and voice delivery in Entra ID from February 1, 2027 for most users, with a blocking passkey prompt for users left on SMS or voice only. Our MFA support matrix shows where each method stands.
- Protect enrollment. Require a phishing-resistant method or an identity check to register a new authenticator, so one relayed code cannot become permanent access.
- Turn off cloud sync for authenticator seeds where the tool allows it, or use authenticators that do not sync secrets. Retool noted administrators could not centrally disable Google Authenticator's sync.
- Put the context in the message. Where a code must stay, state what it authorizes ("sign-in to X from a new device in Y") and "we will never call you to ask for this code."
- Tell users the rule once, in every channel. IT, the bank and the platform will never ask for a code. A request for one is itself the tell.
- Train support teams on the inversion. The scam is a caller pretending to be them. Help desks that never ask for codes make the rule credible. See help desk social engineering for the other direction.
Seen in the wild
- 0ktapus SMS phishing campaign against Okta users (2022): Group-IB counted 9,931 credentials and 5,441 MFA codes captured through 169 phishing domains, sent to a Telegram channel. The kit did not relay to Okta automatically, so the attackers used the codes by hand before they expired. Victims included Twilio, Mailchimp and DoorDash.
- Cisco corporate network breach (2022): Cisco Talos reported voice phishing posing as trusted organizations combined with repeated MFA push requests until the employee accepted, reaching the corporate VPN.
- Retool SMS phishing, deepfaked call and authenticator sync (August 2023): an SMS lure, then a call from someone impersonating IT with a deepfaked voice. The employee gave up one more code, the attacker added their own device, and 27 cloud customer accounts, all in crypto, were taken over.
- A phishing kit rents an AI voice agent to call theft victims and ask for their 2FA code (2026)
- Passkey-themed vishing hijacks Microsoft cloud accounts (2026): callers posing as IT used the passkey migration as the pretext.
Sources
- MITRE ATT&CK T1566.004: Phishing: Spearphishing Voice (notes voice phishing may be combined with MFA request generation to trick users into divulging MFA credentials)
- MITRE ATT&CK T1621: Multi-Factor Authentication Request Generation
- MITRE ATT&CK T1111: Multi-Factor Authentication Interception
- NIST SP 800-63B-4: Authentication and Authenticator Management
- Okta: System Log event types
- Microsoft Graph: authenticationDetail resource
- Microsoft Entra: passkeys by default and retirement of Microsoft-provided SMS and voice
- Retool: When MFA isn't actually MFA
- Group-IB: Roasting 0ktapus
- Cisco Talos: recent cyber attack on Cisco
In the Identity Breach Database
Real incidents in our sourced breach database where this technique was used.
- Retool SMS phishing, deepfaked call and Google Authenticator cloud sync 2023 · Credential phishing
- 0ktapus SMS phishing campaign against Okta users 2022 · Credential phishing
- Cisco corporate network breach via synced credentials, vishing and MFA fatigue 2022 · MFA fatigue
Related on Start with Identity
- BlogInsurance phishing kits now relay your OTP live instead of just stealing your password
CTM360 found a phishing operation, centered on Saudi Arabia with activity across Europe, the US, and India, using a kit called InsureOTP that authenticates agai
- BreachScattered Spider and the help desk: social engineering the identity reset
Scattered Spider showed that the fastest way past strong authentication is often a phone call to the help desk. Here is the pattern and how to close it.
- GlossaryAccount Recovery
The process by which a user regains access after losing their authenticator: a lost device, a forgotten password, or a revoked credential. It is a parallel auth
- GlossaryBiometric Authentication
Biometric authentication confirms a person by comparing a live measurement of a physical characteristic, such as a fingerprint or face, against a template captu
- GuideIdentity Federation Implementation Guide: Protocols, Trust, and Cross-Domain SSO
A step-by-step guide to implementing identity federation covering SAML, OIDC, and WS-Federation protocols, trust relationship configuration, attribute mapping,
- GuideImplementing Passkeys in the Enterprise
A practical guide to deploying passkeys across your enterprise, covering WebAuthn integration, device attestation policies, account recovery workflows, and stra