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.

    Managed ISPM

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

    Managed ISPM

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

    Managed ESPM

    Proactively secure endpoints against attacks.

    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
    Infostealers
    Infostealers
    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
From W-2 to BYOVD: How a Tax Search Leads to Kernel-Mode AV/EDR Kill
Published:
March 19, 2026

From W-2 to BYOVD: How a Tax Search Leads to Kernel-Mode AV/EDR Kill

By:
Anna Pham
Share icon
Glitch effectGlitch effectGlitch effect
Table of Contents
Down arrow

Background 

As the saying goes, only two things are guaranteed in life: death and taxes. But, with the April 15 tax filing deadline quickly approaching, there's a third guarantee that threat actors have learned to count on: millions of users searching for the same tax forms, under time pressure, trusting the first Google result they see.

During retrospective threat hunting, the Huntress Tactical Response team recently uncovered a large-scale malvertising campaign that has been active since at least January 2026, targeting U.S.-based individuals searching for tax-related documents. The lures are specifically U.S. tax forms (W-2, W-9), and the fake landing pages reference IRS compliance, casting a wide net across employees, freelancers, contractors, and small businesses during filing season. The campaign abuses Google Ads to serve rogue ScreenConnect (ConnectWise Control) installers, ultimately delivering a BYOVD EDR killer that drops a kernel driver to blind security tools before further compromise. Across our customer base, we reported over 60 instances of rogue ScreenConnect sessions tied to this campaign being used as the initial access vector.

The attack chain is layered: dual commercial cloaking services filter out researchers and scanners, trial ScreenConnect instances provide hands-on-keyboard access, a multi-stage crypter evades AV with a 2GB memory allocation trick, and the final payload abuses a previously undocumented Huawei audio driver to terminate Defender, Kaspersky, and SentinelOne processes from kernel mode.

Beyond the tax-themed lures, the threat actor's exposed open directory also revealed a fake Chrome update page with Russian-language JavaScript comments, suggesting a broader social engineering toolkit and a Russian-speaking developer. Evidence from a second intrusion reveals the likely end goal: after blinding the EDR, the attacker immediately pivoted to LSASS credential dumping and mass lateral credential harvesting across the network using tools like NetExec. These tactics are consistent with a pre-ransomware or initial access broker playbook, indicating the threat actor is either building toward ransomware deployment or monetizing network access through resale to other operators. In this blog, we break down every layer.


Key takeaways

  • Google Ads is still trending. The entire kill chain starts with a sponsored search result. No exploit kit, no phishing email - just a Google Ad from “W2 tax form” and “W-9 Tax Forms 2026” searches that looks indistinguishable from a legitimate result. Malvertising has become the initial access vector of choice for campaigns like this because it scales effortlessly and targets users at the exact moment they are looking for something.

  • Cloaking makes takedowns a cat-and-mouse game. The dual-layer cloaking setup (JustCloakIt server-side + Adspect client-side) means Google's own ad reviewers, security scanners, and researchers all see a clean page. Only real victims with real browsers on real hardware get the payload. As long as services like Adspect openly market “no content rules” for $299/month, malvertising campaigns will keep slipping through platform review.

  • Stacking RMM tools signals persistence, not convenience. When multiple ScreenConnect relays and backup tools like FleetDeck appear on the same host within hours, it's not a coincidence, it's an attacker building redundancy into their access. This campaign consistently deployed two or three relay instances per host across different organizations, ensuring they could survive partial remediation.

  • BYOVD isn't just for APTs. This campaign shows commodity threat actors using a previously undocumented signed driver to kill EDR from kernel mode. The attackers didn't need to find a zero-day, they just needed a signed driver with a careless IOCTL handler.

  • The tax lure is just one page in the playbook. The same operator's open directory revealed a fake Chrome update page alongside the tax-themed lures, both pulling payloads from the same 4sync infrastructure. Russian-language comments in the JavaScript source suggest a Russian-speaking developer. This is not a single-campaign operation; the shared infrastructure and multiple social engineering templates point to an operator running parallel lure campaigns adapted to whatever gets clicks.


