Back to reports
highPhishing

RemcosRAT Four-Stage JavaScript Dropper: Rotational XOR, Process Hollowing, and a Staging Server the Operator Forgot to Lock

PublishedMarch 12, 2026
Threat Actors:Attribution
phishingsocial-engineeringcredential-theftc2botnetexploitdgaaptspearphishing

TL;DR: A 3.2MB JavaScript file masquerading as a "Purchase Inquiry" email attachment kicks off a four-stage infection chain that ends with RemcosRAT hollowed into a legitimate Microsoft binary. The dropper decodes a Base64 blob into PowerShell, which applies a rotational XOR cipher with a 32-byte key and non-linear feedback loop to decrypt a .NET reflective loader (DEV.dll), which then process-hollows RemcosRAT into Aspnet_compiler.exe. The RAT -- compiled February 3, 2026 -- phones home to a dedicated C2 at 216.250.249.222 on ports 80 and 443 using Remcos proprietary protocol (not HTTP, not TLS -- raw TCP masquerading on web ports). A parallel HTA delivery variant stages payloads on a live XAMPP server at 96.44.159.218 with the default dashboard still exposed. Imphash pivoting across MalwareBazaar reveals 10 related RemcosRAT builds produced over a 3-week campaign window, with at least three delivery vectors (JS, HTA, XLS) and three distinct infrastructure IPs. The operator has the technical skill to build multi-layer encryption but left RDP open on the C2 and a default XAMPP install facing the internet.


A "Purchase Inquiry" That Costs More Than Expected

It arrived the way most of them do: a business-themed email with an attachment that no one asked for. The file was called Purchase Inquiry _.js -- note the trailing underscore, a formatting artifact that suggests automated generation rather than careful social engineering. At 3.2MB, it is comically large for a JavaScript file. A legitimate business document delivered as .js should raise every alarm in the building. But email gateways that filter by extension often miss JavaScript entirely, and users who have been trained to be suspicious of .exe files do not always extend that suspicion to script formats.

The sample appeared on MalwareBazaar on March 10, 2026, reported by lowmal3. Within hours of pulling the thread, the investigation expanded from a single dropper to an active multi-vector campaign with at least five related samples submitted on the same day by multiple researchers -- a signal that this operator is running at scale.

AttributeValue
SHA-2569180484968eb47d73853596ec91f4e1d495c0dc7ed1800baa38ce88528b42b5d
MD53765da8b030dce60722ec60388440962
SHA-1c0956b165ca794f4044aa0803152e9a2e9d3e2eb
Size3,246,779 bytes (3.2 MB)
TypeJavaScript (WSH)
First Seen2026-03-10 10:04:16 UTC
Reporterlowmal3 (MalwareBazaar)

The Four-Stage Kill Chain

Before diving into the technical details of each stage, here is the full infection chain. Every arrow represents a boundary that most endpoint detection tools have an opportunity to catch -- and most will miss at least one.

[Email Lure: "Purchase Inquiry _.js" (3.2MB)]
         |
         v
[Stage 0: Obfuscated JavaScript]
  - Array rotation obfuscation with proxy functions
  - WScript.Shell / ActiveXObject execution
  - Self-deletion after execution
  - 3.2MB Base64 blob embedded in string table
         |
         v
[Stage 1: PowerShell - Rotational XOR Decryption]
  - Base64 decodes to PowerShell script
  - $securecontainer: 1.79MB encrypted payload
  - 32-byte XOR key with rotational feedback
  - -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden
         |
         v
[Stage 2: .NET Assembly Loader + Process Hollowing]
  - Invoke-AssemblyExecution loads DEV.dll (47KB)
  - DEV.DOWN.SHOOT() method reflectively invoked
  - Target: Aspnet_compiler.exe (legitimate .NET binary)
  - Persistence: monitoring loop re-injects on termination
         |
         v
[Stage 3: RemcosRAT]
  - Process hollowed into Aspnet_compiler.exe
  - Full surveillance capabilities: keylogging, camera, audio, screenshots
  - C2: 216.250.249.222:80 and :443 (Remcos proprietary protocol)
  - RC4-encrypted configuration with 179-byte key

Four stages is not unusual for commodity RAT delivery -- the industry has settled on a rough consensus that three to five layers provides enough evasion to beat most automated analysis without making the chain so fragile that it breaks on non-standard system configurations. What makes this chain worth examining is the quality of each individual layer.

