ARToken PhaaS C2 Infrastructure: Live Threat Actor Investigation Report

·

On July 7, 2026, CyberHawk Threat Intel uncovered a live Phishing-as-a-Service operation targeting Microsoft 365 enterprises — not through a vendor advisory, but through direct threat hunting. A suspicious link surfaced during passive monitoring of threat actor Telegram channels: a Cloudflare Workers page masquerading as an Adobe Document Cloud verification portal, silently harvesting Microsoft device codes from unsuspecting corporate users. Pulling the outbound network requests from that single phishing page exposed a buried API endpoint at spx.pamconj.com — the operator control panel of what turned out to be ARToken, a fully operational PhaaS platform actively generating live Microsoft device codes for phishing campaigns.

Through systematic DNS resolution, TLS certificate analysis, WHOIS pivoting, HTTP header fingerprinting, API endpoint probing, and JavaScript bundle reverse engineering, we mapped the complete attack surface: 80+ API endpoints, a multi-operator panel with 2FA, Entra ID weaponization (user CRUD, role assignment, password reset), cross-account inbox monitoring, BEC email composition, SharePoint/OneDrive exfiltration, PRT cookie extraction, and Cloudflare Worker deployment for phishing lure distribution.

The domain was registered April 6, 2026 via Hetzner (Germany), with registrant country France. Infrastructure hosted on DigitalOcean US (New Jersey + Georgia). Cloudflare has flagged some Worker-based phishing pages as "Suspected Phishing" but the primary C2 remains untouched.

Investigation Phases

01 IOC Intake & Scoping 02 DNS Reconnaissance 03 TLS Certificate Forensics 04 HTTP Fingerprinting 05 WHOIS & IP Intelligence 06 API Endpoint Probing 07 JS Bundle Reverse Engineering 08 Complete Attack Surface Map 09 Kill Chain & MITRE Mapping 10 Indicators of Compromise 11 Detection & Hunt Queries 12 Sources & References
🎯

PHASE 1 — IOC INTAKE & SCOPING

COLLECTION
01
Initial Discovery — Suspicious Link Flagged During Threat Monitoring OSINT

It started with a single suspicious link. During passive monitoring of threat actor channels, I flagged an unusual URL circulating through underground Telegram groups — a Cloudflare Workers domain presenting itself as an Adobe Document Cloud file verification portal. The design was convincingly corporate: clean Microsoft-branded UI, a company logo strip, and an embedded device code entry field pre-loaded with a code. Except the victim hadn't generated that code — the platform had done it server-side, silently, before the page ever loaded.

Pulling the page's outbound network traffic revealed the tell: every code entered was being silently POSTed to an external API endpoint at spx.pamconj.com. That single domain was the thread that unravelled the entire operation. What I'd stumbled on wasn't a one-off phishing page — it was the operator control panel of a full-scale PhaaS platform.

Examining the Suspicious Phishing Page — Extracting C2 References
cyberhawk@kali:~$ curl -s "https://50a201fd-dd2d-cf72-5fa6-adobe2.reynoldsjace5.workers.dev" \ | grep -oP '(https?://[^\s"'"'"']+pamconj[^\s"'"'"']*)' | sort -u https://spx.pamconj.com/api/device/start # Code generation — TA side, victim never sees this https://spx.pamconj.com/api/device/poll # Polls every 5s until victim authorises at login.microsoft.com/device https://spx.pamconj.com/api/session/status # Operator session tracking https://spx.pamconj.com/api/device/notify # Telegram alert on successful capture cyberhawk@kali:~$ curl -s "https://50a201fd-dd2d-cf72-5fa6-adobe2.reynoldsjace5.workers.dev" \ | grep -oP '[a-z0-9\-]+\.pamconj\.com' | sort -u spx.pamconj.com dashboard-bl.pamconj.com pamconj.com
Hunt Trigger: A pre-seeded device code on a phishing page is the signature of the device code phishing flow (T1566). The TA generates the code server-side via GET /api/device/start, injects it into the victim-facing page, then polls /api/device/poll until the victim enters it at login.microsoft.com/device — silently authorising the TA's OAuth session without the victim ever leaving what looks like a legitimate Adobe portal.

Following the pivot to spx.pamconj.com, I identified additional subdomains and Cloudflare Worker routes through passive enumeration, DNS resolution, and certificate transparency log review. The full infrastructure footprint was staged on my Kali investigation platform for systematic DFIR analysis.

