Credential-Phishing Campaign Distributed From a Compromised AirDroid (Sand Studio) Mailbox

A two-stage credential-harvesting kit whose architecture is consistent with adversary-in-the-middle session theft, delivered by mail that raw headers confirm was sent from inside a vendor tenant publishing DMARC p=reject — with the operator answering our challenge in-thread seven minutes later. Scope: one mailbox. See Section 10, "What we did not find".

Advisory ID
LH-2026-001
Published
2026-08-06
Last updated
2026-08-12
Vendor response
Receivedpublicly confirmed on the vendor's own domain
Our incident response
Concluded 2026-08-12
Severity
High
Traffic Light Protocol
TLP:CLEAR
Author
Daniel Wilson Kemp
Founder & CEO, Lifted Holdings LLC

Status — updated 2026-08-12: concluded on our side. On 2026-08-12 at 11:32 UTC Sand Studio published a security notice on its own domain, Security Notice Regarding Recent Phishing Incident, and told us 36 minutes later that it "is published on AirDroid's official domain and serves as our public company statement regarding the incident." That was the one thing this advisory said was missing. Every prior communication reached us through the compromised tenant itself, authenticating exactly as the phishing message did; we said on 2026-08-10 that we could not tell the vendor from the adversary on that evidence, and we declined to guess. A statement carried on a second, independently controlled surface is a different kind of evidence, and we treat it as one. We are closing our incident response. See The public notice for what it establishes, what it does not, and the two limitations we record about how it is published. No finding, indicator or conclusion in this advisory has been changed at any point in this exchange. The scope limitation in Section 10 stands exactly as written: we established that one mailbox was compromised, which is not the same statement as the vendor's, that access was limited to one mailbox. Those two remain published side by side, unmerged.

Scope limitation — please quote this alongside any part of this advisory

Our evidence establishes that one mailbox on the airdroid.com domain was under adversary control on 2026-08-06, and nothing beyond that. We found no evidence that AirDroid or AirDroid Business products, systems, infrastructure or customer data were compromised, and no evidence that any AirDroid user account was affected. We make no such claim. Scope beyond a single mailbox is not established; only Sand Studio's own Google Workspace audit logs can determine it. Full detail in Section 10.

Summary

On 2026-08-06 at 14:06:03 UTC, Lifted Holdings LLC received a credential-phishing email sent from a Sand Studio Pte. Ltd. business-development mailbox on the airdroid.com domain. The message was addressed to undisclosed-recipients:; with our address BCC'd, carried the subject "Sand Studio Pte. Ltd. - RFQ & Investment Partnership", opened "Dear Prospective Partner", and offered a "REVIEW PROJECT" hyperlink.

The message was not spoofed. The raw message headers, obtained and parsed on 2026-08-06, carry dkim=pass header.i=@airdroid.com header.s=google, spf=pass from a Google outbound relay, and dmarc=pass (p=REJECT sp=REJECT dis=NONE), with no hop outside Google's infrastructure in the Received: chain (Section 5). Independently of any header analysis, when our founder challenged the sender in-thread, the mailbox replied 7 minutes later, quoting his text and instructing him to "log in using your email account." A spoofing sender never receives that reply.

The linked payload is a two-stage credential-harvesting kit whose architecture is consistent with adversary-in-the-middle session-token theft (moderate confidence — see Section 6): a Microsoft-branded gate on an aged, abused domain that hands the victim's email address to a Cloudflare-fronted .icu domain registered seven days before the campaign, which serves a Google sign-in clone. When we queried on 2026-08-06 the stage-2 infrastructure had no record in the public sources we checked. Indicators are published in Section 7.

Key findings

Assessment and confidence levels

Findings, confidence level, and the evidentiary basis for each
FindingConfidenceBasis
The sending mailbox was under adversary controlConfirmedInteractive in-thread reply at 14:51:58 UTC quoting our challenge
Sent from inside the Workspace tenant, not spoofedConfirmedRaw headers: dkim=pass d=airdroid.com s=google, spf=pass from Google relay, dmarc=pass (p=REJECT), no external hop in the Received: chain
Composed in the Gmail interface by a logged-in operatorHighmail.gmail.com Message-ID format, X-Gm-* headers, no X-Mailer
Bulk send against a contact or partner listHighundisclosed-recipients:; + BCC + "Dear Prospective Partner"
Two-stage credential-harvesting kitConfirmedStatic analysis of the stage-1 script; observed stage-2 Google clone
Capable of MFA bypass via session-token relayModerateArchitecture is consistent with AiTM; not observed end to end
pulp2pack.com is an abused legitimate domain, not attacker-registeredModerate-High~7.7-year-old domain, unrelated multi-vertical abuse, shared hosting. Re-registration of an expired domain not excluded
Anti-analysis behaviour in use at stage 2 — per-IP cloakingWITHDRAWNRefuted on re-check. The resets were in-path phishing filtering on our own egress, not attacker behaviour — Section 6
Stage 2 gated by Cloudflare TurnstileConfirmedHTTP 200 with a Turnstile challenge from two independent vantage points, 2026-08-06 19:15–19:25 UTC
Multi-host campaign reusing one kit pathHighIdentical /bidaccess/rfp-notification.html path on unrelated hosts in public scan records, earliest 2026-05-05
No prior public analysis of this infrastructureModerate-HighOne prior urlscan.io record (2026-07-31) exists but did not capture the payload. Commercial blocklists and vendor detection not surveyed
AirDroid products / customer data compromisedNOT ESTABLISHEDNo evidence either way. Requires Sand Studio's Workspace audit logs
Scope beyond one mailboxNOT ESTABLISHEDA domain-level DKIM signature cannot distinguish one account from many

Disclosure timeline

All timestamps UTC, 2026-08-06.

Time (UTC)EventEvidence
13:15:32 Stage-1 payload staged on pulp2pack.com/bidaccess/rfp-notification.html — about 50 minutes before the send. HTTP Last-Modified response header
14:06:03 Phishing email sent from the Sand Studio business-development mailbox. To: undisclosed-recipients:;. BCC: will@liftedholdings.com. Subject: "Sand Studio Pte. Ltd. - RFQ & Investment Partnership". Received message, Lifted Holdings mailbox
14:45:03 Daniel Wilson Kemp (Lifted Holdings) challenges the sender in-thread. Sent message
14:45:37 Message forwarded to a third party for awareness. Sent message
14:51:43 T+45 min — Lifted Holdings notifies the vendor at success@airdroid.com. Sent message
14:51:58 The operator replies in-thread, 7 minutes after the challenge, quoting our text: "This email serves as confirmation that it is from our company and contains a project proposal for your review. Please log in using your email account to access and review the document." Received message
14:52:29 AirDroid automated acknowledgement — Ticket #74851 opened. Received message
15:08:59 Lifted Holdings escalates again in-thread; internal incident response declared. Sent message
~16:42 Stage-1 payload retrieved and statically analysed by Lifted Holdings; stage-2 infrastructure profiled; DNS and stage-2 reachability tests executed. This advisory, Sections 5-7
17:10:24 Full technical report sent to security@airdroid.com, the vendor's published security-reporting address, referencing Ticket #74851, with the complete investigation report attached. The letter stated plainly that we were not holding for a standard embargo window, offered to publish alongside the vendor's own advisory, offered our draft in advance, and offered to work with the vendor on timing if it told us it was actively remediating. Sent message; Lifted Holdings incident record
17:10:37 The copy addressed to dmarc-reports@airdroid.com — the aggregate-report destination published in the domain's own DMARC record — was rejected 550 5.1.1 by the domain's authoritative mail host. See Section 5. Delivery status notification
18:00 Advisory LH-2026-001 published — after the security-address disclosure, not before it. This document

Publication without an embargo, and why

We did not give Sand Studio a disclosure window before publishing, and we told the vendor so at the time. Our 17:10:24 UTC disclosure to security@airdroid.com said in terms that we were not holding for a standard embargo window, and why. We notified the vendor 45 minutes after receipt, escalated through its own published security-reporting address with the full report attached, and had received nothing beyond an automated ticket acknowledgement. That was the position when this advisory was published, and this section records the reasoning as it stood then. It has since changed: the vendor responded substantively the following day, and its response is published at Vendor response below.

