94682a961e8a61b5a4b34e689de98f0a89b5e8c75bdfc493ed796c29a6b03536chromeloader-pulsar-rat: 94682a96 — Pulsar.Common v2.4.5.0 stealer/RAT with MessagePack C2
Executive Summary
A .NET Framework PE32 binary (~1.35 MB) mislabelled usfile by upstream triage. Static evidence overwhelmingly identifies it as a ChromeLoader / Pulsar variant — a modular .NET RAT/infostealer with embedded Pulsar.Common.dll v2.4.5.0, MessagePack-serialized C2, and a deep capability suite spanning browser credential theft, crypto-wallet draining, audio/video surveillance, process injection, and multi-channel exfiltration (Discord, Telegram, FTP). The usfile label is an OpenCTI artifact (us.file tag misread as a family name); no other sample in the corpus carries it.
What It Is
| Field | Value |
|---|---|
| SHA-256 | 94682a961e8a61b5a4b34e689de98f0a89b5e8c75bdfc493ed796c29a6b03536 |
| Size | 1,355,472 bytes (1.29 MB) ^[file.txt] |
| Type | PE32 executable (GUI) Intel 80386 Mono/.Net assembly, 3 sections ^[file.txt] |
| Compiler | .NET Framework (IL only, metadata version 2.0) ^[pefile.txt] |
| Obfuscation | None applied to outer binary; inner payload uses AES-XOR layered encryption (AesxorModule) ^[strings.txt:4322] |
| Packing | Costura.Fody dependency embedding (compressed DLLs in .rsrc) ^[strings.txt:1294-1302] |
| Signed | No ^[pefile.txt] |
Family ascription: High-confidence chromeloader-pulsar-rat. Dominant class names include ChromeLoader.AesxorModule, ChromeLoader.Program, PulsarMessagePackSerializer, Pulsar.Common.Messages.*, and Pulsar.Common.Networking. ^[strings.txt:6537-6538,6720,8569-8571] The embedded assembly manifest lists Pulsar.Common, Version=2.4.5.0 ^[strings.txt:1302]. Twin sample ca687401 (ssdeep near-match) shares the identical build fingerprint.
How It Works
Build / RE Lens
Toolchain: Pure C# / .NET Framework 4.x, compiled with csc.exe or Visual Studio. No native compiler fingerprints in the PE — entirely IL. Debug build attributes are present (capa flags DebuggerNonUserCodeAttribute), but these are likely compiler artifacts rather than intentional evasion. ^[capa.txt]
Packing / embedding: Costura.Fody compresses nine dependency DLLs into .rsrc and extracts them at runtime: MessagePack.dll (v3.1.4.0), MessagePack.Annotations.dll, System.Buffers, System.Collections.Immutable, System.Memory, System.Numerics.Vectors, System.Runtime.CompilerServices.Unsafe, System.Threading.Tasks.Extensions, and Pulsar.Common.dll (v2.4.5.0). ^[strings.txt:1294-1302,3638-3646]
Anti-analysis: Capa identifies a broad anti-analysis surface:
- Debugger detection:
CheckRemoteDebuggerPresent,NtQueryInformationProcess(ProcessDebugPort/ProcessDebugFlags),GetTickCounttiming checks,WudfIsAnyDebuggerPresent. ^[capa.txt] - VM detection: Strings referencing Parallels, QEMU, VMware, VirtualBox. ^[capa.txt]
- Parent PID spoofing (
CreateProcesswithPROC_THREAD_ATTRIBUTE_PARENT_PROCESS). ^[capa.txt] - Self-deletion via COMSPEC environment variable. ^[capa.txt]
Notable functions (from strings, static-only — no Ghidra decompile available):
ChromeLoader.AesxorModule+<StartPipeServerAsync>d__35— Starts a named-pipe C2 listener. ^[strings.txt:8569]ChromeLoader.AesxorModule+<ExtractAsync>d__37— Async payload extraction/decryption. ^[strings.txt:8570]PulsarMessagePackSerializer— C2 serialization layer. ^[strings.txt:6720]StealthInjector— Process injection helper. ^[strings.txt:6830]ReflectiveLoader/FindReflectiveLoader/FindReflectiveLoaderOffset— Reflective DLL injection. ^[strings.txt:375,6538,7647]
Deploy / ATT&CK Lens
| TTP | Technique | Evidence |
|---|---|---|
| Persistence | T1547.001 — Registry Run | DoStartupItemAdd, DoStartupItemRemove, StartupInformation, GetStartupItemsResponse ^[strings.txt:3556,4868,5974,4673] |
| Persistence | T1053.005 — Scheduled Task | schtasks creation capability flagged by capa. ^[capa.txt] |
| Persistence | T1546.001 — Default File Association | Capa: "persist via default file association registry key". ^[capa.txt] |
| Credential Access | T1555.005 — Password Managers | KeePass theft via KeeFarce; DecryptPassword, MasterPassword fields. ^[capa.txt, strings.txt:3578-3590] |
| Credential Access | T1555.003 — Browser Credentials | GetChromeWallets, GetGeckoWallets, chrome_decrypt.dll, chrome_decrypt_lite.dll. ^[strings.txt:7450-7451,5542,374] |
| Credential Access | T1555 — Password Stores | PasswordData, DecryptCoreFtpPassword, CryptoTab token grabber. ^[strings.txt:3275,3945,179] |
| Collection | T1115 — Clipboard Data | check clipboard data, monitor clipboard content, Pulsar.Common.Messages.Monitoring.Clipboard. ^[capa.txt, strings.txt:3932] |
| Collection | T1056.001 — Keylogging | log keystrokes via application hook and polling. ^[capa.txt] |
| Collection | T1113 — Screen Capture | capture screenshot, VideoCaptureDevice, capturedFrame. ^[capa.txt, strings.txt:3987,4496] |
| Collection | T1123 — Audio Capture | GetMicrophoneDevice, WasapiCapture, WasapiLoopbackCapture, NAudio.WinMM. ^[strings.txt:3986,4631-4632,2695] |
| Collection | T1213 — Data from Info Repositories | FilesGrabber, TokensGrabber. ^[strings.txt:6514-6515] |
| Defense Evasion | T1620 — Reflective Code Loading | ReflectiveLoader, FindReflectiveLoader, StealthInjector. ^[capa.txt, strings.txt:375,6538,6830,7647] |
| Defense Evasion | T1055.001 — DLL Injection | InjectDll, InjectCrossArch, InjectVia64BitHelper. ^[capa.txt, strings.txt:5518,5132,6657] |
| Defense Evasion | T1055.003 — Thread Hijacking | Capa: "Thread Execution Hijacking". ^[capa.txt] |
| Defense Evasion | T1134.004 — Parent PID Spoofing | Capa match. ^[capa.txt] |
| Defense Evasion | T1622 — Debugger Evasion | Multiple debugger checks. ^[capa.txt] |
| Defense Evasion | T1497 — VM/Sandbox Evasion | Anti-VM strings + system checks. ^[capa.txt] |
| Defense Evasion | T1070.004 — File Deletion | DeleteFile (13 matches), self-deletion. ^[capa.txt] |
| Defense Evasion | T1562.001 — Disable Security Tools | Capa: "Disable or Modify Tools". ^[capa.txt] |
| Execution | T1129 — Shared Modules | CreateRemoteThread, ResumeThread, VirtualAllocEx, WriteProcessMemory. ^[strings.txt:3531,3529,8178,8436] |
| Discovery | T1082 — System Info | GetSystemInfo, WMI queries, SystemInformation. ^[capa.txt, strings.txt:6299] |
| Discovery | T1016 — Network Config | get networking interfaces, list TCP connections. ^[capa.txt] |
| Discovery | T1083 — File/Directory Discovery | Capa (48 file-enumeration matches). ^[capa.txt] |
| C2 | T1071 — Application Layer Protocol | Named-pipe IPC (NamedPipeServerStream, PipeStream, GenerateUniquePipeName). ^[strings.txt:5619,5612,4383] |
| C2 | T1095 — Non-Standard Protocol | MessagePack-serialized objects over TCP socket. ^[capa.txt, strings.txt:6720] |
| Exfiltration | T1041 — Exfil Over C2 | Discord, Telegram, FTP client names (FTPRush, FTPCommander, FTPGetter, FTPNavigator). ^[strings.txt:3939,5632,5169,6556,6715,6811] |
| Impact | T1496 — Resource Hijacking | Resource Hijacking flagged by capa. ^[capa.txt] |
Crypto / traffic encryption: AesxorModule suggests AES + XOR layering. ChaCha20Poly1305 referenced in the HandleXoriumSteal async handler. ^[strings.txt:1983] EncryptTraffic / EncryptNonEnc toggles observed. ^[strings.txt:3398-3408] Base64 encoding/decoding (26 capa matches). ^[capa.txt]
Browser target scope: Chrome, Firefox (Gecko), Yandex, CryptoTab, and generic TokenRestore for Discord/Telegram session tokens. ^[strings.txt:7450-7451,1583,1548,3939,5632]
Email client targets: Outlook, FoxMail. ^[strings.txt:5411,5504]
Mutex / gating: CreateMutexA, MutexControl. ^[strings.txt:2253,5569,8246]
Registry abuse: Full remote-registry capability — create, rename, delete, change values; DoChangeRegistryValue, DoDeleteRegistryValue, etc. ^[strings.txt:4844-4847,4684-4686]
C2 Infrastructure
No hardcoded URLs, IPs, or webhook endpoints recovered in static strings. C2 configuration is likely:
- Runtime-decrypted from an embedded resource or overlay by
AesxorModule, or - Passed via the named-pipe bootstrap (
StartPipeServerAsync→GenerateUniquePipeName).
Static artifacts that point to C2 shape:
PulsarMessagePackSerializer— MessagePack-framed commands. ^[strings.txt:6720]NamedPipeServerStream+PipeStream+PipeOptions— inter-process / inter-host pipe transport. ^[strings.txt:5619,5612,7270]System.Net.Sockets.TcpClientimplied by capa TCP socket matches. ^[capa.txt]- HTTP client surface:
set HTTP User-Agent,set web proxy,create HTTP request,receive HTTP response. ^[capa.txt]
Interesting Tidbits
- "usfile" is a ghost: The only sample in the entire corpus tagged
usfile. The OpenCTI labelus.file(a geographic tag) was misinterpreted by the triage pipeline as a family name. ^[metadata.json] - Twin sample:
ca687401049c4fae9fc3d278008361f470f79dcdc20fda5e9e4c482d2a9c7df7has an ssdeep hash differing by only the first character (0fedx...vs8fedx...), indicating a near-identical build — likely same source, different build configuration or recompilation. - Related sample:
ed94635a2348ca2e8c9c53a46336b14be509ce0a19c2521d50f9976470096ab1also containsPulsarMessagePackSerializer, confirming a broader cluster. - HVNC / Remote Desktop:
Pulsar.Common.Messages.Monitoring.HVNCandRemoteDesktopclasses suggest hidden-VNC remote control. ^[strings.txt:2303,6422] - "FunStuff" module:
Pulsar.Common.Messages.FunStuff— possibly prank/denial-of-service features (mouse swap, CD-ROM manipulation, wallpaper change, monitor power-down). ^[strings.txt:4952, capa.txt] - BCrypt usage:
BCryptDecryptfor DPAPI-like key unwrap, plusencrypt data using DPAPI(4 capa matches). ^[capa.txt, strings.txt:386] - No CAPE detonation: No Windows guest available at time of triage; all TTPs inferred from static strings + capa.
How To Mess With It (Homelab Replication)
Toolchain: Visual Studio 2022, .NET Framework 4.8, C# console/WinForms app. Pattern: Build a C# RAT with:
Costura.FodyNuGet package to embedMessagePack.dlland customPulsar.Common.dll.NamedPipeServerStreamfor local IPC.TcpClient+MessagePackSerializerfor remote C2.System.Diagnostics.ProcesswithCreateProcess+PROC_THREAD_ATTRIBUTE_PARENT_PROCESSfor PID spoofing.DllImportonkernel32.dllforVirtualAllocEx,WriteProcessMemory,CreateRemoteThread.- Browser credential theft via
System.Data.SQLiteon ChromeLogin Data+CryptUnprotectDataP/Invoke. - Clipboard hook via
AddClipboardFormatListener.
Verification: Compile and run capa — should hit communication/named-pipe/create, communication/socket/tcp, collection/screenshot, collection/keylog, defense-evasion/process-injection, and discovery/system-information.
What you'll learn: How commodity .NET RATs blend legitimate .NET networking primitives with trivial P/Invoke to achieve full surveillance and injection — and why EDR needs to monitor .NET runtime behavior, not just native imports.
Deployable Signatures
YARA Rule
rule ChromeloaderPulsar_RAT
{
meta:
description = "ChromeLoader / Pulsar .NET RAT with Pulsar.Common v2.4.5.0"
author = "PacketPursuit"
date = "2026-07-15"
hash = "94682a961e8a61b5a4b34e689de98f0a89b5e8c75bdfc493ed796c29a6b03536"
family = "chromeloader-pulsar-rat"
strings:
$pulsar_common = "Pulsar.Common" ascii wide
$pulsar_msgpack = "PulsarMessagePackSerializer" ascii wide
$chrome_loader = "ChromeLoader" ascii wide
$aesxor_module = "AesxorModule" ascii wide
$start_pipe = "StartPipeServerAsync" ascii wide
$stealth_inject = "StealthInjector" ascii wide
$reflective = "ReflectiveLoader" ascii wide
$msgpack_v = "costura.messagepack.dll.compressed" ascii wide
$pulsar_dll = "costura.pulsar.common.dll.compressed" ascii wide
$tokens_grab = "TokensGrabber" ascii wide
$files_grab = "FilesGrabber" ascii wide
$chrome_wallet = "GetChromeWallets" ascii wide
$gecko_wallet = "GetGeckoWallets" ascii wide
$chrome_decrypt = "chrome_decrypt.dll" ascii wide
condition:
uint16(0) == 0x5a4d and
( $pulsar_common or $chrome_loader ) and
( $reflective or $stealth_inject or $start_pipe ) and
( $tokens_grab or $files_grab or $chrome_wallet )
}
Behavioral Hunt Query (Sigma-like)
title: ChromeLoader Pulsar Named Pipe C2 and Injection
logsource:
product: windows
detection:
selection_pipe:
- Image|endswith: '\ChromeLoader.exe'
- CommandLine|contains:
- 'NamedPipeServerStream'
- 'GenerateUniquePipeName'
selection_inject:
- CallTrace|contains:
- 'VirtualAllocEx'
- 'WriteProcessMemory'
- 'CreateRemoteThread'
- TargetImage|endswith:
- '\svchost.exe'
- '\explorer.exe'
- '\RuntimeBroker.exe'
selection_registry:
- EventType: SetValue
- TargetObject|contains:
- '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'
- Details|contains:
- 'ChromeLoader'
- 'Pulsar'
condition: 1 of selection*
falsepositives:
- Unknown
level: high
IOC List
| Type | Value | Notes |
|---|---|---|
| SHA-256 | 94682a961e8a61b5a4b34e689de98f0a89b5e8c75bdfc493ed796c29a6b03536 |
Primary sample |
| SHA-256 | ca687401049c4fae9fc3d278008361f470f79dcdc20fda5e9e4c482d2a9c7df7 |
Near-identical twin |
| SHA-256 | ed94635a2348ca2e8c9c53a46336b14be509ce0a19c2521d50f9976470096ab1 |
Related cluster member |
| ssdeep | 24576:0fedx38vxbIRxJzck+uGW/yFoBkkAxg2jciKRlMobAe:0fex33RTYjqqanRaqRlM |
Primary |
| ssdeep | 24576:8fedx38vxbIRxJzck+uGW/yFoBkkAxg2jFjHmGOpy+X9zAE5Fw:8fex33RTYjqqanRaXOQ+ |
Twin |
| Mutex | MutexControl |
Observed in strings |
| Pipe name | GenerateUniquePipeName |
Dynamic pipe generation |
| Registry | HKCU\Software\Microsoft\Windows\CurrentVersion\Run |
Startup persistence |
| File | chrome_decrypt.dll |
Embedded browser decryption module |
| File | chrome_decrypt_lite.dll |
Lite variant |
| Module | Pulsar.Common.dll v2.4.5.0 |
Core framework DLL |
| Module | MessagePack.dll v3.1.4.0 |
Serialization layer |
Detection Signatures (capa → ATT&CK)
See capa.txt for 330+ capability matches. Key mappings summarized in the Deploy / ATT&CK table above. Notable dense clusters:
- Communication: 6×
receive data, 6×send data, TCP socket, named-pipe creation, HTTP request/response. ^[capa.txt] - Process injection: DLL injection, thread hijacking, reflective loading,
VirtualAllocEx+WriteProcessMemory+CreateRemoteThread. ^[capa.txt] - Collection: Screenshot (2), keylog (3), clipboard (4), password manager (KeeFarce), audio/video capture. ^[capa.txt]
- Anti-analysis: Debugger checks (5), VM checks (4), parent-PID spoofing, self-deletion. ^[capa.txt]
References
- Sample source: OpenCTI / MalwareBazaar (artifact
417ddd89-deff-4da7-98e3-a0eb5ed78baf) - Twin sample:
ca687401049c4fae9fc3d278008361f470f79dcdc20fda5e9e4c482d2a9c7df7 - Related sample:
ed94635a2348ca2e8c9c53a46336b14be509ce0a19c2521d50f9976470096ab1 - Entity page: chromeloader-pulsar-rat
- Distribution label: gcleaner
Provenance
file.txt— file type and headerpefile.txt— PE structure, imports, sectionsstrings.txt— .NET metadata strings, class names, method namesfloss.txt— decoded stacked strings (minimal additional findings)capa.txt— Mandiant capa v7 static capability detectionbinwalk.txt— embedded file signaturesrabin2-info.txt— radare2 binary headermetadata.json— OpenCTI labels and provenancetriage.json— original (incorrect)usfilefamily label
Report generated 2026-07-15. Static-only analysis; no dynamic execution data available.