TL;DR A large commercial property developer received a two line message from a design and construction consultancy it knew, sent from inside that firm's genuine Microsoft 365 tenant. The bolded link looked like a PDF filename, but no attachment existed. Clicking it would have gone through link protection, then through a payment provider's merchant callback endpoint carrying a redirect parameter, and landed on a fake bot check demanding a five character code. Automated scanning stopped at that gate and returned Clean, so three separate controls reported success while none inspected the payload.
Severity: High Compromised-Account Trusted-Infrastructure-Abuse Redirect-Abuse Detection-Evasion MITRE: T1078.004 MITRE: T1566.002 MITRE: T1584.004 MITRE: T1204.001 MITRE: T1497.001

A message arrived in the mailbox of a senior executive at a large commercial property developer. It carried one bolded hyperlink, and the visible text of that hyperlink was a filename ending in .pdf, assembled from the sending firm's own name and the send date. Above it sat two lines of body copy: a one line greeting, then a request to see the attached.

Nothing was attached. The record lists exactly one real file on that message, a 30,747 byte inline PNG from the sender's signature block, verdict clean, with a smaller inline graphic beside it. The promised document did not exist in any form.

The destination behind the label was not a document host. It was a merchant callback endpoint on the production API of an Australian buy now pay later provider.

A Label Where a File Should Have Been

Anchor text is free text, and a string ending in a file extension recruits a habit rather than an emotion. A recipient scanning a short internal message does not evaluate a filename. They read it as an object already present and click to open it.

The framing was equally cheap. The message was addressed to the compromised mailbox itself, so the header From and the header To were the same address, and it carried In-Reply-To and References headers pointing at an earlier message, presenting itself to the recipient's client as a conversation already in progress. Below the link ran the mailbox owner's complete corporate signature, down to the confidentiality notice. None of it was fabricated. The attacker inherited it by sending from inside the real mailbox.

The Redirector Belonged to a Payment Company

The body preserved the pre-rewrite destination in the anchor's originalsrc attribute, which is where the chain becomes visible. The first hop was global-api[.]prod[.]au[.]edge[.]zip[.]co, path /merchant/callback, with a query string carrying redirect=, region=au, result=approved, a customer identifier and a checkout identifier. The endpoint honoured that redirect value and forwarded the browser to a deep path on an unrelated website.

Two qualifications belong here. The record does not establish whether that endpoint forwards arbitrary destinations by design or whether the attacker created a genuine checkout session to obtain a callback URL pointing where they chose. The tokens look real and result=approved suggests a completed flow. Neither reading is a defect in the provider's platform. The provider is a bystander: its infrastructure was used, not owned.

What matters to a defender is the reputation arithmetic. The first hop out of the body resolved to a well known commercial payment domain with valid certificates and years of clean history. The recipient's own tenant then rewrote the anchor into a link protection wrapper and delivered it, preserving the destination. A rewritten link that was not blocked reads to almost everyone as a link that was cleared.

Clean Described the Scanner, Not the Page

Both the callback URL and the bare terminal URL were scanned, and both render an identical screen: a padlock badge reading "Automation Protection Active", a distorted five character code, a text field, a Verify button. Absent a solved code, that is all the page serves.

The verdicts follow directly. The callback URL came back Clean, the terminal URL came back Mixed Result, and neither came back malicious. Both describe how far an automated visitor travelled, not what waited at the end. The scanning infrastructure named its stored artifact after the terminal domain, confirming the redirect was followed.

What sits behind the gate is not in the record, and filling that in would be the easiest mistake to make here. No credential form was captured, no brand clone, no download. The finding is not the payload. It is that three controls, sender authentication, link protection and URL reputation, all reported success while none examined what the link served. The gate is not there to hide content from a human. It is there to convert a scanner's failure into a clean result.

See Your Risk: Calculate how many threats your SEG is missing

Signed on the Way Out, Unsigned When It Was Written

The arrival authentication block is as strong as a block gets. SPF passed. DKIM passed with the signature verified. DMARC passed with action none. Composite authentication returned a pass with reason code 100, and two ARC seals were present, the second validating.

One header undoes the reassurance. Authentication-Results-Original, the sending tenant's own view before egress, reads dkim=none (message not signed) and dmarc=none. The message was unsigned when composed and cryptographically signed by the time it arrived. That is not forgery. It is a genuine Microsoft 365 tenant signing its own outbound mail, under that tenant's own onmicrosoft.com domain. Unsigned at composition, authenticated on delivery, is the profile a compromised in tenant mailbox produces, and it is why account takeover defeats identity controls instead of tripping them.

The DMARC policy in force was none, so the pass reflects alignment, not an enforced instruction.

The Signal That Caught It

Microsoft's own filtering scored the message mildly and delivered it: SCL 1, BCL 0, verdict non spam. Adaptive AI scored it at 84 percent confidence, applied a VIP recipient label, and named the offending link by its display text, the fake filename. The incident automatically resolved as phishing, and three mailboxes were quarantined within four to five minutes. A fourth message with an unrelated subject joined the same incident about three hours later.

