Take a Product Tour Request a Demo Cybersecurity Assessment Contact Us

Blogs

The latest cybersecurity trends, best practices, security vulnerabilities, and more

Signed, sealed, injected: The mechanics of DCRat in 2026

Introduction

In early 2026, the Trellix Advanced Research Center (ARC) identified and analyzed an active DarkCrystal RAT (DCRat) campaign following a critical customer escalation. The operation relied on a judicial‑themed phishing lure, masquerading as an official “Resolución Denuncia Jurídica” (legal complaint resolution) to pressure victims into opening the attachment. Every stage of the attack required human interaction, from opening the phishing email to extracting the archive to executing the malicious components alongside trusted libraries by using DLL sideloading. In its final stage, the malware employed process hollowing to inject malicious code into a trusted system process, effectively evading detection. The end payload was DCRat, granting attackers full remote access and control. This campaign is particularly notable for legitimate, signed utility to bypass traditional security perimeters.

This blog unpacks each stage of the infection chain, revealing how attackers combine stealth, sideloading, and process injection to establish long‑term access.

Here is a refined, explanatory breakdown of the infection chain identified by Trellix ARC.

Attack kill chain

Figure 1: Attack kill chain
Figure 1: Attack kill chain

Attack kill chain view

Initial access:

This attack chain begins with a deceptive phishing email carrying an SVG attachment, a seemingly harmless vector image that hides embedded JavaScript. Once triggered, the script drops a ZIP archive containing an executable and multiple DLLs.

Figure 2: Phishing email
Figure 2: Phishing email

This is a classic example of HTML Smuggling, a technique where an attacker hides a malicious payload inside a seemingly harmless file format, in this case, an SVG file. Because SVGs are essentially XML-based image files that can execute JavaScript, they are perfect "trojan horses" for bypassing email gateways that might block .EXE or .JS files but allow .SVG files.

Execution through deception

The figure is a phishing page, masquerading as the Citizen Consultation Portal for the Colombian Judicial. The document deceives the user into initiating a download. When the user clicks anywhere on this page, they are redirected to a second page pretending the download has completed successfully. This second page provides a password (1601) to open the file, creating a false sense of legitimacy and security. In reality, this tactic is designed to trick victims into opening malware disguised as judicial documents, exploiting trust in government branding and the fear of legal matters.

Figure 3: Phishing page
Figure 3: Phishing page

Once the user clicks the page, they are redirected to a new page that states the file is being downloaded and prompts them to open it using the provided password “1601”. Upon inspecting the source code, we discovered an embedded JavaScript script containing double Base64-encoded content (figure 4: Embedded JS in SVG). The script includes function code to decode the content and uses a Blob function to reconstruct a ZIP file entirely in the browser's memory. It then saves the file as 'DOC-16-ENE-2026 RESOLUCION DENUNCIA JURIDICA.7z' in the user’s downloads folder.

Figure 4: Embedded JS in SVG
Figure 4: Embedded JS in SVG

Examining Brotli‑disguised loader and DLL sideloading strategies

Figure 5: ZIP contains decoy loader with dependent libraries
Figure 5: ZIP contains decoy loader with dependent libraries

The ZIP file contains a decoy loader along with several libraries that pretend to be Brotli components. Brotli is a modern compression algorithm created by Google and commonly used to shrink web content, so using Brotli‑style names helps the malware blend in and look harmless at first glance. These Brotli compression functions hint at hidden or compressed payloads used to obscure configuration data or secondary stages. This setup uses staged, callback‑driven loading, which means modules are loaded dynamically from unusual locations or from hidden content. That approach gives the attacker tight control over how each piece is initialized and run, while also allowing in‑memory execution that leaves fewer traces on disk.

Figure 5: ZIP contains decoy loader with dependent libraries
Figure 6: Executable with unusual Import modules hints DLL sideloading

DLL side-loading is a key approach. The decoy loader pretends to be a genuine program but intentionally includes malicious DLLs (such as libbrotlidec.dll and libbrotlienc.dll) alongside itself. When the executable is run, Windows' DLL search order resolves these deceptive Brotli libraries rather than genuine ones, allowing the attacker to execute code disguised as standard compression methods. This method challenges detection because the imports appear legitimate, but the functionality is hijacked.

The decoy loader masquerades as a legitimate executable, but examining the PE structure quickly exposes its intent. The sample DOC‑16‑ENE‑2026 RESOLUCION DENUNCIA JURIDICA.exe imports common libraries like kernel32.dll and msvcrt.dll, along with unusual modules such as libbrotlidec.dll (for decryption) and libbrotlienc.dll (for encryption). By analyzing its import directory, we can see how the executable leverages system APIs and compression routines to prepare for malicious activity, complicating detection and reverse engineering.

Persistence through registry entry

After execution, a folder is created in the user directory, inside it is dropping selfcopy with its dependency DLLs and a batch script. It also creates a run entry in the Windows Registry for persistence.

