Inside SHADOW-WATER-084: A Steganographic Loader-as-a-Service Delivering Remcos, LXBASE, and More
Detection stack
- AIDR
- Alert
- ETL
- Query
Summary
SHADOW-WATER-084 is a sophisticated loader-as-a-service operation that uses steganography to conceal malicious code inside bitmap resources embedded in benign .NET decoy applications. Its delivery chain relies on multiple stages of reflective loading and in-memory decryption to evade file-based scanners. The toolkit is highly configurable and can deploy multiple payloads, including Remcos RAT and the custom LXBASE RAT.
Investigation
TrendAI Research analyzed three separate campaigns, tracked as Operation LoremDrop, that used different decoy applications but shared the same underlying toolkit. The investigation revealed a four-stage execution chain, a common 43-field GraftLoader configuration format, and distinctive steganographic techniques in which every pixel channel carries payload data. Researchers successfully decrypted each stage and recovered the payload encryption routines.
Mitigation
Organizations should monitor for suspicious PowerShell command lines stored in registry Run keys and detect .inf files created in temporary directories for execution by cmstp.exe. Endpoint protection should also identify browser elevator COM objects instantiated by non-browser processes to help prevent credential theft. Monitoring for high-entropy bitmap resources inside managed assemblies can further improve detection of steganographic loaders.
Response
If SHADOW-WATER-084 activity is detected, affected hosts should be isolated and registry Run keys reviewed for suspicious PowerShell execution. Investigators should search temporary directories for unauthorized .inf files and inspect AppData\Roaming for hidden executables with system attributes. Memory forensics should also be performed to identify reflectively loaded assemblies and extract final payloads using recovered decryption keys.
Attack Flow
We are still updating this part.
Detections
Suspicious Taskkill Execution (via cmdline)
Possible Powershell Executing Process In Suspicious Directory (via cmdline)
LOLBAS CMSTP (via cmdline)
Suspicious Defender Exclusions Modification (via cmdline)
IOCs (HashSha256) to detect: Inside SHADOW-WATER-084: A Steganographic Loader-as-a-Service Delivering Remcos, LXBASE, and More
IOCs (HashMd5) to detect: Inside SHADOW-WATER-084: A Steganographic Loader-as-a-Service Delivering Remcos, LXBASE, and More
IOCs (SourceIP) to detect: Inside SHADOW-WATER-084: A Steganographic Loader-as-a-Service Delivering Remcos, LXBASE, and More
IOCs (DestinationIP) to detect: Inside SHADOW-WATER-084: A Steganographic Loader-as-a-Service Delivering Remcos, LXBASE, and More
Watcher Thread Enumerating Processes – SHADOW-WATER-084 GraftLoader [Windows Sysmon]
Detect SHADOW-WATER-84 Process Hollowing and RegSvcs.exe Usage in Campaign 1 [Windows Process Creation]
Powershell Script Used for Persistence with Defender Exclusion [Windows Powershell]
Simulation Execution
Prerequisite: The Telemetry & Baseline Pre-flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic. Abstract or unrelated examples will lead to misdiagnosis.
-
Attack Narrative & Commands: The adversary has deployed a specialized loader known as GraftLoader. To ensure survivability against user intervention or system reboots, the
graftloader.exebinary initiates a watchdog thread. This thread continuously enumerates running processes; if it detects that the primary malware component has been terminated, it immediately re-executes the binary. This simulation creates a dummygraftloader.exeto trigger the specific filename-based detection rule. -
Regression Test Script:
# Simulation Script: GraftLoader Watchdog Trigger # This script creates a dummy executable named 'graftloader.exe' and runs it # to trigger the Sigma rule detection. $workDir = "$env:TEMPGraftLoaderSim" if (!(Test-Path $workDir)) { New-Item -ItemType Directory -Path $workDir } Set-Location $workDir # Create a simple PowerShell script that acts as the 'malware' $scriptContent = @" `$processName = "`$MyInvocation.MyCommand.Name" Write-Host "GraftLoader Watchdog Active..." while(`$true) { # Simulate process enumeration and watchdog loop Start-Sleep -Seconds 5 } "@ $scriptContent | Out-File -FilePath "graftloader.ps1" -Encoding utf8 # Create a wrapper batch file to mimic the .exe behavior for filename matching $batchContent = "@echo off`npowershell.exe -ExecutionPolicy Bypass -File `"$workDirgraftloader.ps1`"" $batchContent | Out-File -FilePath "graftloader.exe" -Encoding ascii # Execute the 'malware' Write-Host "Starting simulation: graftloader.exe" Start-Process -FilePath ".graftloader.exe" -WindowStyle Hidden Write-Host "Simulation running. Monitor SIEM for Process Creation of graftloader.exe" Write-Host "Press any key to cleanup..." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") -
Cleanup Commands:
# Cleanup Script Stop-Process -Name "graftloader" -ErrorAction SilentlyContinue Stop-Process -Name "powershell" -ErrorAction SilentlyContinue # Note: Use caution in real environments Remove-Item -Recurse -Force "$env:TEMPGraftLoaderSim" Write-Host "Cleanup complete."