Introduction

WithSecure’s STINGR has been investigating a malware campaign, tracked as WEBJACK, which compromises Microsoft IIS servers to deploy malicious IIS modules belonging to the BadIIS malware family. The hijacked servers are being abused for SEO poisoning and fraud, redirecting users to casino, gambling, or betting websites. The threat actor has compromised high-profile targets, including government institutions, universities, tech firms, and many other organizations, abusing their domain reputation to serve fraudulent content through search engine results pages (SERPs).

The initial infection vector remains unknown, but prior BadIIS intrusions have leveraged vulnerable web applications, stolen administrator credentials, and access purchased from initial-access brokers. It is plausible that the WEBJACK operators used similar methods to gain control of the IIS servers before installing their custom modules.

To conduct their attack, the threat actor deployed a variety of tools and malware often circulated within the Chinese-speaking cybercriminal ecosystem. Among other indicators, this highly suggests that a Chinese-speaking threat actor is behind the operation.

WithSecure’s STINGR also noted similar operations recently reported by Talos, Unit42, and ESET. These operations share many similarities, including their objectives and TTPs, however we currently track these as related, but separate activity clusters. 

Malicious IIS Module

The core of WEBJACK lies in its IIS modules. The attacker deployed the malicious IIS modules as “fashttp.dll” (also seen as “fasthttp.dll”) and “cgihttp.dll”. Both were packed with Enigma, a commercial software protector often abused by malware operators to make reverse engineering and detection more difficult.

The DLLs export a “RegisterModule” function which serves as the entry point for IIS native modules. Inside “RegisterModule”, the module registers a factory that returns instances of a class derived from “CHttpModule” to handle incoming HTTP requests, the same pattern documented in earlier BadIIS activities. The decompiled code also shows the module constructing the attacker-controlled URL used for page injection and redirector logic. While “RegisterModule” is common to legitimate IIS modules, the combination of this pattern and the URL construction strongly support this sample being a continuation of the BadIIS family, with only slight modifications. 

Figure 1. Portion of data segment showing the attacker controlled URL

Analysis of these BadIIS malware variants also revealed embedded Program Database (PDB) file paths and compilation timestamps dating to July 2025. Such artifacts provide useful insights into the development environment behind the campaign. The observed PDB strings include:

  • C:\Users\Administrator\Desktop\IIS\IISHijack\Release\IISHijack.pdb
  • C:\Users\Administrator\Desktop\IIS\IISHijack\x64\Release\IISHijack.pdb

 

SEO Fraud Operations

Using the malicious IIS modules described above, the operator implemented a large-scale search engine manipulation scheme. The module selectively serves attacker-controlled content to search engine crawlers while showing different response (redirects or 404s) to ordinary visitors. The objective is straightforward; the attackers aim to get fraudulent SEO-optimized content indexed across search engines under legitimate domains and then funnel real users who click those indexed links to monetized destinations such as gambling sites.

The module inspects the incoming request and branches based on request characteristics, including:

  • User-Agent – to detect crawlers (the code specifically checks for Bingbot, Googlebot, Coccocbot, and Yahoo).
  • HTTP Referer – to determine if a human visitor arrived via a search engine result.
  • Operator configuration – which determines whether the instance uses page injection, redirector, or link injection logic.

Depending on the configuration, the module behaves in one of three modes explained below.

Figure 2. Flow of WEBJACK SEO fraud.

Page Injection

In this mode, the module serves content from attacker infrastructure such as “seo[.]667759[.]com” and “w3c[.]sneaws[.]com”. Older variants encoded parameters in Base64 using the format: “URL_HOSTS.'[H]'.$_SERVER['REQUEST_URI'].'[H]VN'”. The resulting string is appended to the URL path, for example: “w3c[.]sneaws[.]/<ENCODED_BASE64>”. 

