Two distinct but operationally convergent campaigns surfaced in the latest OTX pulse cycle. The first, "Trusted by Default", documents a threat actor abusing IAM credentials stolen from Qubole's AWS account (805246085872) to assume integration roles inside customer environments between October 14–26, 2026. The actor leveraged two IAM users and a rotating VPN infrastructure (Sweden, Romania, Belgium egress nodes) to enumerate S3 buckets, RDS instances, and IAM resources before exfiltrating data. The second pulse, "Contagious Interview", tracks a North Korea-nexus operation using a fake company called AccuraSoftHire to lure software developers via Indeed, Glassdoor, and LinkedIn. Victims receive take-home coding assignments containing poisoned npm packages that establish persistence, harvest cryptocurrency wallets, and exfiltrate source code and credentials.
Objective overlap: Both campaigns exploit trusted relationships (cloud vendor integrations / hiring workflows) to bypass perimeter controls. The Qubole actor seeks bulk cloud data; the DPRK group seeks developer credentials, crypto assets, and long-term supply chain footholds inside technology and finance firms. Treat both as credential-theft-driven intrusions with high dwell-time potential.
Threat Actor / Malware Profile
Qubole Cross-Account Abuser (Cloud-Native Actor)
- Distribution: Legitimate AWS
AssumeRolecalls using compromised Qubole IAM user credentials. - Payload Behavior: Post-exploitation reconnaissance (
s3:ListBuckets,rds:DescribeDBInstances,iam:ListUsers,iam:GetAccountSummary), followed by S3 object exfiltration via CLI/SDK. TruffleHog was likely used by defenders for post-breach secret scanning, but the actor also hunts for exposed credentials in code repos. - C2 Communication: No classic C2; actor uses anonymizing VPN endpoints (45.83.220.211, 185.209.199.73, 57.129.54.120, 89.37.63.175) as source IPs for AWS API calls.
- Persistence: Temporary IAM access keys created inside victim accounts; malicious inline policies attached to existing roles for backup access.
- Anti-Analysis: Relies on living-off-the-cloud techniques (native AWS API abuse), making process-based EDR blind. VPN rotation and use of legitimate Qubole role ARNs bypass basic geo-fencing.
Contagious Interview (DPRK Nexus — Lazarus Subgroup)
- Distribution: Spear-phishing via LinkedIn/InMail and job platforms; victims directed to
accurasofthire.comfor "camera driver" setup or coding tests. - Payload Behavior: Malicious npm packages (typosquatted or hijacked dependencies) execute post-install scripts that fetch second-stage payloads from
accurasofthire.com/camera-driver/setup-{os}. Final payload includes BeaverTail (JavaScript stealer) or InvisibleFerret (Python backdoor) depending on OS. - C2 Communication: HTTPS beaconing to
accurasofthire.com/notification-settings-win?download=1and hardcoded IP103.179.142.155. Uses blockchain dead-drop for resilience in some variants. - Persistence: macOS LaunchAgents, Linux cron jobs, Windows Registry Run keys (
HKCU\Software\Microsoft\Windows\CurrentVersion\Run) with innocuous names likeCameraHelper. - Anti-Analysis: Payloads check for VM artifacts (specific MAC prefixes, low RAM), delay execution, and use AES-encrypted strings for C2 domains. Packages are often signed with stolen code-signing certs.
IOC Analysis
| Indicator Type | Count | Operationalization | Tooling |
|---|---|---|---|
| IPv4 | 4 | Block at egress firewall/WAF. Alert on any AWS API call from these IPs. | AWS WAF, Palo Alto, Fortinet, Zeek |
| Domain/URL | 5 | DNS sinkhole + TLS inspection. Alert on accurasofthire.com resolution or HTTP GET to /camera-driver/*. | Pi-hole, Cisco Umbrella, Suricata |
| File Hashes (MD5/SHA1/SHA256) | 3 | Import into EDR blocklists. Hunt for hash presence in npm_cache or %TEMP%. | CrowdStrike, Microsoft Defender, VirusTotal Enterprise |
Decoding: Use otx Python SDK or MISP to sync pulses daily. For AWS, enable GuardDuty with threat intel feeds; for endpoints, import hashes into LOLRMM detections. The MD5/SHA1/SHA256 triplet (086d4a83..., 1c7437da..., 65f06128...) represents a TruffleHog-compiled binary or malicious npm tarball — scan CI/CD pipelines and developer workstations.
Detection Engineering
---
title: Qubole Cross-Account IAM Role Assumption From Suspicious VPN
id: 1f3a8b2e-9c4d-4e6f-9a1b-3e5f7a9c2d1e
status: experimental
description: Detects AWS AssumeRole calls originating from known Qubole breach VPN IPs or unusual geographies for the Qubole integration role.
logsource:
product: aws
service: cloudtrail
category: iam
detection:
selection:
eventSource: iam.amazonaws.com
eventName: AssumeRole
sourceIPAddress:
- '45.83.220.211'
- '57.129.54.120'
- '185.209.199.73'
- '89.37.63.175'
condition: selection
falsepositives:
- Qubole support engineers using VPN (verify with change management)
level: high
tags:
- attack.t1078
- attack.t1550
- attack.t1098
---
title: Malicious npm Post-Install Script Execution - Contagious Interview
id: 4c7d9e1a-5b3f-4a8e-8c6d-2e1f9b7a4c8d
status: experimental
description: Detects execution of suspicious npm post-install scripts or child processes spawned by node/npm that match Contagious Interview TTPs.
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\node.exe'
- '\npm.cmd'
- '\npm.exe'
selection_child:
Image|endswith:
- '\powershell.exe'
- '\cmd.exe'
- '\curl.exe'
- '\wget.exe'
CommandLine|contains:
- 'camera-driver'
- 'notification-settings'
- 'accurasofthire'
condition: selection_parent and selection_child
falsepositives:
- Legitimate build scripts (rarely spawn network tools)
level: critical
tags:
- attack.t1195
- attack.t1059
- attack.t1071
---
title: Contagious Interview C2 Communication - BeaverTail / InvisibleFerret
id: 8e2f6a9c-1d3b-4e5f-9a7c-6b8d1e3f5a2c
status: experimental
description: Detects DNS or HTTPS requests to AccuraSoftHire C2 infrastructure or fallback IP.
logsource:
category: dns
detection:
selection_domain:
query|contains:
- 'accurasofthire.com'
selection_ip:
answer|contains:
- '103.179.142.155'
condition: selection_domain or selection_ip
falsepositives:
- Security researchers investigating domain (allowlist SOC IPs)
level: high
tags:
- attack.t1071.001
- attack.t1102
let QuboleVPNIPs = dynamic(["45.83.220.211","57.129.54.120","185.209.199.73","89.37.63.175"]);
let InterviewC2 = dynamic(["accurasofthire.com","103.179.142.155"]);
// Hunt 1: AWS API calls from Qubole breach VPNs (requires AWS CloudTrail ingestion)
CloudTrail
| where SourceIP in (QuboleVPNIPs)
| where EventName in ("AssumeRole","ListBuckets","GetObject","DescribeDBInstances")
| summarize Count=count() by SourceIP, UserIdentityArn, EventName, bin(TimeGenerated, 1h)
| order by Count desc;
// Hunt 2: Network connections to Contagious Interview C2
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemoteUrl has_any (InterviewC2) or RemoteIP == "103.179.142.155"
| where InitiatingProcessFileName in~ ("node.exe","npm.exe","python.exe","powershell.exe")
| project TimeGenerated, DeviceName, RemoteUrl, RemoteIP, InitiatingProcessCommandLine, FileHash = InitiatingProcessSHA256;
// Hunt 3: Malicious file hash execution
DeviceProcessEvents
| where SHA256 in ("65f061281c9a712e9502793dc4c5035cae490b84da05f7d4223cefa65ad396e4")
or MD5 in ("086d4a83181971e883c53a4c44f46da2")
| project TimeGenerated, DeviceName, FileName, FolderPath, ProcessCommandLine, AccountName;
# Security Arsenal — Contagious Interview + Qubole Artifact Hunt
# Run as Administrator on developer workstations & build servers
$ErrorActionPreference = 'SilentlyContinue'
Write-Host "[+] Starting hunt for Contagious Interview & Qubole abuse artifacts..." -ForegroundColor Cyan
# 1. Check for persistence in Registry Run keys
$RunKeys = @(
'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run'
)
foreach ($Key in $RunKeys) {
Get-ItemProperty $Key | ForEach-Object {
$_.PSObject.Properties | Where-Object {
$_.Name -notlike 'PS*' -and
($_.Value -match 'CameraHelper|npm|node|accurasoft')
} | Select-Object @{N='Key';E={$Key}}, Name, Value
}
}
# 2. Hunt for malicious file hashes in common staging dirs
$MaliciousHashes = @{
'MD5' = '086d4a83181971e883c53a4c44f46da2'
'SHA1' = '1c7437dac21630f53c0b888b50662c6487e23fd7'
'SHA256' = '65f061281c9a712e9502793dc4c5035cae490b84da05f7d4223cefa65ad396e4'
}
$SearchPaths = @("$env:TEMP","$env:APPDATA\npm-cache","$env:LOCALAPPDATA\Temp","C:\Windows\Temp")
foreach ($Path in $SearchPaths) {
if (Test-Path $Path) {
Get-ChildItem $Path -Recurse -File -ErrorAction SilentlyContinue | ForEach-Object {
$File = $_
foreach ($Algo in $MaliciousHashes.Keys) {
$Hash = (Get-FileHash $File.FullName -Algorithm $Algo).Hash
if ($Hash -eq $MaliciousHashes[$Algo]) {
Write-Warning "[!] Malicious file detected: $($File.FullName) [$Algo]"
$File | Select-Object FullName, Length, LastWriteTime
}
}
}
}
}
# 3. Check active network connections to C2 IPs
$C2IPs = @('103.179.142.155','45.83.220.211','57.129.54.120','185.209.199.73','89.37.63.175')
Get-NetTCPConnection | Where-Object {$_.RemoteAddress -in $C2IPs} | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess,@{N='ProcessName';E={(Get-Process -Id $_.OwningProcess).ProcessName}}
# 4. Scan npm global cache for suspicious packages
$NpmCache = "$env:APPDATA\npm-cache"
if (Test-Path $NpmCache) {
Get-ChildItem $NpmCache -Recurse -Filter package.json | ForEach-Object {
$Content = Get-Content $_.FullName -Raw
if ($Content -match 'postinstall|preinstall' -and $Content -match 'camera-driver|accurasoft') {
Write-Warning "[!] Suspicious npm package: $($_.Directory.Name)"
}
}
}
Write-Host "[+] Hunt complete. Review warnings above and isolate affected hosts." -ForegroundColor Green
Response Priorities
Immediate (0–4h)
- Block all listed IPv4 indicators at the egress firewall and AWS WAF.
- Sinkhole
accurasofthire.comand alert on any DNS resolution attempts. - Import MD5/SHA1/SHA256 hashes into EDR blocklists; scan developer workstations and CI/CD runners.
- Force-disable any IAM roles or users in AWS account
805246085872that are not actively monitored; rotate all associated access keys.
24h
- Credential rotation: Assume all developer credentials, SSH keys, and cloud tokens on machines that executed the malicious npm package are compromised. Rotate GitHub/GitLab PATs, AWS keys, and crypto wallet seeds.
- Identity verification: If any user was contacted by AccuraSoftHire recruiters on LinkedIn, verify employment claims via phone (do not trust LinkedIn identity badges alone).
- Cloud audit: Review CloudTrail for
AssumeRoleevents from the listed VPN IPs during Oct 14–26. Check for unauthorized IAM policy attachments or new access keys created in that window.
1 Week
- Architecture hardening: Enforce IP whitelisting on all third-party AWS integration roles (Qubole, Snowflake, Databricks). Require
ExternalId+ MFA for cross-account access. - Supply chain controls: Implement npm package allowlisting or use a private registry (e.g., Azure Artifacts, JFrog Artifactory) that blocks post-install scripts by default. Scan all
package-lock.jsonfiles against the provided hash list. - Detection-as-Code: Deploy the Sigma rules above to production SIEM and tune for false positives from legitimate Qubole support activity.
Related Resources
Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.