Stage 0: JavaScript Obfuscation -- Ugly but Effective

The JavaScript dropper uses a technique that has become standard in the commodity malware ecosystem: array rotation obfuscation. All meaningful strings -- function names, encoded payloads, method calls -- are stored in a lookup array, and every reference goes through a proxy function that computes the correct array index at runtime. Variable names are reduced to two-character random combinations (ZE, ZH, B0) that convey no semantic information.

The result is a single-line, 3.2MB file with no statement terminators -- a formatting choice that serves dual purpose as both obfuscation and anti-analysis. Most text editors will choke on a single line that long, and static analysis tools that parse JavaScript by splitting on semicolons or newlines will fail silently.

Execution begins through WScript.Shell via ActiveXObject -- the classic Windows Script Host pathway. The script extracts its 3.2MB Base64 payload from the string table, writes a PowerShell command, and then deletes itself from disk. That self-deletion is important: by the time an analyst might examine the file system, the original dropper is already gone. The only artifact that remains is the PowerShell process it spawned.

Stage 1: Rotational XOR -- The Same Cipher, Different Campaign

The Base64 blob decodes to a PowerShell script containing a variable named $securecontainer -- a 1.79MB encrypted payload -- and a 32-byte XOR key stored in $encryptionrotational:

XOR Key (hex): a2f5cdf81c0d88c7158a4e05f19bffc424359b3d6be7e3011caa41d55bb382fe

The decryption algorithm is where this dropper distinguishes itself from the single-byte XOR schemes that dominate commodity malware:

for each byte at position i:
    key_position = (i + rotation_tracker) % key_length
    plaintext[i]  = ciphertext[i] XOR key[key_position]
    rotation_tracker = (rotation_tracker + key[key_position]) % 7

The rotation_tracker creates a feedback loop: the key position at byte N depends on every key byte used before it, because the tracker accumulates and wraps modulo 7 after each step. This means two identical plaintext bytes at different offsets will encrypt to different ciphertext bytes, defeating frequency analysis. It is not cryptographically novel -- this is still XOR with extra steps -- but it is sufficient to evade automated decryption tools that assume static or linearly-advancing key schedules.

Readers of our earlier reporting may recognize this exact cipher. The SnakeKeylogger dual-vector campaign we published today uses the identical rotational XOR algorithm with the same DEV.dll loader architecture. Same encryption scheme, same loader namespace, different final payload. This is not coincidence -- it points to a shared dropper builder or toolkit being used across multiple malware families.

The PowerShell runs with the standard evasion flags: -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden. None of these are exotic, but together they ensure execution even on systems with restrictive PowerShell policies, while hiding the console window from the user.

Stage 2: DEV.dll -- A .NET Loader Built for Reuse

After decryption, Stage 1 yields another PowerShell script containing an Invoke-AssemblyExecution function, a 47KB .NET DLL (DEV.dll), and the final RemcosRAT payload as a raw byte array in $ExecutionPayload.

AttributeValue
SHA-25664f72b92ba056fec73ba30912a0a92d03d223d8cce9de56149cbd10f80ed80e4
MD50156574aac3f1b138634f78fd2472cf6
Size47,104 bytes
Type.NET DLL
NamespaceDEV.DOWN
Entry MethodSHOOT(string frameworkPath, byte[] payload)
Assembly GUIDab88dfb2-73aa-4da1-bf05-e72424ad8034

The loader performs textbook process hollowing through the NT API:

  1. Spawn suspended process: Creates C:\Windows\Microsoft.NET\Framework\v4.0.30319\Aspnet_compiler.exe in a suspended state
  2. Hollow the process: Calls NtUnmapViewOfSection to remove the legitimate code from memory
  3. Map payload: Uses NtCreateSection + NtMapViewOfSection to inject the RemcosRAT binary into the hollowed process space
  4. Resume execution: The process resumes, now executing RemcosRAT instead of the ASP.NET compiler

The choice of Aspnet_compiler.exe as the hollowing target is deliberate and effective. It is a legitimate Microsoft-signed binary that lives in the .NET Framework directory. SOC analysts triaging alerts will see a .NET process running from C:\Windows\Microsoft.NET\Framework\ and may dismiss it as benign -- especially if the organization runs any ASP.NET applications. This is social engineering targeting defenders, not end users.