The signals were relational, because nothing technical failed. A message addressed to itself. A reply into a thread the recipient could not place. A filename as anchor text with a payment API behind it. Microsoft 365 augmentation exists for this shape of message, which the native stack scores as ordinary because every field it reads is genuine.

Four Changes Worth Making

The 2024 Verizon Data Breach Investigations Report puts the human element in 68% of breaches, phishing in 15%, and stolen credentials in 38% as the top initial action. A chain built entirely from borrowed reputation is how those numbers stay steady.

Four practices follow. Treat a Clean verdict as unresolved whenever the scanner stopped at an interaction gate, and record terminal state alongside verdict. Score anchor text against its destination, since a displayed filename resolving to an API endpoint is a cheap, high signal mismatch. Resolve redirect parameters rather than grading the first hostname in a chain. And read a self addressed message from a known correspondent as a compromise indicator, not a formatting quirk, which is where CISA's phishing guidance and the NIST definition of phishing both point. The attacker registered no domain and stood up no server. Every hop was somebody else's.

Indicators of Compromise

TypeIndicatorContext
URLhxxps://global-api[.]prod[.]au[.]edge[.]zip[.]co/merchant/callback?redirect=&region=au&result=approved&customerId=cus_5Ro8badzSuQifWR8cuPfDI&checkoutId=co_62XAXDMfHsgXyfOgvdwtUoPre rewrite destination behind the fake filename anchor. Production API host of an Australian buy now pay later provider, abused not owned, no vulnerability alleged. Redirect value withheld: it carries the landing domain percent encoded.
URL path/bid/DR-G33409OVBGFT[.]htm on a withheld third party domainTerminal landing page. Path and content attacker deployed, domain not. A variant appends ?checkoutId=au-co_62XAXDMfHsgXyfOgvdwtUo&result=approved.
DomainTerminal landing domain withheldRegistered roughly six years earlier to one private individual on consumer webmail. Compromised third party hosting.
Landing pagePadlock badge reading "Automation Protection Active", distorted five character code, Verify buttonAnti automation gate, the first and only screen. Both scanned URLs render it identically.
Anchor textA filename ending in .pdf built from the sending firm's own name (genericized)Display text only. No attachment of that name existed.
AttachmentOne inline PNG signature graphic, 30,747 bytes, verdict cleanThe only real file. Proves the promised document never existed.
HeadersHeader From and header To identical (compromised mailbox); In-Reply-To, References, thread topic, thread indexSelf addressed send, false thread continuity.
Auth resultSPF pass; DKIM pass verified under the sending tenant's own onmicrosoft.com domain, tenant scoped selector; DMARC pass action none; compauth pass reason 100; ARC cv pass; SCL 1, BCL 0, verdict non spamEvery identity check passed and Microsoft delivered it.
Header contrastAuthentication-Results-Original reading dkim=none (message not signed), dmarc=nonePre egress view. Unsigned when composed, signed on the way out.
Link verdictsRedirector Clean, terminal page Mixed ResultNeither malicious. Both describe how far the scanner got.
DetectionAdaptive AI, 84 percent confidence, VIP recipient labelNamed the link by its fake filename display text.
DispositionAutomatically resolved as phishing, three mailboxes quarantined within about five minutesA fourth message with an unrelated subject joined the incident hours later.

MITRE ATT&CK Mapping

TechniqueIDHow it appeared
Valid Accounts: Cloud AccountsT1078.004Sent from inside a genuine Microsoft 365 mailbox under attacker control, which is why authentication passed.
Phishing: Spearphishing LinkT1566.002One bolded hyperlink whose anchor text was a filename, sent as a thread reply.
Compromise Infrastructure: ServerT1584.004The terminal page sat on a years old third party website.
User Execution: Malicious LinkT1204.001Progress required clicking a filename, then solving a code.
Virtualization or Sandbox Evasion: System ChecksT1497.001The fake bot check converted scanner failure into Clean, not malicious.
Email Attack of the Day is a daily series from IRONSCALES spotlighting real phishing attacks caught by Adaptive AI and our community of 35,000+ security professionals. Each post breaks down a real attack. What it looked like, why it worked, and what to do about it.

Related attacks

Attack What happened
Known Sender, Perfect Auth, Confirmed Malicious LinkA reply inside a genuine calibration service thread arrived with SPF, DKIM, DMARC and composite authentication all passing.
Perfect Authentication, Borrowed From a Real MailboxAn EFT payment lure passed SPF, DKIM and DMARC cleanly, carried a genuine corporate legal disclaimer, and came from a real utility employee's mailbox.
Real Retailer Infrastructure, Someone Else's HR PhishA compensation review notice reached employees at a global technology company with SPF, DKIM and DMARC all passing.
A Company Impersonating Itself, From Someone Else's MailboxA document assignment notice named the recipient's own employer in its subject line and its sender display name, then passed SPF.
The Relay Flagged It Bad and Delivered It AnywayA meeting invite arrived as a base64 encoded calendar part that rendered as a recording ready notification.

Explore More Articles

Say goodbye to Phishing, BEC, and QR code attacks. Our Adaptive AI automatically learns and evolves to keep your employees safe from email attacks.