Full IOC Footprint — Compiled Through Investigation
cyberhawk@kali:~$ mkdir -p /home/cyberhawk/intel/artoken-eviltokens-2026-07/captures cyberhawk@kali:~$ cat /home/cyberhawk/intel/artoken-eviltokens-2026-07/iocs.txt # === DOMAINS (C2 / Phishing Infrastructure) === spx.pamconj.com # Primary C2 panel pamconj.com # Parent domain dashboard-bl.pamconj.com # Secondary dashboard clear90489058903-document.workers.dev # CF Worker phishing page reynoldsjace5.workers.dev # CF Worker phishing page 50a201fd-dd2d-cf72-5fa6-adobe2.reynoldsjace5.workers.dev # CF Worker sub-route
Scoping Decision
  • 6 domains/subdomains identified across 2 infrastructure tiers (direct hosting + Cloudflare Workers)
  • All probing conducted from isolated Kali Linux lab (10.100.110.2) — no production systems involved
  • Investigation scope: DNS, TLS, HTTP, WHOIS, API surface, JS bundle extraction — passive/semi-passive only
  • Evidence directory: /home/cyberhawk/intel/artoken-eviltokens-2026-07/
🔍

PHASE 2 — DNS RECONNAISSANCE

ENUMERATION
01
DNS Resolution & A Record Mapping DNS

Standard DNS resolution via system resolver on Kali. Port 53 was intermittently blocked on this network segment, so we fell back to direct HTTP probing for connectivity validation before DNS queries succeeded.

DNS Resolution Results
cyberhawk@kali:~$ for d in pamconj.com spx.pamconj.com dashboard-bl.pamconj.com; do echo "=== $d ==="; host $d 2>/dev/null; echo "" done === pamconj.com === pamconj.com has address 159.65.36.134 === spx.pamconj.com === spx.pamconj.com has address 159.65.36.134 === dashboard-bl.pamconj.com === dashboard-bl.pamconj.com has address 134.199.198.129
Cloudflare Worker DNS Resolution
cyberhawk@kali:~$ for d in clear90489058903-document.workers.dev reynoldsjace5.workers.dev \ 50a201fd-dd2d-cf72-5fa6-adobe2.reynoldsjace5.workers.dev; do echo "=== $d ==="; host $d 2>/dev/null; echo "" done === clear90489058903-document.workers.dev === Host clear90489058903-document.workers.dev not found: 3(NXDOMAIN) === reynoldsjace5.workers.dev === Host reynoldsjace5.workers.dev not found: 3(NXDOMAIN) === 50a201fd-dd2d-cf72-5fa6-adobe2.reynoldsjace5.workers.dev === 50a201fd-...reynoldsjace5.workers.dev has address 104.21.89.75 # Cloudflare IP
DomainIP AddressStatusNotes
spx.pamconj.com159.65.36.134LIVEPrimary C2 panel — DigitalOcean NJ
pamconj.com159.65.36.134Resolves, no HTTPParent domain — same IP as C2
dashboard-bl.pamconj.com134.199.198.129Resolves, no HTTPSecondary — DigitalOcean GA
clear90489058903-document.workers.devNXDOMAINCF Worker deleted/suspended
reynoldsjace5.workers.devNXDOMAINCF Worker deleted/suspended
50a201fd-...reynoldsjace5.workers.dev104.21.89.75403 — "Suspected Phishing"Cloudflare flagged & blocked
Key Findings
  • Primary C2 (spx.pamconj.com) resolves and is actively serving content
  • Two DigitalOcean IPs identified across two US regions (NJ + GA)
  • Parent CF Worker accounts deleted — TA may have abandoned or rotated phishing infrastructure
  • One sub-worker still resolves but Cloudflare blocks it with "Suspected Phishing" interstitial
🔐

PHASE 3 — TLS CERTIFICATE FORENSICS

