Tracking Malware and Attack Expansion: A Hacker Group’s Journey across Asia
2025年发现针对Windows用户的钓鱼攻击活动,从中国扩展到台湾、日本和马来西亚。攻击者利用伪装政府文件的PDF和云存储分发恶意软件,并通过任务计划程序触发攻击流程。该活动具有高度破坏性,并持续演变以规避检测。 2025-10-17 13:0:0 Author: feeds.fortinet.com(查看原文) 阅读量:13 收藏

Affected Platforms: Microsoft Windows
Impacted Users: Microsoft Windows
Impact: The stolen information can be used for future attacks
Severity Level: High

In January 2025, FortiGuard Labs observed Winos 4.0 attacks targeting users in Taiwan. In February, it became clear the actor had changed malware families and expanded operations. What first appeared isolated was part of a broader campaign that shifted from China to Taiwan, then Japan, and most recently Malaysia.

This article examines the methodologies employed to identify strategic connections between their campaigns, revealing how seemingly unrelated attacks are linked through shared infrastructure, code patterns, and operational tactics.

Figure 2: Attack campaign in 2025

Threat Hunting

The campaign relied on phishing emails with PDFs that contained embedded malicious links. These files masqueraded as official documents from the Ministry of Finance and included numerous links in addition to the one that delivered Winos 4.0. The following image illustrates the links found in a phishing PDF file used in the campaign.

Figure 3: Links in a phishing PDF

Most of the links pointed to Tencent Cloud storage. IDs embedded in the URLs allowed analysts to attribute multiple files to the same account holder. According to the official document, the IDs 1321729461 and 1329400280 in the above screenshot are unique, which means any other link containing an identical ID belongs to the same account owner.

Figure 4: Explanation of each part of a Tencent Cloud link

With these IDs, we obtained more related PDF files, including the ones distributing HoldingHands. In addition to mimicking official documents from the Ministry of Finance, the phishing lure in the newly discovered PDF files can also be an official document from other government departments or a purchase order.

In this phase, the malware is delivered via a custom domain link, while cloud storage links were used in old PDF files. The domains share a common naming pattern: the second-level domain includes tw, which is the abbreviation for Taiwan. The links refer to webpages hosting the latest malware, which complicates analysis as the download link or necessary information, such as the decompression password, may be taken down before analysts retrieve the payload. However, this can also cause information leakage if the hacker is careless. Here is an example that helped us identify a new attack targeting Japan.

Figure 5: The PDF targeting Taiwan shared a link with an attack targeting Japan

One PDF, posing as a tax regulation draft for Taiwan, redirected to a Japanese-language page, where victims were tricked into downloading a ZIP that delivered the HoldingHands payload. The presence of ‘tw’ in the download link, twsww[.]xin/download[.]html, increases confidence that the attack is targeting Taiwan. Despite this, the link leads to a webpage written in Japanese that asks the user to download the latest file. The ZIP file downloaded from the Japanese page contains an EXE file that delivers the HoldingHands payload. The EXE embeds all necessary files, which are dropped to execute the attack flow, similar to the previous attack.

The C2 IP address is 156[.]251[.]17[.]9. The IP address is the same as the one used by the HoldingHands variant that is expected to be downloaded from the link in the PDF. This strengthens the connection between the attacks targeting Taiwan and Japan. The EXE carries a legitimate digital signature to evade detection and contains debug paths pointing to BackDoor.pdb, further linking it to HoldingHands development. Here is the debug directory:

D:\Workspace\HoldingHands-develop\HoldingHands-develop\Door\x64\Release\BackDoor.pdb

Figure 6: The digital signature

Based on these clues, we were able to identify additional related files and, ultimately, a possible infection vector: a Word document. The link in the document also leads the user to a download page hosting a variant of HoldingHands.

Figure 7: The phishing Word document

The download page is identical to the one shown in Figure 5. The actual download link is fetched from the JSON data, rather than being stored in the script on the page. This prevents the link from being linked to the webpage, thereby frustrating threat hunting.

Figure 8: The script on the download page

The script was used repeatedly across multiple webpages for different attacks. For example, in a phishing email targeting Taiwan sent in March 2025, the attached HTML redirects to a download page containing similar code.

Figure 9: The script on the download page targeting Taiwan

It is worth noting that the attached HTML file contains a link to a deceptive image used in an attack targeting China. Figure 10 shows the source code of the attached HTML file. The link twswzz[.]xin/index[.]html refers to a download page whose source code is Figure 9. The Tencent Cloud link refers to a deceptive image targeting China.

Figure 10: The attached HTML file

By following the APPID in Figure 10, we identified additional Tencent Cloud links and a series of phishing attacks targeting China that utilized Excel documents. The earliest record of the Excel document dates back to March 2024. Among the files with dates near the attack on Taiwan, we observed Winos 4.0.

Figure 11: The phishing Excel document

