Disclaimer: All research and opinions expressed here are my own and are independent of any employer or organisation.

Device Code Lab - Infrastructure Expansion & New Capability Analysis

Device Code Lab - Infrastructure Expansion & New Capability Analysis

Continued tracking of Device Code Lab (DCL) PhaaS infrastructure reveals expansion. Unauthenticated access to multiple exposed tool modules reveals an inbox listener, email extractor, SMTP lure sender, and an SVG attachment generator with MDE bypass capability.

Intro

Since my original DCL deep-dive published on May 28, continued infrastructure hunting has revealed expansion of the Device Code Lab operator estate. In addition to this, some probing into exposed portals led to finding some unauthenticated rendered UI components, albeit without any authenticated data displayed.


Infrastructure Update

New Hosts

All hosts below were identified via infrastructure hunting. They are in addition to the original seven IPs and five domains published in the May 28 post.

New IP Addresses

IPASNLocationNotes
107.172.151.3AS36352 (HostPapa)Dhaka, BDNo domain resolved
23.94.232.236AS36352 (HostPapa)London, GBmiami-techinc[.]com
23.94.232.218AS36352 (HostPapa)London, GBpetsawise[.]com
192.3.225.103AS36352 (HostPapa)Buffalo, US
165.245.167.52AS14061 (DigitalOcean)Broomfield, USDashboard panel (not Console)
3.231.33.242AS14618 (Amazon)Ashburn, USSSH + MSSQL port 1433 open

New Domains

DomainNotes
secure.bdwebhub[.]comsecure. subdomain, likely compromised host; TLS cert from miami-techinc[.]com
secure.einco[.]com[.]brBrazilian business, compromised host; TLS cert from miami-techinc[.]com
secure.technebula[.]siteTLS cert mismatch: presents miami-techinc[.]com cert
kraftmansplay[.]comLinked to browsegadgetzone.sa[.]com via shared TLS cert
seasfax[.]comTLS cert from miami-techinc[.]com
browsegadgetzone.sa[.]comMiddle Eastern subdomain; TLS cert from kraftmansplay[.]com
www.brokerslatinos[.]comFinance-themed; TLS cert from miami-techinc[.]com
011pump[.]funCrypto-themed
docspacepro[.]comDocument-themed lure domain
www.docspacepro[.]com
bluebellscare[.]comFront-end OneDrive phishing lure page
mail.babalfashion[.]comAdditional subdomain on known DCL domain

TLS certificate mismatches across multiple hosts provide hard infrastructure links between domains. Visiting each of the following produces a browser certificate error naming the cert owner:

DomainTLS Cert Presented
secure.technebula[.]sitemiami-techinc[.]com
secure.bdwebhub[.]commiami-techinc[.]com
secure.einco[.]com[.]brmiami-techinc[.]com
seasfax[.]commiami-techinc[.]com
www.brokerslatinos[.]commiami-techinc[.]com
browsegadgetzone.sa[.]comkraftmansplay[.]com

Five domains present the miami-techinc[.]com certificate, confirming they are deployed on the same operator-controlled nginx vhost. The browsegadgetzone.sa[.]com / kraftmansplay[.]com pairing is a second certificate cluster, linking those two domains to the same deployment.

Browser certificate mismatch error linking secure.technebula.site to the miami-techinc.com certificate.
Figure 1: Browser certificate mismatch error - secure.technebula[.]site presenting the miami-techinc[.]com certificate.

secure.* Subdomain Pattern

Three domains follow a secure. subdomain pattern (secure.bdwebhub[.]com, secure.einco[.]com[.]br, secure.technebula[.]site) deployed on infrastructure inconsistent with the apex domains’ normal hosting. Each base domain either fails to load, displays a critical error or has a domain holding page. This suggests a compromise/domain takeover and a deliberate reputation enhancement technique exploiting the age and trust of existing domains.


Consolidated IOC List

A full, continuously updated IOC list for this campaign is maintained on the DCL tracked campaign page. New IOCs will be added there as the infrastructure continues to be monitored.

IP Addresses

IPASNNotes
107.172.151[.]3AS36352 (HostPapa)
67.215.253[.]44AS36352 (HostPapa)
23.94.232[.]218AS36352 (HostPapa)
23.94.232[.]236AS36352 (HostPapa)
192.3.225[.]100AS36352 (HostPapa)
192.3.225[.]103AS36352 (HostPapa)
172.81.130[.]130AS398101 (DataWagon)
104.219.239[.]125AS398101 (DataWagon)
165.245.167[.]52AS14061 (DigitalOcean)
104.21.78[.]8Cloudflare
172.67.214[.]105Cloudflare
172.67.211[.]222Cloudflare
104.21.85[.]226Cloudflare