CRYPTO ANALYSIS
01
X.509 Certificate Chain — spx.pamconj.com TLS
Certificate Extraction
cyberhawk@kali:~$ echo | openssl s_client -connect spx.pamconj.com:443 \ -servername spx.pamconj.com 2>/dev/null | openssl x509 -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 05:d8:14:09:06:86:f8:9f:4b:f4:fb:6a:e9:1e:b6:95:32:e9 Signature Algorithm: ecdsa-with-SHA384 Issuer: C=US, O=Let's Encrypt, CN=E7 Validity Not Before: May 6 21:47:46 2026 GMT Not After : Aug 4 21:47:45 2026 GMT Subject: CN=spx.pamconj.com Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (256 bit) ASN1 OID: prime256v1 NIST CURVE: P-256 X509v3 extensions: X509v3 Subject Alternative Name: DNS:spx.pamconj.com CT Precertificate SCTs: Timestamp : May 6 22:46:16.341 2026 GMT
AttributeValueIntelligence
IssuerLet's Encrypt E7Free automated CA — common for TA infrastructure. No identity verification.
IssuedMay 6, 2026Certificate is 2 months old — infrastructure recently provisioned.
ExpiresAug 4, 2026Standard 90-day LE cert — will auto-renew if certbot/ACME is configured.
SANspx.pamconj.com onlyNo wildcard, no additional subdomains — single-purpose cert.
Key TypeECC P-256Modern key choice — TA is technically competent.
CT LoggedYes (2 SCTs)Certificate appears in public CT logs — discoverable via crt.sh.

Active maintenance confirmed: The Let's Encrypt cert was issued May 6, 2026 and the domain was registered April 6, 2026 — exactly 30 days apart. The TA set up infrastructure in April, obtained TLS in May, and the server content was last modified July 6, 2026 (1 day before this investigation). This is actively maintained infrastructure.

🖥

PHASE 4 — HTTP FINGERPRINTING

SERVER ID
01
HTTP Response Headers — Technology Stack Identification RECON
Header Capture — spx.pamconj.com
cyberhawk@kali:~$ curl -sI https://spx.pamconj.com/ HTTP/2 200 accept-ranges: bytes alt-svc: h3=":443"; ma=2592000 cache-control: public, max-age=0 content-type: text/html; charset=UTF-8 date: Tue, 07 Jul 2026 10:43:40 GMT etag: W/"4dd-19f362e70a8" last-modified: Mon, 06 Jul 2026 06:47:21 GMT via: 1.1 Caddy x-powered-by: Express content-length: 1245
Header Capture — /api/health
cyberhawk@kali:~$ curl -sI https://spx.pamconj.com/api/health HTTP/2 200 content-type: application/json; charset=utf-8 via: 1.1 Caddy x-powered-by: Express content-length: 50
ComponentValueNotes
Reverse ProxyCaddy v1.1Go-based web server with automatic HTTPS — handles LE cert renewal
Backend FrameworkExpress.js (Node.js)x-powered-by header not stripped — OPSEC oversight
FrontendReact SPA (Vite build)Bundle hash: index-BrN7SnMX.js — Vite production build
ProtocolHTTP/2 + HTTP/3alt-svc: h3 indicates QUIC support via Caddy
Last ModifiedJuly 6, 2026 06:47:21 UTCContent updated 1 day before investigation
Panel Title"ARToken Panel"Embedded in HTML <title> tag
Internal Port3001Extracted from JS bundle — Caddy proxies 443 → 3001

OPSEC failure: The Express x-powered-by header is still enabled. Combined with the Caddy via header, the entire technology stack is exposed without any request. Production security hardening was not applied. This suggests developer-operator overlap — the TA is likely a developer running their own infrastructure, not a mature crime-as-a-service operation with dedicated devops.

🌐

PHASE 5 — WHOIS & IP INTELLIGENCE