How it happened

The user searched for “W2 tax form,” and the top result was a Google Ads link that redirected to a malicious page serving a rogue ScreenConnect installer. The browser history reveals the redirect chain: the Google Ads click landed on anukitax[.]com/forminw9/, which then redirected to bringetax[.]com/humu/, the actual rogue ScreenConnect delivery page. The payload itself was hosted on 4sync, a file-sharing platform. At the time of analysis, the page was no longer delivering payloads, but the threat actor left the directory open, giving us some insights.

Figure 1: Rogue ScreenConnect delivery page


Fake browser update lure

Browsing the open directory also revealed a fake Chrome update page hosted at grinvan[.]com/vims/browser/. This page is unrelated to the tax-themed lure but appears to be part of the same operator's toolkit. The page presents a convincing Google Chrome update prompt, telling the victim "To CONTINUE you need to update your browser" and walking them through a three-step process: click "Update Chrome," find the download, and "unzip updater.zip and run updater.exe."

Under the hood, the page pulls its payload from the same 4sync file-sharing platform used in the tax campaign. When the victim clicks the update button, the JavaScript fetches the victim's IP address and geolocation via ipapi.co and sends a real-time notification to the operator's Telegram bot, with the victim's IP, country, and referring URL, giving the threat actor immediate visibility into each successful download. The payload is then delivered silently through a hidden iframe pointing to a 4sync direct download link.

The JavaScript source contains Russian-language comments throughout, including “Файл скачан!” (File downloaded), “Ошибка получения геоданных” (Error getting geolocation data), and “Telegram уведомление отправлено” (Telegram notification sent), providing a language indicator for the developer behind this page.

Figure 2: Fake Google browser update lure



Figure 3: Russian-language comments reveal the developer's language, while the code collects the victim's IP and geolocation via ipapi[.]co and sends a real-time Telegram notification to the operator on each download


Adspect cloaking 

The exposed directory revealed the threat actor's cloaking setup. Cloaking is a technique where a malicious website shows different content depending on who's visiting—real victims see the malicious payload, while security scanners, ad reviewers, bots, and researchers see a harmless "safe page" instead. Threat actors use commercial cloaking services to keep their malvertising campaigns running longer by evading detection from platforms like Google Ads and security vendors.

In this case, the landing page uses a PHP-based Traffic Distribution System (TDS) powered by Adspect, a commercial cloaking service that has been increasingly abused by threat actors in malvertising and supply chain campaigns.

Adspect markets itself as a “bulletproof cloaking” platform that “reliably cloaks each and every advertising platform” with plans ranging from $299 to $999 per month. The service openly advertises a no-questions-asked policy, stating they “do not care what you run and do not enforce any content rules”. It supports cloaking across Google Ads, Facebook, TikTok, Bing, and others, while actively blocking security scanners, including Google Safe Browsing, VirusTotal, Kaspersky, Confiant, and GeoEdge. The platform uses JavaScript fingerprinting, TCP/IP and SSL/TLS fingerprinting, IP blacklists covering over 2 billion IPv4 addresses, and a Bayesian machine learning classifier to distinguish real victims from researchers and bots.

The index file on the landing page contains an Adspect integration script that calls out to rpc.adspect[.]net/v2/ with the stream ID f252d22c-19c3-487b-af3a-3d979b168a6d. On each visit, the script collects a fingerprint of the visitor, including browser properties, WebGL renderer info, screen dimensions, timezone offset, console behavior, touch event support, and whether the page is running inside an iframe - then POSTs it all back to the Adspect backend for a real-time verdict.

The fingerprinting payload is embedded as a base64-encoded blob inside a fake <img> tag's data-digest attribute. The image intentionally fails to load, triggering the onerror handler, which decodes and executes the JavaScript fingerprinter.