Ongoing Attacks (Malaysia)

More recent attacks have shifted to Malaysia. Analysts connected these campaigns after finding that twczb[.]com — a domain previously associated with Taiwan-focused phishing — resolved to the same IP address used in the Malaysia-based activity.

Figure 12: The domains resolve to the same IP address

The Malaysian campaign again used a simple phishing page to trick users into downloading HoldingHands, which is now delivered through another multi-stage flow. In the main execution flow of the previous attack, the EXE files to side-load the DLL for the next stage are dropped to disk, leaving forensic artifacts.

Figure 13: The attack flow of the previous variant. Only the highlighted part remains in this variant

Unlike earlier variants, the later stages are now triggered by the Windows Task Scheduler service, making behavior-based detection more difficult.

Figure 14: The current attack flow

Technical Deep Dive (dll/dat chain)

dokan2.dll

dokan2.dll functions as a shellcode loader for sw.dat. It is loaded via Dokumen audit cukai dan sampel bahan.exe – a social engineering lure that masquerades as a tax audit document to convince victims to run it. dokan2.dll is originally a library from the open-source project Dokany. In this case, the threat actor crafted a malicious DLL with the same name and leveraged Dokany’s control program (Dokumen audit cukai dan sampel bahan.exe) to load the malicious dokan2.dll

sw.dat

sw.dat sets up the environment for the malware by creating necessary files and escalating privilege. It retains functions used in the previous variant, such as anti-VM, which checks physically installed RAM, and privilege escalation, which impersonates the TrustedInstaller service’s thread to obtain the highest privilege. The remaining installation process drops the following files to C:\Windows\System32:

File

Description

svchost.ini

RVA of VirtualAlloc function

TimeBrokerClient.dll

The legitimate TimeBrokerClient.dll is renamed as BrokerClientCallback.dll.

msvchost.dat

Encrypted shellcode

system.dat

Encrypted payload

wkscli.dll

(unused)

In addition, it enumerates active processes against a list of security products to identify which defenses are running on the host:

Product

Process

Norton

nllToolsSvc.exe, NortonUI.exe, NortonSvc.exe

Avast

afwServ.exe, AvDump.exe, wsc_proxy.exe

Kaspersky

avp.exe

If any process related to Norton and Avast is found, it drops wkscli.dll, which can be side-loaded by many Windows processes. However, wkscli.dll doesn’t have any noticeable behavior in this attack. After checking the processes related to Norton and Avast, it checks the avp.exe and shuts down if any listed anti-virus process is found. If no anti-virus processes are found, it terminates the Task Scheduler. The Task Scheduler is a Windows service hosted by svchost.exe that allows users to control when specific operations or processes are run. The Task Scheduler’s recovery setting is configured to restart the service one minute after it fails by default.

Figure 15: The Task Scheduler's default recovery setting

When the Task Scheduler is restarted, svchost.exe is executed and loads the malicious TimeBrokerClient.dll. This trigger mechanism does not require the direct launch of any process, making behavior-based detection more challenging.

TimeBrokerClient.dll

When TimeBrokerClient.dll is loaded, it first checks the name of the process that loaded it. It calculates the sum of ASCII values in the process name and continues only when it equals 0x47A, which is the expected result when the process is svchost.exe. After this, it calls the VirtualAlloc function to allocate memory for the encrypted data in msvchost.dat. The virtual address of the VirtualAlloc function is calculated by adding the RVA stored in svchost.ini to the image base of kernel32.dll, which it retrieves by calling the GetModuleHandleA function. The call fails if the analyst overlooks the svchost.ini file.

Furthermore, the filenames svchost.ini and msvchost.dat are generated by combining the name of the loading process (svchost expected) with the remaining parts of the filename. This hinders the analysis if the trigger mechanism is not well understood. The process name also works as the decryption key for the data in msvchost.dat, which is yet another anti-analysis technique. The data is decrypted into shellcode and executed in the memory.

msvchost.dat

In this stage, the data stored in system.dat is decrypted to retrieve the HoldingHands payload. It first checks the command line of the current process and only continues when the command line is:

C:\windows\system32\svchost.exe -k netsvcs -p -s Schedule

svchost.exe is a system process that hosts multiple services. The arguments determine which service to start. Therefore, the command line is used by the msvchost.dat to ensure that the code is executed in the expected way. It repeats the anti-virus process checks performed earlier by sw.dat.

Figure 17: The instance of svchost that hosts Task Scheduler

Because the msvchost.dat shellcode is triggered indirectly via Task Scheduler, it runs in a separate session from the user, requiring additional steps to regain user-level access. To execute the HoldingHands payload at the user level, it retrieves the list of all terminal sessions by calling the WTSEnumerateSessions function. It then searches for an active session, indicating a logged-on user. It then duplicates a logged-on user’s access token, allowing the shellcode to impersonate the user’s security context.