Figure 7: self copies and BAT
Figure 7: self copies and BAT


Figure 8: Run Registry key entry
Figure 8: Run Registry key entry

Runtime initialization

The following figure shows the entry point of DOC‑16‑ENE‑2026 RESOLUCION DENUNCIA JURIDICA.exe, a 64‑bit binary compiled with the VC++ compiler. Program execution begins with two benign TLS callback functions, which are part of the program’s standard initialization sequence. Once they finish, control passes to the actual entry point, where staged initialization occurs, and malicious import modules are dynamically loaded.

Figure 9: Entry point of the executable
Figure 9: Entry point of the executable

The figure shows the entry to the malicious import function. The name mimics a legitimate Brotli API to disguise harmful activity. Execution then passes to the real entry point, which calls this import and leverages DLL sideloading to load extra modules from unusual locations. This technique enables malicious code to run within a trusted process, leaving minimal traces on disk, and blending in as legitimate dependencies.

Figure 10: malicious import function entry
Figure 10: malicious import function entry

Stealth execution: From memory decryption to process hollowing

This figure below is a decryption routine where it takes input bytes from the .rdata section and uses a key to perform decryption operations (XOR and SHR) across 0xBE00 bytes, storing the output in a newly allocated address space. Once complete, the buffer reveals the MZ and PE headers of a Windows executable, meaning the payload has been fully reconstructed in memory.

Figure 11: Decryption routine
Figure 11: Decryption routine

The figure shows the data before decryption as random, unreadable bytes, and the data after decryption as clear executable content with recognizable headers like MZ and PE.

Figure 12: payload created in memory after decryption
Figure 12: payload created in memory after decryption

After the payload is decrypted in memory, the injection phase begins. The payload starts a legitimate process, “AddInProcess32.exe,” in a suspended state using CreateProcessInternalW. It then manipulates the thread’s registers with Wow64GetThreadContext and Wow64SetThreadContext, and injects its malicious code into the target process’s memory using WriteProcessMemory. Finally, ResumeThread restarts the process, which now runs the attacker’s code while appearing to be a normal Windows executable. This allows the malware to blend in with trusted system processes and execute stealthily. Here, AddInProcess32.exe is being injected. The following figure illustrates the process hollowing injection flow.

Figure 13: Process hollowing injection flow
Figure 13: Process hollowing injection flow

After injection, the malicious payload runs inside AddInProcess32.exe because the malware replaces the original code of that trusted process with its own. From the outside, it still looks like a normal Windows process, but inside it’s executing the attacker’s code. This way, the malware hides in plain sight and avoids detection.

Final payload examination

Injection has already occurred, and the malicious payload is now stealthily running within a trusted system process. From this point forward, we can examine what the decrypted end payload actually is. It is a compact .NET executable functioning as a client stub. It decrypts hidden configuration information, applies anti‑analysis and persistence techniques, and persistently attempts to establish an encrypted communication channel with its command‑and‑control (C2) server.

Figure 14: Payload details
Figure 14: Payload details

The main function begins with a delay to evade sandbox detection, then loads its settings and runs anti‑analysis checks to block debugging or security tools. It ensures only one instance runs via a mutex, may mark itself as critical to destabilize the system if killed, and installs itself for persistence. It bypasses AMSI to avoid Windows malware scanning, prevents the host from sleeping, and clears traces if running with administrator rights. Finally, it enters an endless loop, constantly attempting to reconnect and reinitialize its client socket.

Figure 15: Main function
Figure 15: Main function

The figure below shows static configuration information stored in encoded form. Each variable contains strings that appear to be Base64 or other obfuscated data, representing things like ports, host addresses, version information, installation flags, mutex values, encryption keys, and certificates.

Figure 16: Static configuration
Figure 16: Static configuration

The figure below illustrates the InitializeSettings() method, a critical routine that prepares the malware’s configuration before execution. It begins by decoding a Base64‑encoded key, which is then used to set up AES‑256 decryption. Through this process, multiple hidden settings are unlocked, including host and port details, version information, installation flags, mutex values, and anti‑analysis options. The method also generates a hardware ID (HWID) unique to the machine, decrypts the server’s signature, and reconstructs a certificate from a Base64 string. To ensure reliability, all of these values are verified with a hash check. If any step fails, the routine returns false; otherwise, it returns to confirm success and allow the client to proceed. In essence, this function ensures that sensitive configuration data remains concealed until runtime, where it is securely decrypted, validated, and ready to drive operations. When examining the mutex name “DcRatMutex_qwqdanchun,” it becomes clear that the payload belongs to the DCRAT.

Figure 17: Initializesettings()
Figure 17: Initializesettings()

The figure below shows the decrypted settings results.

Figure 18: Decrypted settings results
Figure 18: Decrypted settings results

Command and control (C2) communication routine and persistence

