Threat Summary
A newly published OTX pulse (TLP:WHITE, modified 2026-09-03) documents a sophisticated human-operated intrusion campaign in which threat actors abuse Microsoft Teams external collaboration features to impersonate corporate IT helpdesk personnel. The operators socially engineer end users into granting remote access through legitimate remote monitoring and management (RMM) tooling, then pivot from a single remote session into enterprise-wide compromise.
The attack chain is notable because it contains almost no traditional malware at the initial stage — the 'malware' is the victim's own trust. Once a remote session is established, the operators:
- Initiate contact via Teams, posing as internal IT support responding to a fabricated ticket or spam flood (a known precursor: an email-bombing wave that 'justifies' the helpdesk call).
- Convince the user to accept a remote session using legitimate RMM software — tools that are signed, often allowlisted, and invisible to signature-based controls.
- Execute PowerShell to drop and install a malicious MSI package, which stages a portable Node.js runtime alongside a heavily obfuscated JavaScript implant.
- Use the Node.js implant as an interactive access channel, then perform domain reconnaissance and move laterally via WinRM.
The objective is enterprise-wide access: domain enumeration, lateral movement, and positioning for data theft or follow-on ransomware deployment. This tradecraft mirrors the Storm-1811 / Octo Tempest–style helpdesk impersonation playbook and shares lineage with prior Black Basta–affiliated social engineering operations, but the use of a portable Node.js runtime as the implant host is an evasion-forward twist that defeats many application-control baselines.
Threat Actor / Malware Profile
Attribution: Unknown (per the pulse). TTPs overlap with financially motivated intrusion groups that specialize in voice/chat-based social engineering and helpdesk pretexting.
Distribution method:
- Microsoft Teams messages from external/tenant-spoofed accounts impersonating IT support
- Remote session established via legitimate RMM tooling (attacker-driven, hands-on-keyboard)
- Payload delivery via PowerShell-invoked MSI installation (
msiexec)
Payload behavior:
- Malicious MSI loader installs a self-contained, portable Node.js runtime (
node.exein a non-standard path) plus an obfuscated.jsimplant - The implant runs under
node.exe, so process-based allowlists keyed on signed Microsoft binaries are bypassed — Node.js is not typically baseline-blocked - Interactive command execution, file staging, and reconnaissance (
net,nltest,dsquery,quser, domain trust enumeration)
C2 communication:
- Outbound connections from
node.exeover HTTPS/WebSocket to attacker infrastructure; the pulse includes a DGA-style nonsense domain (dssdfvsdfvsdfvsdgbfbdvdzv.org) consistent with throwaway or algorithmically generated C2 staging - C2 blends with legitimate TLS traffic; no custom protocol signature available — behavioral detection is required
Persistence mechanism:
- MSI-installed components may register services, Run keys, or scheduled tasks; the portable runtime's arbitrary install path is designed to survive standard cleanup of known RMM artifacts
- Attackers also retain access via the legitimately installed RMM tool until it is removed
Anti-analysis techniques:
- Heavy JavaScript obfuscation (string array rotation, packed eval chains) inside the implant
- Living-off-the-land execution: PowerShell, msiexec, WinRM — all native, signed tooling
- Human-operated pacing: recon and lateral movement performed interactively, defeating sandbox detonation
IOC Analysis
The pulse contains 7 indicators:
| Type | Count | Operationalization |
|---|---|---|
| FileHash-SHA256 | 6 | Load into EDR blocklists (Defender, CrowdStrike custom IOC, Sentinel watchlists). These correspond to the MSI loaders and Node.js implant payloads. Hashes are brittle — treat as point-in-time detection only. |
| Domain | 1 (dssdfvsdfvsdfvsdgbfbdvdzv.org) | Block at DNS sinkhole, proxy, and firewall. The high-entropy, keyboard-mash pattern is itself a detection signal — hunt for similar DGA-style domains in DNS logs. |
How SOC teams should operationalize:
- Push SHA256 indicators into your EDR's custom indicator list with Block action, and into Microsoft Sentinel via the Threat Intelligence blade for retroactive matching.
- Add the domain to DNS filtering and proxy block categories; alert on any historical resolution in the last 90 days.
- Because hashes rotate quickly in human-operated campaigns, prioritize behavioral detection (below) over static IOC matching: unsigned MSI installs spawning from
msiexecunder a PowerShell parent,node.exeexecuting from non-standard paths, and new RMM tool installations outside your approved software inventory. - Tooling for decoding: the obfuscated JavaScript implant responds well to
box-js/jsjwsdetonation, deobfuscation viade4jsor manual AST unpicking, and CyberChef for layered string decoding. MSI contents can be extracted withlessmsiormsiexec /aadministrative installs in a sandbox for static triage.
Detection Engineering
---
title: Suspicious MSI Installation Spawned via PowerShell
description: Detects msiexec.exe executing an MSI package with PowerShell as parent process, consistent with helpdesk-impersonation campaigns delivering Node.js implants via malicious MSI loaders.
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith: '\msiexec.exe'
selection_parent:
ParentImage|endswith:
- '\powershell.exe'
- '\pwsh.exe'
selection_cmd:
CommandLine|contains:
- '/i '
- '/package'
- '.msi'
condition: selection_img and selection_parent and selection_cmd
falsepositives:
- Legitimate software deployment via PowerShell scripts (SCCM, Intune packaging)
level: high
tags:
- attack.t1218.007
- attack.t1059.001
---
title: Node.js Runtime Execution from Non-Standard Path
description: Detects node.exe executing from user-writable or non-standard directories with a JavaScript file argument, indicating a portable Node.js implant staged by an MSI loader.
logsource:
category: process_creation
product: windows
detection:
selection_img:
Image|endswith: '\node.exe'
selection_paths:
Image|contains:
- '\AppData\'
- '\ProgramData\'
- '\Users\Public\'
- '\Temp\'
- '\Windows\Temp\'
selection_cmd:
CommandLine|endswith: '.js'
filter_standard:
Image|startswith:
- 'C:\Program Files\nodejs\'
- 'C:\Program Files (x86)\nodejs\'
condition: selection_img and selection_paths and selection_cmd and not filter_standard
falsepositives:
- Developers with local Node.js projects
- Electron-based applications bundling node
level: high
tags:
- attack.t1059.007
- attack.t1036
---
title: WinRM-Based Lateral Movement or Domain Reconnaissance via Node or RMM Session
description: Detects WinRM service (winrs/winrm) spawning command shells or reconnaissance utilities, combined with domain enumeration commands, consistent with post-compromise lateral movement in helpdesk impersonation intrusions.
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\winrshost.exe'
- '\wsmprovhost.exe'
selection_recon:
CommandLine|contains:
- 'nltest'
- 'net group "Domain Admins"'
- 'net user /domain'
- 'dsquery'
- 'quser'
- 'net view'
condition: selection_parent and selection_recon
falsepositives:
- Administrators performing legitimate remote domain management via WinRM/PSRemoting
level: medium
tags:
- attack.t1021.006
- attack.t1482
- attack.t1069.002
// Hunt: Teams helpdesk impersonation -> RMM -> MSI -> Node.js implant chain
// Looks for node.exe network activity from suspicious paths and msiexec launches by PowerShell
let suspicious_hashes = dynamic([
"4cfdcae6dd1d6d98b870c8f0654d504f2bf10479a117dc297de789c249dc389d",
"a4d145a6347e47d40b3ca48af5c6dba01bf019d0110e31a44bb70fc77d1d1676",
"cc6d0f3f47afeba018173604e34f527e8413d3a54ffb35caed529bff49055ec5",
"0d2fc28af246f62f27e49207d1f64e236ad9ea029412b27877d1ae6c098e86e3",
"69e10e0cb7bb2137ebea12971adb02c662cf5543a4f8c9530812bcbf7b183a23",
"a135fe4df18c711097e69b4f27ea32a74a955160bf2fb12da841f21866d95d87"
]);
let lookback = 14d;
let NodeNet = DeviceNetworkEvents
| where TimeGenerated > ago(lookback)
| where InitiatingProcessFileName =~ "node.exe"
| where InitiatingProcessFolderPath has_any ("AppData", "ProgramData", "Public", "Temp")
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessFolderPath, InitiatingProcessCommandLine, RemoteIP, RemoteUrl, RemotePort;
let MsiDrop = DeviceProcessEvents
| where TimeGenerated > ago(lookback)
| where FileName =~ "msiexec.exe"
| where InitiatingProcessFileName has_any ("powershell.exe", "pwsh.exe")
| project TimeGenerated, DeviceName, ProcessCommandLine, InitiatingProcessCommandLine, SHA256;
let HashHits = DeviceProcessEvents
| where TimeGenerated > ago(lookback)
| where SHA256 in (suspicious_hashes)
| project TimeGenerated, DeviceName, FileName, FolderPath, SHA256, ProcessCommandLine;
let C2Dns = DeviceNetworkEvents
| where TimeGenerated > ago(90d)
| where RemoteUrl == "dssdfvsdfvsdfvsdgbfbdvdzv.org"
| project TimeGenerated, DeviceName, InitiatingProcessFileName, RemoteUrl, RemoteIP;
union NodeNet, MsiDrop, HashHits, C2Dns
| sort by TimeGenerated desc
# IOC & artifact hunt: Teams helpdesk impersonation / Node.js MSI implant
# Run elevated across endpoints (or via Intune/SCCM/remote PS)
$ErrorActionPreference = 'SilentlyContinue'
$report = @()
# 1. Known malicious SHA256 hashes from OTX pulse
$malHashes = @(
'4cfdcae6dd1d6d98b870c8f0654d504f2bf10479a117dc297de789c249dc389d',
'a4d145a6347e47d40b3ca48af5c6dba01bf019d0110e31a44bb70fc77d1d1676',
'cc6d0f3f47afeba018173604e34f527e8413d3a54ffb35caed529bff49055ec5',
'0d2fc28af246f62f27e49207d1f64e236ad9ea029412b27877d1ae6c098e86e3',
'69e10e0cb7bb2137ebea12971adb02c662cf5543a4f8c9530812bcbf7b183a23',
'a135fe4df18c711097e69b4f27ea32a74a955160bf2fb12da841f21866d95d87'
)
# 2. Scan user-writable paths for portable node.exe runtimes
$suspectPaths = @("$env:ProgramData", "$env:PUBLIC", "$env:TEMP", "$env:LOCALAPPDATA", "$env:APPDATA")
foreach ($p in $suspectPaths) {
Get-ChildItem -Path $p -Recurse -Filter 'node.exe' -ErrorAction SilentlyContinue | ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower()
$report += [pscustomobject]@{
Check = 'Portable Node.js runtime'
Path = $_.FullName
SHA256 = $h
Flag = $(if ($malHashes -contains $h) {'KNOWN MALICIOUS'} else {'Review'})
}
}
}
# 3. Hash-match any MSI payloads left on disk
Get-ChildItem -Path "$env:TEMP","$env:ProgramData" -Recurse -Include *.msi -ErrorAction SilentlyContinue | ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLower()
if ($malHashes -contains $h) {
$report += [pscustomobject]@{Check='Malicious MSI'; Path=$_.FullName; SHA256=$h; Flag='KNOWN MALICIOUS'}
}
}
# 4. Check for unauthorized RMM tools (adjust allowlist to your org)
$rmmNames = 'AnyDesk','TeamViewer','ScreenConnect','ConnectWise','Splashtop','QuickAssist','Atera','NinjaRMM','LogMeIn','UltraVNC','RustDesk'
$installed = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* -ErrorAction SilentlyContinue |
Where-Object { $d=$_.DisplayName; $rmmNames | Where-Object { $d -match $_ } }
foreach ($app in $installed) {
$report += [pscustomobject]@{Check='RMM tool installed'; Path=$app.DisplayName; SHA256=''; Flag='Verify authorized'}
}
# 5. Persistence: Run keys referencing node or suspicious js
$runKeys = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce',
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce'
foreach ($k in $runKeys) {
(Get-ItemProperty $k).PSObject.Properties | Where-Object { $_.Value -match 'node\.exe|\.js' } | ForEach-Object {
$report += [pscustomobject]@{Check='Run key persistence'; Path="$k -> $($_.Name)=$($_.Value)"; SHA256=''; Flag='Review'}
}
}
# 6. Scheduled tasks invoking node.exe or .js payloads
Get-ScheduledTask | Where-Object { ($_.Actions | Out-String) -match 'node\.exe|\.js' } | ForEach-Object {
$report += [pscustomobject]@{Check='Scheduled task persistence'; Path=$_.TaskName; SHA256=''; Flag='Review'}
}
# 7. Active network connections from node.exe or to known C2
Get-NetTCPConnection -State Established | Where-Object {
(Get-Process -Id $_.OwningProcess).ProcessName -eq 'node'
} | ForEach-Object {
$report += [pscustomobject]@{Check='node.exe outbound connection'; Path="$($_.RemoteAddress):$($_.RemotePort)"; SHA256=''; Flag='Review'}
}
Resolve-DnsName 'dssdfvsdfvsdfvsdgbfbdvdzv.org' -ErrorAction SilentlyContinue | ForEach-Object {
$report += [pscustomobject]@{Check='Known C2 domain resolves'; Path=$_.Name; SHA256=''; Flag='BLOCK'}
}
# 8. WinRM listener state (lateral movement exposure)
$winrm = Get-Service WinRM
$report += [pscustomobject]@{Check='WinRM service state'; Path=$winrm.Status; SHA256=''; Flag=$(if($winrm.Status -eq 'Running'){'Review necessity'}else{'OK'})}
$report | Format-Table -AutoSize
$report | Export-Csv -Path "$env:TEMP\helpdesk_impersonation_hunt.csv" -NoTypeInformation
Write-Host "`nHunt complete. Results: $($report.Count) findings -> $env:TEMP\helpdesk_impersonation_hunt.csv"
Response Priorities
Immediate (0–4 hours):
- Block all 6 SHA256 hashes at the EDR layer and the domain
dssdfvsdfvsdfvsdgbfbdvdzv.orgat DNS/proxy/firewall - Run the KQL hunt and PowerShell sweep across the fleet; isolate any host with hash hits or portable
node.exeoutbound connections - Audit recently installed RMM tools against the approved software inventory; remove and investigate anything unauthorized
- Review Teams external access logs for unsolicited inbound chats claiming to be IT support, especially following email-bombing bursts
24 hours:
- If any implant execution or remote session is confirmed, treat credentials on the affected host as compromised: force password resets, revoke tokens and sessions (Entra ID / Okta), and re-issue MFA where session theft is plausible
- Review WinRM/PowerShell remoting logs (Event IDs 91, 168, 4104) for lateral movement from patient-zero hosts
- Pull Teams message metadata to identify the impersonating external tenant/account and report to Microsoft
1 week:
- Restrict or disable Teams external federation where not business-required; enforce an allowlist of partner tenants
- Deploy application control (WDAC/AppLocker) to block
node.exeoutside approved paths and constrain MSI installation to authorized deployment accounts - Limit WinRM to management subnets/jump hosts via GPO and firewall rules; enable Just Enough Administration where feasible
- Roll out helpdesk verification procedures (callback to known numbers, ticket-ID verification, codewords) and run user awareness on helpdesk pretexting — the human layer is the exploited control here
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.