It also retrieves the logged-on user’s environment variables, which are then passed to the CreateProcessAsUserW function to launch taskhostw.exe, where the decrypted data of system.dat is injected. Finally, the shellcode checks every five seconds to determine whether taskhostw.exe is still running, and injects the payload into a new instance if taskhostw.exe is no longer alive.

HoldingHands Payload

The HoldingHands payload remains essentially unchanged from the previous attack. The key addition is a new C2 task that updates the server IP address via registry entry, enabling attackers to shift infrastructure without redeploying malware. The most notable change is that the payload supports a new C2 task to update the server IP address. The command for the task is 0x15. Below is the registry key and value for IP update. The registry key for configuration is still HKEY_CURRENT_USER\SOFTWARE\HHClient, which was also observed in previous attacks.
 

Registry key: HKEY_CURRENT_USER\SOFTWARE\HHClient

Value name: AdrrStrChar

Value: {IP address}

Additionally, the command to terminate the payload has been changed from 0x15 to 0x17.

Conclusion

Threat actors continue to rely on phishing lures and layered evasion to deliver malware while obscuring their activity. Yet those same tactics provide valuable clues that link campaigns across borders. By following infrastructure, code reuse, and behavioral patterns, FortiGuard Labs has connected attacks spanning China, Taiwan, Japan, and now Malaysia and identified the latest HoldingHands variant in the process.

FortiGuard will continue to monitor these attack campaigns and provide appropriate protection as required.

Fortinet Protections

The malware described in this report is detected and blocked by FortiGuard Antivirus as:

XML/Agent.EFA9!tr
W64/ShellcodeRunner.ARG!tr
W64/Agent.BDN!tr

FortiGate, FortiMail, FortiClient, and FortiEDR support the FortiGuard AntiVirus service. The FortiGuard AntiVirus engine is part of each of these solutions. As a result, customers who have these products with up-to-date protections are protected.

FortiMail recognizes the phishing email as “virus detected.” In addition, real-time anti-phishing protection provided by FortiSandbox embedded in Fortinet’s FortiMail, web filtering, and antivirus solutions provides advanced protection against both known and unknown phishing attempts.

The FortiGuard CDR (Content Disarm and Reconstruction) service, which runs on both FortiGate and FortiMail, can disarm malicious macros in documents.

We also suggest that organizations go through Fortinet’s free NSE training module: FCF Fortinet Certified Fundamentals. This module is designed to help end users learn how to identify and protect themselves from phishing attacks.

FortiGuard IP Reputation and Anti-Botnet Security Service proactively block these attacks by aggregating malicious source IP data from the Fortinet distributed network of threat sensors, CERTs, MITRE, cooperative competitors, and other global sources that collaborate to provide up-to-date threat intelligence about hostile sources.

If you believe this or any other cybersecurity threat has impacted your organization, please contact our Global FortiGuard Incident Response Team.

IOCs

Domain

zxp0010w.vip
gjqygs.cn
zcqiyess.vip
jpjpz1.cc
jppjp.vip
jpjpz1.top

IP

206.238.199.22
206.238.221.244
206.238.199.22
154.91.64.45
156.251.17.12
206.238.221.182
38.60.203.110

Sha256

c138ff7d0b46a657c3a327f4eb266866957b4117c0507507ba81aaeb42cdefa9
03e1cdca2a9e08efa8448e20b50dc63fdbea0e850de25c3a8e04b03e743b983d
2b1719108ec52e5dea20169a225b7d383ad450195a5e6274315c79874f448caa
dc45981ff705b641434ff959de5f8d4c12341eaeda42d278bd4e46628df94ac5
0db506d018413268e441a34e6e134c9f5a33ceea338fc323d231de966401bb2c
031c916b599e17d8cfa13089bddafc2436be8522f0c9e479c7d76ba3010bbd18
c6095912671a201dad86d101e4fe619319cc22b10b4e8d74c3cd655b2175364c
03e1cdca2a9e08efa8448e20b50dc63fdbea0e850de25c3a8e04b03e743b983d
2b1719108ec52e5dea20169a225b7d383ad450195a5e6274315c79874f448caa
dc45981ff705b641434ff959de5f8d4c12341eaeda42d278bd4e46628df94ac5
804dc39c1f928964a5c02d129da72c836accf19b8f6d8dc69fc853ce5f65b4f3
1c4bc67ae4af505f58bd11399d45e196fc17cc5dd32ad1d8e6836832d59df6e6
fb9c9ed91fc70f862876bd77314d3b2275069ca7c4db045e5972e726a3e8e04c
8d25da6459c427ad658ff400e1184084db1789a7abff9b70ca85cf57f4320283


文章来源: https://feeds.fortinet.com/~/926392919/0/fortinet/blog/threat-research~Tracking-Malware-and-Attack-Expansion-A-Hacker-Group%e2%80%99s-Journey-across-Asia
如有侵权请联系:admin#unsafe.sh