The loader also includes a persistence monitoring loop: if the hollowed Aspnet_compiler.exe process is terminated (by a user, by an EDR, by a system update), the loader detects its absence and re-injects. This is not persistence in the traditional sense (no registry keys, no scheduled tasks for the loader itself), but it achieves the same effect as long as the parent PowerShell process remains alive.

The GUID ab88dfb2-73aa-4da1-bf05-e72424ad8034 is a high-fidelity pivot point. This identifier is compiled into the assembly metadata and does not change between deployments unless the operator rebuilds from source. Any future sample containing this GUID is almost certainly from the same toolkit.

Stage 3: RemcosRAT -- The Payload Behind the Curtain

RemcosRAT is a commercial remote administration tool sold by BreakingSecurity.net under the pretense of legitimate use. In practice, it is one of the most widely abused RATs in the cybercrime ecosystem, with a feature set that would make nation-state developers envious.

AttributeValue
SHA-25680e2868c6cd6c3b7e0b4b5584cbcc180b7c7ab049d20b0ab508e2b8be14a8522
MD5e9bae8dfee1150f29d83a401def30f05
SHA-11f26813afebe2bcd86dc1dca7aa0d46023e2e588
Imphash737fc4be4f9f7d7c06c790667c9f7669
Size527,872 bytes (528 KB)
Compile Time2026-02-03 17:38:41 UTC

Extracted Configuration

The RemcosRAT configuration is encrypted with RC4 using a 179-byte key stored in the PE SETTINGS resource. Field boundaries use a distinctive separator: |\x1e\x1e\x1f| (pipe, record separator, record separator, unit separator, pipe). After decryption:

C2 Addresses:
  216.250.249.222:80   (password: 0)
  216.250.249.222:443  (password: 0)

Botnet Name:     RemoteHost
Mutex:           Rmc-3UG3BG
Install Name:    remcos.exe
Keylog File:     logs.dat
Screenshot Dir:  Screenshots
Audio Dir:       MicRecords
License Hash:    72214B9FB81C38C5D9F33A771B74F635
Registry Path:   HKCU\Software\Remcos

The botnet name RemoteHost is the default value that ships with the RemcosRAT builder. An operator who has gone to the trouble of building a four-stage delivery chain with custom encryption but cannot be bothered to change the default botnet name is telling you something about their priorities: technical sophistication in the delivery layer, minimal effort in the post-exploitation configuration.

The license hash 72214B9FB81C38C5D9F33A771B74F635 is particularly interesting. Every RemcosRAT license generates a unique hash tied to the customer's account on BreakingSecurity.net. This hash is a direct link to a specific purchaser -- one of the few pieces of attribution evidence that could theoretically lead to an individual.

Capability Matrix

RemcosRAT's capabilities go well beyond simple remote access:

CapabilityEvidence in BinaryOperational Impact
KeyloggingOnline/Offline Keylogger Started/Stopped, logs.datCaptures all keyboard input, online and offline
Camera CaptureOpenCamera, CloseCamera stringsLive video feed from compromised endpoints
Audio Recordingplay/pause/resume/stop/close audio, MicRecords/Ambient audio surveillance
Screen CaptureScreenshots directory configuredPeriodic or on-demand desktop screenshots
File ManagementUpload/Download, DeleteFileFull file system access
Process InjectionNtUnmapViewOfSection, NtCreateSectionCan migrate to other processes
UAC BypassRegistry: EnableLUA = 0Silently elevate to admin without user prompt
WatchdogWatchdog module activatedAuto-restarts if killed
Command Shellcmd.exe, powershell.exeArbitrary command execution
TLS CommunicationTLS context initializationEncrypted C2 channel (optional)

This is not a keylogger. This is not an infostealer. This is a full surveillance platform. An operator with RemcosRAT on a target endpoint has the ability to watch through the camera, listen through the microphone, read every keystroke, browse every file, and execute arbitrary commands -- all while running inside a process that looks like a legitimate Microsoft tool.

Infrastructure Analysis: Three Servers, Three Roles

The campaign uses a clean separation of infrastructure responsibilities: one server for C2, one for staging, and one for an alternate delivery vector.

C2 Server: 216.250.249.222

AttributeValue
IP216.250.249.222
ASNMajestic Hosting Solutions (SpinServers)
LocationCarrollton, TX, United States
Network Range216.250.248.0/21 (MHSL-5-216-250-248-0-21)
Open Ports80 (Remcos), 443 (Remcos), 3389 (RDP)
TLS CertificateNone
PTR RecordNone
ThreatFoxFirst reported 2026-03-09 by dyingbreeds_

