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-06
Severity
High
Traffic Light Protocol
TLP:CLEAR
Author
Daniel Wilson Kemp
Founder & CEO, Lifted Holdings LLC

Status: vendor notified 2026-08-06 at 14:51:43 UTC; automated acknowledgement (Ticket #74851) at 14:52:29 UTC; full technical report sent to the vendor's published security address at 17:10:24 UTC. No substantive vendor response at the time of publication — a short interval, and outside Singapore business hours (SGT = UTC+8). We draw no inference from that interval. As of our last check on 2026-08-06 the attacker infrastructure was still reachable. This advisory will be updated with any vendor statement.

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 have received nothing beyond an automated ticket acknowledgement. We make no claim of vendor cooperation, confirmation, or response, because there has been none.

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. Those offers stand. We will publish any statement the vendor wishes to make.

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

Google Safe Browsing 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 with an explicit caveat: we have no visibility into what Sand Studio has already done. The vendor may have completed some or all of these steps before this advisory was published; nothing below should be read as a statement that it has not. These are the standard containment steps for this class of incident, published so that any organisation facing the same pattern has them too. We remain available to assist and will publish any statement the vendor wishes to make.

  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.
  • 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. 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. We will update this advisory if the vendor publishes findings.

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.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.