After configuring buffer sizes and creating a TCP socket, it chooses the server’s host and port either by retrieving them from a Pastebin link or by selecting at random from a list of predefined values. It attempts to connect if the selected host is a domain name; if not, it resolves it to IP addresses. After the client authenticates via TLS, internal buffers are ready for data transmission, and the socket is wrapped in an SSL stream to secure communication. After that, the code establishes timers for ping and keep-alive packets to continue the connection, sends an identifier to the server, and begins reading data. The figure below shows the complete process for setting up a network client.

Figure 19: InitializeClient()
Figure 19: InitializeClient()

Currently, the C2 server is down, and the payload is repeatedly attempting to connect to the attacker's machine at regular intervals. This indicates the malware remains present but inactive until its operator restores the C2. When the server is unavailable, the RAT cannot receive instructions or exfiltrate data, so it becomes idle, continuing to retry or sleep until the connection is re‑established.

Conclusion:

This DCRat campaign demonstrates how attackers blend phishing lures, DLL sideloading, and process hollowing to bypass defenses and gain remote access. By abusing trusted utilities and requiring user interaction, the operation underscores both the persistence of social engineering and the sophistication of modern malware delivery. Such attacks, which disguise malicious components as legitimate libraries, highlight the importance of stronger defensive practices. Security teams should harden their environment by strengthening application security, monitoring for anomalies in module loading, and improving visibility into in‑memory execution. General measures such as validating component integrity, correlating suspicious activity with network behavior, conducting regular threat hunting, and maintaining patch hygiene help reduce the effectiveness of malware that masquerades as legitimate software within trusted processes.

Trellix protection against DCRAT campaign: Recommended mitigation

Trellix security solutions provide layered defense against campaigns like this. Trellix Email Security blocks phishing lures and malicious attachments, stopping the attack at the initial delivery stage. Trellix Endpoint Security and EDR detect disguised files from executing and stopping in‑memory payloads. Trellix Network Security monitors and disrupts suspicious C2 traffic. Combined with ongoing user awareness, these defenses work together to reduce the risk of stealthy, multi‑stage attacks such as DCRat.

MITRE Techniques:

Technique ID Technique Name
T1036 Masquerading
T1106 Native API
T1140 Deobfuscate/Decode Files or Information
T1059.003 Command and Scripting Interpreter: Windows Command Shell
T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder
T1574.002 Hijack Execution Flow: DLL Side-Loading
T1055.012 Process Injection: Process Hollowing
T1071.001 Application Layer Protocol: Web Protocols
T1573.001 Encrypted Channel: Symmetric Cryptography
T1566.001 Spearphishing Attachment: Malicious SVG delivered via email.
T1204.002 User Execution: User opens the SVG and later the ZIP.
T1059.007 JavaScript: SVG script generates a file Blob.
T1027 Obfuscated Information: Smuggling the ZIP inside the SVG code.

Reference IOCs:

Type Sample Description
Email F205AB7E6AEFC10B9833D1A9A91BAD02 ENVIO DE RESOLUCION DENUNCIA JUDICIAL RA-093-7397.eml
SVG A3A471F1C7A605DD34AF49EF075E1251 DOC-16-ENE-2026 RESOLUCION DENUNCIA JURIDICA.svg
7Zip 13df3e065c421436bf0ac6fed3f9bb7f DOC‑16‑ENE‑2026 RESOLUCION DENUNCIA JURIDICA.7z
DLL d4bb45d3aef7a9161df4cadaeeba6a39 libbrotlienc.dll
PE Acef69c68b8c3d3c3e1e53196a26ca60 Client.exe-DCRAT Payload
IP 158[.]94[.]208[.]109 C&C

Coverage Details

ENS Generic Trojan.UKG
Generic Trojan.vu
PWS-FDHM!ACEF69C68B8C
EDR _process_dll_side_load_susp
win_suspicious_dll_sideloading
win_process_addinprocess32_launch
_process_admin_tools_no_param_addinprocess32
_process_dotnet_binary_suspicious_launch
HX Trojan.Generic.39506668
Trojan.GenericKD.78422385
Generic.mg.acef69c68b8c3d3c
NX and AX FEC_Dropper_HTML_Generic_35
FE_Backdoor_MSIL_ASYNCRAT_3 (408421)
FE_Trojan_MSIL_Generic_257| (417233)
FE_Backdoor_MSIL_Generic_32 (425354)
Suspicious ApiPatch AmsiScanBuffer Activity (11448)
Suspicious ApiPatch Activity (10062)
FE_Trojan_Win_Generic_462
FE_Trojan_Win_Generic_463
Suspicious Regkey Autorun Batch Activity

Discover the latest cybersecurity research from the Trellix Advanced Research Center.

This document and the information contained herein describes computer security research for educational purposes only and the convenience of Trellix customers.

Get the latest

Stay up to date with the latest cybersecurity trends, best practices, security vulnerabilities, and so much more.
Please enter a valid email address.

Zero spam. Unsubscribe at any time.