Ports 80 and 443 are not running HTTP or TLS. They are raw TCP listeners for the Remcos proprietary protocol. The operator chose these ports specifically because they are almost universally permitted through firewalls -- most organizations allow outbound traffic on 80 and 443 without deep packet inspection. A casual network monitor will see traffic to an IP on standard web ports and may not flag it.

The RDP port (3389) being open on the C2 server is an OPSEC failure. It tells us this is a Windows server, it provides an additional attack surface for takedown operations, and it suggests the operator manages this infrastructure via direct RDP rather than through a VPN or jump host.

The /21 network range is worth monitoring. Adjacent IPs in the same block show similar characteristics:

Adjacent IPIndicators
216.250.249.225masimoduti[.]club -- DGA-like domain, RDP open
216.250.249.230star-procedure[.]delaymaxi[.]com -- suspicious domain, RDP open
216.250.249.217-219Windows servers with RDP/SMB exposed

Whether these belong to the same operator or simply indicate that this hosting range is popular with threat actors is unclear. Either way, the neighborhood should be treated as hostile.

Staging Server: 96.44.159.218

AttributeValue
IP96.44.159.218
Hostname96-44-159-218-host.colocrossing.com
ASNHostPapa / ColoCrossing
LocationBuffalo, NY, United States
SoftwareApache 2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.1.25 (XAMPP)
StatusLIVE at time of investigation
CVECVE-2020-0792 (SMBGhost) reported by Shodan

This server is running a stock XAMPP installation on Windows with the default dashboard still accessible at /dashboard/. The operator did not even remove the default Apache landing page. Payloads are organized in numbered directories -- /215/, /220/, /221/ -- suggesting an organized campaign management system where each directory corresponds to a campaign iteration or target group.

The live payload URL:

hxxp://96[.]44[.]159[.]218/220/seethebesttimeforeverythingtolearn[.]js

That filename -- seethebesttimeforeverythingtolearn.js -- is conspicuously long and reads like a motivational poster rather than a technical artifact. It is likely auto-generated or chosen to look benign in URL logs.

The Shodan flag for CVE-2020-0792 (SMBGhost) is a footnote that says a lot: this staging server is an unpatched Windows box running a default XAMPP install with SMB exposed to the internet. The operator either does not know or does not care. In either case, it means this infrastructure is also vulnerable to compromise by other actors -- a common pattern where threat actor staging servers become targets themselves.

XLS Variant Staging: 185.29.10.121

AttributeValue
IP185.29.10.121
ASNDataClub (RIXHOST)
LocationSweden
RoleXLS macro document staging
StatusUnknown

This IP hosts the staging infrastructure for the XLS macro delivery variant. It was referenced in samples submitted by pr0xylife and encoded as hex 0xB91D0A79 in the macro code -- a common obfuscation technique for embedding IP addresses in Office documents.

What Was Found vs. What Was Known

Before this investigation, the RemcosRAT binary had been flagged on ThreatFox approximately 24 hours earlier (March 9) by researcher dyingbreeds_. The sandbox report (Triage analysis 260309-mee3jsdz4p) confirmed the RemcosRAT family identification. What the existing reporting did not cover:

Previously known:

  • The C2 IP and RemcosRAT family identification
  • Basic sandbox behavioral analysis

Newly established in this investigation:

  • The complete four-stage delivery chain deobfuscated end-to-end
  • The rotational XOR cipher algorithm fully documented (including the non-linear feedback mechanism)
  • The DEV.dll .NET loader identified by GUID, namespace, and entry point -- creating a high-fidelity detection pivot
  • The staging server at 96.44.159.218 mapped with its exposed XAMPP dashboard and numbered campaign directories
  • The HTA delivery variant linked through shared staging infrastructure
  • The XLS delivery variant linked through temporal correlation and reporter overlap
  • 10 related RemcosRAT builds identified through imphash clustering, establishing a 3-week campaign timeline
  • The CopilotDrivers.js variant identified as a separate operator using the same builder (different C2, different botnet name)
  • The license hash linked to a specific BreakingSecurity.net customer account
  • The connection to the SnakeKeylogger campaign using the identical DEV.dll loader architecture

Campaign Scope: Three Vectors, One Day

