🚨#XWorm: PNGs hiding an in-memory loader.
A malicious JavaScript installer named PurchaseOrder_25005092.JS is delivered via #phishing pages and emails (T1566.001). The script uses an IIFE-style obfuscation (T1027), writes three staged files to C:\Users\PUBLIC, and creates a scheduled task to ensure persistence (T1053.005).
This JS checks for required artifacts and, if missing, writes them to disk using long Base64 blobs and AES-encrypted strings (T1027.013). The staged files are named Kile.cmd, Vile.png, and Mands.png.
⚠️ .png files are not images, they are storage containers for Base64-encoded encrypted payloads (T1036.008). It is a common technique to evade quick detection.
Kile.cmd is a heavily obfuscated batch script with variable noise, percent-based substitutions, chunked Base64 fragments, that reassembles commands at runtime.
❗️ At execution, the JS reconstructs readable commands from those fragments and launches a PowerShell payload (T1059). The PowerShell is a two-stage AES-CBC loader:
1️⃣ Reads C:\Users\PUBLIC\Mands.png as Base64 ➡️ AES-decrypt ➡️ yields Base64-encoded commands. Each command is decoded and executed via Invoke-Expression (IEX). This acts as a command runner.
2️⃣ Reads C:\Users\PUBLIC\Vile.png as Base64 ➡️ AES-decrypt ➡️ raw bytes. The loader attempts to load a .NET assembly from memory and execute its entry point (T1620).
This is an in-memory assembly loader, a fileless/memory-loader pattern: command runner + in-memory payload.
👾 At the end, PowerShell runs an assembly in memory to launch XWorm.
A single successful XWorm infection can give adversaries access to critical systems, leading to breaches and operational disruption. Once inside, attackers can steal data, move laterally, and cause costly downtime.
👨💻 Get fast detection and full visibility with #ANYRUN. See live execution and download actionable report: https://app.any.run/tasks/bec21e02-8fb5-4a18-b43c-131e02e21041/?utm_source=mastodon&utm_medium=post&utm_campaign=png-xworm&utm_term=051125&utm_content=linktoservice
👨🍳 Use this CyberChef recipe to decode the final PowerShell string:
https://gchq.github.io/CyberChef/#recipe=Find_/_Replace(%7B'option':'Simple%20string','string':'EPMNJLDRV'%7D,'',true,false,true,false)From_Base64('A-Za-z0-9%2B/%3D',true,false)Decode_text('UTF-16LE%20(1200)')&oenc=65001&ieol=CRLF&oeol=CRLF
🔍 Find similar campaigns using these TI Lookup search queries and enrich #IOCs:
🔹 PowerShell .Replace() obfuscation: https://intelligence.any.run/analysis/lookup?utm_source=mastodon&utm_medium=post&utm_campaign=png-xworm&utm_content=linktoti&utm_term=051125#%7B%2522query%2522:%2522imagePath:%255C%2522%255C%255C%255C%255Cpowershell.exe$%255C%2522%2520AND%2520commandLine:%255C%2522.Replace(%255C%2522%2522,%2522dateRange%2522:180%7D%20
🔹 PowerShell invoking IEX: https://intelligence.any.run/analysis/lookup?utm_source=mastodon&utm_medium=post&utm_campaign=png-xworm&utm_content=linktoti&utm_term=051125#%7B%2522query%2522:%2522imagePath:%255C%2522%255C%255C%255C%255Cpowershell.exe$%255C%2522%2520AND%2520commandLine:%255C%2522iex%255C%2522%2522,%2522dateRange%2522:180%7D
🔹 JS droppers in Public\Libraries: https://intelligence.any.run/analysis/lookup?utm_source=mastodon&utm_medium=post&utm_campaign=png-xworm&utm_content=linktoti&utm_term=051125#%7B%2522query%2522:%2522filePath:%255C%2522%5EC:%255C%255C%255C%255CUsers%255C%255C%255C%255CPublic%255C%255C%255C%255CLibraries%255C%255C%255C%255C*.js$%255C%2522%2522,%2522dateRange%2522:180%7D
Gain full visibility with #ANYRUN to make faster, smarter security decisions 🚀
#cybersecurity #infosec