Newer variants shift to cleartext parameters, for example: “tdk[.]hunanduodao[.]com/tdk.php?domain=<REDACTED>.com&path=<REDACTED>.shtml”. If the visitor is not a crawler, the server returns a 404 response.

In many cases the module creates new pages under the compromised domain to host the injected content rather than modifying existing site pages. Serving attacker-controlled content from newly created paths helps conceal the technique by avoiding changes to the site’s visible pages where administrators and users are most likely to notice tampering.

Page injection represents the main mechanism through which the attackers achieve search engine visibility. The module delivers SEO-optimized content and backlinks only to web crawlers, ensuring that search engines index the attacker-controlled pages under legitimate domains. This approach allows the poisoned content to inherit the reputation and ranking of trusted sites, significantly increasing its visibility and likelihood of being clicked. Normal visitors, however, do not see this injected content, they receive the original page or a 404 response, keeping the manipulation hidden while the attackers benefit from the indexed traffic. These indexed results later serve as entry point for redirecting users to monetized destinations such as gambling sites. 

Figure 3. Content served to crawlers.

Redirector

In most deployments, the page injection logic extends with a redirector. The module examines the “HTTP Referer” field to determine where the visitor comes from. If the visitor arrived via Google or another search engine, the module redirects them to gambling websites. If no referrer is present, the server responds with 404.

This behavior represents the monetization phase of the operation. Once the attacker-controlled content is indexed through the page injection mechanism, real users who click those poisoned search results are seamlessly redirected to fraudulent or monetized destinations. These two staged processes, first manipulating search engine indexing, then redirecting legitimate traffic, ensure that the attackers profit from organic search visibility while keeping the underlying compromise hidden from site owners and casual visitors.

By only redirecting users that originates from search results, the threat actors maintain a low operational footprint, reducing the likelihood of detection by administrators manually visiting their websites. 

Link Injection

In this configuration, the module retrieves a randomized daily link list from the threat actors’ servers such as “seo[.]667759[.]com” or “google[.]sneaws[.]com/getpath” and inserts it at the top of the page, but only when a crawler visits. Non-crawler visitors simply see the original page, concealing the fraud operations entirely.

The primary purpose of this behavior is backlink generation and rank manipulation. By injecting backlinks and tailored anchor text on many otherwise reputable compromised domains, the operators attempt to transfer credibility and relevance to their attacker-controlled pages. Rotating the link list daily helps the links appear fresh and less suspicious, while distributing links across many hosts scales the effect and makes takedown more difficult. These techniques are consistent with known black-hat SEO strategies. They increase perceived authority and topical relevance, so attacker pages are more likely to appear in search results, which are then monetized through the page-injection and redirector stages.

Figure 4. Randomized link list served to crawler.

Tooling & Payloads

Beyond the malicious IIS modules, the threat actor staged a range of tools and malware on the compromised servers to conduct their post-compromise activity. These tools are widely available in China’s red-team and penetration-testing communities but have been repurposed here for malicious use:

  • XlAnyLoader – a shellcode loader used to execute “ca.bin” payload. It is unclear what “ca.bin” contained, but the loader can run any payload converted with Donut, which generates shellcode from PE files. This allows the execution of Cobalt Strike, Mimikatz, or any custom implants. The tool is actively marketed in Chinese language forums as being able to bypass popular antivirus solutions.
  • SoftEther VPN – commonly abused by threat actors in malware campaigns for remote access and tunnelling. The VPN installers dropped in this campaign were infected with the “m0yv” file infector, a parasitic virus that attaches itself to executables. This could indicate that the attackers sourced the software from a compromised repository, or that they themselves were already infected.
  • FScan – a popular internal network scanner used for reconnaissance, was also observed carrying the “m0yv” infection.
  • Sharp4RemoveLog – a utility written in .NET to clear all Windows event logs, typically used to erase forensic traces. 
  • CnCrypt Protect – a Chinese file-protection utility. It offers capabilities such as file and registry protection, DLL and drive interception, file redirection, port redirection, and other interception/protection features. In intrusion context it has been abused to hide malicious files and support DLL redirection to malicious DLLs, increasing the operator’s ability to conceal artifacts on compromised hosts. 
  • GoToHTTP – a HTTP-based remote-control/C2 utility, also observed carrying the “m0yv” infection.
  • Cobalt Strike beacon – observed on compromised servers. One beacon connected externally to “79[.]142[.]76[.]244”, while another instance was seen communicating with an internal IP, likely routed through SoftEther VPN.

