#threatreport #LowCompleteness
JitterDropper | 14-04-2026
Source:
research.openanalysis.net/ji…
Key details below ↓
💀Threats:
Jitterdropper, Donut, Vidar_stealer,
📚TTPs:
⚔️Tactics: 1
🛠️Technics: 0
🤖LLM extracted TTPs:`
T1027.009, T1105, T1140, T1497.003, T1620, T1622
🧨IOCs:
- Domain: 1
- Hash: 9
- File: 2
- Url: 1
💽Software: pixeldrain
🔢Algorithms: xor, bcrypt, aes-256-gcm, aes-gcm
🔠Functions: Sleep
🗂️Win API: InternetOpenA, StringFromGUID2, CoGetObject, CoUninitialize, CreateRemoteThread, VirtualAlloc, VirtualProtect, CheckRemoteDebuggerPresent, IsDebuggerPresent, RegisterClassExA, ...
📜Programming Languages: rust
#threatreport:
JitterDropper is a new Windows dropper written in Rust and MSVC, identified in development since March 2026, with multiple builds analyzed across two main variants. The first variant embeds a payload within its .rdata section, utilizing a multi-pass decryption process to produce a Donut shellcode loader with an embedded Portable Executable (PE). The second variant features a more compact stager that downloads a 122-byte encrypted shellcode blob from
pixeldrain.com, decrypting it with a single SSE-32 repeating XOR key. All builds are compiled with the consistent Rust 1.92.0 MSVC toolchain.
The dropper implements several anti-analysis techniques to evade detection. It incorporates a pair of inline checks, CheckRemoteDebuggerPresent and IsDebuggerPresent, exiting quietly if either is triggered. The GUI executable does not engage in message pumping, as it creates a window with randomized class and title strings. Additionally, it employs a stalling loop with EnumWindows to delay execution and uses a wall-clock padder to defeat time-compressed environments, implementing random sleep durations with conditional exit points based on elapsed time checks.
One notable feature of JitterDropper is the "jitter-budget-per-API" fingerprint, which distinguishes it from other Rust programs. The unique selection of the Lemire divisor for each API's random sleep duration is consistent across builds, contrasting with unrelated Rust samples that show uniform sleep behavior. This specific per-API choice indicates a deliberate design choice by the author, enhancing its detection evasion tactics.
In terms of decryption mechanisms, the first variant details a complex three-pass decryption process that includes a series of byte-XOR operations, multiple iterations of SSE permutations, and a final repeating key XOR to extract approximately 675 KB of raw shellcode. The identified shellcode contains a reflective loader and leads into an inner PE, which appears to be affiliated with either a .NET stealer or the Vidar family of malware. Conversely, the second variants’ shellcodes attempting to retrieve from
pixeldrain.com were inaccessible at the time of analysis, limiting further evaluation of their contents.