Domains

DomainNotes
api.controltkeusa[.]comOriginal - May 28 post
api.babalfashion[.]comOriginal - May 28 post
api.skysharegroup[.]comOriginal - active campaign backend
babalfashion[.]comOriginal - May 28 post
skysharegroup[.]comOriginal - May 28 post
skysharesgroup[.]orgNew
miami-techinc[.]comNew
www.miami-techinc[.]comNew
petsawise[.]comNew
www.petsawise[.]comNew
brokerslatinos[.]comNew - finance-themed
www.brokerslatinos[.]comNew - TLS cert from miami-techinc
docseef[.]comNew - lure page identified; console no longer active
docspacepro[.]comNew
www.docspacepro[.]comNew
bluebellscare[.]comNew - front-end OneDrive phishing lure page
bluecollaracademy[.]usNew - front-end phishing lure page
guiadahospedagem[.]com[.]brNew - front-end phishing lure page
tgcwuzcq4q.vibrazil[.]comNew - front-end phishing lure page; random subdomain on compromised host
011pump[.]funNew - crypto-themed
kraftmansplay[.]comNew - TLS cert cluster with browsegadgetzone
seasfax[.]comNew - TLS cert from miami-techinc
browsegadgetzone.sa[.]comNew - TLS cert from kraftmansplay
secure.bdwebhub[.]comNew - TLS cert from miami-techinc
secure.einco[.]com[.]brNew - TLS cert from miami-techinc
secure.technebula[.]siteNew - TLS cert from miami-techinc
mail.babalfashion[.]comNew - additional subdomain

New Finding: Exposed Mailbox Exfiltration UI

The path /ui/mailbox.html is publicly accessible on DCL infrastructure, including at babalfashion[.]com/ui/mailbox.html. This is the DCL Mailbox module, a interpretation of the Outlook Web App, that operators use to browse, search, read, compose, and exfiltrate email from captured victim tokens. It is similar to the O365 mailbox UI I covered in a previous post for evilginx.

DCL Mailbox module - Outlook Web App clone served unauthenticated from DCL infrastructure.
Figure 2: DCL Mailbox module - unauthenticated Outlook Web App clone served from DCL infrastructure.

Capability Summary from Source Analysis

The page source reveals the full capability set of the mailbox post-exploitation module. This, like the rest of the tool, is a well designed UI, with features that include:

Token Management Integration

The UI maintains a token picker (/api/tokens) allowing operators to switch between any captured victim account. The URL scheme ?token=N&delegate=USER_ID exposes the underlying data model: captured tokens are indexed by integer ID, with delegate access allowing one token to browse another user’s mailbox if Exchange permissions have been granted.

Mail Operations

  • Full folder tree enumeration and navigation
  • Infinite-scroll message list with server-side search (/api/tokens/{id}/message-search)
  • Compose with HTML body, attachments up to 4 MiB, CC/BCC/Reply-To control
  • Reply, Reply All, Forward with Outlook-style quoted body injection
  • Move to folder, archive, delete, bulk operations via $batch (up to 20 messages per call)
  • Sweep function: delete all messages from a given sender in a folder in one operation

Inbox Rule Management

A full rule editor (/ui/mailbox.html → “Inbox Rules” tab) supporting create, edit and delete of Exchange Online inbox rules via Graph messageRules. In delegate mode the UI enforces read-only behaviour, noting that Graph blocks rule write operations on delegated mailboxes via user tokens. The rules UI supports all standard condition types (sender, subject, body, importance, has attachment, sent to me/CC me) and action types (move, copy, forward, redirect, mark read, delete, stop processing). This is a complete forwarding rule deployment interface.

Org Access Module

The “Org Access” tab - visible in the nav and confirmed functional - exposes:

  • Azure AD role enumeration and display (Global Admin, Exchange Admin, Security Admin badges)
  • Exchange connector listing and IP injection (Add-MailboxPermission via /org/connectors/add-ip)
  • New connector creation (New-InboundConnector equivalent) with name, sender IPs, TLS options
  • Tenant-wide BCC transport rule creation - the form labels suggest “Compliance Archiving” as a recommended cover name
  • Silent mailbox forwarding (Set-Mailbox -ForwardingSmtpAddress) per-user
  • Mailbox folder permission grant (Add-MailboxFolderPermission) - labeled as “less suspicious than FullAccess”
  • Message trace (Get-MessageTrace) for mail flow visibility
  • Full user directory with group membership expansion
  • Create User (Global Admin only) - provisions a new Entra ID user with license assignment
  • Shared and delegated mailbox scanner across the tenant