The use of these tools reflects how penetration-testing and red-team utilities are increasingly being adopted by threat actors. Instead of developing custom malware, they rely on what is already effective, trusted, and easily available. 

Infrastructure Insights

We identified at least 112 compromised domains running IIS servers as part of this campaign, with at least 65% located in Vietnam. The remainder were spread across Latin America and Asia, with a few isolated cases identified in Europe such as France. The true number is likely higher, as additional compromised servers may not yet have been uncovered.

Figure 5. Geographic distribution of compromised IIS servers.

The affected domains spanned a mix of sectors, most notably government, education, and public service websites, suggesting the operators opportunistically compromise high-profile or high-traffic IIS servers to maximize visibility for their SEO fraud operations rather than pursuing sector-specific objectives. 

Figure 6. Pie chart showing approximate sector proportions.

During investigation, PHP error messages leaked from threat actor-controlled servers. These exposed backend file paths such as:

  • /www/wwwroot/seo[.]667759[.]com/core/urlecxcel.php
  • /www/wwwroot/google[.]sneaws[.]com/core/urlecxcel.php
  • /www/wwwroot/google2[.]sneaws[.]com/core/pdo.php

Additional errors also revealed URLs like:

  • Warning: file_get_contents(https://jkt[.]667759[.]com/serveradmin.php?Method=index&Pajax=successfml): failed to open stream: HTTP request failed!
  • Warning: file_get_contents(https://jk[.]667759[.]com/serveradmin.php?Method=index&Pajax=success): failed to open stream: HTTP request failed!
  • Warning: file_get_contents(https://jk[.]667759[.]com/serveradmin.php?Method=index&Pajax=success): failed to open stream: HTTP request failed!
Figure 7. PHP error messages exposed in Google search results.

These errors are significant because they revealed the backend architecture powering the SEO fraud and redirection systems. They also showed that the threat actors were working in a messy live environment where configuration errors exposed their infrastructure. Further analysis of several web panels linked to the infrastructure uncovered Chinese words and developer comments embedded within the panel code and HTML templates. This linguistic evidence reinforces the campaign’s Chinese nexus, aligning with the tooling and behavioral patterns observed throughout the operation.

This exposure provided valuable pivot points for mapping related infrastructure, identifying compromised victims, and tracking the operators’ border activity set.

Figure 8. Example of backend panel error message in Chinese.
Figure 9. Example of backend panel code snippet containing Chinese words.

Downstream Victimology

The injected content showed a strong focus on gambling-related keywords and regional targeting across Southeast Asia and Latin America. Keywords included bet, casino, vegas, zinga, fun88, and many others. Approximately 70% of the keywords were in Vietnamese, with the remainder in English and Spanish. 

Compromised sites, mostly educational institutions, provincial government portal, and small business websites, remained largely in their original languages, with Vietnamese and Thai pages among the most common in Asia, and Spanish pages prevalent across the Latin American infections. This reinforces the campaign’s focus on local-language SEO manipulation to attract users searching for gambling or “quick win” opportunities in their own regions.

Figure 10. Example of an SEO-poisoned search result redirecting to gambling content on a compromised website.

Attribution

The tools and operational characteristics observed in this campaign indicate a strong Chinese nexus. Tools such as XlAnyLoader, FScan, Sharp4RemoveLog, and CnCrypt Protect are of Chinese origin and widely used in both red-team and intrusion contexts.

One of the dominant threat actors engaging in such operations as highlighted in previous reporting is DragonRank. However, attribution of this activity cluster to DragonRank remains low. The group’s Telegram contact shifted from “tttseo” to “ggfa55”, as reflected on their website “ttseo66[.]com”, suggesting the DragonRank remains active. However, this campaign lacked other strong DragonRank hallmarks such as PlugX or the “mail[.]tttseo[.]com” C2 server. DragonRank also continues to openly promote its services on legitimate websites globally though SEO poisoning, while WEBJACK appears to be a narrower monetization-focused operation.

Figure 11. DragonRank website ttseo66[.]com listing “ggfa55” as its current Telegram contact.
Figure 12. Google search for “ggfa55” showing active DragonRank advertisements.

Mitigation

To mitigate the risk of IIS hijacking similar to WEBJACK, organizations should proactively monitor for unauthorized IIS modules such as “fashttp.dll” or “cgihttp.dll”. Continuous monitoring and auditing of network traffic and system logs can help surface suspicious behaviour early on, especially when servers return different content to crawlers versus regular visitors. Outbound connections to known threat actor infrastructure should also be closely tracked.  

Since the campaign made use of widely available tools like XlAnyLoader, Fscan, Sharp4RemoveLog, and CnCrypt, organizations should remain alert for their presence within enterprise environments. These tools may not always be malicious in isolation, but their deployment alongside IIS hijacking activity is a strong indicator of compromise. 

By combining proactive module checks with behavioural monitoring of both network traffic and tool usage, organizations can significantly reduce the likelihood of this activity escalating into data theft.

Conclusion

WEBJACK illustrates how IIS hijacking continues to evolve. The threat actors combined custom modules with Chinese developed red-team tools, enabling SEO poisoning, gambling traffic redirection, and effective concealment of their activities.

The campaign’s targeting reflects a deliberate focus on Southeast Asia audiences, particularly Vietnamese and Thai speakers, demonstrating how operators tailor SEO-driven operations to specific regional and language communities to maximize reach and profit. 

While WEBJACK currently appears focused on SEO fraud and gambling redirection, the use of tools such as CnCrypt Protect and XlAnyLoader shows a growing trend of leveraging legitimate security and administrative software for persistence, concealment, and post-exploitation flexibility. As with previous BadIIS campaigns, IIS hijacking continues to pose significant risks that will go beyond SEO abuse. 

Special thanks to Bert Steppe for his contributions to the investigation.

TTP

Tactics

Technique

Descriptions

Initial Access

T1190 – Exploit Public-Facing Application

Malicious native modules (fashttp.dll, cgihttp.dll) were deployed to public web servers.

Persistence

T1505 – Server Software Component

Malicious native IIS modules export “RegisterModule” and register “CHttpModule”-style handlers, persisting functionality inside IIS.

Execution

T1055 – Process Injection

XlAnyLoader used to load ca.bin (Donut-converted payloads), the loader behavior is consistent with in-memory payload execution.

Defense Evasion

T1027.002 – Software Packing

fashttp.dll and cgihttp.dll were packed with Enigma to hinder analysis and detection.

T1070.001 – Clear Windows Event Logs

Sharp4RemoveLog observed on hosts, a utility that clears security, application and system logs.

T1564.001 – Hide Files and Directories

CnCrypt Protect has features that can conceal malicious files.

Discovery

T1046 – Network Service Scanning

FScan observed on hosts for intranet reconnaissance and vulnerability discovery.

Credential Access

T1003 – OS Credential Dumping

XlAnyLoader can load Donut payloads such as Mimikatz, Cobalt Strike was also present, a potential for credential dumping.

Command & Control

T1071.001 – Web Protocols

Cobalt Strike beaconing observed. GoToHTTP was also observed on hosts.

Lateral Movement

T1572 – Protocol Tunneling

SoftEther VPN deployed on hosts, observed internal-IP command traffic and VPN artifacts consistent with traffic being tunneled/routed.

Persistence

T1574 – Hijack Execution Flow

CnCrypt Protect has features allowing DLL/drive interception and file redirection.

Indicators of Compromise (IOCs)

Type

Value

Description

IPv4 Address

79[.]142[.]76[.]244

Cobalt Strike C2 address

Domain

tdk[.]hunanduodao[.]com

IIS C2

Domain

tdk[.]jmfwy[.]com

IIS C2

Domain

jiankong[.]sneaws[.]com

IIS C2

Domain

seo[.]667759[.]com

IIS C2

Domain

google2[.]sneaws[.]com

IIS C2

Domain

kaifa[.]sneaws[.]com

IIS C2

Domain

w3c[.]sneaws[.]com

IIS C2

Domain

w5c[.]sneaws[.]com

IIS C2

Domain

w5r[.]sneaws[.]com

IIS C2

Domain

google[.]sneaws[.]com

IIS C2

Domain

jk[.]667759[.]com

IIS C2

SHA256

11265422e79f2cd057ee1ae38a16e5db54039711ae8cdb9e177aebfde5666f32

fasthttp.dll

SHA256

c9b4657b6aea927bb0f601f2063e743f8702408c98d01ca3332692b29c4d90ca

fashttp.dll

SHA256

c65dea5d6ab244520a794de0bc9a232050b632b391b3cd3a616661f03d9d2619

fashttp.dll

SHA256

b0842c9916449de6d4b4159d6c5af747d6fb40609510d6a8d2eb669932c1f661

fashttp.dll

SHA256

72cf397738724b1f555c147005c61c058619405846460a60b02a2af75b57a81e

cgihttp.dll

SHA256

c17d1bb654bfa9ff9f612d37c1204585cfc76d663818a23aac78ba43e35e3df0

cgihttp.dll

SHA256

9a2fd34e22c5f3d3d5fb96e3cd514dad7b03ed7bf53a87e7d8d9b73987d02ece

cgihttp.dll

SHA256

98d4d3de1af9d8568ededbddad4ed5a2072393985421462f44d12e482a1a36af

cgihttp.dll

SHA256

6b60b6df8a1a95f51ffe57255c05d26eb9e113857efac3b29d6ef080b8d414f3

cgihttp.dll

SHA256

561fcf1a2d6cc2170d2b538f416e95d981663984e384da51b36ffe97d2653dcd

Cobalt Strike Beacon

SHA256

767576a2b67a3a53883b174a50c83192d0930a4ce213af5f5093e6ee26910d2b

Cobalt Strike Beacon

SHA256

ffbad7beab3e0888d6957637f2ec80156402ad540e9c92ebb243fe27bea1f598

XlAnyLoader

SHA256

00c7efe65ab90c03678359f5ba6b24d9f938a28205652dd61f15d7a31323cf1b

SoftEther VPN

SHA256

bab9a644aff24cf313210cc6632f71d935a428ea0efb3823c0dbe6dccabe4b73

SoftEther VPN

SHA256

cbbe63d47e377ab93a39d11554b3024760868bf667db388efc62e6f2850b5d89

SoftEther VPN

SHA256

86b8605b4870be8c3e83e51b4e3ee80e781a7c5a0104ffa656da651a03579c5a

FScan

SHA256

d8c0ef6dbf7d4572f92d3a492f32061ab8f3dd46beb9ff5a0bf9bf550935458c

Sharp4RemoveLog

SHA256

48ec6530470b295db455bf2c72dc4fbd18672725f45821304f966d436b428865

CnCrypt Protect

SHA256

e51ea911a281097be040ac2871134e6c7d5c3b37c8b46d2267ad40a18a05d2ec

GoToHTTP

SHA256

ffa835cd05558fa52a12e91136c4e8a3e7393b3155a6be7877812c6e7d1ff811

httpcgi.dat