Three facts drove the decision:

We regard withholding live, unblocked indicators from exposed third parties as the greater harm. We offered to publish alongside Sand Studio's own advisory rather than ahead of it, offered our draft in advance, and offered to work with the vendor on timing. We said we would publish any statement the vendor wished to make. The vendor has made one, and the rest of this section is it.

Vendor response — added 2026-08-10

Sand Studio responded substantively on 2026-08-07, the day after publication, and asked us on 2026-08-10 to update this advisory so the public record reflects that work. This section is that update.

Time (UTC)EventEvidence
08-07
02:30:21
A message arrives from the compromised mailbox itself — the same mailbox that sent the phishing message and answered our challenge twelve hours earlier. It states that the phishing message "was NOT sent by me or authorized by AirDroid", that the security team is "investigating the incident to determine its scope and origin", and that recipients should not click links or reply with sensitive information. We cannot attribute this message to the account holder rather than to the adversary, and we do not. See Provenance. Received message
08-07
06:31:46
Sand Studio issues a customer-facing security notice from biz-tech@airdroid.com, addressed to undisclosed-recipients:;, with Lifted Holdings among the blind-copied recipients. Quoted in full below. Received message
08-07
07:28:51
AirDroid Customer Success acknowledges the report — the first reply from a person rather than from the ticketing system: "We have treated this as top priority and initiated the investigation right away." Received message
08-07
11:23:57
Substantive response from security@airdroid.com — the vendor's account of its investigation, containment and notification actions. Summarised below. T+18h 13m from our disclosure to that address, and T+21h 17m from the phishing send itself. Received message
08-10
03:18:18
Sand Studio asks us to update this advisory, noting that it still reflected the status at the time of original publication, and setting out the developments it wished the public record to carry. Received message
08-10
Advisory revised to v1.3, then to v1.4 the same day. This section added; the status line, Section 9 and Section 10 updated accordingly. v1.4 added Provenance after we ran header authentication on every message received from the vendor's domain and found that all of them pass exactly as the phishing message does. This document
08-11
06:18:43
Sand Studio offers a meeting to walk through its findings — a fourth address in that tenant, copying two further members of staff. Received message
08-11
11:36:34
We decline to treat email from the affected domain as resolution, and ask for a public notice on a company-operated surface. "A blind bcc email from the compromised workspace domain does not show resolution or customer disclosure… We can't alleviate a breach of a workspace account using the same email domain that was breached." We state that we are continuing to treat the vendor as potentially compromised until such a notice exists. Sent message
08-12
11:32:13
Sand Studio publishes a security notice on airdroid.comSecurity Notice Regarding Recent Phishing Incident. Time taken from the Last-Modified header of the page as served to us. T+23h 55m from our request, T+5d 18h 21m from our disclosure. Read in full at The public notice. Vendor website
08-12
12:09:11
The vendor's security team sends us the URL and states that the notice "serves as our public company statement regarding the incident", inviting us to update this advisory and disclosure timeline. Received message
08-12
Advisory revised to v1.5. Public notice retrieved, verified and recorded; provenance question resolved; our incident response closed. This document

The vendor's customer notice, in full — private at the time, public five days later

This was a private email, not a public disclosure. It was addressed to undisclosed-recipients:; and reached us as one of the blind-copied recipients — which means we cannot see who else received it and cannot confirm that it reached every affected party, or what fraction of them it reached.

As of 2026-08-10 we could find no public statement of any kind. We checked the AirDroid newsroom (most recent entry October 2025), the AirDroid security centre at airdroid.com/resources/security/, and public web search. None carried an advisory, incident notice or breach disclosure relating to this event. We recorded that as an observation rather than a criticism — a vendor may have sound reasons for private notification — but the difference between "notified an unknown set of recipients privately" and "disclosed publicly" is load-bearing for anyone relying on this advisory, and for any organisation trying to work out whether it was on that BCC line.

Superseded on 2026-08-12. A public notice now exists on the vendor's own domain. The paragraph above is left standing as the record of what was true when it was written, which is how every correction in this advisory is handled. See The public notice.

Recommendation 7 of Section 9 asked Sand Studio to publish a customer-facing notice. It did so about sixteen and a half hours after the send. We had asked: the same recommendation was in the technical report sent to security@airdroid.com at 17:10:24 UTC on 2026-08-06, roughly thirteen hours earlier, and in v1.0 of this advisory. We cannot tell whether the notice was prompted by that report or was already in train, and we do not claim it either way. We reproduce it unedited:

"Dear Valued Customers,

Our company discovered today that an employee's email account was accessed without authorization, resulting in unauthorized emails being sent at 06-August-2026.

If you received this email: Please do not click any links or attachments within it. Please do not reply with any personal or business information. Please do not enter any account credentials or passwords. We recommend deleting the email.

If you have already clicked any links, downloaded attachments, or entered any credentials, please change your password immediately and notify your IT department.

Sand Studio is notifying their corporate email addressees and conducting internal investigation and containment of this incident.

We apologize for any inconvenience caused and rest assured the Sand Studio team is taking all necessary actions to contain this cybersecurity incident and you will be informed of any investigation outcome when it is ready."

AirDroid Business Technical Support Team — 2026-08-07 06:31:46 UTC

What the vendor reports

The following is Sand Studio's account of its own investigation, summarised from its messages of 2026-08-07 and 2026-08-10 and published because we undertook to publish any statement it wished to make. We have not independently verified any of it. It rests on Google Workspace audit data that only Sand Studio holds — which is exactly the limitation this advisory has carried since version 1.0.

What this changes, and what it does not

It answers the question we said only the vendor could answer — and it is not the same statement as ours. This distinction is worth being pedantic about, because the whole advisory rests on it. Our evidence established that one mailbox was under adversary control and gave us no basis to say anything about any other. That is an absence of evidence, and we were careful never to dress it up as evidence of absence. Sand Studio now asserts the positive claim we declined to make: that the unauthorised access was limited to that one mailbox. We are not treating the vendor's assertion as confirmation of ours, because ours was never a claim about the true scope — it was a statement about the limits of what we could see from outside. What has changed is that a party writing from the vendor's domain has now answered that question on the record, and the answer contradicts nothing we published. Whether that party is the vendor or the adversary is itself unresolved — see Provenance. Both statements stand here side by side; we have not merged them into one.

It addresses the exposure that drove publication without an embargo — on the vendor's account. The third of our three reasons was that the other recipients were BCC'd, could not see one another, and could be reached only by the vendor. Sand Studio states that it identified all recipients of the send and issued security warnings to them, and it published the customer notice above. Those are recommendations 5 and 7 of Section 9. This is the one claim in the vendor's account we have no way to check at all — we never held the recipient list, which is precisely why we raised the concern — and it happens to be the claim that retires our own justification for publishing without an embargo. We are not going to quietly let it do that. We record the vendor's statement, we have no evidence against it, and we note that we cannot verify it.

It changes no observation in this advisory. The header analysis in Section 5, the in-thread reply at 14:51:58, the payload analysis in Section 6 and every indicator in Section 7 are unaffected. Nothing in the vendor's account contradicts them; the vendor's own description of the initial access is consistent with the kit we documented.

It adds one thing we did not have: the chain runs at least three organisations deep. On the vendor's account, the mailbox that phished us had itself been taken over via the same lure sent from another organisation's mailbox, which Sand Studio in turn notified. That is the propagation mechanism this campaign relies on, stated by a party that sat in the middle of it: each compromised mailbox is used to phish the trusted correspondents of its owner, and every hop inherits real domain authentication and a real commercial relationship. We were one hop downstream. Whoever received that July message was one hop up. The defensive implication is that recipient notification has to travel in both directions — to the people the mailbox wrote to, and to whoever wrote to it — and Sand Studio states that it did both.

Limits on this section

Attribution, not endorsement. Everything under What the vendor reports is Sand Studio's statement about its own environment. We publish it; we do not certify it. Equally, we have no evidence inconsistent with any part of it. On whether the statement is Sand Studio's at all, see Provenance immediately below — it is not a rhetorical question.