Calendar & Contacts Module

  • Calendar event enumeration, creation, and deletion
  • Attendee invitation delivery - the body field placeholder explicitly suggests embedding phishing URLs: <a href='https://attacker.com/payload'>Join link</a>
  • Contact export to CSV (address book exfiltration)
  • OneDrive anonymous share link generation

Junk Email / Safe Senders

A junk email management modal allows operators to add victim addresses to safe senders or blocked senders lists and adjust the junk filter level - useful for ensuring subsequent phishing emails to compromised accounts are not filtered.

Auto-Reply Manipulation

PATCH /me/mailboxSettings is exposed through a form allowing operators to set or overwrite the victim’s OWA auto-reply message. The UI notes this is “useful to confirm identity or redirect inquiries.”

Signature Injection

PATCH /me/mailboxSettings.signature - overwrites the victim’s OWA email signature. Every subsequent email the victim sends carries the injected HTML.

Architectural Observation

The UI communicates with the DCL backend via /api/tokens/{id}/... endpoints, confirming the backend API architecture documented in the original post. The mbBase() function in the JS switches between direct token access and delegate access (/api/tokens/{id}/delegate/{userId}/...), meaning a single operator session can browse any mailbox in any tenant where Exchange permissions have been granted - not just the originally captured account. The below image shows a search UI utilising graph to search for keywords across multiple sources, email, teams, files, with quick searches provided.

Graph API-powered search interface within the DCL mailbox module.
Figure 3: Graph API search interface - operators can query victim mailbox content directly via Microsoft Graph.

Additional Exposed Tool Modules

Beyond the mailbox UI, probing DCL infrastructure returned several further tool modules accessible without authentication. The pages rendered UI chrome with no live data visible - no victim tokens or active session content was present - but the exposed interfaces confirm the breadth of DCL’s capability set beyond token theft and mailbox access. As well as a well thought out and designed UI, rich in features.

Inbox Listener

A real-time inbox monitoring module, allowing for an operator to define rules to match on incoming mail from captured tokens. Rules can be simple string matches, or complex regex, allowing for sensitive data to be captured.

Inbox Listener - overview panel.
Figure 4: Inbox Listener - overview panel.
Inbox Listener - secondary view.
Figure 5: Inbox Listener - secondary view.
Inbox Listener - third view.
Figure 6: Inbox Listener - third view.

Email Extractor

A dedicated email address extraction module, separate from the mailbox browser. The operator can select which captured mailboxes to extract email addresses from, at scale, feeding harvested addresses into downstream campaign tooling.

Email Extractor module.
Figure 7: Email Extractor module.

Email Sorter and Validator

A tool for processing and de-duplicating harvested email address lists. The validator component filters invalid or inactive addresses before they are used in outbound campaigns, improving deliverability and reducing noise. It also removes email addresses that do not match an enterprise environment, removing consumer addresses like Gmail, protonmail and also has a feature to perform MX Record lookup to validate M365 business addresses as well as Google Workspace addresses.

Email Sorter and Validator interface.
Figure 8: Email Sorter and Validator.
Email Sorter results output.
Figure 9: Email Sorter results output.

SMTP Lure Senders

A configuration panel for managing SMTP sender accounts used in phishing lure delivery. The presence of this module alongside the OAuth token-theft capability indicates DCL supports hybrid campaign workflows: device code phishing for initial access, followed by SMTP-based follow-on lures sent from the compromised accounts themselves - lending the subsequent emails full legitimacy.

SMTP Lure Senders configuration panel.
Figure 10: SMTP Lure Senders - sender account management for outbound phishing campaigns.

SVG Attachment Generator - MDE Bypass

A tool for generating SVG file attachments designed to evade Microsoft Defender for Endpoint detection. SVG files can embed JavaScript that executes in the browser context, making them an effective attachment format that bypasses many attachment-based scanning policies. The description in this module specifically calls out MDE detections, and how the generated SVGs are designed to bypass them. This again highlights the sophistication in the tool design, and the author’s knowledge of defensive capabilities.