Five related samples were submitted to MalwareBazaar on March 10, 2026 alone, using three distinct delivery mechanisms:

VariantFilenameVectorStagingReporter
JS DropperPurchase Inquiry _.jsEmail attachmentEmbedded (3.2MB inline)lowmal3
HTAgoodwill.htaUnknown96.44.159.218/220/pr0xylife
XLSNew Inquiry List.xlaEmail attachment185.29.10.121pr0xylife
XLSNew Inquiry List2.xlaEmail attachmentUnknownpr0xylife
JS (separate op)CopilotDrivers.jsUnknownEmbeddedabuse_ch

The volume and variety of delivery vectors on a single day points to automated campaign management. An operator manually crafting and sending five different dropper formats simultaneously is possible but inefficient -- it is far more likely that this is driven by a builder toolkit that outputs JS, HTA, and XLS formats from the same payload configuration.

The CopilotDrivers.js variant is the outlier. It uses a different C2 (systemcopilotdrivers[.]ydns[.]eu:3001 resolving to 181.206.158.190), a different botnet name (tar1), and a different port. This is almost certainly a separate operator who purchased the same RemcosRAT license or is using a cracked copy of the same builder. The shared imphash confirms the same build environment, but the operational infrastructure is entirely independent.

Imphash Clustering: A Three-Week Build Cadence

The imphash 737fc4be4f9f7d7c06c790667c9f7669 is the thread that unravels the full campaign scope. An imphash (import hash) is computed from the imported DLL functions in a PE binary. When two executables share an imphash, they were built with the same compiler, the same linker settings, and the same set of imported functions -- effectively, from the same build environment.

Searching MalwareBazaar for this imphash returns 10 samples spanning three weeks:

SHA-256 (truncated)FilenameFirst SeenDays Since Start
21c4eeb2...til.exe2026-02-160
84eaa8ef...(hash-named)2026-02-193
ce3d4a6a...(hash-named)2026-02-204
4f0c95a1...a.exe2026-02-2610
497f6567...2031aacee3...2026-02-2711
0f142584...(hash-named)2026-03-0214
b6fda8d5...(hash-named)2026-03-0315
7976b72d...(hash-named)2026-03-0416
2c965934...074455d0...2026-03-0921
80e2868c...(our sample)2026-03-0921

The cadence is consistent: a new sample every 2-4 days, with the pace accelerating in March. The payload binary was compiled on February 3, 2026 -- two weeks before the first sample appeared in the wild -- suggesting a build-once, deploy-many model where the same compiled binary is wrapped in fresh dropper layers for each campaign wave.

This is an ongoing operation. The operator is actively producing new samples, and the next one is likely 2-4 days away.

Threat Actor Profile

AttributeAssessment
ConfidenceLOW-MEDIUM
MotivationFinancial (commodity RAT for credential theft / data exfiltration)
SophisticationMedium -- custom encryption and multi-stage delivery, but default config values and exposed infrastructure
AttributionUnknown individual or group operating as a RemcosRAT customer
Campaign DurationAt least 3 weeks (February 16 -- March 10, ongoing)

OPSEC Assessment

The operator sits in a common middle ground: technically capable enough to build a multi-layer delivery chain with custom encryption, but operationally careless in ways that will eventually get them caught.

Competent decisions:

  • Four-stage delivery chain with multiple encryption layers
  • Rotational XOR with non-linear key feedback (defeats basic frequency analysis)
  • Process hollowing into a legitimate .NET binary
  • Dual-port C2 configuration (80 and 443) for firewall evasion
  • Multiple delivery vectors for the same payload (JS, HTA, XLS)
  • Numbered staging directories for campaign organization

Damaging mistakes:

  • Default botnet name RemoteHost left unchanged
  • RDP (3389) exposed on the C2 server
  • XAMPP default dashboard accessible on the staging server
  • Staging server vulnerable to SMBGhost (CVE-2020-0792)
  • License hash 72214B9FB81C38C5D9F33A771B74F635 compiled into every payload, linking all activity to one BreakingSecurity.net account
  • DEV.dll GUID ab88dfb2-73aa-4da1-bf05-e72424ad8034 unchanged across campaigns, enabling trivial clustering
  • No PTR record or TLS certificate on C2 (bare IP stands out in network logs)