Personal data, and where we drew the line. Sand Studio asked that we avoid publishing personal data, recipient information or mailbox identifiers. We want to be exact about what we do and do not publish rather than claim a blanket compliance we have not given.

  • Recipient information: never held, never published. The send was BCC'd to undisclosed-recipients:;, so we never had the recipient list. No other recipient appears anywhere in this advisory or in the indicator files.
  • The account holder's name: never written as a name — but the address contains it, and we are not going to pretend otherwise. We do not name the individual anywhere in this advisory, in the indicator files, or in any statement we have made, and where we quote that person above we attribute the quote to the role. We also recognise that the local part of the published mailbox address does not conceal who they are. That follows from the decision to publish the address as an indicator, immediately below; it is not a separate claim of anonymity, and we are not making one. The individual whose mailbox was taken over is a victim of this campaign, not a party to it, and nothing here is a criticism of them.
  • The mailbox address: published, deliberately, as an indicator. It appears in the verbatim Received: and Authentication-Results: evidence in Section 5 and in the indicator blocks in Section 7, and it is carried in the CSV and STIX feeds — labelled in each as a victim account, not attacker-owned. We have kept it out of prose throughout. We are not redacting it, and we would rather say so than quietly appear to. The sending address is the single most useful thing a defender can search their own mail logs for, it is what makes this campaign findable retrospectively by an organisation that was on the BCC line, and it has been public since 2026-08-06 in feeds that third parties may already have ingested. Withdrawing it now would degrade the defensive value of this advisory without meaningfully un-publishing anything.

If Sand Studio takes a different view on that last point, we will publish its position here alongside ours.

Provenance — can we tell the vendor from the adversary?

Every message in this section arrived from a domain where we have proven adversary presence, through the medium that is the subject of this advisory. One of them asked us to change a published security advisory. That deserves testing rather than assuming, so we tested it.

Version 1.3 of this section stated that we had not re-run the header authentication analysis on the vendor's messages. We have now done so, on every message received from airdroid.com between 2026-08-06 and 2026-08-10.

MessageFromAuthenticationPrior correspondence
08-06 14:06
the phishing message
the compromised
mailbox
dkim=pass · spf=pass · dmarc=pass (p=REJECT)Since 2023-12
08-06 14:51:58
operator reply to our challenge
the compromised
mailbox
Tenant-authenticated (Section 5)Since 2023-12
08-06 14:52–20:12
four automated ticket acknowledgements
success@dkim=pass · spf=pass · dmarc=passSince 2024-12
08-07 02:30:21
“not sent by me”
the compromised
mailbox
dkim=pass · spf=pass · dmarc=passSince 2023-12
08-07 06:31:46
customer notice
biz-tech@dkim=pass · spf=pass · dmarc=passNone — first contact
08-07 07:28:51
Customer Success
success@dkim=pass · spf=pass · dmarc=passSince 2024-12
08-07 11:23:57
substantive response
security@dkim=pass · spf=pass · dmarc=passNone — first contact
08-07 12:20:49
internal reply, copied to us
an established
staff contact
dkim=pass · spf=pass · dmarc=passSince 2023-12
08-10 03:18:18
request to update this advisory
security@dkim=pass · spf=pass · dmarc=passNone — first contact

Every one of them passes. That establishes far less than it appears to. The phishing message at the top of that table passes the identical checks — dkim=pass header.i=@airdroid.com header.s=google, spf=pass from a Google outbound relay, dmarc=pass under p=reject. That is the central finding of this advisory, set out in Section 5: tenant authentication establishes where a message came from, not whether it is legitimate. Applied to the replies it returns the same answer it returned for the phish — sent from an authenticated session inside the airdroid.com tenant — and it cannot distinguish the vendor's security team from an adversary holding tenant access. We are not going to apply a weaker standard to a vendor's exculpatory mail than we applied to its incriminating mail.

One observation we will state and then immediately neutralise, because it invites over-reading: the phishing message left Google relay 209.85.220.65 while every subsequent message left 209.85.220.41. This is not evidence of anything. Those are addresses in Google's shared outbound pool, assigned per connection. We record it so that nobody reads significance into it later.

What the evidence does support, narrowly:

What we did in response, and what we deliberately did not

We added the vendor's account. We changed no finding, removed no indicator, retracted no conclusion, and redacted nothing. A request to modify a published security advisory reached us from a domain with confirmed adversary presence. The correct handling of such a request is to publish it, attribute it, authenticate what can be authenticated, state plainly what cannot, and leave the underlying evidence exactly where it was. Every indicator in Section 7 is unchanged. The scope limitation in Section 10 is unchanged. The victim mailbox address remains published as an indicator.

Had the request been to remove indicators rather than to add context, we would have refused it, and we would have said so here. We spell that out because the distinction is the whole reason this subsection exists: an advisory that can be edited by whoever controls the mailbox it describes is not an advisory.

Resolved — 2026-08-12

The last bullet above is now out of date, and we are pleased to say so. It recorded that no message had been confirmed out of band and that no notice existed on the vendor's own website. A notice now exists. The resolution came not from a stronger reading of the email, but from a second surface — which is the only thing that could have resolved it. See The public notice immediately below.

The public notice — 2026-08-12

Five days and 21 hours after the send, Sand Studio published a security notice on airdroid.com. It is the first statement about this incident to reach us on a surface the compromised mailbox does not control, and it is the reason this advisory is now closed on our side.

We asked for it in those terms. On 2026-08-11 at 11:36:34 UTC, after four days of correspondence conducted entirely through the affected tenant, we wrote:

"I'd like you guys to follow standard security procedure and issue a release from a known company operated domain… A blind bcc email from the compromised workspace domain does not show resolution or customer disclosure… We can't alleviate a breach of a workspace account using the same email domain that was breached. My security team advises we are still treating as 'potentially compromised and not resolved'. Mostly due to the lack of public disclosure from an uncompromised source."

The notice was published 23 hours 55 minutes later. Unlike the customer notice of 2026-08-07, we are able to say when it appeared without relying on anyone's account of it: the page carries Last-Modified: Wed, 12 Aug 2026 11:32:13 GMT. The vendor's security team sent us the URL 36 minutes after that, describing it as its "public company statement regarding the incident."

Retrieval record

URL: https://www.airdroid.com/resources/security/6d1879c16e1490c91ccd7d7e2b9e3bcd/
Title: Security Notice Regarding Recent Phishing Incident
Retrieved: 2026-08-12 15:15:01 UTC — HTTP/2 200, server: openresty, 14,171 bytes
Page date: "August 2026" (the notice carries no day-level date of its own)

We retrieved it directly rather than through any link the vendor controls in mail, and we have retained the page as served for the incident record.

What it adds to what we already had

Most of the notice restates the account the vendor gave us privately on 2026-08-07. Four things in it are new or newly on the record:

What it does not do
Two limitations in how it is published

We record these because we record this kind of thing about ourselves, and it would be inconsistent to soften it for someone else. Both are facts about the page, checked directly, not inferences about intent.

The practical consequence is that the notice is publicly reachable but not publicly discoverable. Anyone who has the URL can read it, with no account and no authentication — that is what makes it a public statement, and it is why we treat it as one. But a customer who received the phishing mail and goes looking for an explanation will not find this page through a search engine, through the vendor's security index, or through its sitemap. They would have to be sent the link. The link above is followable and this advisory is indexed, so from today one discoverable path to it exists.

What it establishes about provenance, precisely

The question the subsection above left open was whether we were corresponding with the vendor or with an adversary holding tenant access. Header authentication could not answer it, because the phishing message passes the same checks. Publication on airdroid.com answers it on different evidence: the website is a separate control plane from the Google Workspace mailbox, with separate credentials; the notice is hosted where the vendor's own staff and customers can see it, under the vendor's name; and the notice is consistent in every material respect with what the mailboxes told us.

We are not claiming proof, and the distinction still matters. We have not confirmed anything by voice, and we never obtained the out-of-band call we said we intended to seek. What we have is corroboration across two independently controlled surfaces instead of one, which is a materially different evidential position from the one we were in on 2026-08-10, and enough to resolve the question to our satisfaction. We are stating the standard we applied rather than implying a stronger one.

Closing this advisory — what that does and does not mean

Concluded means we have stopped investigating, not that we have retracted anything. Every observation, indicator and confidence level in this document stands. Section 10, "What we did not find", is unchanged. The indicator files continue to be published and remain suitable for detection engineering. The victim mailbox address remains published as an indicator, because it is one.