ATTRIBUTION
01
Domain Registration — pamconj.com WHOIS
WHOIS Query
cyberhawk@kali:~$ whois pamconj.com Domain Name: PAMCONJ.COM Registry Domain ID: 3085158178_DOMAIN_COM-VRSN Registrar: Hetzner Online GmbH Registrar IANA ID: 828 Created: 2026-04-06T19:14:14Z Expires: 2027-04-06T19:14:14Z Registrant Country: FR Name Server: ALIZA.NS.CLOUDFLARE.COM Name Server: MICAH.NS.CLOUDFLARE.COM DNSSEC: unsigned Registrant Email: [email protected] # WHOIS privacy service
AttributeValueIntelligence
RegistrarHetzner Online GmbH (Germany)German hosting provider — popular with EU-based operators
CreatedApril 6, 2026Domain is ~3 months old — purpose-built for this campaign
Registrant CountryFR (France)Despite WHOIS privacy, country field leaks French registration
NS ProviderCloudflareUsing CF for DNS management — consistent with CF Worker phishing infrastructure
DNSSECUnsignedNo DNSSEC — vulnerable to DNS poisoning (also explains geo-variant resolution)
02
IP Intelligence — Infrastructure Mapping IPINFO
IP Geolocation
cyberhawk@kali:~$ curl -s https://ipinfo.io/159.65.36.134/json { "ip": "159.65.36.134", "city": "Clifton", "region": "New Jersey", "country": "US", "org": "AS14061 DigitalOcean, LLC" } cyberhawk@kali:~$ curl -s https://ipinfo.io/134.199.198.129/json { "ip": "134.199.198.129", "city": "Douglasville", "region": "Georgia", "country": "US", "org": "AS14061 DigitalOcean, LLC" }
IP AddressASNLocationUsage
159.65.36.134AS14061 DigitalOceanClifton, NJ, USPrimary C2 (spx.pamconj.com + pamconj.com)
134.199.198.129AS14061 DigitalOceanDouglasville, GA, USSecondary (dashboard-bl.pamconj.com)
104.21.89.75AS13335 CloudflareCloudflare AnycastCF Worker phishing pages (flagged)
Attribution Summary
  • French-registered domain, German registrar (Hetzner), US-hosted infrastructure (DigitalOcean)
  • Multi-region DigitalOcean deployment suggests geographic redundancy planning
  • Cloudflare used for DNS + Workers (phishing page distribution) — CF has partially taken action
  • WHOIS privacy service (domain-contact.org) obscures registrant identity

PHASE 6 — API ENDPOINT PROBING

ACTIVE RECON
01
Health Check & Authentication Probes LIVE API

Unauthenticated probing of discovered API endpoints to determine operational status, authentication mechanisms, and error message patterns.

Health Endpoint
cyberhawk@kali:~$ curl -s https://spx.pamconj.com/api/health {"ok":true,"timestamp":"2026-07-07T10:45:41.036Z"}
Authentication Probe
cyberhawk@kali:~$ curl -s https://spx.pamconj.com/api/auth/me {"error":"Authentication required"} cyberhawk@kali:~$ curl -s -X POST https://spx.pamconj.com/api/auth/login \ -H "Content-Type: application/json" -d '{}' {"error":"Username and password are required"} cyberhawk@kali:~$ curl -s https://spx.pamconj.com/api/tokens/ {"error":"Authentication required"}
Authentication Analysis
  • JWT Bearer token authentication — Authorization: Bearer <token> header required
  • Login requires username + password (POST /api/auth/login)
  • 2FA (TOTP) supported via /auth/2fa/setup, /auth/2fa/verify, /auth/2fa/disable
  • Error messages are verbose — leak implementation details (Express default error handler)
02
Device Code Generation — CRITICAL: LIVE PHISHING CONFIRMED CRITICAL

LIVE PHISHING INFRASTRUCTURE CONFIRMED: The /api/device/start endpoint generates real Microsoft device codes without any authentication. This endpoint is the core phishing mechanism — it creates device codes that victims are social-engineered into entering at microsoft.com/device.

Device Code Generation (No Auth Required)
cyberhawk@kali:~$ curl -s -X POST https://spx.pamconj.com/api/device/start \ -H "Content-Type: application/json" -d '{}' { "device_code": "FBgABIQEAAAAdDD7nC9b5Q7JPd_okEQRFRXZvU3RzQXJ0aWZhY3RzA QAAAAAASAx3HaCh1E6QUvs2Qa61DMLkZApP0_VDySnDMO_LmybdhkJe11hk3u CiEMkJz2nMD86p5TeTag75U-s1iMUBBxsw7IoRJS5K9uhu...", "user_code": "FPKZ5QYBS", "verification_uri": "https://login.microsoft.com/device", "message": "To sign in, use a web browser to open the page https://login.microsoft.com/device and enter the code FPKZ5QYBS to authenticate.", "expires_in": "900", "interval": "5" }
Critical Intelligence
  • The C2 is actively generating Microsoft device codes — real, valid codes that work at login.microsoft.com/device
  • No authentication required to trigger code generation — the endpoint is publicly accessible
  • 15-minute expiry (900 seconds) with 5-second polling interval — standard Microsoft device code flow parameters
  • The device_code JWT is issued by Microsoft's token service — the TA has a valid Azure AD application registration
  • This confirms the platform is being used for active phishing campaigns as of July 7, 2026
🔬

