Threat Response Unit

Unpacking ShadowCoil’s (RansomHub Ex-affiliate) Credential Harvesting Tool

Attacks/Breaches

Threat Intelligence

Threat Response Unit

TRU Positive/Bulletin

eSentire Threat Response Unit (TRU)

July 30, 2025

6 MINS READ

Adversaries don’t work 9-5 and neither do we. At eSentire, our 24/7 SOCs are staffed with Elite Threat Hunters and Cyber Analysts who hunt, investigate, contain and respond to threats within minutes.

We have discovered some of the most dangerous threats and nation state attacks in our space – including the Kaseya MSP breach and the more_eggs malware.

Our Security Operations Centers are supported with Threat Intelligence, Tactical Threat Response and Advanced Threat Analytics driven by our Threat Response Unit – the TRU team.

In TRU Positives, eSentire’s Threat Response Unit (TRU) provides a summary of a recent threat investigation. We outline how we responded to the confirmed threat and what recommendations we have going forward.

Here’s the latest from our TRU Team…

What did we find?

In late July 2025, eSentire's Threat Response Unit (TRU) detected threat actors utilizing the SocGholish malware (also known as FakeUpdates) to harvest system information and deploy a python-based Google Chrome/Microsoft Edge password-stealing tool.

Through further investigation, TRU assesses with medium confidence that this tool is connected to prior affiliates of RansomHub, a Ransomware-as-a-Service group that first emerged in February 2024, only to close shop in April 2025. With these insights, TRU began tracking ex-affiliates, naming this particular affiliate ShadowCoil.

For additional information regarding RansomHub affiliates, please see our previous TRU Positive here and The Hacker News’s article here.

In this TRU Positive, we provide insights into ShadowCoil’s new password stealing tool, and provide an unpacking tool for security researchers to automate the unpacking process of files packed by the packer shown in Figure 2 below.

Figure 1 – Unpacking tool usage
Figure 1 – Unpacking tool usage

Chrome/Edge Stealer Analysis

At first glance, TRU suspected the python script, available in VirusTotal for download here, to be the backdoor we had previously reported on, as it is packed by the same packer identified in prior RansomHub affiliate incidents, however upon further analysis we identified it to be a new tool that harvests passwords from victim Google Chrome and Microsoft Edge browsers.

The steps described below explain the recursive unpacking process and the figure displays a truncated portion of the initial stage:

Base85

AES-256 (GCM)

AES-128 (CTR)

ChaCha20

HKDF/Blake3/XOR

ZLIB Inflation

The figure below displays a truncated portion of an example stage, where the next stage is decrypted via Base85 -> (RANDOM ORDER of: HKDF/Blake3/XOR, AES-256 GCM, ChaCha20, ES-128 CTR) -> ZLIB Inflate.

Figure 2 – Packed python stealer
Figure 2 – Packed python stealer

After decrypting the packed script and reaching the core python script, several functions stand out. These functions are responsible for enumerating directories matching “User Data” for Google Chrome and Microsoft Edge.

After finding matches, it proceeds to extract/decrypt the encrypted master key and decrypt stored usernames, passwords, and associated URLs from the Local State file.

Figure 3 – Main function, enumerate/decrypt passwords from Chrome/Edge
Figure 3 – Main function, enumerate/decrypt passwords from Chrome/Edge

The figure below displays the get_master_key function, which serves to parse each browser’s Local State file, a JSON formatted database that stores the encrypted master key as a base64 blob. The master key is extracted by base64 decoding it and calling the DPAPI CryptUnprotectData to decrypt it, resulting in the decrypted master key.

Figure 4 – get_master_key function that extracts and decrypts the master key
Figure 4 – get_master_key function that extracts and decrypts the master key

The next figure displays the decrypt_logins_db function. This function is responsible for parsing each browser's SQlite formatted Login Data file. This file contains a SQL table named logins that stores saved web browser usernames, passwords, and associated URLs. The tool first copies this file to a temporary directory, then enumerates over the table and calls the decrypt_blob function for each password value to decrypt it.

Figure 5 – decrypt_logins_db function that calls decrypt_blob function for each password
Figure 5 – decrypt_logins_db function that calls decrypt_blob function for each password

The decrypt_blob function’s code can be seen next, which takes the encrypted password value and decrypted master key as arguments, and uses different decryption algorithms to decrypt the encrypted password depending on browser version. Each victim username, decrypted password, and associated URL are printed to the screen by the script.

Figure 6 – decrypt_blob function that decrypts password with master key or legacy DPAPI only
Figure 6 – decrypt_blob function that decrypts password with master key or legacy DPAPI only

Yara Rule

The following Yara rule can be used to detect or hunt for python scripts packed by the packer shown in Figure 2 above.

rule ShadowCoil_Packed_Python
{
    meta:
        author = "YungBinary"
        description = "Detects packed/python RansomHub ex-affiliate tools"
        target_entity = "file"
    strings:
        $a = "exec(pc_start(" ascii
        $b = "get_hw_key():" ascii
        $c = "'vm', 'virtual'" ascii
        $d = "TracerPid:" ascii
    condition:
        all of them
}

What did we do?

What can you learn from this TRU Positive?

Recommendations from the Threat Response Unit (TRU):

Indicators of Compromise

References

To learn how your organization can build cyber resilience and prevent business disruption with eSentire’s Next Level MDR, connect with an eSentire Security Specialist now.

GET STARTED

ABOUT ESENTIRE’S THREAT RESPONSE UNIT (TRU)

The eSentire Threat Response Unit (TRU) is an industry-leading threat research team committed to helping your organization become more resilient. TRU is an elite team of threat hunters and researchers that supports our 24/7 Security Operations Centers (SOCs), builds threat detection models across the eSentire XDR Cloud Platform, and works as an extension of your security team to continuously improve our Managed Detection and Response service. By providing complete visibility across your attack surface and performing global threat sweeps and proactive hypothesis-driven threat hunts augmented by original threat research, we are laser-focused on defending your organization against known and unknown threats.

Back to blog

Take Your Cybersecurity Program to the Next Level with eSentire MDR.

BUILD A QUOTE

Read Similar Blogs

EXPLORE MORE BLOGS