What would reopen it: a new send from the same tenant; any indicator in Section 7 becoming active again; evidence that a second mailbox in that tenant was involved, which would contradict the vendor's own scope claim; or a material change published by the vendor under the undertaking quoted above. We will continue to watch the indicators. We are not treating this as resolved on the vendor's behalf — we are recording that our own response, which began 45 minutes after the mail arrived, has run its course.

Nothing in this advisory was edited at the vendor's request, at any version. They asked twice: once to reflect their response, once to reflect their public notice. Both times we added their account and changed nothing of ours. A request to remove an indicator would have been refused, and this paragraph would have said so.

Why this matters

AirDroid states that its product suite has surpassed 500 million downloads and users worldwide across all platforms. We cite the vendor's own published figure for exactly one purpose — to establish the footprint of the vendor, not the reach of this incident. AirDroid and AirDroid Business are widely deployed Android device-management products, and mobile device management holds privileged administrative authority inside customer environments. A compromised mailbox at a vendor in that position warrants prompt disclosure, which is why we reported it within 45 minutes and are publishing the indicators.

Reporting note — vendor scale is not incident impact

The 500 million figure is not an impact number and must not be reported as one. It describes how many people use AirDroid's products. It does not describe how many people were affected by this incident. Our evidence supports no impact figure of any magnitude — the demonstrated reach is the correspondence list of a single mailbox. Any account of this incident that places the install base alongside the compromise as though the two were related is misreporting it.

The blast radius we can actually speak to is the correspondence reach of a single mailbox: whoever was on that 14:06 UTC send, plus anyone who has ever exchanged mail with that address and would find a follow-up from it unremarkable.

Two structural factors make that reach unusually effective:

Lifted Holdings is an active AirDroid Business customer. We use it for fleet management of Android-based vending endpoints. That makes this a supply-chain security event for us and not merely inbound spam, and it is why this went to incident response rather than to a spam folder.

Email authentication analysis

The central question for any recipient is whether the sending domain was forged. The published DNS policy for airdroid.com makes that answerable.

DNS records, queried 2026-08-06

airdroid.com          MX    aspmx.l.google.com (1)
                            alt1.aspmx.l.google.com (5)
                            alt2.aspmx.l.google.com (5)
                            aspmx2.googlemail.com (10)
                            aspmx3.googlemail.com (10)
                            -> Google Workspace tenant

airdroid.com          TXT   v=spf1 include:_spf.google.com include:amazonses.com include:shops.shopify.com include:mail.zendesk.com -all
                            -> "-all" = hard fail for any unlisted source

_dmarc.airdroid.com   TXT   v=DMARC1;p=reject;rua=mailto:dmarc-reports@airdroid.com;adkim=s;aspf=r
                            -> p=reject, strict DKIM alignment, relaxed SPF alignment

What the policy implies

p=reject instructs receiving mail systems to reject messages that fail DMARC evaluation outright rather than quarantining them. adkim=s requires the DKIM signing domain (d=) to match the From: domain exactly, not merely share an organisational parent. -all in the SPF record hard-fails every source not explicitly listed.

Under that combination, a message forging @airdroid.com from outside the tenant would be expected to fail DMARC and be rejected rather than delivered. This message was delivered to the inbox. That was our initial, policy-based reading; the raw headers settle it directly.

Raw header verification — observed, not inferred

The original .eml was exported and parsed on 2026-08-06. Verbatim from the message:

Authentication-Results: mx.google.com;
  dkim=pass header.i=@airdroid.com header.s=google header.b=Ns2xG88b;
  arc=pass (i=1);
  spf=pass (google.com: domain of debbie.hu@airdroid.com designates
            209.85.220.65 as permitted sender) smtp.mailfrom=debbie.hu@airdroid.com;
  dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=airdroid.com

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=airdroid.com; s=google; ...
Return-Path:    <debbie.hu@airdroid.com>
Message-ID:     <CANKq_2yK8PqJwMFSenTDmmwxDEQkd_W-bDZqsprM8HU8DheW=g@mail.gmail.com>
Date:           Thu, 06 Aug 2026 22:06:03 +0800

Received: (2 hops, both internal to Google)
  from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65])
       by mx.google.com with SMTPS ... (Google Transport Security)
  by 2002:a05:6504:b8a:b0:30e:4ce7:25ab with SMTP
Header observations and their significance
ObservationSignificance
dkim=pass, d=airdroid.com, s=googleValid DKIM signature under the domain key using Google Workspace's default google selector — signed by Google on behalf of the tenant.
spf=pass, client 209.85.220.65The sending host is a Google outbound relay. Return-Path aligns to the From: domain.
dmarc=pass (p=REJECT sp=REJECT dis=NONE)DMARC passed against a reject policy with strict DKIM alignment. No receiver-side policy override was applied.
No external hop in the Received: chainThe decisive detail. A spoofed message, or one injected via a third-party mailer or compromised relay, leaves an external hop. There is none — the message never traversed a mail server outside Google.
Message-ID: <…@mail.gmail.com>The Message-ID format Gmail generates for messages composed in the Gmail interface — not SMTP relay injection, not a bulk-mailer platform. No X-Mailer or User-Agent header is present.
No divergent Reply-ToOur 14:45 challenge was addressed to the vendor mailbox itself, and the 14:51:58 reply originated from it. The reply is not explained by an attacker-controlled reply address.
Date: … +0800The sending client's configured timezone is UTC+8, consistent with the account's own regional setting. Not a reliable indicator of the operator's physical location; we make no attribution from it.

Conclusion, directly evidenced: the message was composed in the Gmail interface and sent from an authenticated session inside Sand Studio's Google Workspace tenant, through Google's own outbound relay, with a valid domain DKIM signature. It was not spoofed, not relayed, and not injected. Someone was logged into that mailbox and sent it.

The DKIM nuance, stated precisely

This distinction matters, so it is worth stating precisely.

The boundary of this section

The headers establish that the message was sent from an authenticated session inside the tenant. They do not establish how that session was obtained — a stolen password, a stolen session cookie, a malicious OAuth grant and insider access are all equally consistent with this evidence. They do not distinguish one compromised mailbox from several. And they say nothing whatsoever about AirDroid products, systems, or customer data. See Section 10.

Collateral finding — the domain's published DMARC reporting address does not accept mail

The DMARC record above publishes an aggregate-report destination, dmarc-reports@airdroid.com, and specifies no failure-report (ruf) destination at all. When we copied that address on our 17:10:24 UTC disclosure, the message was rejected at 17:10:37 UTC by aspmx.l.google.com — the domain's own authoritative mail host — with 550 5.1.1 The email account that you tried to reach does not exist. The record was re-queried against an independent public resolver and returns the same destination, and the address is on the same domain as the record, so no external-destination authorisation is required. This is independently verifiable by any reader from public DNS plus one SMTP transaction.

Stated precisely, and this is the limit of the claim: a published rua address that does not accept mail means DMARC aggregate reports — the telemetry by which a domain owner learns what is being sent as their domain — are undeliverable. It is a mail-authentication hygiene gap in the reporting path only. It is not evidence of this compromise, it is not its cause, and it should not be characterised as negligence. The domain's enforcement posture is meanwhile stronger than most: p=reject with strict alignment is stricter than the majority of domains deploy.

Independent corroboration that does not rely on headers

The 14:51:58 reply settles the spoof question on its own, with no header analysis required. That message (1) arrived in response to a challenge we sent to the vendor mailbox, (2) quoted our challenge text back to us, and (3) answered it with social engineering — an assurance that the mail was genuine plus an instruction to log in.

An attacker who merely forges a From: address never receives the reply and cannot do any of that. The message carried no divergent Reply-To, so our challenge went to the vendor mailbox itself. Independent of every header above, someone was reading and answering mail in that mailbox in real time.

Payload analysis

Delivery chain

Email (authenticated send, airdroid.com Workspace tenant)
   |  "REVIEW PROJECT" hyperlink
   v
STAGE 1 -- https://pulp2pack.com/bidaccess/rfp-notification.html
   |  hijacked legitimate domain; Microsoft-branded "identity verification" gate
   |  auto-extracts / prompts for victim email, then hands off via URL fragment
   v