PHASE 7 — JS BUNDLE REVERSE ENGINEERING

ANALYSIS
01
Panel Asset Capture & Static Analysis REVERSE

We captured the complete ARToken Panel frontend: 1.7MB JavaScript bundle, 96KB CSS stylesheet, and HTML index. Static analysis of the minified React bundle revealed the complete API client, route definitions, feature set, and one hardcoded Azure AD GUID.

Asset Capture
cyberhawk@kali:~$ curl -s https://spx.pamconj.com/ > captures/spx_panel_index.html cyberhawk@kali:~$ curl -s https://spx.pamconj.com/assets/index-BrN7SnMX.js > captures/spx_panel_bundle.js cyberhawk@kali:~$ curl -s https://spx.pamconj.com/assets/index-CjxfdApj.css > captures/spx_panel_styles.css cyberhawk@kali:~$ ls -lh captures/ 1.3K spx_panel_index.html 1.7M spx_panel_bundle.js 96K spx_panel_styles.css
React Route Extraction
cyberhawk@kali:~$ grep -oP 'path:\s*["`]/[^"`]*["`]' captures/spx_panel_bundle.js | sort -u path:`/` # Dashboard path:`/admin` # Admin panel path:`/blacklist` # Anti-analysis IP/path blacklist path:`/box-monitor` # Cross-account inbox keyword monitor path:`/expired` # Expired token management path:`/login` # Operator authentication path:`/settings` # Platform configuration path:`/shared/:shareKey` # Multi-operator shared access path:`/templates` # Phishing lure templates path:`/tokens` # Stolen token management path:`/tokens/:tokenId/entra` # Entra ID recon per victim path:`/tokens/:tokenId/outlook` # Email access per victim path:`/tokens/:tokenId/sender` # BEC email sender per victim path:`/tokens/:tokenId/sharepoint` # SharePoint access per victim
Hardcoded GUID
cyberhawk@kali:~$ grep -oP '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' \ captures/spx_panel_bundle.js | sort -u 62e90394-69f5-4237-9190-012177145e10 # Azure AD Global Administrator role template ID

The hardcoded GUID 62e90394-69f5-4237-9190-012177145e10 is the well-known Microsoft Entra ID Global Administrator role template ID. This confirms the panel specifically checks whether stolen tokens belong to Global Admins — the highest-value target for complete tenant takeover.

🗺

PHASE 8 — COMPLETE API SURFACE MAP

80+ ENDPOINTS
01
Full API Client Extraction from React Bundle COMPLETE MAP

Extracted every fetch() call from the minified bundle. The API client object (Lt) wraps all calls to a base URL variable B. Complete endpoint taxonomy below.