The decoded JavaScript collects a fingerprint object that includes:

  • window - enumerates all properties using Object.getOwnPropertyNames(). A real Chrome browser has a window.chrome object with sub-properties like chrome.runtime and chrome.loadTimes. Older versions of headless Chrome were missing this object entirely, and even the newer headless Chrome (post-2023) can still have subtle differences in the property list. Selenium-driven browsers also leak extra properties like cdc_ prefixed driver handles. By dumping every property name, the Adspect backend can compare the full list against known-good profiles for each browser and flag discrepancies.

  • navigator - all properties dumped, most importantly navigator.webdriver. By default, Puppeteer and Selenium set navigator.webdriver = true to indicate the browser is under automation control. While bot developers commonly patch this flag, the way they override it (e.g., via Object.defineProperty) can itself leave detectable traces compared to a browser where the property is natively undefined

  • document.documentElement.attributes - enumerates all attributes on the <html> element. Automation frameworks and browser extensions sometimes inject non-standard attributes into the DOM root (e.g., Playwright's data- attributes, or attributes added by content security tools), which wouldn't exist on a clean browser visit.

  • WebGL UNMASKED_VENDOR_WEBGL / UNMASKED_RENDERER_WEBGL - queries the GPU renderer string via the WEBGL_debug_renderer_info extension. A real machine returns its actual GPU (e.g., "NVIDIA GeForce RTX 3080"), while virtual machines and sandboxes expose software renderers like "Google SwiftShader" (Chrome's software fallback), "llvmpipe" (Mesa's CPU renderer), or "VMware SVGA 3D" — all strong indicators of an analysis environment.

  • Iframe detection - window.self !== window.top checks if the page is loaded inside an iframe. Many automated analysis sandboxes and URL scanners render pages within iframes for isolation, so this flags those environments.

  • DevTools detection - creates a function with a custom toString, passes it to console.log, and counts how many times toString gets called. In a normal browser, console.log calls toString once. But when DevTools is open, the console preview panel calls toString an additional time to render the object, so a count greater than 1 indicates someone has the inspector open and is likely analyzing the page.

The entire fingerprint is then submitted via a dynamically created hidden form POST back to the same page, where the PHP-side Adspect integration forwards it to rpc.adspect[.]net/v2/ for classification.

Based on the Adspect backend's response, the script supports a wide range of delivery actions:

  • local - serves a file directly from the server's local filesystem (the malicious payload is hosted on the same box)

  • proxy - fetches content from a remote URL via cURL and serves it to the visitor while rewriting all internal links to route through the proxy, so the visitor never sees the real backend URL

  • fetch - similar to proxy, but a simpler pass-through without URL rewriting

  • 301-308 - HTTP redirects to the target URL

  • iframe - loads the target in a full-page iframe to hide the real URL from the address bar

  • noop - returns null, letting the original safe/white page render normally as if nothing happened - this is what researchers and bots see

  • php - eval($target) for arbitrary server-side code execution, giving the operator full flexibility in what gets served to each visitor


Second cloaking layer: JustCloakIt (jcibj[.]com)

In addition to Adspect, the landing page's index.php contains a second cloaking layer. This PHP script uses character code obfuscation to hide its URL hxxps://jcibj[.]com/pcl.php.

Pivoting on jcibj[.]com in Validin reveals the connection: the TLS certificate on this domain (GoDaddy-issued, valid from 2025-05-21) covers jcibj[.]com, bjtrck[.]com, cdn.justcloakit[.]com, client.justcloakit[.]com—tying it directly to JustCloakIt (JCI), a commercial cloaking platform that has been widely used in black hat advertising. The origin server sits at 192.175.104.189 (AS 32613, Leaseweb Canada).

Figure 4: Validin passive DNS showing the TLS certificate on jcibj[.]com sharing SANs with cdn.justcloakit.com, client.justcloakit.com, and bjtrck.com

On each visit, the script POSTs visitor data to the JCI backend, including IP, User-Agent, Referer, the full query string (containing the Google Ads gclid), and a tracking cookie. The request is tied to operator ID 507798 and user ID fxv76taie649fg9qffuyg34aj. The backend responds with a verdict determining whether the visitor sees the malicious page or a safe page.

The two cloaking services are stacked in the same index.php—JCI's server-side filtering runs first, while Adspect provides client-side JavaScript fingerprinting as a second layer.


Rogue ScreenConnect and RMM activity

As noted earlier, we identified over 60 instances of rogue ScreenConnect across our customer base tied to this campaign. The case detailed here is one of many. Across different organizations, we observed a consistent pattern: the threat actor deployed multiple ScreenConnect relay instances on each compromised host, along with additional RMM tools for redundancy.

On this particular host, the initial ScreenConnect installer was delivered as form_w9.msi. A key indicator that this is a rogue instance: the relay hostname instance-itsd8c-relay.screenconnect[.]com uses the instance- prefix pattern, which is characteristic of ConnectWise's free/trial cloud instances, and the session parameters include y=Guest, the default role for trial/unmanaged setups. Legitimate enterprise deployments typically use custom domains or dedicated subdomains with named session roles.

The threat actor didn't stop at one. The timeline shows multiple ScreenConnect sessions being deployed to the same host—a second trial instance (instance-sl1mb9-relay.screenconnect.com, session ba82af8c27011f84) appeared the same day. Days later, a third ScreenConnect instance surfaced using a completely different, self-hosted relay at gripsmonga[.]sbs. This pattern of stacking multiple relays, mixing trial cloud instances, was consistent across compromised hosts in other organizations as well. Alongside ScreenConnect, the attacker also installed FleetDeck Agent as a backup RMM tool.

Shortly after, the attacker executed the payload through the ScreenConnect session:

-  C:\Windows\SystemTemp\ScreenConnect\25.9.5.9473\crypteds.exe

The file turned out to be a multi-stage crypter that ultimately decrypts and loads HwAudKiller, a BYOVD (Bring Your Own Vulnerable Driver) tool that drops a kernel driver named “Havoc” to terminate AV/EDR processes. Let’s try to figure out how the crypter is dropping the HwAudKiller driver. 

For the sake of tracking, we will name it “FatMalloc” and later you will find out why. 


A closer look into FatMalloc

Anti-analysis and indirect execution 

FatMalloc (crypted.exe) is a 64-bit MinGW binary that is shy and never calls its payload directly. Instead, the execution chain uses several evasion techniques before touching the encrypted blob.

2GB memory allocation (AV/Sandbox Evasion)

FatMalloc allocates 2GB of memory and fills it with zeros, then frees it. This serves a dual purpose. First, some sandboxes typically run with limited memory, so a 2GB allocation will likely fail and since the payload only executes inside the if (Block) branch, a failed allocation causes the malware to silently exit without ever reaching the malicious code. Second, AV engines have strict time and resource budgets when scanning files—their emulators cannot afford to simulate a memset across 2 billion bytes, so they'll time out and move on before the actual payload is reached. Now you know where the “FatMalloc” name came from. 

If the 2GB check passes, the payload marks the encrypted shellcode blob (188,837 bytes) as PAGE_EXECUTE_READWRITE.


Figure 5: FatMalloc’s 2GB memory allocation function 


timeSetEvent indirect execution

Rather than calling the shellcode directly, the crypter uses the Windows multimedia timer API to invoke it via a callback function. This is a well-known evasion technique—instead of using obvious execution methods like CreateThread pointing to RWX memory or a direct call/jmp to the shellcode address, FatMalloc passes the shellcode's address as the dwUser data parameter (4th argument) to timeSetEvent, with a small wrapper function fptc as the actual callback (3rd argument). When the timer fires after 100ms, winmm.dll invokes the fptc callback, which in turn calls the shellcode through the dwUser pointer. Security tools that monitor for direct thread creation targeting RWX regions or suspicious control flow transfers can miss this because the actual execution originates from within winmm.dll's own timer dispatch, a legitimate system DLL calling a callback, which then calls the shellcode.


Figure 6: The shellcode address is passed as user data to timeSetEvent, which invokes it indirectly through the fptc callback

This callback-based execution pattern is one of many documented variations; other malware has been observed abusing CreateThreadpoolWait, EnumDateFormats, EnumWindows, and dozens of other Windows APIs that accept function pointers as callbacks for the same purpose.


Figure 7: Snippet of the embedded shellcode


Shellcode decryption

Starting at offset 0xF4 the shellcode is XOR-encrypted. A decoder stub at the beginning of the blob handles decryption using a block-based XOR scheme: the encrypted data is divided into 32-byte blocks where the first byte of each block serves as the XOR key for the remaining 31 bytes. A value 0xFB29FB29 marks the end of the encrypted stream. The decoder runs in-place, overwriting the encrypted data with the decoded loader shellcode, then jumps directly to it.


Figure 8: XOR decoder: each 32-byte block is XOR'd with its first byte (v9), looping until the marker 0xFB29FB29



Figure 9: Snippet of the encrypted shellcode


Loader shellcode with CHOC config

The decoded shellcode resolves APIs by building strings character-by-character on the stack to evade static string detection. An amusing quirk: every API name string is prefixed with the letter “Y” (e.g., “YLocalFree”, “Ykernel32", “Yntdll”). The resolver then does string + 1 to skip past the "Y" before passing the actual API name.

Why “Y”? I have no idea. But it does successfully prevent the raw API name from sitting at the start of the stack buffer, making pattern-matching slightly harder for memory scanners. 


Figure 10: The function name is stored as “YLocalFree” and passed to mw_resolve_api, skipping the leading “Y” before calling GetProcAddress


The CHOC configuration block

The 40-byte header of the CHOC configuration block contains the magic marker, header size (0x28), compressed data size (0x21A31), and the XOR key used for decryption of the final payload.


Figure 11: CHOC configuration block


CHOC header layout:

Loading Gist...


Figure 12: Each byte is decrypted by XORing the source with the key (0x0D) plus the previously decrypted byte

After XOR decryption, the first four bytes of the decrypted buffer contain the uncompressed PE size (195,072 bytes) — this is not part of the PE itself but a size field consumed by the loader. The loader allocates a second buffer and calls RtlDecompressBuffer with format 0x102 (COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_MAXIMUM) to decompress the remaining data into the final PE.

After decompression, the loader verifies the output starts with a valid MZ header and PE signature, then maps it into memory using its built-in PE loader with relocation processing. Interestingly, the shellcode also resolves .NET CLR hosting APIs (CorBindToRuntime and CLRCreateInstance from mscoree.dll), suggesting the loader is a generic framework designed to also handle .NET assembly payloads, though in this case the final payload is a native x64 PE.


HwAudKiller 

The payload that emerges from this unpacking chain is HwAudKiller, a BYOVD (Bring Your Own Vulnerable Driver) tool designed to terminate AV/EDR processes using a legitimate signed kernel driver. The binary runs entirely in memory within the crypteds.exe process and never touches disk as a standalone file. Its PDB path, C:\Users\Administrator\Downloads\Hwk\x64\Release\HwAudKiller.pdb, confirms the developer's project name.

On execution, HwAudKiller prints “[+] Havoc Process Terminator” and attempts to open a handle to the device \\.\HWAudioX64. If the driver is not already loaded, it decrypts an embedded kernel driver (47,240 bytes) using XOR with an 8-byte rolling key (41 73 61 40 41 31 61 40), writes it to %TEMP%\Havoc.sys, and loads it as a kernel service via sc create Havoc binPath= <path> type= kernel start= demand followed by sc start Havoc.

Once the driver is loaded, HwAudKiller enters a continuous loop: it takes a snapshot of all running processes with CreateToolhelp32Snapshot, walks the process list with Process32First / Process32Next, and compares each process name against a hardcoded kill list of 23 entries. For each match, it sends the target PID to the kernel driver via DeviceIoControl with IOCTL code 0x2248DC. After each kill attempt, it verifies termination by calling OpenProcess; if the handle is invalid, the process is confirmed dead. The loop repeats with a 100ms delay, re-killing processes if they respawn.

Targeted processes:

Loading Gist...

The embedded driver: Huawei audio driver (BYOVD)

HwAudKiller embeds a legitimate, signed Huawei kernel driver that it uses to terminate protected processes from kernel mode. As of this writing, this driver does not appear in the LOLDrivers database, Microsoft's recommended driver block list, or any prior public research, making this the first documented case of this Huawei audio driver being weaponized as a BYOVD tool.

As mentioned previously, the decrypted driver is saved to disk as %TEMP%\Havoc.sys and registered as a kernel service named Havoc. The original driver filename in its version info is HWAuidoOs2Ec.sys, signed by Huawei Device Co., Ltd. The driver creates the device \Device\HWAudioDevX64 with a symbolic link at \DosDevices\HWAudioX64, which the usermode component opens as \\.\HWAudioX64. When HwAudKiller sends IOCTL 0x2248DC with a 4-byte PID as the input buffer, the driver terminates the target process from kernel mode, bypassing any usermode protections that security products rely on. Because the driver is legitimately signed by Huawei, Windows loads it without complaint despite Driver Signature Enforcement (DSE).


Inside the driver

The driver (HWAuidoOs2Ec.sys) is a kernel driver originally designed for Huawei laptop audio hardware. On initialization, it logs “[Os2EC] Enter DriverEntry” and creates the device \Device\HWAudioDevX64 with a security descriptor restricting access to SYSTEM and Administrators. 

The exploitable weakness lies in the IOCTL dispatch handler. When it receives the kill IOCTL, the handler accepts a 4-byte input buffer containing a PID, copies it via memcpy_s, and passes it directly to a kill function. This function calls ZwOpenProcess with PROCESS_ALL_ACCESS (0x1FFFFF) to obtain a kernel handle to the target, then immediately calls ZwTerminateProcess to kill it.

Figure 13: Decompiled kill function from the Huawei driver - mw_ZwOpenProcess_wrapper opens a handle to the target PID with PROCESS_ALL_ACCESS, then ZwTerminateProcess kills it, and ZwClose releases the handle. No validation is performed on the target process.


Figure 14: Huntress detection timeline showing the attack chain: the rogue ScreenConnect installer (form_w9.msi) delivered via malvertising, two trial ScreenConnect instances stacked on the same host (instance-itsd8c and instance-sl1mb9), and the FatMalloc crypter (crypteds.exe)


Uncovering another intrusion

While hunting for additional instances of the Havoc driver, we uncovered a separate intrusion where initial access appears to have been a VPN compromise, based on the activity originating from a workstation we identified as attacker-controlled. In this case, the threat actor used a different variant of HwAudKiller (internally named sent.exe, PDB path referencing a project folder called firskill: C:\Users\Administrator\Downloads\firskill\x64\Release\HwAudKiller.pdb) with an expanded kill list that adds five FortiEDR processes to the original targets.

The attack followed a rapid, hands-on-keyboard progression. After authenticating via RDP from a known malicious workstation, the threat actor executed sent.exe, which dropped the Havoc kernel driver and created the service, identical to the tax campaign variant. With the EDR killer running, the attacker moved quickly to credential harvesting: they used comsvcs.dll via rundll32.exe to dump the LSASS process memory, a well-known credential dumping technique that abuses a legitimate Windows DLL to create a minidump of LSASS.

-  cMd.ExE /Q /c for /f "tokens=1,2 delims= " %A in ('"tasklist
   /fi "Imagename eq lsass.exe" | find "lsass""') do rundll32.exe
   C:\windows\System32\comsvcs.dll, #+000024 %B \Windows\Temp\
   <random>.log full

From there, the attacker pivoted to network reconnaissance using NetScan, a network discovery tool, and prepared a list of target IP addresses. They then deployed NetExec (nxc), a post-exploitation tool, to automate mass credential dumping across the network using the lsassy and --dpapi modules, attempting to extract credentials from multiple hosts simultaneously using a compromised administrator account.

This variant's expanded kill list, which adds FortiEDR alongside the original Defender, Kaspersky, and SentinelOne targets, suggests the tool is being actively maintained and updated as the operators encounter different security products in victim environments. Notably, this build contains a bug where two process names (sentinelstaticenginescanner.exe and avpui.exe) are concatenated due to a missing null terminator, a sign of active but somewhat careless development.


What can we learn? 

This campaign illustrates how commodity tooling has lowered the barrier for sophisticated attacks. The threat actor didn't need custom exploits or nation-state capabilities, they combined commercially available cloaking services (Adspect and JustCloakIt), free-tier ScreenConnect instances, an off-the-shelf crypter, and a signed Huawei driver with an exploitable weakness to build an end-to-end kill chain that goes from a Google search to kernel-mode EDR termination.

A consistent pattern across compromised hosts was the rapid stacking of multiple remote access tools. After the initial rogue ScreenConnect relay was established, the threat actor deployed additional trial ScreenConnect instances on the same endpoint, sometimes two or three within hours, and backup RMM tools like FleetDeck. This redundancy ensures the attacker maintains access even if one relay is discovered and removed. Defenders should treat the appearance of multiple ScreenConnect instances on a single host, especially trial instances they didn't deploy, as a strong indicator of compromise.

The use of a previously undocumented Huawei audio driver (HWAuidoOs2Ec.sys) as a BYOVD weapon is particularly notable. Despite being a legitimate, signed driver from a major hardware vendor, it exposes a kernel-mode process termination IOCTL with no validation. 

The crypter's evasion techniques, a 2GB memory allocation to exhaust AV emulators, indirect shellcode execution via timeSetEvent callbacks, and a multi-layer decryption chain, show the layers of obfuscation packed into the delivery. The "Y" prefix on every API string was a fun find.

For defenders, the key detection opportunities are at the edges of this chain: rogue trial ScreenConnect instances, suspicious binaries executed from ScreenConnect's working directories (C:\Windows\SystemTemp\ScreenConnect\<ScreenConnect_version>\), the creation of a kernel service named "Havoc", and the presence of Havoc.sys in the TEMP directory.


Detection

Yara

FatMalloc

https://github.com/RussianPanda95/Yara-Rules/blob/main/FatMalloc/win_mal_fatmalloc.yar

HwAudKiller

https://github.com/RussianPanda95/Yara-Rules/blob/main/FatMalloc/HwAudKiller.yar



Recommendations

User Awareness Training: This campaign starts with a Google search. Employees should be trained to recognize that Google Ads results are not inherently trustworthy, and that top-of-page sponsored results for tax forms, government documents, and financial tools are a common malvertising vector. Training should emphasize downloading tax forms only from IRS.gov or known employer portals.

RMM Allowlisting Over Blocklisting: Rather than trying to block every malicious ScreenConnect instance, organizations should maintain an allowlist of approved RMM tools and relay hostnames. Any ScreenConnect instance not on the approved list, particularly those using trial instance-* relay patterns or y=Guest session roles, should be flagged and investigated. If your organization does not use ScreenConnect, consider blocking it entirely.

Kernel Driver Load Monitoring: Alert on kernel driver service creation (type= kernel) from non-standard paths, especially %TEMP%. The Havoc driver was loaded from the user's temp directory, which is never a legitimate location for a kernel driver. Sysmon Event ID 6 (Driver Loaded) and Event ID 7045 (Service Installed) are key data sources here.

Monitor ScreenConnect Working Directories: Executables dropped and run from ScreenConnect's working directories (C:\Windows\SystemTemp\ScreenConnect\) warrant additional scrutiny. While legitimate administrators may deploy scripts or tools through ScreenConnect sessions, unsigned or unknown binaries executed from these paths, particularly those that spawn child processes, load kernel drivers, or modify security settings should be investigated.


Indicators of compromise (IoCs)

Item

Description

anukitax[.]com

Malvertising landing page

bringetax[.]com

Rogue ScreenConnect delivery page

fioclouder[.]com

Malvertising landing page

friugrime[.]com

Rogue ScreenConnect delivery page

grinvan[.]com/vims/browser/

Fake Chrome update page with Russian-language JS

gripsmonga[.]sbs

ScreenConnect relay

instance-itsd8c-relay.screenconnect[.]com

Trial ScreenConnect relay

instance-sl1mb9-relay.screenconnect[.]com

Trial ScreenConnect relay

instance-t5sady-relay.screenconnect[.]com

Trial ScreenConnect relay

instance-vdquvd-relay.screenconnect[.]com

Trial ScreenConnect relay

instance-gcfox6-relay.screenconnect[.]com

Trial ScreenConnect relay

instance-zichgu-relay.screenconnect[.]com

Trial ScreenConnect relay

jcibj[.]com

JustCloakIt cloaking infrastructure

bjtrck[.]com

JustCloakIt cloaking infrastructure

rpc.adspect[.]net

Adspect cloaking TDS

FatMalloc (crypteds.exe)

SHA256: 8a4033425d36cd99fe23e6faef9764fbf555f362ebdb5b72379342fbbe4c5531

FatMalloc crypter delivered via ScreenConnect

form_w9.msi

SHA256: 7509365935fc1bfadba20656698d3a29051031635419043bc2bc45116106e026

Rogue ScreenConnect installer

Shellcode blob

SHA256: 2b409a265f571dccde6ef4860831c1b03d5418d1951f97925315dc5b0891da04

XOR-encrypted shellcode embedded in crypteds.exe

Decoded shellcode

SHA256: 0821661e715fe64bb39f4fece277737a48fd6839edd40ec8a4a39bf04cea8524

PE loader with CLR hosting and CHOC config

HwAudKiller

SHA256: 033f42102362a8d8d4bdba870599eb5e0c893d8fd8dd4bc2a4b446cbbeb59b99

BYOVD AV/EDR killer 

Havoc.sys

SHA256: 5abe477517f51d81061d2e69a9adebdcda80d36667d0afabe103fda4802d33db

Huawei audio driver (HWAuidoOs2Ec.sys) abused as BYOVD weapon

sent.exe

SHA256: 28278b8c85c832417f9860fe8ea3ddbb9ff1d5860317db4813227a3a52b7c7cc

BYOVD AV/EDR killer

f252d22c-19c3-487b-af3a-3d979b168a6d

Adspect stream ID

507798

JustCloakIt Operator ID

fxv76taie649fg9qffuyg34aj

JustCloakIt User ID

23323077598

Google Ads Campaign ID

CjwKCAiAj8LLBhAkEiwAJjbY7w_77TqEqgwhRsnzoadcub6GumSbP-rr2POpIASkg7p8xdcDH1kcERoCmXUQAvD_BwE

Google Click Identifier (GCLID)





















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

  • Hardening the Hypervisor: Practical Defenses Against Ransomware Targeting ESXi

    Hypervisors are a major target for ransomware attacks. Get expert guidance from Huntress on how to protect your virtualized infrastructure. Learn how to secure access, put runtime controls in place, simplify patching, and improve your recovery plans.
  • The Battle for macOS Management: MDM vs. RMM

    Explore the two primary methods for managing macOS devices, MDM (Mobile Device Management) and RMM (Remote Monitoring and Management).
  • From South Park to Curriculaville: Meet Jeff Gill, Emmy Award Winner and Huntress SAT Animator

    Get to know Jeff Gill, Emmy award-winning storyteller and Huntress Security Awareness Training animator.
  • Cybersecurity Lessons We Learned from hack_it 2020

    A recap of hack_it 2020, a virtual security training event packed with interactive exercises, malware research and analysis, and more.
  • Post-Exploitation Activities Observed from the Samsung MagicINFO 9 Server Flaw

    Huntress has verified that attackers are exploiting flaws in Samsung MagicINFO 9 Server (version 21.1050.0). Understand why MagicINFO 9 Server shouldn’t be internet-facing until a patch is available and applied.
  • Business Email Compromise via Azure Administrative Privileges

    Explore how Huntress stopped a massive business email compromise (BEC) attack targeting multiple user accounts within a single organization.
  • 90% of IT Professionals Are Confident in Cybersecurity for Remote Work (New Data)

    New data shows cybersecurity professionals are confident about their remote work safety. See the findings, plus security best practices for remote and hybrid work.
  • Threat Hunting and Tactical Malware Analysis

    Dive into the basics of threat hunting and tactical malware analysis, and learn how these two practices go hand in hand in cybersecurity.

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