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".
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.
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.
dkim=pass with d=airdroid.com s=google, spf=pass from Google relay 209.85.220.65, dmarc=pass against the domain's p=reject policy, and no external hop in the Received: chain. (Confidence: confirmed by direct observation — see Section 5. What that does not establish is equally important: see Section 10.)addendum-200notice-encryption-base.icu exists, dated 2026-07-31 — one day after the domain was registered and six days before the message we received — but that scan terminated on example.com and did not capture the payload. No public analysis of the kit or its indicators existed before this advisory. Public records now exist for both stages — see Third-party corroboration. Correction to v1.0, which stated zero prior scans; see Section 6. We have not surveyed commercial blocklists or vendor detection.pulp2pack.com is roughly 2,806 days (~7.7 years) old by our lookup, sits on GreenGeeks shared hosting, and its root currently serves an unrelated Indonesian-language gambling SEO link farm. We assess it as an abused domain rather than one the actor registered for this campaign; we cannot from outside exclude re-registration of an expired domain./bidaccess/rfp-notification.html appears in public scan records on several unrelated hosts, the earliest dated 2026-05-05 — three months before the message we received. The actor rotates hosting across compromised sites, object storage and serverless platforms while keeping the path constant, which makes the path itself a durable hunting string.Last-Modified: Thu, 06 Aug 2026 13:15:32 GMT — written, or last modified, 50 minutes 31 seconds before the 14:06:03 UTC send, subject to the origin server's clock.airdroid.com and nothing beyond it. No compromise of AirDroid products, systems, customer data or user accounts is established or claimed — see Section 10.| Finding | Confidence | Basis |
|---|---|---|
| The sending mailbox was under adversary control | Confirmed | Interactive in-thread reply at 14:51:58 UTC quoting our challenge |
| Sent from inside the Workspace tenant, not spoofed | Confirmed | Raw 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 operator | High | mail.gmail.com Message-ID format, X-Gm-* headers, no X-Mailer |
| Bulk send against a contact or partner list | High | undisclosed-recipients:; + BCC + "Dear Prospective Partner" |
| Two-stage credential-harvesting kit | Confirmed | Static analysis of the stage-1 script; observed stage-2 Google clone |
| Capable of MFA bypass via session-token relay | Moderate | Architecture is consistent with AiTM; not observed end to end |
| pulp2pack.com is an abused legitimate domain, not attacker-registered | Moderate-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 cloaking | WITHDRAWN | Refuted on re-check. The resets were in-path phishing filtering on our own egress, not attacker behaviour — Section 6 |
| Stage 2 gated by Cloudflare Turnstile | Confirmed | HTTP 200 with a Turnstile challenge from two independent vantage points, 2026-08-06 19:15–19:25 UTC |
| Multi-host campaign reusing one kit path | High | Identical /bidaccess/rfp-notification.html path on unrelated hosts in public scan records, earliest 2026-05-05 |
| No prior public analysis of this infrastructure | Moderate-High | One 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 compromised | NOT ESTABLISHED | No evidence either way. Requires Sand Studio's Workspace audit logs |
| Scope beyond one mailbox | NOT ESTABLISHED | A domain-level DKIM signature cannot distinguish one account from many |
All timestamps UTC, 2026-08-06.
| Time (UTC) | Event | Evidence |
|---|---|---|
| 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 |
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:
undisclosed-recipients:;. Every other person who received that mail is unaware there are others, unaware the sender was under adversary control, and still exposed. Only the vendor can notify them individually. Publishing the indicators is the only lever we hold that reaches them.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.
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.
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:
p=reject policy, arrives with the full trust of an established commercial relationship. It bypasses the heuristics that catch lookalike domains, because it is not a lookalike — it is the domain.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.
The central question for any recipient is whether the sending domain was forged. The published DNS policy for airdroid.com makes that answerable.
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
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.
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
| Observation | Significance |
|---|---|
| dkim=pass, d=airdroid.com, s=google | Valid 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.65 | The 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: chain | The 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-To | Our 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: … +0800 | The 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.
This distinction matters, so it is worth stating precisely.
airdroid.com tenant. That is equally consistent with a stolen password, a stolen session cookie, a malicious OAuth grant, or a rogue insider. We cannot distinguish between those from outside.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.
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.
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.
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)
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 | Detail |
|---|---|
| Brand impersonation | Microsoft. Loads a genuine Microsoft-hosted asset — aadcdn.msauth.net/shared/1.0/content/images/backgrounds/4_eae2dd7eb3a55636dc2d74f4fa4c386e.svg — for visual authenticity. |
| Forensic tell | Footer reads "(c) 2026 Microsoft Corportation" (misspelled, sic). High-fidelity hunt string. |
| Assurance theatre | Staged "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-extraction | k2q8h5t() scrapes a victim email from query values, query keys, the URL fragment, fragment sub-parameters, and any $-delimited segment. |
| Encoding tolerance | m5v8r2k() accepts that email as plaintext, base64 (via atob) or hex — indicating a mass-mailer that personalises links per recipient. |
| Handoff method | Config r4v7m9t: 'hash' — the victim email is appended to the stage-2 URL fragment (#victim@domain). |
| Auto-advance | setTimeout(r5h9x3w, 3500) — redirects after 3.5 seconds with no user interaction. Manual submit adds a 5-second fake "Verifying..." delay. |
| Obfuscation | Randomised 7-character identifiers throughout: q3n7r9v, u8t4m2w, h8p3w6n, k2q8h5t, m5v8r2k, r5h9x3w, r4v7m9t. |
| Campaign identifier | b4f61f2a |
| Exfiltration | None 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.
| Attribute | Value |
|---|---|
| URL | https://addendum-200notice-encryption-base.icu/?b4f61f2a |
| Resolves to | 104.21.86.28, 172.67.214.97 — AS13335 Cloudflare (anycast) |
| Nameservers | lennon.ns.cloudflare.com, ophelia.ns.cloudflare.com |
| Registrar | Namecheap, Inc. |
| Domain created | 2026-07-30 — seven days before the campaign |
| Origin host | Concealed behind Cloudflare; identification requires a Cloudflare abuse referral |
| Content observed | Visually 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 |
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.
| Request | Original vantage (filtered network) | Independent egress |
|---|---|---|
| HTTPS, Chrome UA, stage-1 referer | Connection reset | HTTP 200 — Turnstile gate |
| HTTPS, no user-agent | Connection reset | HTTP 200 — Turnstile gate |
| HTTPS, iPhone Safari UA | Connection reset | HTTP 200 — Turnstile gate |
| Plain HTTP, port 80 | HTTP 200 — security-vendor block page, not the attacker’s server | Bare 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.
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.
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.
| Host | First public record | Status |
|---|---|---|
| pulp2pack.com | — (our sample; no public scan) | Live |
| businesswa.me | 2026-08-05 | Live |
| pases.com.co | 2026-08-06 | Removed (404) |
| *.workers.dev (Cloudflare Workers) | 2026-06-25 | Not re-tested |
| *.s3.ap-northeast-3.amazonaws.com | 2026-05-05 | Not 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.
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.
| Technique | ID | Observed as |
|---|---|---|
| Phishing: Spearphishing Link | T1566.002 | "REVIEW PROJECT" hyperlink to stage 1 |
| Compromise Accounts: Email Accounts | T1586.002 | Authenticated send from a vendor tenant mailbox |
| Stage Capabilities: Link Target | T1608.005 | Stage-1 payload written ~50 minutes before the send |
| Impersonation | T1656 | Microsoft and Google sign-in clones; genuine aadcdn.msauth.net asset loaded for authenticity |
| Multi-Factor Authentication Interception | T1111 | Not observed. Listed only because the architecture is consistent with session-token relay — moderate confidence, architectural. Do not ingest this as an observed technique |
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.
Copy-paste ready. Annotations follow in the categorised blocks below — read them before you act on this list.
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
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."
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
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.
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.
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.
addendum-200notice-encryption-base.icu (all subdomains) at DNS, egress proxy, and mail-security URL rewriting.https://pulp2pack.com/bidaccess/rfp-notification.html and the path prefix /bidaccess/ on that host. Consider whether a full-domain block on pulp2pack.com is proportionate for your environment — it is a hijacked legitimate domain.23.106.55.199 at egress. Do not block the Cloudflare anycast addresses.airdroid.com since 2026-07-30 — the stage-2 registration date, not our receipt date. The campaign may predate our sample.undisclosed-recipients:; from any known-good vendor domain — legitimate business correspondence from an account manager rarely takes that shape.# 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"
/bidaccess/, for the .icu apex, and for the campaign ID b4f61f2a appearing as a bare query string.aadcdn.msauth.net background SVG above with a referer that is not a Microsoft login domain.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.
Assume session-cookie theft, not merely password theft. This is the difference between a contained incident and a persistent one:
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.
| Source | Record | Verdict |
|---|---|---|
| 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.
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.
airdroid.com since 2026-07-30.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.
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:
T1111 is listed on that basis only — not as an observed technique.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.
"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
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.
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.