Authentication & Operators
EndpointMethodPurpose
/api/auth/loginPOSTOperator login (username + password)
/api/auth/meGETSession validation (JWT)
/api/auth/change-passwordPOSTOperator password change
/api/auth/2fa/setupPOSTTOTP 2FA enrollment
/api/auth/2fa/verifyPOSTTOTP verification
/api/auth/2fa/disablePOSTDisable 2FA
/api/usersGETList all platform operators
/api/users/:idGET/PUT/DELETEOperator CRUD — multi-operator PhaaS
Token Management
EndpointMethodPurpose
/api/tokensGETList all captured victim tokens
/api/tokens/:idGET/DELETEIndividual token details / deletion
/api/tokens/:id/refreshPOSTRefresh stolen token (maintain persistence)
/api/tokens/:id/inbox-monitorPUTToggle cross-account inbox monitoring
/api/tokens/:id/share-linksPOST/DELETEShare stolen tokens with other operators
/api/tokens/importPOSTImport tokens (file upload)
/api/tokens/bulk/deletePOSTMass token deletion
/api/tokens/groups/*GET/PUT/DELETEToken grouping/tagging
Entra ID Weaponization
EndpointMethodPurpose
/api/entra/:id/tenantGETFull tenant metadata dump
/api/entra/:id/usersGET/POSTList users / Create new user in victim tenant
/api/entra/:id/users/:uidGET/PATCH/DELETERead / modify / delete victim users
/api/entra/:id/users/:uid/reset-passwordPOSTReset victim user password
/api/entra/:id/users/:uid/togglePOSTEnable/disable victim accounts
/api/entra/:id/rolesGETEnumerate directory roles
/api/entra/:id/roles/:rid/membersPOST/DELETEAssign/remove roles — including Global Admin
PRT & Cookie Theft
EndpointMethodPurpose
/api/tokens/:id/prt/setupPOSTInitialize PRT extraction
/api/tokens/:id/prt/refreshPOSTRefresh via Primary Refresh Token
/api/tokens/:id/prt/renewPOSTPRT renewal (extend lifespan)
/api/tokens/:id/prt/reacquirePOSTRe-obtain PRT from refresh token
/api/tokens/:id/prt/cookiePOSTExtract OWA session cookies from PRT
/api/tokens/:id/prt/clean-setupPOSTClean PRT setup artifacts
/api/tokens/:id/prt/statusGETPRT operational status
BEC, Inbox Rules, SharePoint & Data Extraction
EndpointMethodPurpose
/api/sender/:id/sendPOSTSend email as victim (BEC)
/api/rules/:idGET/DELETEInbox rule management (evidence suppression)
/api/box-monitorGET/DELETECross-account keyword inbox monitoring
/api/sharepoint/:id/*POSTSharePoint file access, upload, sharing, permissions
/api/extract/:id/startPOSTBulk data extraction from victim account
/api/extract-links/:id/startPOSTLink/URL extraction from emails
Platform Configuration
EndpointMethodPurpose
/api/settings/device-proxyGET/PUTConfigure proxy for device code generation
/api/settings/telegram/testPOSTTest Telegram bot notification
/api/settings/cloudflare/deployPOSTDeploy Cloudflare Workers (phishing pages)
/api/settings/cloudflare/workersGET/DELETEManage deployed CF Worker phishing pages
/api/settings/originsGETAllowed CORS origins
/api/settings/artbrowser-urlGETARTBrowser custom download URL
/api/templatesGETPhishing lure template library
/api/blacklistGET/POST/DELETEAnti-analysis IP/path blacklist

PHASE 9 — KILL CHAIN & MITRE ATT&CK MAPPING

TTP TABLE
01
ARToken Full Attack Kill Chain MITRE

ARToken Full Attack Kill Chain — from device code phishing to BEC and data exfiltration

MITRE IDTechniqueARToken Implementation
T1566PhishingDevice code phishing via CF Worker lures + configurable proxy
T1528Steal Application Access TokenToken capture + FOCI refresh token exchange
T1550.001Use Alternate Auth Material: Application Access TokenPRT extraction + OWA session cookie theft
T1087.004Account Discovery: Cloud AccountEntra ID user enumeration, role listing, tenant metadata
T1098Account ManipulationCreate users, assign roles (incl. Global Admin), reset passwords, enable/disable accounts
T1114.001Email Collection: Local Email CollectionBox Monitor keyword scanning across all captured accounts
T1114.003Email Collection: Email Forwarding RuleInbox rule creation for evidence suppression
T1534Internal SpearphishingBEC sender module — compose and send as victim
T1530Data from Cloud Storage ObjectSharePoint/OneDrive file access, upload, sharing, permission manipulation
T1567Exfiltration Over Web ServiceBulk data extraction module with job tracking
🛡

PHASE 10 — INDICATORS OF COMPROMISE

BLOCKLIST
01
Network Indicators — Block Immediately IOC
TypeIndicatorStatusContext
Domainspx.pamconj.comACTIVE C2ARToken panel — Express + Caddy on DO
Domainpamconj.comACTIVEParent domain — same IP as C2
Domaindashboard-bl.pamconj.comACTIVESecondary dashboard — different DO region
IPv4159.65.36.134ACTIVE C2DigitalOcean — Clifton, NJ (AS14061)
IPv4134.199.198.129ACTIVEDigitalOcean — Douglasville, GA (AS14061)
Domainclear90489058903-document.workers.devDeleted (NXDOMAIN)Former CF Worker phishing page
Domainreynoldsjace5.workers.devDeleted (NXDOMAIN)Former CF Worker phishing page
Domain50a201fd-dd2d-cf72-5fa6-adobe2.reynoldsjace5.workers.devCF BlockedFlagged "Suspected Phishing" by Cloudflare
Firewall / DNS Block Rules
# DNS sinkhole (BIND / Pi-hole / Cloudflare Gateway) spx.pamconj.com # Primary C2 pamconj.com # Parent domain dashboard-bl.pamconj.com # Secondary *.pamconj.com # Wildcard — catch future subdomains # IP blocklist 159.65.36.134 # C2 server 134.199.198.129 # Secondary server # Microsoft Sentinel / KQL — Device code phishing detection SigninLogs | where AuthenticationProtocol == "deviceCode" | where IPAddress in ("159.65.36.134", "134.199.198.129") | project TimeGenerated, UserPrincipalName, IPAddress, DeviceDetail, LocationDetails
🔎

PHASE 11 — DETECTION & HUNT QUERIES

HUNT LOGIC
01
Microsoft Sentinel / KQL Detection Rules KQL
Device Code Phishing — Anomalous Sign-Ins
// Detect device code authentication from suspicious IPs or unusual geolocations SigninLogs | where TimeGenerated > ago(7d) | where AuthenticationProtocol == "deviceCode" | extend City = tostring(LocationDetails.city), Country = tostring(LocationDetails.countryOrRegion) | summarize Count = count(), Accounts = make_set(UserPrincipalName) by IPAddress, City, Country | where Count > 3 | sort by Count desc
Inbox Rule Creation (Evidence Suppression)
// Detect inbox rules that delete or move messages — common evidence suppression OfficeActivity | where TimeGenerated > ago(7d) | where Operation in ("New-InboxRule", "Set-InboxRule", "UpdateInboxRules") | extend RuleParams = tostring(Parameters) | where RuleParams has_any ("DeleteMessage", "MoveToFolder", "Junk", "SoftDelete", "MarkAsRead") | project TimeGenerated, UserId, Operation, RuleParams, ClientIP
Anomalous App Consent / Credential Injection (T1098.001)
// Detect new credentials added to OAuth apps — potential T1098.001 backdoor AuditLogs | where TimeGenerated > ago(7d) | where OperationName in ("Add service principal credentials", "Update application - Certificates and secrets management") | extend InitiatedBy = tostring(InitiatedBy.user.userPrincipalName), TargetApp = tostring(TargetResources[0].displayName) | project TimeGenerated, InitiatedBy, OperationName, TargetApp
02
Proactive Hunt Checklist HUNT
  • 1
    Device Code Sign-Ins: Search SigninLogs for AuthenticationProtocol == "deviceCode" in the last 30 days. Any sign-in from an IP in the 159.65.x.x or 134.199.x.x ranges warrants immediate investigation.
  • 2
    Inbox Rule Audit: Run Get-InboxRule -Mailbox <user> across all users. Look for rules that delete, move to Junk/RSS, or mark as read — especially rules created in the last 90 days with forwarding to external addresses.
  • 3
    OAuth App Credential Audit: Review AuditLogs for Add service principal credentials operations. Cross-reference with known applications — any credential addition by a non-admin to an admin-consented app is suspicious.
  • 4
    Conditional Access Gap: Verify that Conditional Access policies enforce compliant device or MFA for device code flows. Test with What If in the Entra portal for a device code scenario.
  • 5
    DNS/Proxy Log Review: Search proxy logs and DNS query logs for pamconj.com, spx.pamconj.com, and *.workers.dev domains with phishing-style URL patterns.
  • 6
    Graph API Activity Review: Check MicrosoftGraphActivityLogs (if enabled) for bulk user enumeration, role assignment operations, or password reset calls from unusual application IDs.
📚

PHASE 12 — SOURCES & REFERENCES

PRIMARY SOURCES
CyberHawk Threat Intel — Live Threat Actor Infrastructure Investigation, July 2026 (Primary Research) Microsoft — OAuth 2.0 Device Authorization Grant Flow (Device Code Flow Technical Reference) Microsoft — Token protection in Conditional Access (Device Code Flow Security) MITRE ATT&CK — T1528: Steal Application Access Token MITRE ATT&CK — T1566: Phishing MITRE ATT&CK — T1098: Account Manipulation

Evidence Archive

For IOC integration into your SIEM, paste the domain and IP indicators above into the CyberHawk IOC Scanner.

🔍 Open IOC Scanner →

◈ Stay Connected

Follow CyberHawk Threat Intel for threat intelligence, DFIR reports and hands-on SOC tooling content.

🌐 Website ▶️ YouTube ▶️ YouTube (2) 𝕏 Twitter / X ♪ TikTok ✈️ Telegram
🔍 IOC Scanner 🛠️ Live Tools 📚 Courses 🚨 Threat Intel 📝 Blog 📋 SOPs

"They can't exploit you if you are the Exploit."