The license hash is the most consequential of these mistakes. It is baked into the Remcos binary by the builder and cannot be removed without reverse-engineering the license validation. Every sample this operator deploys carries the same digital fingerprint, and BreakingSecurity.net has that fingerprint mapped to a customer account. Whether law enforcement can or will compel that mapping is a separate question, but the technical linkage exists.

MITRE ATT&CK Mapping

TacticTechniqueIDImplementation
Initial AccessSpearphishing AttachmentT1566.001"Purchase Inquiry" JS and "New Inquiry" XLS lures
ExecutionJavaScriptT1059.007WScript execution of obfuscated JS dropper
ExecutionPowerShellT1059.001-ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden
ExecutionShared ModulesT1129.NET Assembly.Load() for DEV.dll reflective loading
Defense EvasionObfuscated FilesT1027Array rotation, Base64, Rotational XOR, RC4
Defense EvasionProcess HollowingT1055.012Aspnet_compiler.exe hollowed via NT API
Defense EvasionMasqueradingT1036Executes as legitimate .NET Framework tool
Privilege EscalationBypass UACT1548.002Registry EnableLUA = 0 modification
PersistenceRegistry Run KeysT1547.001HKCU\Software\Remcos
CollectionKeyloggingT1056.001Online/offline keylogger writing to logs.dat
CollectionVideo CaptureT1125Camera access via OpenCamera/CloseCamera
CollectionAudio CaptureT1123Microphone recording to MicRecords/ directory
CollectionScreen CaptureT1113Periodic screenshots to Screenshots/ directory
Command and ControlNon-Standard PortT1571Remcos protocol on ports 80/443 (not HTTP/TLS)
Command and ControlEncrypted ChannelT1573Optional TLS mode available in configuration

Detection Guidance

YARA Signatures

The following behavioral and artifact-based indicators provide detection opportunities at each stage of the kill chain.

Stage 0 -- JavaScript dropper:

  • JavaScript files exceeding 1MB delivered via email
  • WScript.Shell invocation combined with ActiveXObject
  • Array rotation patterns with two-character variable names
  • Self-deletion behavior (fso.DeleteFile)

Stage 1 -- PowerShell:

  • PowerShell process spawned by wscript.exe with -WindowStyle Hidden
  • Variable names $securecontainer and $encryptionrotational in script block logs
  • Base64-encoded payloads exceeding 1MB in PowerShell command lines

Stage 2 -- .NET Loader:

  • Aspnet_compiler.exe launched as a child of PowerShell
  • .NET assembly with GUID ab88dfb2-73aa-4da1-bf05-e72424ad8034
  • DEV.DOWN.SHOOT method invocation in .NET ETW traces
  • NtUnmapViewOfSection followed by NtCreateSection and NtMapViewOfSection targeting a .NET Framework binary

Stage 3 -- RemcosRAT:

  • Mutex creation: Rmc-3UG3BG
  • Network connections to 216.250.249.222 on ports 80 or 443 that do not carry valid HTTP or TLS traffic
  • Registry key creation at HKCU\Software\Remcos
  • Files created in Screenshots\, MicRecords\, or logs.dat in user profile directories

Network Detection

# Snort/Suricata rule concept for C2 traffic on HTTP ports without HTTP protocol
alert tcp $HOME_NET any -> 216.250.249.222 [80,443] (msg:"BREAKGLASS RemcosRAT C2 Traffic to Known IP"; sid:2026031001; rev:1;)

# DNS/proxy block recommendations
216[.]250[.]249[.]222  # C2
96[.]44[.]159[.]218    # Staging
185[.]29[.]10[.]121    # XLS staging

Endpoint Detection

Search for the following process relationships, which should never occur in normal operations:

wscript.exe --> powershell.exe --> Aspnet_compiler.exe
mshta.exe   --> powershell.exe --> Aspnet_compiler.exe

Any instance of Aspnet_compiler.exe running with a parent process that is not msbuild.exe, devenv.exe, or the .NET SDK toolchain is suspicious and should be investigated immediately.

Indicators of Compromise

Network Indicators

# C2 Infrastructure (defanged)
216[.]250[.]249[.]222:80      # RemcosRAT C2 - Remcos protocol (Majestic Hosting / SpinServers, TX)
216[.]250[.]249[.]222:443     # RemcosRAT C2 - Remcos protocol (alternate port)
216[.]250[.]249[.]222:3389    # RDP - operator management access

# Staging Infrastructure (defanged)
96[.]44[.]159[.]218            # XAMPP staging server (HostPapa / ColoCrossing, NY)
185[.]29[.]10[.]121            # XLS variant staging (DataClub / RIXHOST, Sweden)