STAGE 2 -- https://addendum-200notice-encryption-base.icu/?b4f61f2a#<victim-email>
           Cloudflare-fronted; Turnstile-gated; Google sign-in clone; credential capture
           inferred from the rendered form (submission endpoint not observed);
           architecture also consistent with post-MFA session-cookie relay
           (moderate confidence; not observed end to end)

Stage 1 — pulp2pack.com/bidaccess/rfp-notification.html

Retrieval and hosting

http_code   200
remote_ip   23.106.55.199
size        21039 bytes
last-modified: Thu, 06 Aug 2026 13:15:32 GMT

23.106.55.199   PTR sgpr200.websitehostserver.net
                AS59253  LEASEWEB SINGAPORE PTE. LTD.  (SG)
nameservers     ns1.greengeeks.net / ns2.greengeeks.net   (GreenGeeks shared hosting)

We assess the domain as abused rather than attacker-registered. pulp2pack.com is approximately 2,806 days old (~7.7 years) by our lookup on 2026-08-06. Its root currently serves an Indonesian-language slot-gambling SEO link farm, and urlscan.io holds a record for an unrelated Indian print-shop site at sunriseprintstore.in.pulp2pack.com dated 2025-12-14. An aged domain simultaneously serving unrelated spam verticals and a phishing path is characteristic of a compromised shared-hosting account reused as free infrastructure — though from outside we cannot exclude re-registration of an expired domain, which would make it attacker-controlled instead. On the evidence we have, our assessment is that the domain's owner is also a victim of this activity. We make no claim about the domain's registrant, about other sites on the same host, or about GreenGeeks. Defenders should treat the specific path as malicious and the domain as an abused third party.

Behaviour, from static analysis of the single inline script