SVG Attachment Generator with MDE bypass capability.
Figure 11: SVG Attachment Generator - MDE bypass module for evasive email attachment delivery.

Victim Landing Pages

Pivoting off the backend infrastructure revealed a number of front-end domains hosting phishing pages. Campaign themes span document access, Adobe credential harvesting, law firm impersonation, and OneDrive file sharing. Push Security has independently reported on the sgttommy.workers.dev infrastructure in their device code phishing research.

sgttommy.workers.dev

Adobe-themed phishing lure connecting to sgttommy.workers.dev.
Figure 12: Adobe credential lure - sgttommy.workers.dev.
Law firm impersonation lure connecting to sgttommy.workers.dev.
Figure 13: Law firm impersonation lure - sgttommy.workers.dev.

bluebellscare[.]com

OneDrive-themed phishing lure hosted at bluebellscare.com.
Figure 14: OneDrive lure - bluebellscare[.]com.

docseef[.]com

Recovered in a broken state. The DCL backend was unreachable at time of capture. Confirms the domain was previously operational as a campaign backend.

Broken Microsoft login lure referencing docseef.com as the DCL backend.
Figure 15: Broken Microsoft login lure - docseef[.]com (now offline).

bluecollaracademy[.]us, guiadahospedagem[.]com[.]br, and tgcwuzcq4q.vibrazil[.]com were also identified as front-end phishing lure pages. tgcwuzcq4q.vibrazil[.]com follows the random-subdomain-on-compromised-host pattern seen in the secure.* cluster.


Conclusion

I’ve covered this tool indepth across two blog posts, my biggest take away is in the qauuty of the tool, and the tought that has gone into the features. To echo my previous post on this phish kit, the attacker clearly understands defensive capbilites, and has implement functions and controls in an attempt to bypass and evade them. The comments in the UI, and instructions hand holds the operator of the tool, making it easy for them to run sophisticated campaigns.


Detection Notes

Device code phishing hunts

Detection analytics covering device code authentication abuse, FOCI token pivoting, and workers.dev lure delivery are published in the hunts library:

“Compliance Archiving” transport rule - CloudAppEvents

The DCL Org Access module suggests “Compliance Archiving” as a cover name when creating tenant-wide BCC transport rules. The query below detects inbox and transport rule operations where this name is used, and surfaces any forwarding addresses set in the same action.

CloudAppEvents
| where Application == "Microsoft Exchange Online"
| where ActionType in (
    "New-InboxRule", "Set-InboxRule",
    "New-TransportRule", "Set-TransportRule"
  )
| extend Parameters = parse_json(tostring(RawEventData.Parameters))
| extend RuleName    = tostring(Parameters.Name)
| extend ForwardTo   = coalesce(
    tostring(Parameters.ForwardTo),
    tostring(Parameters.BlindCopyTo),
    tostring(Parameters.RedirectTo)
  )
| where RuleName has "Compliance Archiving"
| project
    Timestamp,
    AccountDisplayName,
    AccountObjectId,
    ActionType,
    RuleName,
    ForwardTo,
    IPAddress,
    CountryCode,
    ISP

Backend URL Paths

The following paths were observed consistently across multiple DCL backend domains. Providing insight into tool structure and functionality.

/api/antibot/gates
/api/antibot/themes
/api/campaigns
/api/campaigns/generate-schema
/api/campaigns/preview
/api/campaigns/save-schema
/api/campaigns/schemas
/api/campaigns/upload-asset
/api/dashboard/summary
/api/domains
/api/hosting/accounts
/api/landing/export/php
/api/landing/export/worker.zip
/api/landing/templates
/api/profile
/api/sender/analytics
/api/sender/campaigns
/api/sender/jobs
/api/sender/templates
/api/settings/cloudflare/diagnose
/api/settings/lab
/api/system/login-logs
/api/system/stats
/api/tokens
/ui/_theme/theme.css
/ui/antibot.html
/ui/campaigns.html
/ui/cloaker.html
/ui/debounce.html
/ui/domains.html
/ui/email-sorter.html
/ui/files.html
/ui/hunter.html
/ui/listener.html
/ui/mailbox-addresses.html
/ui/mailbox.html
/ui/monitor.html
/ui/sender.html
/ui/smtp.html
/ui/svg-attachment.html
/ui/teams.html
/ui/templates.html
/utm.json
/webassist.json