# Staging URLs (defanged)
hxxp://96[.]44[.]159[.]218/220/seethebesttimeforeverythingtolearn[.]js

# Adjacent suspicious infrastructure (same /21 range)
216[.]250[.]249[.]225          # masimoduti[.]club
216[.]250[.]249[.]230          # star-procedure[.]delaymaxi[.]com

File Indicators

# JS Dropper (Stage 0)
SHA256: 9180484968eb47d73853596ec91f4e1d495c0dc7ed1800baa38ce88528b42b5d
MD5:    3765da8b030dce60722ec60388440962
SHA1:   c0956b165ca794f4044aa0803152e9a2e9d3e2eb

# .NET Loader - DEV.dll (Stage 2)
SHA256: 64f72b92ba056fec73ba30912a0a92d03d223d8cce9de56149cbd10f80ed80e4
MD5:    0156574aac3f1b138634f78fd2472cf6

# RemcosRAT Payload (Stage 3)
SHA256: 80e2868c6cd6c3b7e0b4b5584cbcc180b7c7ab049d20b0ab508e2b8be14a8522
MD5:    e9bae8dfee1150f29d83a401def30f05
SHA1:   1f26813afebe2bcd86dc1dca7aa0d46023e2e588
Imphash: 737fc4be4f9f7d7c06c790667c9f7669

# HTA Variant Dropper
SHA256: ed925501e749cdc073143ed948ec8a93c6b6a4b76304d9c6a76c6faabc8d048e
MD5:    faeeeb063ff4d8bbfff9a1fae1b71ca8

# HTA Stage 2 JS
SHA256: 1b9791c5c75b7eb0c7510c42c6381f4fbfc40539c3afaab192d0ee65ab591d28

Behavioral Indicators

# RemcosRAT Configuration Artifacts
Mutex:              Rmc-3UG3BG
Install filename:   remcos.exe
Keylog file:        logs.dat
Screenshot dir:     Screenshots
Audio dir:          MicRecords
Registry key:       HKCU\Software\Remcos
Process target:     C:\Windows\Microsoft.NET\Framework\v4.0.30319\Aspnet_compiler.exe

# Encryption Keys
XOR Key (hex):      a2f5cdf81c0d88c7158a4e05f19bffc424359b3d6be7e3011caa41d55bb382fe
RC4 Key:            179 bytes from SETTINGS PE resource
License Hash:       72214B9FB81C38C5D9F33A771B74F635

# .NET Assembly Identifiers
DEV.dll GUID:       ab88dfb2-73aa-4da1-bf05-e72424ad8034
Namespace:          DEV.DOWN
Entry Point:        SHOOT(string, byte[])

Immediate (24-48 hours)

  • Block 216.250.249.222 on all firewalls (ports 80, 443, 3389)
  • Block 96.44.159.218 and 185.29.10.121 on web proxies and DNS sinkholes
  • Search endpoint telemetry for mutex Rmc-3UG3BG
  • Search for Aspnet_compiler.exe running with PowerShell or WScript as a parent process
  • Search email gateway logs for .js attachments exceeding 1MB

Short-term (1-2 weeks)

  • Hunt for imphash 737fc4be4f9f7d7c06c790667c9f7669 across all detection systems
  • Deploy detection for .NET assemblies containing GUID ab88dfb2-73aa-4da1-bf05-e72424ad8034
  • Report staging server 96.44.159.218 to HostPapa abuse (still serving live payloads)
  • Report C2 216.250.249.222 to SpinServers abuse (abuse@spinservers.com)
  • Enable PowerShell Script Block Logging if not already active

Medium-term (1-3 months)

  • Monitor 216.250.249.0/24 for new C2 deployment (adjacent IPs already suspicious)
  • Track imphash cluster for new builds (current cadence: every 2-4 days)
  • Evaluate detection coverage for rotational XOR decryption patterns in PowerShell
  • Implement ASR rules blocking WScript from spawning PowerShell
  • Monitor MalwareBazaar for new RemcosRAT samples tagged with the same reporter chain

References


Published by Breakglass Intelligence. Investigation conducted 2026-03-10. 4 stages deobfuscated. 10 related builds clustered. 3 infrastructure IPs mapped. 1 license hash that ties it all together. Classification: TLP:CLEAR

Share