BehaviourDetail
Brand impersonationMicrosoft. Loads a genuine Microsoft-hosted assetaadcdn.msauth.net/shared/1.0/content/images/backgrounds/4_eae2dd7eb3a55636dc2d74f4fa4c386e.svg — for visual authenticity.
Forensic tellFooter reads "(c) 2026 Microsoft Corportation" (misspelled, sic). High-fidelity hunt string.
Assurance theatreStaged "Checking browser compliance / Verifying encryption protocols / Validating user identity" messages fire on fixed timers at 600 / 1200 / 1800 / 2400 ms. Purely cosmetic — nothing is checked.
Email auto-extractionk2q8h5t() scrapes a victim email from query values, query keys, the URL fragment, fragment sub-parameters, and any $-delimited segment.
Encoding tolerancem5v8r2k() accepts that email as plaintext, base64 (via atob) or hex — indicating a mass-mailer that personalises links per recipient.
Handoff methodConfig r4v7m9t: 'hash' — the victim email is appended to the stage-2 URL fragment (#victim@domain).
Auto-advancesetTimeout(r5h9x3w, 3500) — redirects after 3.5 seconds with no user interaction. Manual submit adds a 5-second fake "Verifying..." delay.
ObfuscationRandomised 7-character identifiers throughout: q3n7r9v, u8t4m2w, h8p3w6n, k2q8h5t, m5v8r2k, r5h9x3w, r4v7m9t.
Campaign identifierb4f61f2a
ExfiltrationNone at stage 1. The page POSTs nothing. It classifies the victim and forwards. Credential capture happens at stage 2.

Analyst note — why the fragment handoff matters

URL fragments are not transmitted in the HTTP request. They are not written to web-server logs, and they are not captured by forward proxies or secure web gateways, which record the path and query string only. One precision worth stating, because it is commonly got wrong: mail-security URL rewriters operate on the href string in the message body before any request is made, so they would capture a fragment if one were present in the emailed link — here there is none, because the fragment is appended client-side by stage 1's redirect. The rewriter only ever sees the stage-1 URL. The effect of passing the victim identifier after the # is that your own telemetry shows a visit to a .icu apex with a campaign parameter and nothing that identifies who was targeted; we describe the effect rather than assert the author's intent.

It serves a second purpose. Because the fragment is read client-side before rendering, stage 2 can pre-fill the username and fingerprint the victim's identity provider before it draws a single pixel — which is the standard precondition for an adversary-in-the-middle session-token relay: the attacker proxies the genuine login, the victim completes MFA against the real provider, and the attacker captures the resulting session cookie. Standard MFA — TOTP codes or push approvals — does not defend against this. We assess the kit's architecture as consistent with AiTM session theft at moderate confidence; we observed the architecture, we did not observe an end-to-end relay.

Because Lifted Holdings was BCC'd on a generic blast rather than sent a personalised link, no email address was embedded in our URL, and the page fell through to prompting for one manually. Recipients who received a personalised link would have been carried through without ever typing their address.

Stage 2 — addendum-200notice-encryption-base.icu

AttributeValue
URLhttps://addendum-200notice-encryption-base.icu/?b4f61f2a
Resolves to104.21.86.28, 172.67.214.97 — AS13335 Cloudflare (anycast)
Nameserverslennon.ns.cloudflare.com, ophelia.ns.cloudflare.com
RegistrarNamecheap, Inc.
Domain created2026-07-30 — seven days before the campaign
Origin hostConcealed behind Cloudflare; identification requires a Cloudflare abuse referral
Content observedVisually faithful Google sign-in clone whose continue= parameter was a base64-encoded genuine accounts.google.com/v3/signin/identifier path. Observed once; we did not preserve a capture of that response and later retrievals from our source address were reset, so this specific observation is not reproducible from our evidence

Stage-2 reachability, two vantage points — 2026-08-06

Correction — supersedes the v1.0 cloaking finding

Version 1.0 of this advisory reported that stage 2 reset HTTPS connections across three request profiles while cleartext HTTP still answered, and assessed that as attacker-side per-IP “burn-after-view” cloaking. That assessment was wrong, and it is withdrawn. Re-testing from a second, independent egress showed the identical requests returning HTTP 200 in the same minute. The resets were produced by an in-path phishing filter on our own observing network, not by the attacker.

RequestOriginal vantage (filtered network)Independent egress
HTTPS, Chrome UA, stage-1 refererConnection resetHTTP 200 — Turnstile gate
HTTPS, no user-agentConnection resetHTTP 200 — Turnstile gate
HTTPS, iPhone Safari UAConnection resetHTTP 200 — Turnstile gate
Plain HTTP, port 80HTTP 200 — security-vendor block page, not the attacker’s serverBare default nginx page

Three details establish the mechanism. The cleartext “HTTP 200” from the original vantage was a security vendor’s block page classifying the domain as phishing — not content from the attacker’s host at all. No such product is installed on the workstation, so the interception is upstream on that network path. And TCP reachability to both Cloudflare addresses on port 443 is fine, with unrelated Cloudflare-fronted sites loading normally — the reset keys on the hostname in the TLS SNI, which is the signature of an in-path filter rather than an origin behaviour.

What stage 2 actually does is present a Cloudflare Turnstile human-verification challenge in front of the payload. That still obstructs automated analysis — a crawler gets the challenge, a human victim clicks through it — but it is a different mechanism from per-IP blocking, and it is directly observed rather than inferred.

Method note worth generalising

Version 1.0 carried a residual-risk note that cloaking had been tested from one source address only. That caveat was correct, and re-testing resolved it in the opposite direction to the original conclusion. Any claim about attacker-side filtering needs at least two network vantage points before it is stated; a single-vantage observation cannot distinguish attacker behaviour from your own egress security stack. We publish this correction in full rather than quietly editing it out.

Practical consequence for responders: a “the link is dead / it doesn’t load for me” result is not evidence that a user was safe — and it may say more about your egress filtering than about the attacker. Assume the victim saw live content even where your own retrieval fails.

Related deployments of the same kit

Public scan records show the identical kit path /bidaccess/rfp-notification.html on unrelated hosts, the earliest three months before the message we received. The actor rotates hosting — compromised sites, object storage, serverless platforms — while keeping the path constant. Status column re-checked 2026-08-06 19:23 UTC.

HostFirst public recordStatus
pulp2pack.com— (our sample; no public scan)Live
businesswa.me2026-08-05Live
pases.com.co2026-08-06Removed (404)
*.workers.dev (Cloudflare Workers)2026-06-25Not re-tested
*.s3.ap-northeast-3.amazonaws.com2026-05-05Not re-tested

Hunting implication: block the hosts, but hunt the path. The URL path has survived at least three months and multiple hosting providers, which makes it a far more durable detection than any single domain in Section 7.

Identity-provider fingerprinting

The kit rendered Microsoft branding at stage 1 and Google branding at stage 2. Together with the email-extraction and encoding-tolerance logic — which accepts a victim address in multiple encodings and forwards it — this would permit a kit to resolve the victim's email domain to an identity provider and serve the matching login clone. We cannot confirm that behaviour. Because Lifted Holdings was BCC'd on a generic blast, our request carried no victim identifier, so the Google clone we saw may equally be the kit's default page rather than a fingerprint-selected one. Both airdroid.com and liftedholdings.com are Google Workspace domains. Defenders should not assume the brand they see is the brand another recipient saw — an organisation that uses neither Microsoft nor Google is not thereby out of scope, and a Microsoft-branded gate is not evidence that Microsoft credentials were the target.

MITRE ATT&CK mapping

MITRE ATT&CK techniques observed in this campaign
TechniqueIDObserved as
Phishing: Spearphishing LinkT1566.002"REVIEW PROJECT" hyperlink to stage 1
Compromise Accounts: Email AccountsT1586.002Authenticated send from a vendor tenant mailbox
Stage Capabilities: Link TargetT1608.005Stage-1 payload written ~50 minutes before the send
ImpersonationT1656Microsoft and Google sign-in clones; genuine aadcdn.msauth.net asset loaded for authenticity
Multi-Factor Authentication InterceptionT1111Not observed. Listed only because the architecture is consistent with session-token relay — moderate confidence, architectural. Do not ingest this as an observed technique

Indicators of compromise

All indicators below are provided as copyable plaintext for direct ingestion into blocklists, SIEM watchlists, and hunt queries. Observed 2026-08-06 unless otherwise stated. Machine-readable copies: CSV · STIX 2.1.

Before you copy anything

These URLs were live at the time of publication. Do not open them in a browser. They are published un-defanged so they can be pasted directly into blocklists and search tools. Defanged forms for prose: hxxps://pulp2pack[.]com/bidaccess/rfp-notification[.]html and hxxps://addendum-200notice-encryption-base[.]icu/?b4f61f2a.

Two entries in the bare list below must not be blocked outright: the Cloudflare anycast addresses are shared edge infrastructure, and pulp2pack.com is an abused third-party domain — block the /bidaccess/ path, and weigh an apex block against your own environment.

Handling note

The sender address is published only in the technical indicator blocks and in the verbatim header quotation in Section 5, because defenders need it to hunt and to block and because an altered header quotation would not be evidence. It appears in no prose, no heading, no metadata and no summary. The account holder is a victim of this incident, not a participant in it, and is not named anywhere else in this advisory, in its metadata, or in any material we distribute. Please handle accordingly in any reuse.

All indicators, one per line

Copy-paste ready. Annotations follow in the categorised blocks below — read them before you act on this list.

All indicators — copy-paste readyLH-2026-001
pulp2pack.com
addendum-200notice-encryption-base.icu
https://pulp2pack.com/bidaccess/rfp-notification.html
https://addendum-200notice-encryption-base.icu/?b4f61f2a
23.106.55.199
104.21.86.28
172.67.214.97
sgpr200.websitehostserver.net
ns1.greengeeks.net
ns2.greengeeks.net
lennon.ns.cloudflare.com
ophelia.ns.cloudflare.com
debbie.hu@airdroid.com
b4f61f2a
/bidaccess/rfp-notification.html
aaf1470747fcb7bad9197fa92c2f5b028f1132ef0396646308623eb4059a86d2

Email indicators

Email indicatorsLH-2026-001
debbie.hu@airdroid.com                    compromised sender mailbox (Google Workspace;
                                          headers show dkim=pass d=airdroid.com s=google,
                                          spf=pass, dmarc=pass, no external Received hop;
                                          account holder is a VICTIM, not the actor)
Subject: Sand Studio Pte. Ltd. - RFQ & Investment Partnership
To:      undisclosed-recipients:;         bulk send; recipients BCC'd
Salutation: "Dear Prospective Partner"
Lure:    "REVIEW PROJECT" hyperlink; RFQ / investment-partnership pretext
Send:    2026-08-06 14:06:03 UTC
Operator reply text (2026-08-06 14:51:58 UTC):
  "This email serves as confirmation that it is from our company and contains a
   project proposal for your review. Please log in using your email account to
   access and review the document."

URL indicators

URL indicatorsLH-2026-001
https://pulp2pack.com/bidaccess/rfp-notification.html            stage 1
https://addendum-200notice-encryption-base.icu/?b4f61f2a         stage 2
https://addendum-200notice-encryption-base.icu/?b4f61f2a#<victim-email>
                                                                 stage 2, fragment handoff

Domain indicators

Domain indicatorsLH-2026-001
pulp2pack.com                             ABUSED legitimate domain (~2806 days /
                                          ~7.7 years old by our lookup); GreenGeeks
                                          shared hosting. Assessed as an abused third
                                          party, not attacker-registered. Block the
                                          /bidaccess/ path; weigh an apex block against
                                          your own environment.
addendum-200notice-encryption-base.icu    attacker-registered 2026-07-30, Namecheap,
                                          Cloudflare-fronted
sunriseprintstore.in.pulp2pack.com        unrelated third-party site recorded on the
                                          same abused domain (urlscan.io, 2025-12-14).
                                          Listed as context for the abuse assessment
                                          only - NO allegation is made against that
                                          site or its operator.

IP addresses and ASNs

Network indicatorsLH-2026-001
23.106.55.199    AS59253  LEASEWEB SINGAPORE PTE. LTD. (SG)   stage-1 origin
                          PTR sgpr200.websitehostserver.net
104.21.86.28     AS13335  Cloudflare, Inc.                    stage-2 edge (anycast)
172.67.214.97    AS13335  Cloudflare, Inc.                    stage-2 edge (anycast)

Nameservers:
  ns1.greengeeks.net / ns2.greengeeks.net            stage-1 hosting
  lennon.ns.cloudflare.com / ophelia.ns.cloudflare.com   stage-2

NOTE: the Cloudflare addresses are shared anycast edge IPs. Do NOT block them
outright - block the hostname. The stage-2 origin remains concealed.

Kit artefacts and hunt strings

Kit artefacts / hunt stringsLH-2026-001
Campaign ID:        b4f61f2a
URI path:           /bidaccess/rfp-notification.html
Path fragment:      /bidaccess/
Handoff pattern:    <stage2>/?<campaign-id>#<victim-email>
Victim encodings:   plaintext | base64 (atob) | hex
Staging timestamp:  Last-Modified: Thu, 06 Aug 2026 13:15:32 GMT
Payload size:       21039 bytes (stage-1 HTML)

Stage-1 HTML file hashes (rfp-notification.html, 21039 bytes):
  SHA-256  aaf1470747fcb7bad9197fa92c2f5b028f1132ef0396646308623eb4059a86d2
  SHA-1    288e5594263d3ce728cb7d5cc56d8ddd47a860f8
  MD5      e7e20d67542713dd23f0fd287b649779

HIGH-FIDELITY STRING (misspelling, verbatim):
  (c) 2026 Microsoft Corportation
  Corportation

Fake progress strings (fire at 600 / 1200 / 1800 / 2400 ms):
  Checking browser compliance
  Verifying encryption protocols
  Validating user identity

Obfuscated identifiers (randomised, 7 chars):
  q3n7r9v   u8t4m2w   h8p3w6n   k2q8h5t   m5v8r2k   r5h9x3w   r4v7m9t

Abused genuine Microsoft asset (loaded by stage 1 for authenticity):
  https://aadcdn.msauth.net/shared/1.0/content/images/backgrounds/4_eae2dd7eb3a55636dc2d74f4fa4c386e.svg

Stage-2 clone artefact:
  base64-encoded continue= parameter wrapping a genuine
  accounts.google.com/v3/signin/identifier path

Note on the aadcdn.msauth.net asset: that host is legitimate Microsoft infrastructure and must not be blocked. It is listed because a request for that specific background SVG originating from a page that is not on a Microsoft login domain is a useful referer-based hunt pivot.

Detection & hunting guidance

Block first

Hunt inbound mail

# Google Workspace / Gmail investigation search
from:airdroid.com after:2026/07/29
from:airdroid.com "Prospective Partner"
"pulp2pack.com" OR "addendum-200notice-encryption-base"

# Generic mail-gateway / SIEM predicates
sender_domain = "airdroid.com" AND received >= 2026-07-30
subject CONTAINS "RFQ & Investment Partnership"
body_url CONTAINS "/bidaccess/"
body_url CONTAINS ".icu/?b4f61f2a"

Hunt web traffic

Critical detection caveat

The fragment-based handoff will not appear in server-side URL logs. Everything after # is stripped by the browser before the request is made — your web-server logs, most proxy logs, and most mail-security click-tracking records will show the .icu apex with a campaign parameter and no victim identity at all. If you hunt only on logged URLs you will systematically undercount who was targeted, and you will miss the personalised links entirely.

The reliable sources are endpoint browser history (which retains the full URL including the fragment) and secure web gateway configurations that explicitly capture full URLs client-side. Where neither is available, treat any observed hit on the stage-2 apex as an interaction of unknown depth rather than a benign redirect.

If a user interacted

Assume session-cookie theft, not merely password theft. This is the difference between a contained incident and a persistent one:

  1. Revoke all active sessions for the account. A password reset alone does not evict a stolen session cookie — the attacker stays signed in through it.
  2. Revoke third-party OAuth grants and app passwords. These survive both password resets and session revocation, and are the most common quiet persistence mechanism after an AiTM compromise.
  3. Re-enrol MFA factors and reset the password — in that order, after revocation, not instead of it.
  4. Audit for attacker persistence in the mailbox: forwarding rules, filters that mark mail read or move it to obscure folders, delegated access, and mail-send-as entries.
  5. Pull the sign-in audit log for the account — source IPs, ASNs, and user agents — and reconcile against known devices.
  6. Check for outbound sends you did not author, particularly to external contacts, and particularly BCC'd bulk sends.

Third-party corroboration and current detection coverage

The indicators below are now filed with public threat-intelligence services, so nothing in this advisory rests on our assertion alone. Verified 2026-08-06 21:21 UTC.

SourceRecordVerdict
urlscan.io — stage 1, full chain 019fd8f1-589d-74b9-9443-b0390c5aa8ce Potentially Malicious; brand attribution Microsoft (Consumer), assigned independently of us
urlscan.io — stage 2, direct 019fd8f3-870c-76a8-ab27-31fd0f4befab Malicious Activity; capture shows the Cloudflare Turnstile challenge, independently confirming Section 6
VirusTotal — stage 1 06daf10f…87504c 5 / 92 — Emsisoft, Fortinet, LevelBlue (phishing); Netcraft, Webroot (malicious); SOCRadar (suspicious)

The urlscan stage-1 scan followed the redirect and resolved to the stage-2 domain in a single capture, which is the cleanest available demonstration of the automatic hand-off described in Section 6.

The coverage gap — act on this before anything else

The Google Safe Browsing engine row on the VirusTotal URL reports rated both stages clean at 2026-08-06 21:00 UTC, roughly seven hours after the campaign was sent and while five vendors were already classifying stage 1 as phishing or malicious. Safe Browsing is what drives the red interstitial in Chrome, Firefox and Safari, so for those seven hours a recipient who clicked saw no browser warning at all.

Two consequences for defenders. First, browser-level protection cannot be assumed here — users who clicked were not stopped, and your own controls are the only thing that was in the path. Second, and more generally: a clean Safe Browsing verdict is not evidence a URL is safe, particularly for infrastructure less than a fortnight old. We reported both URLs to Safe Browsing at 21:01 and 21:04 UTC; that is a report, not a remedy, and the verdict may still be clean when you read this.

One further observation about coverage. The VirusTotal record for stage 1 already existed when we went to file, timestamped 2026-08-06 14:11:10 UTC — five minutes after the campaign was sent — sitting at 1 / 92. We did not create it. Another recipient's mail security almost certainly did, which is independent evidence that the send reached a wider distribution than us and that at least one other organisation's tooling saw it immediately. Our reanalysis at 20:56 UTC moved it to 5 / 92.

Recommendations

For organisations that may have received this mail

  1. Apply the blocks and run the hunts in Section 8. Start with mail from airdroid.com since 2026-07-30.
  2. Apply the rule that should apply to mail from any supplier: treat unexpected mail from any vendor that requests a login or credential entry as suspect until you have confirmed it through a channel that is not email — a phone call to your account representative, or the supplier's support portal. Where you have a current commercial relationship with Sand Studio / AirDroid, that rule applies to their mail as it applies to everyone else's, and the indicators below let you check this campaign specifically.
  3. Do not use in-thread replies to verify a suspicious message. If the mailbox is under adversary control, you are asking the attacker whether the attacker is real; we received exactly that answer within 7 minutes.
  4. Move externally-facing and business-development accounts to phishing-resistant MFA (FIDO2 security keys or passkeys). This is the control that actually breaks AiTM relay — TOTP and push approval do not.
  5. Where your gateway supports it, enable full-URL capture including fragments, or ensure endpoint browser-history collection is available to your responders. See the caveat in Section 8.
  6. Review your vendor-risk process for the specific case of authenticated mail from a trusted vendor domain. Lookalike-domain detection does not cover it, because there is no lookalike.

For Sand Studio Pte. Ltd.

Offered constructively, and written when we had no visibility into what Sand Studio had already done. These are the standard containment steps for this class of incident, published so that any organisation facing the same pattern has them too.

Updated 2026-08-12. The vendor has since reported carrying out work covering most of these. On its own account it secured the affected mailbox and applied additional account-security measures, established the initial access vector from its audit data (3), notified all identified recipients of the send (5), and published a customer-facing notice (7) — privately on 2026-08-07 and then publicly on its own domain on 2026-08-12. Its public notice states that "all active sessions and account authorizations were revoked" within approximately two hours, which addresses (1); v1.3 and v1.4 of this advisory recorded (1) as unaddressed, which was correct on the evidence then available. (2) stays open: revoking sessions and authorisations does not remove mailbox forwarding rules or delegated access, which survive a password reset, and no statement we have mentions them. See Vendor response. We have not verified this work and are not in a position to; we record what the vendor states. The list is left standing unedited, because its value is now to the next organisation that finds itself here.

  1. Revoke all active sessions for the affected mailbox in addition to resetting credentials. A password reset alone does not evict a stolen session cookie.
  2. Audit that mailbox for persistence: forwarding rules, filters, delegated access, app passwords, send-as entries, and third-party OAuth grants.
  3. Pull the Google Workspace login audit log for the account — source IPs, ASNs, user agents, token grants — and establish the initial access vector. Only you can determine the true scope; we cannot, and we have not claimed to.
  4. Check whether other tenant mailboxes show the same access pattern.
  5. Identify and directly notify every recipient of the 2026-08-06 14:06:03 UTC send. They were BCC'd, they cannot see one another, and you are the only party able to reach them.
  6. Enforce phishing-resistant MFA (FIDO2 / passkeys) on business-development and other externally-facing mailboxes.
  7. Publish a customer-facing notice. Partners are receiving mail that passes your domain's authentication policy; only you can authoritatively tell them what is and is not legitimate.

What we did not find

Our evidence establishes that one mailbox on the airdroid.com domain was under adversary control on 2026-08-06. It establishes nothing beyond that. Specifically, we did not find, and we do not assert, any of the following:

  • We found no evidence that AirDroid or AirDroid Business products, systems, source code, infrastructure, or management plane were compromised.
  • We found no evidence that AirDroid customer data or user accounts were accessed, exposed, or affected.
  • We found no evidence of compromise of any mailbox other than the one described. A valid DKIM signature is a domain-level assertion; it looks identical whether one account or many are affected, and it cannot be used to scope this incident in either direction.
  • We found no evidence about the initial access vector — stolen password, stolen session cookie, malicious OAuth grant, and insider access are all consistent with what we can see from outside. Updated 2026-08-10: the vendor has since stated the vector — the account holder received and clicked an external phishing mail carrying the same lure. We cannot verify that, but it is the only account on the record, it is consistent with everything we observed, and it is inconsistent with the insider-access possibility listed above. That possibility was always a statement about the limits of our visibility rather than a suggestion about the individual, and it should not be read as one now. See Vendor response.
  • We have no basis to attribute this to any named actor, group, or nation-state, and we make no such claim. We describe observed behaviour only. Nothing we observed requires novel malware or capabilities beyond a commodity phishing kit operated attentively.
  • We cannot determine how many recipients were on the send or how many interacted. The recipients were BCC'd and are invisible to us.
  • We have not observed an end-to-end AiTM session-token relay (Section 6). That assessment is architectural, at moderate confidence, and the ATT&CK entry for T1111 is listed on that basis only — not as an observed technique.
  • We have not confirmed that the stage-2 clone varies by victim. Our request carried no victim identifier, so identity-provider fingerprinting remains an inference from the kit's code, not an observation.
  • We did not preserve a capture of the single successful stage-2 retrieval that returned the sign-in clone, so that specific observation is not independently reproducible from our evidence. The stage-2 reachability finding has since been re-tested from two vantage points and corrected (Section 6).
  • The related-deployment table is built from public scan records and re-checks, not from samples we retrieved and analysed on each host. We assess these as the same kit on the basis of an identical URL path; we have not diffed the payloads.
  • We have not surveyed commercial vendor detection or commercial blocklists. Our novelty claim is limited to the absence of prior public analysis in the sources we checked. At least one security vendor was already classifying the stage-2 domain as phishing on 2026-08-06, so it was not unknown to the industry.
  • Regarding our own organisation: no Lifted Holdings credentials were entered against this infrastructure and no cardholder data exposure was identified.

Scope beyond a single mailbox is not established by our evidence. Only Sand Studio's own Google Workspace audit logs can determine it. Any reporting that reads this advisory as a compromise of AirDroid the company, its products, or its user base is reading something we did not write and the evidence does not support.

Updated 2026-08-10. Sand Studio has since reported the outcome of that audit: unauthorised access limited to the one employee mailbox, with no evidence of access to other company resources, AirDroid products or customer data. That is the vendor's finding from data we cannot see, and we publish it as such. It is not a confirmation of the paragraph above, and we are not presenting it as one. We concluded that we could not see beyond one mailbox; the vendor asserts that there was nothing beyond one mailbox. Those are different claims, and only the second is a finding about scope. The paragraph above stands unchanged, because what our evidence establishes has not changed. See Vendor response.

Analyst comment

"I challenged that mailbox at 14:45. Seven minutes later someone quoted my own words back at me and told me to go log in. A spoofing attacker never sees that message. Whoever wrote back was sitting in the mailbox, reading mail as it arrived."

Daniel Wilson Kemp — Founder & CEO, Lifted Holdings LLC

"The headers are unambiguous about one thing and silent about everything else. They prove the mail was sent from an authenticated session inside that tenant. They cannot tell you how the session was obtained, and they cannot tell one compromised mailbox from fifty. Anyone reading a DKIM pass as evidence of a company-wide breach is reading something that is not there."

Daniel Wilson Kemp — Founder & CEO, Lifted Holdings LLC

"If one of your people clicked this, resetting the password is not containment. The session cookie is what the attacker wants, and it survives a reset. Revoke the sessions and the OAuth grants first, then reset the password. In that order."

Daniel Wilson Kemp — Founder & CEO, Lifted Holdings LLC

"The victim's address is handed forward after the hash, so it never reaches a server log. If you hunt only on the URLs your proxy recorded, you will undercount who was targeted."

Daniel Wilson Kemp — Founder & CEO, Lifted Holdings LLC

"We proved one compromised mailbox. Not a breached company, not a breached product, not one affected end user. I would rather publish a narrow claim I can defend line by line than a wide one that falls apart the first time a reporter checks it."

Daniel Wilson Kemp — Founder & CEO, Lifted Holdings LLC

"We pay for AirDroid Business. That is exactly why this went to incident response at 15:09 UTC instead of into the spam folder. A vendor's mailbox is part of my attack surface whether I like it or not."

Daniel Wilson Kemp — Founder & CEO, Lifted Holdings LLC

About Lifted Holdings & contact

Lifted Holdings LLC is a payments and technology company based in Tennessee, operating across merchant payments and connected-device platforms (liftedholdings.com, liftedpayments.com, agevend.com). Lifted Holdings is an active AirDroid Business customer, using the platform for fleet management of Android-based vending endpoints — which is why this incident was handled as vendor-supply-chain risk rather than as inbound spam.

The discovery, investigation, payload analysis, and this advisory are the work of Daniel Wilson Kemp, Founder & Chief Executive Officer, Lifted Holdings LLC. He is available for technical follow-up and for verification of any indicator published here.

Author & contact
Daniel Wilson Kemp
Founder & CEO, Lifted Holdings LLC
Email
will@liftedholdings.com
Telephone
855-678-5142
Web
liftedholdings.com
liftedpayments.com
agevend.com
Security reporting
/.well-known/security.txt
Disclosure policy
Canonical advisory URL
https://liftedholdings.com/security/advisories/2026-001-airdroid-bec-phishing

Revision history

v1.5   2026-08-12 15:45 UTC   Public notice; advisory concluded on our side. Sand Studio
                                published a security notice on airdroid.com at 11:32:13 UTC,
                                23h55m after we declined to accept mail from the affected tenant
                                as disclosure and asked for a statement on a company-operated
                                surface. Retrieved and verified it directly (HTTP 200,
                                Last-Modified header), recorded what it adds - sessions and
                                authorisations revoked, the upstream phishing mail that started
                                it, notification of that upstream organisation - and what it does
                                not do: no indicators, no recipient count, no mention of
                                forwarding rules or delegated access. Recorded that the page is
                                noindex and is absent from the sitemaps and the Security Center
                                index, so it is publicly reachable but not publicly discoverable.
                                Resolved the provenance question on the basis of corroboration
                                across a second, independently controlled surface, while stating
                                that no voice confirmation was ever obtained. No finding,
                                indicator or conclusion was changed; Section 10 is untouched.
v1.4   2026-08-10 14:10 UTC   Provenance. Ran header authentication on every message received
                                from airdroid.com during the incident window. All pass - and so
                                does the phishing message, which is the point: tenant
                                authentication cannot separate the vendor from an adversary
                                holding tenant access. Corrected v1.3, which described the
                                2026-08-07 02:30 message as coming from "the recovered mailbox";
                                it came from the COMPROMISED mailbox and is not attributable to
                                the account holder. Recorded that the vendor's customer notice was
                                a private BCC, not a public disclosure, and that no public
                                statement exists on the vendor's newsroom or security page as of
                                this date. Recorded that no message has been confirmed out of
                                band. No finding, indicator or conclusion was changed at the
                                vendor's request, then or now.
v1.3   2026-08-10 09:00 UTC   Vendor response. Added a "Vendor response" subsection to Section 3: the disclosure
                                timeline from 2026-08-07, Sand Studio's customer-facing security
                                notice quoted in full, and the vendor's account of its
                                investigation, containment, recipient notification and upstream
                                notification. Updated the status line, Section 9 and Section 10,
                                and the two paragraphs of Section 3 that stated no substantive
                                vendor response had been received - true at publication,
                                superseded on 2026-08-07. Corrected the elapsed time from our
                                disclosure to that response (18h13m, not 21h17m, which is
                                measured from the send). No observation, indicator or finding in
                                this advisory was changed.
v1.2   2026-08-06 21:25 UTC   Added third-party corroboration (public urlscan.io scans for
                                both stages, VirusTotal 5/92) and the Google Safe Browsing
                                coverage gap. Noted that a VirusTotal record already existed
                                five minutes after the send, filed by another party.
v1.1   2026-08-06 19:48 UTC   Correction. Withdrew the stage-2 per-IP cloaking finding after
                                re-testing from a second egress showed the resets were in-path
                                filtering on our own network, not attacker behaviour. Replaced
                                with the directly observed Cloudflare Turnstile gate. Corrected
                                the urlscan.io novelty claim (one prior record exists, dated
                                2026-07-31, which did not capture the payload). Added related
                                deployments of the same kit path on unrelated hosts.
v1.0   2026-08-06 19:12 UTC   Initial publication.