Operation FlashHole: Lazarus breaks security, defies control“闪光洞行动”:拉撒路突破安全防线,无视控制
Kaspersky researchers analyze Operation FlashHole – a recent complex attack by Lazarus, involving a sophisticated malware set, watering-hole technique and abuse of CrossWeb EX financial security software.

Initial infection vector
Full infection chain
TechHub – the start of the chain
Cubridge – the framework orchestrator
TouchHub installs a service for TouchShift
TouchShift, a prevalent loader employed across multiple infection chains
Comparison of plugins and modules
Attribution and links to other campaigns
Indicators of compromise
In January, we responded to the Lazarus Group’s novel attack campaign against South Korea, which followed last year’s Operation SyncHole . In this new operation, the group employed an updated malware chain that included both their old and new malware, which we disclosed in full, and used another mandatory South Korean security software program as a part of infection chain using a watering‑hole strategy. Notably, the group targeted victims more selectively, sending spear‑phishing emails with links to fabricated but relevant sites, such as portfolio and résumé pages tailored to each target. We dubbed this activity Operation FlashHole.
Operation FlashHole attack flow during initial compromise
Our examination reveals that the earliest evidence of this new operation dates back to July 2025. This suggests the group began preparing for the campaign shortly after ending Operation SyncHole, which lasted at least four months. We identified a minimum of three organizations impacted by the campaign in South Korea’s software, construction, and wired communication equipment manufacturing sectors. These sectors differ from those affected by Operation SyncHole, indicating that the group has expanded its target scope over time.
After more than a year since the first observation of Operation SyncHole, we detected a suspicious execution chain originating from legitimate South Korean software. This chain mirrors the one from the previous operation; however, this time, the attacker abused CrossWeb EX instead of Cross EX, which was abused in Operation SyncHole. Both applications appear to be maintained by the same developer, and both are related to financial security. CrossWeb EX is a financial security solution that is required to access widely used online banking and government websites. It encrypts communications between the user’s browser and the web server using public key infrastructure (PKI). This is not the first time Lazarus has abused this software. It was also used in 2021 to deploy the Racket downloader and again in 2022 and 2023 . Although the exact method by which CrossWeb EX was abused remains unclear, we determined that the attack chain ultimately leads to the execution of the malware in memory.
We noted that the spawned process was running with a high integrity level. The parent process, INISAFECrossWebEXSvc.exe , originates from the installation bundle of INISAFE CrossWeb EX V3 version 3.4.1.2, released in 2023 after KrCERT’s public advisory .
As we already mentioned in our SyncHole blog post, this pattern closely mirrors the long‑standing strategy employed by the Lazarus Group to target South Korea. Since CrossWeb EX and similar software is mandatory for South Korean users and typically runs in the background to interact with the browser, it has been leveraged as a critical attack vector by the group. In 2025, a paper was presented at the USENIX Security Symposium that investigated vulnerabilities in South Korea’s mandatory security software and demonstrated how such software can unintentionally create a massive attack surface.
In July 2026, the South Korean government and several local security vendors also published a joint security advisory covering typical Lazarus attack techniques, including exploitation of financial security software. While this advisory overlaps with our findings from Operation FlashHole and Operation SyncHole, and AhnLab’s detailed analysis report Operation Double Barrel covers a wide range of recent Lazarus Group activities, we are conducting a more granular classification based on their TTPs. We will discuss this further in the attribution section.
Although we could not precisely determine what triggered the infection chain, our analysis uncovered a suspicious website hosted on GitHub Pages that is associated with the GitHub account used as the C2 channel. The GitHub account was created last September, and the initial version of the site was designed to showcase the résumé of a senior network appliance developer. In January, however, this site was replaced with another featuring an interior design showcase. The first site was likely accessed by an employee of a wired communication manufacturing company, while the second site likely affected a target in the construction sector.
Appearance of the malicious websites
The first site with the résumé had a photograph supposedly of a job seeker, but the lack of EXIF metadata and the unnatural texture of the image indicate that it was generated by AI. This suggests the Lazarus Group has incorporated AI into its long‑standing strategy, like other Korean‑speaking threat actors ( 1 , 2 ). The group most likely also used AI to create the lure site: the job seeker’s name resembles the Korean version of “John Doe,” and the portfolio was populated with seemingly meaningless details and random companies. The generated site was then manually tailored to specific targets.
Suspected use of an AI-generated image on the résumé site
The websites contained embedded links that loaded an external JavaScript file via a script tag.
Malicious link embedded in the résumé site: hxxps://javadevhouse.co[.]kr/ajax/libs/jquery/1.7.3/jquery.min.js
Malicious link embedded in interior design site: hxxps://pythonapischool[.]com/api/detach
Based on the analysis, we assess with medium-to-high confidence that the targets received phishing emails containing links to the malicious site hosted on GitHub Pages (using the domain <username>.github.io). The research results showed a high possibility that visiting the malicious site initiated an infection process involving CrossWeb EX software. This assessment aligns with Lazarus’s recent approach, as detailed in the joint advisory published by the South Korean government and security companies.
Following the initial compromise, the legitimate Windows binary fsquirt.exe was executed under the CrossWeb EX process and injected with shellcode containing a malicious DLL – TechHub malware. From our extensive and thorough examination, we identified several malicious payloads and reconstructed the complete infection chain. The infection chain is rather complex and reveals the Lazarus Group’s advanced operational techniques on targeted hosts. These techniques conceal their malicious payloads, intent and their sophisticated malware delivery framework. The latter was updated extensively compared to the previous campaign, despite the new operation starting less than a year later. Significantly, the execution chain below exists only in memory during the initial infiltration, highlighting the attackers’ considerable efforts to hide the initial compromise.
Initial infection chain
Following the initial compromise, the group sought to maintain persistence on the network by installing a pair of malware strains – TouchHub and TouchShift – leveraging DLL side‑loading under the name mscoree.dll . TouchHub was deployed by the first instance of TechHub. It then used DLL side-loading to launch TouchShift, which led to the in‑memory execution of another TechHub instance. After launching the second time, TechHub deployed another pair, ClientHub and LPEClient, rather than executing Cubridge directly. Only minimal traces of these files were found on disk; the remainder of the malicious code persisted exclusively in memory.
Expanded infection chain after gaining persistence
Since Cubridge remains only in memory at the initial compromise stage, we suspect the group designed this indirect, multistage chain to deliberately redeploy Cubridge after gaining persistence, as it serves as the most sophisticated orchestrator of the attack.
The full chain comprises advanced variants of the known Lazarus malware strains, including TechHub, Cubridge, TouchShift, LPEClient, and the newly identified TouchHub and ClientHub.
TechHub, a downloader that plays a central role in this attack, communicates with GitHub using a Personal Access Token (PAT). It serves as the initial payload, providing the top of the chain with sufficient functionality to profile compromised hosts and facilitate subsequent payloads.
This variant is a more advanced version of the malware named CLOUDBURST by Mandiant and NickelLoader by ESET. According to their reports, the earlier version communicated with a C2 server via HTTP(S) to fetch additional payloads. The latest iteration we found, however, communicates with GitHub instead and has updated command strings.
We identified three variants of TechHub in the chain: an in‑memory version, a simple DLL side‑loading version, and a DLL side‑loading version that uses a registered Windows service. Depending on which stage loads the malware, it contacts a private GitHub repository via the GitHub API using either hard‑coded credentials or credentials retrieved from its configuration file.
When TechHub loads, it creates a 4‑byte hexadecimal identifier (ID) in the range 0x1000–0xFFFF or reads one from the configuration file, enabling the attackers to distinguish between compromised hosts. TechHub then checks a GitHub issue by sending the request GET /issues?state=[open/closed] to determine whether any previous communication remains active and removes any traces of it if found. It then proceeds with the handshaking process.
It creates a new issue titled 1[ID] with the body “hel” using the POST /issues request, and sets its status to open.
It then retrieves a file from the repository containing the 2[ID] value in its name. This file contains the RSA public key.
It generates a random 16‑byte XOR key, encrypts it with the provided RSA public key, and uploads the result, prefixed with 1[ID] , to the repository.
The hard‑coded IV is XORed with the generated 16‑byte key and then used after the handshake.
During file exchange, filenames follow the pattern [1|2][ID][random-16-byte-key] throughout communication. The “2” prefix indicates delivery from the repository to TechHub, while “1” indicates delivery from TechHub to the repository. The random 16‑byte key in the filename is used for AES encryption or decryption of each file’s contents, employing either a hard‑coded IV or an updated IV.
After the key exchange is complete, TechHub reads a file with the prefix “2” once again and verifies that the delivered data equals “hel”. If the check passes, TechHub gathers extensive information from the infected host. This data is then encrypted and sent to the repository. After transmitting the device information, the process concludes by updating the body of the previously created issue from “hel” to “hey” using PATCH /issues/[issue number] . The malware is now fully prepared to receive commands from the repository.
TechHub supports four commands. The laeca command deploys a payload packaged in shellcode that reflectively loads the embedded payload directly into memory.
Cubridge, deployed via TechHub on the compromised host, is capable of retrieving various payloads through multiple methods. It serves as the central orchestrator of the entire malware framework, supporting a range of plugins, modules, and tools. An earlier version of Cubridge was also disclosed in the reports covering the previous version of TechHub. In those reports, Mandiant identified it as SIDESHOW, and ESET identified one of its modules as LightlessCan.
To establish communication with the C2 server, Cubridge randomly selects one of the predefined C2 servers and constructs a dedicated C2 URL for every request, using the pattern [C2_URL]/[page1]/[page2]/[page3] . This is achieved by concatenating terms from predefined word lists. Our analysis identified a single hardcoded C2 server – hxxps://cubedesign[.]co[.]kr/news/AABBCC – associated with the examined instance that is configured to version 5.1. During URL generation, AABBCC is substituted with a null value. The page3 segment is assigned a randomly generated integer between 10000000 and 99999999 . Consequently, each generated URL is designed to appear authentic and remain unique for each request.
The predefined list for page1 is shown below. TechHub randomly selects one item from the list.
The predefined word list for page2 is shown below.
This means the hardcoded URL can later be transformed, for example, into hxxps://cubedesign[.]co[.]kr/news/economy/article/12345678 by following the steps described above.
Authentication using the POST request with the C2 server requires three parameters in the form of key‑value pairs. Each key is randomly generated using a different predefined word dictionary, and the associated values consist of a randomly generated 8‑byte hexadecimal bot ID, a fixed authentication token ( KW4Ofw982CNJjxd51AVqkGAop ), and a randomly generated 16‑byte hexadecimal session ID.
Cubridge employs a more robust handshaking process than TechHub, combining the RSA and RC6 algorithms. Unlike TechHub, it skips the profiling step and proceeds directly to command and control after the handshake. During communication, the malware mimics browser requests, using X‑CSRF‑Token and X‑Requested‑With headers for authentication and the Upgrade‑Insecure‑Requests header to request additional data.
Cubridge’s communication sequence
Cubridge contains extensive functionality, with a particular focus on loading subsequent‑stage payloads. The commands employ various techniques, such as DLL injection, reflective loading, and section‑mapping injection. The payloads may be delivered in various forms:
Plugins – reusable extensions that add functionality as needed and can be invoked at any time (in shellcode and DLL form);
Tools (in DLL form) – independent utilities that perform one-off tasks;
Modules – components that are loaded once and remain active providing an extended set of functionalities.
It is anticipated that the commands for plugins and shellcode will load identical types of plugins because both support a similarly formed exported function for subsequent activity. The shellcode can be generated using the open‑source sRDI tool to package a DLL‑style plugin. The capabilities of a single DLL are likely utilized to load a tool that works independently because when a single DLL is loaded, only its DllMain entry point and its parameters are accessible; no other exported functions are exposed.
Commands 21 and 22 each load a different module. As their internal names imply, the action module manages basic file and process operations, while the function module implements Windows’ default commands. The action module covers commands 23–41 , and the function module handles commands 42–79 .
The action module handles system operation commands, file system interactions, and process behavior. It is invoked by passing the appropriate command and parameters to its AppinfoView export function. The module supports 19 commands, numbered 23 through 41 . Execution results are first sent to Cubridge, which then forwards them to the C2 server.
The function module implements commands that emulate Windows’ built-in commands. Similar to the action module, its DllMain routine initializes all supported command functions, which are later accessed through the PresentationFontConfig export. Altogether, the module offers 38 commands, numbered from 42 to 79 . While we believe this module is based on the previous LightlessCan, this is the first time we’ve seen it in the form of a separate module.
Besides the modules, we also observed that the actor deployed various plugins and tools.
During our analysis, we obtained a previously unknown malware sample from TechHub’s private GitHub repository, which served as a parent installer for TouchShift. We dubbed this malware TouchHub. Upon execution, it copies the legitimate printfilterpipelinesvc.exe to C:\Windows\System32\RasConv\ImeBroker.exe , registers it as a service, and places an embedded TouchShift payload named mscoree.dll in the same directory. Following creation, the malware synchronizes the MAC timestamps of C:\Windows\System32\drivers\monitor.sys with those of the newly written file, hindering forensic analysis.
It then goes through the service registration process by collecting up to 100 legitimate service names that are registered under the netsvcs svchost group in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost . It randomly selects one of these names, appends two random alphabetic characters to form a new service name, and uses this name to create a service that runs the hard‑coded command line C:\Windows\System32\RasConv\ImeBroker.exe -TimeBroker with the description Microsoft Service . The newly created service is started immediately. Overall, TouchHub creates three files in the designated directory to launch TouchShift with SYSTEM privileges.
The version of TouchShift dropped by TouchHub is almost identical to the version described in Mandiant’s blog post , even sharing the same malicious export function, LockClrVersion . It takes the argument supplied by TouchHub and XORs it with a hard‑coded key. The resulting value is XORed once more with the executable’s filename, and this result is used as the AES key. All strings involved in this process (the argument, the XOR key, the filename) must be exactly 16 bytes long. If a string is shorter, it is padded with NULL bytes ( \x00 ); if it is longer, it is truncated to 16 characters. For example, one of the string combinations in the obtained sample was:
Argument: -TimeBroker\x00\x00\x00\x00\x00 (padded with NULL)
Hard-coded XOR key: x809G736iC3f8Wp8
Executable filename: ImeBroker.exe\x00\x00\x00 (padded with NULL)
After deriving the key, the malware decrypts the embedded payload using AES‑CBC‑128 without padding. The decrypted data is shellcode that starts with a call instruction. It wraps the next‑stage payload – identified as the third version of TechHub (DLL side-loading with a registered service) – that reads the ActivationStore.dat file as an external configuration.
We also identified a new piece of malware stored in TechHub’s private repository, which we named ClientHub. It supports various commands formed using a bitmask. There are at least two versions of ClientHub: one that communicates with websites via HTTP(S) and one that interacts with the Dropbox API using credentials.
Depending on the version, its configuration is sourced from internal resources or the external configuration file C:\Program Files\Common Files\System\msadc\msadc.inc. The configuration comprises keys and IVs for the SNOW 1.0 algorithm, scheduled execution times, and C2 server addresses encrypted with the SNOW stream cipher. The SNOW cipher is a family of high‑speed stream ciphers used for secure data encryption in telecommunications and wireless networks. This is the first time it has been observed in the malware of the Lazarus Group.
To establish C2 communication, the malware initially generates a 32‑byte random array. It subsequently overwrites portions of this array with data collected from the compromised device. The resulting 32‑byte array comprises a blend of random bytes and relevant information. This array is later used as the key for the SNOW algorithm to decrypt data received from the C2 server. Finally, the key array is encrypted with a hard‑coded RSA public key and encoded in Base64.
The ciphertext is delivered to the C2 server via GET requests. Each request contains headers that are atypical for malware: Sec-CH-UA , Sec-CH-UA-Platform , Sec-CH-UA-Mobile , Sec-Fetch-Mode , and Sec-Fetch-Dest . These headers are normally used by legitimate Chromium‑based browsers and enable malware to imitate legitimate traffic and evade detection. The C2 server replies with commands in a custom header and message body.
The body_type field in the header determines how the subsequent payload is processed. This value functions as a bitmask, with each bit representing a distinct flag (e.g., 0x1 , 0x2 , 0x4 , etc.). The resulting behavior also depends on whether the least‑significant bit (bit 0) is set: when the value is odd, the malware interprets the incoming message body as an additional payload that is subsequently loaded into memory. Conversely, when the value is even, the malware invokes the previously loaded payload.
The odd value supports four distinct loading methods based on the received message body and ensures that each method executes only once.
The even value provides two distinct invocation methods for DLLs and plugins that have already been loaded and are associated with the odd‑value bitmask. The 2 (0x10) flag allows the payload previously loaded with the 1 , 3 , or 5 bitmask to be reused and invoked directly. The value 16 (0x10000) corresponds to the 17 (0x10001) flag in loading mode and uses the established interactive shared buffer to exchange data. All values are guaranteed to act independently.
Taking into account the loading mechanism, we identified four plugins deployed to the target that work perfectly with ClientHub.
In addition to the plugins, ClientHub supports the loading of LPEClient malware and communication with it. We found that ClientHub’s body_type values 16 and 17 correspond to LPEClient’s C2 communication mechanism.
LPEClient is the only malware that was also observed in Operation SyncHole, indicating that the actor relies heavily on it for sophisticated victim profiling and payload delivery across multiple operations. LPEClient first appeared in 2019, and was discovered in 2020 . Since then, the tool has been widely observed in the Dream Job and Cascade Hole campaigns that targeted South Korea. Recent research conducted by Check Point revealed that LPEClient was used to deploy the FudModule malware using a zero-day.
LPEClient has evolved continuously over time, but we discovered that it recently underwent a major operational revamp. It no longer contains the C2 server address itself; instead, it interacts with ClientHub via a shared buffer. We believe this change is intended to enhance concealment.
Timeline of LPEClient
The previous version collected the computer name, memory status, CPU specifications, operating system details, version of the ntoskrnl.exe file, firmware table, antivirus name, domain name, user name, the integrity level of the current process, and a random byte sequence of 1,568 bytes. The newly updated LPEClient variant mostly collects the same information; however, it also introduces several changes.
It does not collect the version of the ntoskrnl.exe file by querying the FileVersion value. Instead, depending on the specific build, it reads either the HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR registry key or the SYSTEM_BUILD_VERSION_INFORMATION structure to retrieve the revision portion of the Windows build number. These values can be used to infer the system’s cumulative update or patch level.
To collect information about installed antivirus products, it switched from querying a WQL command to reading the WMI repository file directly. It now reads C:\Windows\System32\wbem\Repository\OBJECTS.DATA and searches for keywords such as AntiVirusProduct, companyName, and displayName to identify the installed products.
It also collects low‑level Windows security mitigation states. To achieve this, it queries the SYSTEM_KERNEL_VA_SHADOW_INFORMATION structure for the Kernel VA Shadow mitigation status and the SYSTEM_SHADOW_STACK_INFORMATION structure for the Shadow Stack (CET) protection status.
Additionally, it generates a 32‑byte random unique identifier by using the HighwayHash algorithm and an XOR operation with the current system time. The collected information, including the generated identifier, is compressed with the XPRESS Huffman algorithm using the maximum compression setting. The compressed data is then concatenated with the message ID 0xF07D6B34 and encrypted using GOST (also known as Magma), Russia’s national cryptographic standard that employs a DES‑like structure, before being sent to the ClientHub via a shared buffer. Initially, KrCERT described the algorithm as a custom DES‑like scheme. However, further analysis by us and Check Point confirmed that it is actually the GOST algorithm. The key is randomly generated by a proprietary key‑generation algorithm and prepended to the encrypted message.
The next request handles the key exchange by delivering the message ID 0xA39CF278 together with the generated unique identifier. The response is decrypted using the AES‑CBC‑256 algorithm. The SHA‑256 hash of the previously generated 1,568‑byte random value, which was originally sent to the C2 server during the collection phase, serves as the key for this decryption.
Through this process, LPEClient obtains a byte array comprising four 1,568‑byte blocks from the C2 response. Each block contains an ML‑KEM‑1024 public key, where ML‑KEM is a NIST‑standardized post‑quantum key encapsulation mechanism derived from CRYSTALS‑Kyber. LPEClient then generates four distinct pairs of shared keys and ciphertexts from these blocks, encrypts the ciphertexts with the GOST algorithm, and transmits them to the C2 server via ClientHub together with the message identifier 0xEF8C0D51 and the associated identifier. Now that the preparation phase for receiving payloads is complete, the malware is ready to receive payloads forwarded by ClientHub from the C2 server, along with the necessary parameters. The use of post-quantum cryptography shows that the group intends to hide subsequent payloads.
The response to the 0xEF8C0D51 message is decrypted with the Threefish algorithm using a 256-byte key, composed of the four distinct shared keys. Threefish is a tweakable block cipher that accepts a ‘tweak’ value alongside the key and the message. The concept of a tweak is similar to that of a nonce or initialization vector, which are used in different types of ciphers. In LPEClient communication, the tweak for the decryption is derived by XORing the unique identifier with 165 (0xA5) . The first four bytes of the decrypted message must specify the parameter’s length, followed by the parameter itself and then the payload. The payload must be larger than 4 KB and start with the characters 'MZ' , which indicates that the decrypted payload is an executable file. The payload is then reflectively loaded into memory. After successful loading, LPEClient sends the message ID 0xCB790A25 to the C2 server.
Before loading the acquired payload, LPEClient takes measures to bypass security products. Instead of invoking VirtualProtect directly, the malware uses the identified HeapPageAllocator::ProtectPages in jscript9.dll to modify the memory page protection of the MD4Update function. The beginning of the function is then overwritten with a hard‑coded opcode sequence that serves as a syscall stub with the required arguments. LPEClient then uses the syscall stub to disable a user‑mode syscall instrumentation hook.
We identified the final payload that was ultimately loaded as Cubridge. The overall communication process is as follows.
Data relay flow between LPEClient and C2 via ClientHub
Throughout the engagement, we identified a variety of payloads deployed by TechHub, Cubridge, and ClientHub. These payloads have been categorized as tools, plugins, and modules that constitute the group’s modular malware framework. While we have not yet ascertained which payloads are deployed under specific conditions, the evidence suggests that the Lazarus Group’s toolkit is becoming increasingly sophisticated and segmented into specialized components rather than a single comprehensive backdoor. We also believe that TechHub and Cubridge may share similar tools.
These modularizations are not confined to the instances within this campaign. As previously noted, similar patterns have been identified in CookiePlus, MISTPEN, SIGNBT, and IMETHOD. Note that we have reclassified the ThreatNeedle variant used in Operation SyncHole as the latest version of IMETHOD, the predecessor of ThreatNeedle in use since at least 2016.
Based on the information we obtained from the TechHub malware, we identified at least three primary repositories used as the C2 server and one fallback repository. The earliest evidence indicates that the group has been leveraging GitHub as a C2 server since at least July 2025. We suspect that all the accounts were created using hijacked email accounts, and disguised as normal repositories by copying or creating normal projects to avoid suspicion.
For the Cubridge and ClientHub C2 servers, the Lazarus Group employed only a minimal number of compromised yet legitimate South Korean media and interior design websites. Later, we observed that a broader range of compromised legitimate sites across various industries were also exploited. In addition, one ClientHub sample that we detected used Dropbox as a C2 channel.
We have identified at least three firms from the software, construction, and wired communication equipment industries in South Korea that were targeted by Operation FlashHole. As with the previous operation, however, we remain confident that a considerably larger number of organizations across a broader spectrum of industries have been affected.
The software sector was the only sector targeted in both the SyncHole and FlashHole campaigns. This suggests the actor is eager to compromise the sector, steal source code, and exploit vulnerabilities for further attacks.
Operation FlashHole is the latest wave in the broader Cascade Hole campaign, which involves the use of South Korean software as a potential entry point to deliver malware targeting the country. Although the malware chain has advanced significantly since last year, we assess with medium-to-high confidence that the same actor is responsible for both the SyncHole and FlashHole operations based on the initial vector, targets, multi‑stage chain, and technical and operational improvements. The use of LPEClient in particular is a strong indicator supporting this assessment.
The malware strains used in the attack are historically linked to the toolsets observed in the Lazarus Group’s notorious Dream Job campaign. Earlier versions of TechHub (also known as CLOUDBURST and NickelLoader), Cubridge (also known as SIDESHOW and LightlessCan), and TouchShift were all observed in that campaign, especially between 2022 and 2023.
We also discovered that both CookiePlus and ClientHub have significant overlaps in class name, configuration path, and plugins. Based on these similarities, we assess with medium‑high confidence that ClientHub is an advanced version of CookiePlus.
Since July, around the time Operation SyncHole began winding down, we have also observed several notable attacks against South Korea employing the COPPERHEDGE backdoor and targeting various South Korean organizations. Interestingly, the start times of these activities align with the earliest evidence we have identified for Operation FlashHole. Although the backdoor was part of the second phase of Operation SyncHole, it has been operating independently with its custom loader since then. These incidents featured malware chains and tools that were distinct from those used in Operation SyncHole and FlashHole.
As AhnLab noted in their report , the same backdoor was likely observed in atypical activity, specifically the Gunra ransomware infection. Our investigation further revealed that one instance of a backdoor infection ultimately resulted in the exfiltration of data to a dark web leak site, which clearly differed from Gunra’s. The site appears to have been crafted exclusively for this activity. In summary, unlike other attacks, the backdoor was used in conjunction with both ransomware and data exfiltration.
Data leakage site linked to the COPPERHEDGE backdoor on the dark web
Another noteworthy point is that the recent Dream Job campaign employs an updated malware chain that, since around 2024, has primarily involved MISTPEN and ForestTiger rather than the earlier arsenal that included tools such as TechHub and Cubridge. However, the updated versions of this older malware have now re-emerged as part of Operation FlashHole. Considering these changes and all aspects of each attack’s TTPs, we have organized a classification for each attack.
Overlaps between the recent attacks by Lazarus Group
Our analysis shows that the Lazarus Group begins preparing for its next operation shortly after completing the previous one, ultimately deploying an enhanced malware chain by refining existing tools. The group continues to use the advanced version of LPEClient for profiling and payload delivery, indicating that the tool is meticulously managed and well maintained. Ironically, the group seems to have adopted more secure post-quantum cryptography faster than many legitimate security products. These observations suggest the involvement of a dedicated developer, with others orchestrating comprehensive attack scenarios against newly targeted software.
We anticipated that specialized attacks targeting South Korea would persist. However, we did not foresee multiple attack campaigns being executed simultaneously, each leveraging different types of software and tools. Notably, the COPPERHEDGE cluster appears to be involved in monetizing the attacks, while Operation FlashHole is focused on espionage. We are closely monitoring these changes to understand their motivations and ultimate goals. In October 2025, the South Korean government unveiled a comprehensive cybersecurity plan that will phase out the mandatory installation of security software for users beginning in 2026. We estimate that operations exploiting this software will remain highly active for some time, maximizing efficiency, before the software is fully eliminated or mitigated.
Kaspersky products detect the exploits and malware used in this attack with the following verdicts: MEM:Trojan.Win64.Shellcode.gen, Trojan.Win64.DLLhijack.*, Trojan.Win64.Lazarus.*.
TouchShift ec84d6cb2ae7974767aedac246b50a3e mscoree.dll a28cba214058fcae2883d8cffc883abd mscoree.dll c105d6b16f544582772de0159f24c00a mscoree.dll 2f8475a90a25624ed02f1d18d4e6d65d mscoree.dll 676fabe30a28b53925fba98e34b35986 mscoree.dll b4a7eff35f048f06fb0a2d7631f23a7d mscoree.dll
ClientHub Loader ff07641dc56914dd90ee0bd7404d7ad7 liblzma.dll
C:\ProgramData\Dell\Dell1.tmp C:\ProgramData\Dell\Dell3.tmp C:\ProgramData\Package.txt C:\ProgramData\RasConv\mscoree.dll C:\ProgramData\Apple\mscoree.dll C:\ProgramData\ssh\mscoree.dll C:\ProgramData\qorestor\mscoree.dll C:\ProgramData\Dell\mscoree.dll C:\ProgramData\Dell\Dell1.tmp C:\ProgramData\Dell\Dell3.tmp C:\Windows\System32\RasConv\mscoree.dll C:\Windows\System32\RasConv\ActivationStore.dat C:\Windows\System32\DrvConh\mscoree.dll C:\Windows\System32\DrvConh\ActivationStore.dat C:\Program Files\Common Files\System\msadc\msadc.inc C:\ProgramData\desktops.ini
javadevhouse.co[.]kr pythonapischool[.]com hxxps://cubedesign[.]co[.]kr/news C2 of Cubridge hxxps://cubedesign[.]co[.]kr/mobile/fashion C2 of Cubridge hxxps://fp-news[.]co[.]kr/shop/cart C2 of Cubridge hxxps://k-wbc[.]co[.]kr/skin/social/social_view.php C2 of ClientHub hxxps://rcsh[.]co[.]kr/modules/bbs/tiles/bbs_div/inputForm.php C2 of ClientHub hxxps://www[.]ksog[.]org/insert_file/handle.php C2 of ClientHub
Malware Descriptions
Malware Technologies
Post-quantum cryptography
Operation FlashHole: Lazarus breaks security, defies control
This site uses Akismet to reduce spam. Learn how your comment data is processed.
GReAT Ideas. Balalaika Edition
GReAT Ideas. Green Tea Edition
GReAT Ideas. Powered by SAS: malware attribution and next-gen IoT honeypots
GReAT Ideas. Powered by SAS: threat actors advance on new fronts
GReAT Ideas. Powered by SAS: threat hunting and new techniques
From the same authors
Kimsuky targets organizations with PebbleDash-based tools
Crypto wasted: BlueNoroff’s ghost mirage of funding and jobs
Operation SyncHole: Lazarus APT goes back to the well
In the same category
The journey of a paper unicorn: adventures inside a modern warehouse
The Crypto Game of Lazarus APT: Investors vs. Zero-days
Grandoreiro, the global trojan with grandiose goals
SAS CTF and the many ways to persist a kernel shellcode on Windows 7
初始感染媒介
完整的感染链
TechHub——这条链条的起点
Cubridge——框架协调器
TouchHub 为 TouchShift 安装了一个服务。
TouchShift 是一种在多条感染链中广泛使用的加载器
插件和模块的比较
归因和与其他活动的链接
妥协的迹象
今年一月,我们对拉撒路集团针对韩国发起的新型攻击活动做出了响应。此次攻击活动是继去年“同步漏洞行动”(Operation SyncHole)之后的又一次行动。在这次新的攻击中,该组织使用了更新的恶意软件链,其中包含了他们之前使用的新旧恶意软件(我们已完整披露),并利用韩国另一款强制性安全软件作为感染链的一部分,采用了水坑式攻击策略。值得注意的是,该组织更加有针对性地锁定目标,发送带有指向虚假但相关网站链接的鱼叉式网络钓鱼邮件,例如针对每个目标量身定制的作品集和简历页面。我们将此次活动命名为“闪光漏洞行动”(Operation FlashHole)。
在初始入侵期间,Flashhole 攻击流程正在发生。
我们的调查显示,这项新行动的最早证据可以追溯到2025年7月。这表明该组织在持续至少四个月的“同步漏洞行动”(Operation SyncHole)结束后不久就开始筹备此次行动。我们发现,在韩国的软件、建筑和有线通信设备制造行业中,至少有三家机构受到了此次行动的影响。这些行业与“同步漏洞行动”受影响的行业有所不同,表明该组织的目标范围随着时间的推移而扩大。
在首次发现“同步漏洞行动”(Operation SyncHole)一年多后,我们检测到一条源自韩国合法软件的可疑执行链。该执行链与之前的行动链类似;然而,此次攻击者滥用的是 CrossWeb EX,而非“同步漏洞行动”中滥用的 Cross EX。这两款应用程序似乎由同一开发者维护,且均与金融安全相关。CrossWeb EX 是一款金融安全解决方案,是访问常用网上银行和政府网站的必要组件。它使用公钥基础设施 (PKI) 对用户浏览器和 Web 服务器之间的通信进行加密。这并非 Lazarus 首次滥用该软件。它曾在 2021 年被用于部署 Racket 下载器,并在 2022 年和 2023 年再次被用于此目的。尽管 CrossWeb EX 的具体滥用方式尚不明确,但我们已确定该攻击链最终会导致恶意软件在内存中执行。
我们注意到,生成的进程以高完整性级别运行。父进程 INISAFECrossWebEXSvc.exe 源自 INISAFE CrossWeb EX V3 版本 3.4.1.2 的安装包,该版本于 2023 年在 KrCERT 发布公开咨询后发布。
正如我们在 SyncHole 博文中提到的,这种模式与 Lazarus Group 长期以来针对韩国的策略极为相似。由于 CrossWeb EX 和类似软件是韩国用户的强制性安全软件,并且通常在后台运行以与浏览器交互,因此被该组织用作重要的攻击途径。2025 年,一篇论文在 USENIX 安全研讨会上发表,该论文调查了韩国强制性安全软件中的漏洞,并论证了此类软件如何在无意中造成巨大的攻击面。
2026年7月,韩国政府和多家本地安全厂商联合发布了一份安全公告,涵盖了典型的拉撒路攻击技术,包括利用金融安全软件漏洞。虽然这份公告与我们在“闪光洞行动”(Operation FlashHole)和“同步洞行动”(Operation SyncHole)中的发现有所重叠,而且安实验室的详细分析报告《双管齐下行动》(Operation Double Barrel)也涵盖了拉撒路集团近期的一系列活动,但我们正在基于其战术、技术和程序(TTP)进行更细致的分类。我们将在归因分析部分对此进行更深入的探讨。
尽管我们无法精确确定感染链的触发因素,但我们的分析发现了一个托管在 GitHub Pages 上的可疑网站,该网站与用作 C2 通道的 GitHub 帐户相关联。该 GitHub 帐户创建于去年 9 月,该网站的初始版本旨在展示一位资深网络设备开发人员的简历。然而,在今年 1 月,该网站被替换为另一个展示室内设计作品的网站。第一个网站很可能是由一家有线通信制造公司的员工访问的,而第二个网站则可能影响了建筑行业的某个目标。
恶意网站的外观
第一个包含简历的网站配有一张据称是求职者的照片,但由于缺少EXIF元数据且图像纹理不自然,表明该照片是由人工智能生成的。这表明,拉撒路集团(Lazarus Group)已将人工智能融入其长期战略,就像其他使用韩语的威胁组织一样(1, 2)。该组织很可能也使用人工智能创建了诱饵网站:求职者的名字类似于韩语版的“John Doe”,作品集也充斥着看似毫无意义的细节和随机的公司信息。生成的网站随后经过人工调整,以适应特定目标。
简历网站涉嫌使用人工智能生成的图像
这些网站包含嵌入式链接,通过脚本标签加载外部 JavaScript 文件。
简历网站中嵌入了恶意链接:hxxps://javadevhouse.co[.]kr/ajax/libs/jquery/1.7.3/jquery.min.js
室内设计网站中嵌入恶意链接:hxxps://pythonapischool[.]com/api/detach
根据分析,我们有中等至高度的把握评估认为,目标用户收到了包含指向托管在 GitHub Pages 上的恶意网站链接的网络钓鱼邮件(使用域名)。<username> .github.io)。研究结果表明,访问恶意网站极有可能启动了涉及 CrossWeb EX 软件的感染过程。这一评估与 Lazarus 近期采取的方法一致,具体内容详见韩国政府和安全公司联合发布的安全公告。
在初始入侵之后,合法的Windows二进制文件fsquirt.exe在CrossWeb EX进程下执行,并注入了包含恶意DLL(TechHub恶意软件)的shellcode。通过我们广泛而彻底的检查,我们识别出了多个恶意载荷,并重建了完整的感染链。该感染链相当复杂,揭示了Lazarus组织在目标主机上运用的先进操作技术。这些技术隐藏了其恶意载荷、意图以及复杂的恶意软件传播框架。尽管此次行动开始时间不到一年,但与之前的攻击活动相比,该框架进行了大幅更新。值得注意的是,以下执行链仅在初始入侵期间存在于内存中,这凸显了攻击者为隐藏初始入侵所付出的巨大努力。
初始感染链
在首次入侵之后,该组织试图通过安装名为 mscoree.dll 的 DLL 侧加载技术,在网络上持续运行两种恶意软件——TouchHub 和 TouchShift。TouchHub 由第一个 TechHub 实例部署。随后,它利用 DLL 侧加载技术启动 TouchShift,进而导致另一个 TechHub 实例在内存中运行。第二次启动后,TechHub 没有直接运行 Cubridge,而是部署了另外两种恶意软件——ClientHub 和 LPEClient。这些文件在磁盘上仅留下极少痕迹;其余恶意代码完全驻留在内存中。
获得持续感染能力后,感染链扩大
由于 Cubridge 仅在初始入侵阶段存在于内存中,我们怀疑该组织设计了这种间接的多阶段攻击链,以便在获得持久性后故意重新部署 Cubridge,因为它充当了攻击中最复杂的协调者。
整个链包括已知的 Lazarus 恶意软件毒株的高级变种,包括 TechHub、Cubridge、TouchShift、LPEClient 以及新发现的 TouchHub 和 ClientHub。
TechHub 是一款在此次攻击中扮演核心角色的下载器,它使用个人访问令牌 (PAT) 与 GitHub 通信。它作为初始有效载荷,为攻击链顶端提供足够的功能来分析受感染主机并推进后续有效载荷的传输。
该变种是 Mandiant 的 CLOUDBURST 和 ESET 的 NickelLoader 恶意软件的升级版。据他们的报告显示,早期版本通过 HTTP(S) 与 C2 服务器通信以获取额外的有效载荷。然而,我们发现的最新版本则改为与 GitHub 通信,并且更新了命令字符串。
我们在该传播链中发现了 TechHub 的三种变种:内存版本、简单的 DLL 侧加载版本以及使用已注册 Windows 服务的 DLL 侧加载版本。根据恶意软件加载的阶段不同,它会通过 GitHub API 连接到私有 GitHub 代码库,使用的凭据可以是硬编码的,也可以是从其配置文件中获取的。
TechHub 加载时,会创建一个 4 字节的十六进制标识符 (ID),取值范围为 0x1000 到 0xFFFF,或者从配置文件中读取一个 ID,这使得攻击者能够区分被入侵的主机。然后,TechHub 会发送请求 GET /issues?state=[open/closed] 来检查 GitHub 问题,以确定之前是否存在任何有效的通信,如果存在,则会删除所有痕迹。之后,它会继续执行握手过程。
它使用 POST /issues 请求创建一个名为 1[ID] 的新问题,其正文为“hel”,并将其状态设置为打开。
然后,它从存储库中检索一个文件名中包含 2[ID] 值的文件。该文件包含 RSA 公钥。
它生成一个随机的 16 字节 XOR 密钥,使用提供的 RSA 公钥对其进行加密,并将结果(以 1[ID] 为前缀)上传到存储库。
将硬编码的 IV 与生成的 16 字节密钥进行异或运算,然后在握手后使用。
文件交换过程中,文件名遵循 [1|2][ID][随机16字节密钥] 的模式。“2”前缀表示文件从存储库发送到 TechHub,“1”表示文件从 TechHub 发送到存储库。文件名中的随机16字节密钥用于对每个文件的内容进行AES加密或解密,加密或解密可以使用硬编码的初始化向量 (IV) 或更新后的 IV。
密钥交换完成后,TechHub 会再次读取前缀为“2”的文件,并验证传入的数据是否为“hel”。如果验证通过,TechHub 会从受感染的主机收集大量信息。这些数据随后会被加密并发送到代码库。传输完设备信息后,该过程会使用 PATCH /issues/[问题编号] 命令将之前创建的问题的正文内容从“hel”更新为“hey”。至此,恶意软件已完全准备好接收来自代码库的命令。
TechHub 支持四个命令。laeca 命令部署一个打包在 shellcode 中的有效载荷,该 shellcode 会反射性地将嵌入式有效载荷直接加载到内存中。
Cubridge 通过 TechHub 部署在受感染主机上,能够通过多种方式检索各种有效载荷。它作为整个恶意软件框架的中央协调器,支持一系列插件、模块和工具。在有关旧版 TechHub 的报告中也披露了 Cubridge 的早期版本。在这些报告中,Mandiant 将其识别为 SIDESHOW,而 ESET 则将其一个模块识别为 LightlessCan。
为了与 C2 服务器建立通信,Cubridge 会随机选择一个预定义的 C2 服务器,并使用 [C2_URL]/[page1]/[page2]/[page3] 的模式为每个请求构建一个专用的 C2 URL。这是通过连接预定义词表中的词项实现的。我们的分析发现,被检查的实例配置为 5.1 版本,并关联了一个硬编码的 C2 服务器:hxxps://cubedesign[.]co[.]kr/news/AABBCC。在 URL 生成过程中,AABBCC 被替换为空值。page3 部分被分配一个介于 10000000 和 99999999 之间的随机整数。因此,每个生成的 URL 都旨在看起来真实有效,并且对于每个请求都是唯一的。
下面显示的是第一页的预定义列表。TechHub 会从列表中随机选择一个项目。
下面显示的是第 2 页的预定义词汇表。
这意味着,按照上述步骤,可以将硬编码的 URL 转换为例如 hxxps://cubedesign[.]co[.]kr/news/economy/article/12345678。
使用 POST 请求向 C2 服务器进行身份验证需要三个参数,这些参数以键值对的形式存在。每个键都是使用不同的预定义单词字典随机生成的,关联的值包括一个随机生成的 8 字节十六进制机器人 ID、一个固定的身份验证令牌(KW4Ofw982CNJjxd51AVqkGAop)和一个随机生成的 16 字节十六进制会话 ID。
Cubridge 采用比 TechHub 更强大的握手过程,结合了 RSA 和 RC6 算法。与 TechHub 不同的是,它跳过了分析步骤,在握手后直接进入命令与控制阶段。在通信过程中,该恶意软件会模拟浏览器请求,使用 X-CSRF-Token 和 X-Requested-With 标头进行身份验证,并使用 Upgrade-Insecure-Requests 标头请求额外数据。
库布里奇的沟通序列
Cubridge 包含丰富的功能,尤其侧重于加载后续阶段的有效载荷。其命令采用了多种技术,例如 DLL 注入、反射加载和节映射注入。有效载荷可以以多种形式交付:
插件——可重用的扩展程序,可根据需要添加功能,并可随时调用(以 shellcode 和 DLL 形式);
工具(DLL 形式)——执行一次性任务的独立实用程序;
模块——只需加载一次即可保持激活状态的组件,提供扩展的功能集。
预计插件和 shellcode 的命令将加载相同类型的插件,因为两者都支持类似格式的导出函数以供后续操作。可以使用开源的 sRDI 工具生成 shellcode,该工具可以将插件打包成 DLL 格式。单个 DLL 的功能很可能用于加载独立运行的工具,因为加载单个 DLL 时,只有其 DllMain 入口点及其参数可访问;其他导出函数均不公开。
命令 21 和 22 分别加载不同的模块。顾名思义,操作模块管理基本的文件和进程操作,而函数模块实现 Windows 的默认命令。操作模块涵盖命令 23 至 41,函数模块处理命令 42 至 79。
操作模块处理系统操作命令、文件系统交互和进程行为。调用该模块的方法是将相应的命令和参数传递给其 AppinfoView 导出函数。该模块支持 19 条命令,编号为 23 至 41。执行结果首先发送到 Cubridge,然后 Cubridge 将其转发到 C2 服务器。
该函数模块实现了模拟 Windows 内置命令的功能。与操作模块类似,其 DllMain 例程初始化所有受支持的命令函数,这些函数随后可通过 PresentationFontConfig 导出访问。该模块共提供 38 个命令,编号从 42 到 79。虽然我们认为该模块基于之前的 LightlessCan,但这是我们首次看到它以独立模块的形式存在。
除了模块之外,我们还观察到该参与者部署了各种插件和工具。
在分析过程中,我们从 TechHub 的私有 GitHub 代码库中获取了一个此前未知的恶意软件样本,该样本是 TouchShift 的父安装程序。我们将此恶意软件命名为 TouchHub。执行后,它会将合法的 printfilterpipelinesvc.exe 复制到 C:\Windows\System32\RasConv\ImeBroker.exe,并将其注册为服务,同时将名为 mscoree.dll 的嵌入式 TouchShift 有效载荷放置在同一目录下。创建完成后,该恶意软件会将 C:\Windows\System32\drivers\monitor.sys 的 MAC 时间戳与新写入的文件的 MAC 时间戳同步,从而阻碍取证分析。
然后,它会进行服务注册流程,收集 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost 下 netsvcs svchost 组名下最多 100 个合法的服务名称。它会随机选择其中一个名称,并在后面附加两个随机字母字符形成一个新的服务名称,然后使用该名称创建一个服务,该服务运行硬编码的命令行 C:\Windows\System32\RasConv\ImeBroker.exe -TimeBroker,描述为“Microsoft Service”。新创建的服务会立即启动。总而言之,TouchHub 会在指定目录中创建三个文件,以便以 SYSTEM 权限启动 TouchShift。
TouchHub 投放的 TouchShift 版本几乎与 Mandiant 博客文章中描述的版本完全相同,甚至连恶意导出函数 LockClrVersion 都一样。它会获取 TouchHub 提供的参数,并将其与一个硬编码的密钥进行异或运算。然后,将所得值再次与可执行文件的文件名进行异或运算,并将结果用作 AES 密钥。此过程中涉及的所有字符串(参数、异或密钥、文件名)长度必须正好为 16 个字节。如果字符串长度不足 16 个字节,则会用 NULL 字节(\x00)填充;如果长度超过 16 个字节,则会被截断为 16 个字符。例如,在获取的样本中,其中一个字符串组合是:
参数:-TimeBroker\x00\x00\x00\x00\x00(以 NULL 填充)
硬编码的异或密钥:x809G736iC3f8Wp8
可执行文件名:ImeBroker.exe\x00\x00\x00(以 NULL 填充)
获取密钥后,恶意软件使用无填充的 AES-CBC-128 算法解密嵌入的有效载荷。解密后的数据是 shellcode,以调用指令开头。它封装了下一阶段的有效载荷——被识别为 TechHub 的第三个版本(通过 DLL 侧加载并注册服务)——该有效载荷将 ActivationStore.dat 文件读取为外部配置。
我们还发现了一种存储在 TechHub 私有代码库中的新型恶意软件,我们将其命名为 ClientHub。它支持使用位掩码构成的各种命令。ClientHub 至少有两个版本:一个版本通过 HTTP(S) 与网站通信,另一个版本使用凭据与 Dropbox API 交互。
根据版本不同,其配置信息来源于内部资源或外部配置文件 C:\Program Files\Common Files\System\msadc\msadc.inc。配置信息包含 SNOW 1.0 算法的密钥和初始化向量 (IV)、计划执行时间以及使用 SNOW 流密码加密的 C2 服务器地址。SNOW 密码是一系列高速流密码,用于电信和无线网络中的安全数据加密。这是首次在 Lazarus 组织的恶意软件中发现 SNOW 密码。
为了建立C2通信,恶意软件首先生成一个32字节的随机数组。随后,它用从受感染设备收集的数据覆盖该数组的部分内容。最终得到的32字节数组包含随机字节和相关信息。该数组随后被用作SNOW算法的密钥,用于解密从C2服务器接收的数据。最后,该密钥数组使用硬编码的RSA公钥进行加密,并以Base64编码。
密文通过 GET 请求发送到 C2 服务器。每个请求都包含一些恶意软件不常用的头部信息:Sec-CH-UA、Sec-CH-UA-Platform、Sec-CH-UA-Mobile、Sec-Fetch-Mode 和 Sec-Fetch-Dest。这些头部信息通常由合法的基于 Chromium 的浏览器使用,使恶意软件能够模仿合法流量并逃避检测。C2 服务器会以自定义的头部和消息体回复命令。
邮件头中的 body_type 字段决定了后续有效载荷的处理方式。该值相当于一个位掩码,其中每一位代表一个不同的标志位(例如,0x1、0x2、0x4 等)。最终的处理结果还取决于最低有效位(位 0)是否被设置:当该值为奇数时,恶意软件会将传入的邮件正文解释为一个额外的有效载荷,并将其加载到内存中。相反,当该值为偶数时,恶意软件会调用之前加载的有效载荷。
奇数值支持基于接收到的消息体的四种不同的加载方法,并确保每种方法只执行一次。
偶数值提供了两种不同的调用方法,用于已加载且与奇数值位掩码关联的 DLL 和插件。2 (0x10) 标志允许重用并直接调用先前使用 1、3 或 5 位掩码加载的有效载荷。值 16 (0x10000) 对应于加载模式下的 17 (0x10001) 标志,并使用已建立的交互式共享缓冲区交换数据。所有值均保证独立运行。
考虑到加载机制,我们确定了部署到目标平台的四个插件可以与 ClientHub 完美配合。
除了插件之外,ClientHub 还支持加载 LPEClient 恶意软件并与之通信。我们发现 ClientHub 的 body_type 值 16 和 17 对应于 LPEClient 的 C2 通信机制。
LPEClient是唯一一款在“同步漏洞行动”(Operation SyncHole)中也被发现的恶意软件,这表明攻击者严重依赖它来进行复杂的受害者画像分析,并在多次行动中投放恶意载荷。LPEClient最早出现于2019年,并于2020年被发现。此后,该工具在针对韩国的“梦想职业”(Dream Job)和“级联漏洞”(Cascade Hole)攻击活动中被广泛发现。Check Point最近的研究表明,攻击者利用零日漏洞,通过LPEClient部署了FudModule恶意软件。
LPEClient 随着时间的推移不断发展演进,但我们发现它最近经历了一次重大的运行机制调整。它不再直接包含 C2 服务器地址;而是通过共享缓冲区与 ClientHub 进行交互。我们认为此举旨在增强隐蔽性。
LPEClient 的时间线
之前的版本会收集计算机名称、内存状态、CPU规格、操作系统详情、ntoskrnl.exe文件版本、固件表、杀毒软件名称、域名、用户名、当前进程的完整性级别以及一个1568字节的随机字节序列。新更新的LPEClient版本收集的信息基本相同,但也引入了一些变化。
它并非通过查询 FileVersion 值来获取 ntoskrnl.exe 文件的版本。而是根据具体的系统版本,读取 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR 注册表项或 SYSTEM_BUILD_VERSION_INFORMATION 结构来检索 Windows 版本号的修订部分。这些值可用于推断系统的累积更新或补丁级别。
为了收集已安装防病毒产品的信息,它不再使用 WQL 命令查询,而是直接读取 WMI 存储库文件。现在,它会读取 C:\Windows\System32\wbem\Repository\OBJECTS.DATA 文件,并搜索 AntiVirusProduct、companyName 和 displayName 等关键字来识别已安装的产品。
它还会收集底层 Windows 安全缓解状态。为此,它会查询 SYSTEM_KERNEL_VA_SHADOW_INFORMATION 结构以获取内核 VA 影子缓解状态,并查询 SYSTEM_SHADOW_STACK_INFORMATION 结构以获取影子堆栈 (CET) 保护状态。
此外,它使用 HighwayHash 算法和与当前系统时间的异或运算生成一个 32 字节的随机唯一标识符。收集到的信息(包括生成的标识符)使用 XPRESS Huffman 算法以最大压缩设置进行压缩。压缩后的数据与消息 ID 0xF07D6B34 连接,并使用 GOST(也称为 Magma,俄罗斯国家加密标准,采用类似 DES 的结构)进行加密,然后通过共享缓冲区发送到 ClientHub。最初,KrCERT 将该算法描述为自定义的类似 DES 的方案。然而,我们和 Check Point 的进一步分析证实,它实际上是 GOST 算法。密钥由专有的密钥生成算法随机生成,并添加到加密消息的前面。
下一个请求通过传递消息 ID 0xA39CF278 以及生成的唯一标识符来处理密钥交换。响应使用 AES-CBC-256 算法进行解密。先前生成的 1568 字节随机值的 SHA-256 哈希值(该随机值最初在收集阶段发送到 C2 服务器)用作此次解密的密钥。
通过此过程,LPEClient 从 C2 服务器响应中获取一个包含四个 1568 字节数据块的字节数组。每个数据块包含一个 ML-KEM-1024 公钥,其中 ML-KEM 是一种 NIST 标准化的后量子密钥封装机制,源自 CRYSTALS-Kyber。LPEClient 随后从这些数据块生成四对不同的共享密钥和密文,使用 GOST 算法加密密文,并通过 ClientHub 将它们连同消息标识符 0xEF8C0D51 和关联的标识符一起发送到 C2 服务器。至此,接收有效载荷的准备阶段已完成,恶意软件已准备好接收 ClientHub 从 C2 服务器转发的有效载荷及其必要的参数。使用后量子加密技术表明该组织意图隐藏后续的有效载荷。
使用 Threefish 算法和由四个不同的共享密钥组成的 256 字节密钥对 0xEF8C0D51 消息进行解密。Threefish 是一种可调分组密码,除了密钥和消息之外,还接受一个“tweak”值。tweak 的概念类似于 nonce 或初始化向量,它们用于不同类型的密码算法中。在 LPEClient 通信中,解密所需的 tweak 值是通过将唯一标识符与 165 (0xA5) 进行异或运算得到的。解密消息的前四个字节必须指定参数的长度,然后是参数本身,最后是有效载荷。有效载荷必须大于 4 KB,并且以字符“MZ”开头,这表示解密后的有效载荷是一个可执行文件。然后,有效载荷通过反射加载到内存中。加载成功后,LPEClient 会将消息 ID 0xCB790A25 发送到 C2 服务器。
在加载获取的有效载荷之前,LPEClient 会采取措施绕过安全产品。该恶意软件并未直接调用 VirtualProtect,而是利用 jscript9.dll 中已识别的 HeapPageAllocator::ProtectPages 来修改 MD4Update 函数的内存页保护。然后,该函数的开头会被硬编码的操作码序列覆盖,该序列充当带有所需参数的系统调用存根。LPEClient 随后利用该系统调用存根来禁用用户模式系统调用检测钩子。
我们确定了最终加载的有效载荷,即 Cubridge。整个通信过程如下。
LPEClient 和 C2 之间通过 ClientHub 进行数据中继流
在整个调查过程中,我们发现了TechHub、Cubridge和ClientHub部署的多种有效载荷。这些有效载荷被归类为工具、插件和模块,共同构成了该组织的模块化恶意软件框架。虽然我们尚未确定在特定条件下部署了哪些有效载荷,但证据表明,Lazarus Group的工具包正变得日益复杂,并被分割成多个专用组件,而非单一的综合后门。我们还认为TechHub和Cubridge可能共享类似的工具。
这些模块化并非仅限于本次攻击活动中的实例。如前所述,CookiePlus、MISTPEN、SIGNBT 和 IMETHOD 中也发现了类似的模式。请注意,我们已将 SyncHole 行动中使用的 ThreatNeedle 变种重新归类为 IMETHOD 的最新版本,而 IMETHOD 是 ThreatNeedle 的前身,至少自 2016 年以来一直在使用。
根据我们从 TechHub 恶意软件中获取的信息,我们识别出至少三个用作 C2 服务器的主要代码库和一个备用代码库。最早的证据表明,该组织至少从 2025 年 7 月起就开始利用 GitHub 作为 C2 服务器。我们怀疑所有账户都是使用被劫持的电子邮件账户创建的,并通过复制或创建普通项目来伪装成普通代码库,以避免引起怀疑。
对于 Cubridge 和 ClientHub 的 C2 服务器,Lazarus 集团仅利用了极少数已被攻破但合法的韩国媒体和室内设计网站。之后,我们发现他们还利用了更多不同行业的合法网站。此外,我们检测到的一个 ClientHub 样本使用了 Dropbox 作为 C2 通道。
我们已确认韩国至少有三家公司,分别来自软件、建筑和有线通信设备行业,是“闪光孔行动”的目标。但与之前的行动一样,我们仍然相信,受影响的组织数量远不止于此,而且涉及的行业范围也更广。
软件行业是SyncHole和FlashHole攻击活动中唯一被攻击的目标行业。这表明攻击者渴望攻破该行业,窃取源代码,并利用漏洞发起进一步攻击。
“闪光洞行动”是规模更大的“级联洞”攻击活动的最新一波,该活动利用韩国软件作为潜在入口,向韩国投放恶意软件。尽管恶意软件链自去年以来已显著发展,但基于初始传播途径、目标、多阶段传播链以及技术和操作上的改进,我们有中等至高度的把握评估认为,“同步洞”和“闪光洞行动”系同一攻击者所为。特别是,LPEClient 的使用有力地支持了这一评估。
此次攻击中使用的恶意软件与拉撒路组织臭名昭著的“梦想职业”(Dream Job)攻击活动中使用的工具集有着历史渊源。TechHub(又名 CLOUDBURST 和 NickelLoader)、Cubridge(又名 SIDESHOW 和 LightlessCan)以及 TouchShift 的早期版本都曾在该攻击活动中出现,尤其是在 2022 年至 2023 年间。
我们还发现 CookiePlus 和 ClientHub 在类名、配置路径和插件方面存在显著重叠。基于这些相似性,我们有中等至较高的置信度评估认为 ClientHub 是 CookiePlus 的高级版本。
自7月“同步漏洞行动”(Operation SyncHole)开始逐步结束以来,我们也观察到多起针对韩国的重大攻击,这些攻击均使用了COPPERHEDGE后门程序,并以韩国多家机构为目标。值得注意的是,这些攻击的起始时间与我们目前发现的“闪光漏洞行动”(Operation FlashHole)的最早证据相吻合。尽管该后门程序是“同步漏洞行动”第二阶段的一部分,但此后它一直使用其定制加载器独立运行。这些攻击事件中使用的恶意软件链和工具与“同步漏洞行动”和“闪光漏洞行动”中使用的恶意软件链和工具截然不同。
正如AhnLab在其报告中指出的,同样的后门很可能也出现在一些非典型活动中,特别是Gunra勒索软件感染事件中。我们的调查进一步显示,其中一起后门感染事件最终导致数据泄露到一个暗网泄露网站,该网站显然与Gunra的泄露网站不同。该网站似乎是专门为此类活动而创建的。总之,与其他攻击不同,该后门被同时用于勒索软件攻击和数据泄露。
数据泄露网站与暗网上的 COPPERHEDGE 后门程序有关联
另一点值得注意的是,最近的“梦想职业”(Dream Job)攻击活动采用了更新的恶意软件链,该恶意软件链自2024年左右以来主要涉及MISTPEN和ForestTiger,而非之前包含TechHub和Cubridge等工具的恶意软件库。然而,这些旧恶意软件的更新版本如今已作为“闪光洞行动”(Operation FlashHole)的一部分再次出现。考虑到这些变化以及每次攻击的战术、技术和程序(TTP)的各个方面,我们对每次攻击都进行了分类。
拉扎勒斯集团近期发动的袭击存在重叠之处
我们的分析表明,拉撒路组织在完成上一次行动后不久便开始筹备下一次行动,最终通过改进现有工具部署了一条增强型恶意软件链。该组织持续使用高级版的LPEClient进行分析和有效载荷投放,这表明该工具得到了精心管理和维护。具有讽刺意味的是,该组织似乎比许多合法的安全产品更快地采用了更安全的后量子加密技术。这些观察结果表明,其中有一名专门的开发人员参与其中,其他人则负责策划针对新目标软件的全面攻击方案。
我们预料到针对韩国的专项攻击会持续存在。然而,我们并未预料到多起攻击活动会同时进行,且每起攻击都利用了不同类型的软件和工具。值得注意的是,COPPERHEDGE 集群似乎参与了攻击的盈利活动,而“闪电洞行动”(Operation FlashHole)则专注于间谍活动。我们正在密切关注这些变化,以了解其动机和最终目标。2025 年 10 月,韩国政府公布了一项全面的网络安全计划,该计划将从 2026 年开始逐步取消用户强制安装安全软件的要求。我们估计,在软件被彻底清除或缓解之前,利用这些软件的攻击活动仍将保持高度活跃一段时间,以最大限度地提高效率。
卡巴斯基产品检测到此攻击中使用的漏洞利用程序和恶意软件,并得出以下结论:MEM:Trojan.Win64.Shellcode.gen, Trojan.Win64.DLLhijack.*, Trojan.Win64.Lazarus.*.
TouchShift ec84d6cb2ae7974767aedac246b50a3e mscoree.dll a28cba214058fcae2883d8cffc883abd mscoree.dll c105d6b16f544582772de0159f24c00a mscoree.dll 2f8475a90a25624ed02f1d18d4e6d65d mscoree.dll 676fabe30a28b53925fba98e34b35986 mscoree.dll b4a7eff35f048f06fb0a2d7631f23a7d mscoree.dll
ClientHub Loader ff07641dc56914dd90ee0bd7404d7ad7 liblzma.dll
C:\ProgramData\Dell\Dell1.tmp C:\ProgramData\Dell\Dell3.tmp C:\ProgramData\Package.txt C:\ProgramData\RasConv\mscoree.dll C:\ProgramData\Apple\mscoree.dll C:\ProgramData\ssh\mscoree.dll C:\ProgramData\qorestor\mscoree.dll C:\ProgramData\Dell\mscoree.dll C:\ProgramData\Dell\Dell1.tmp C:\ProgramData\Dell\Dell3.tmp C:\Windows\System32\RasConv\mscoree.dll C:\Windows\System32\RasConv\ActivationStore.dat C:\Windows\System32\DrvConh\mscoree.dll C:\Windows\System32\DrvConh\ActivationStore.dat C:\Program Files\Common Files\System\msadc\msadc.inc C:\ProgramData\desktops.ini
javadevhouse.co[.]kr pythonapischool[.]com hxxps://cubedesign[.]co[.]kr/news C2 of Cubridge hxxps://cubedesign[.]co[.]kr/mobile/fashion C2 of Cubridge hxxps://fp-news[.]co[.]kr/shop/cart C2 of Cubridge hxxps://k-wbc[.]co[.]kr/skin/social/social_view.php C2 of ClientHub hxxps://rcsh[.]co[.]kr/modules/bbs/tiles/bbs_div/inputForm.php C2 of ClientHub hxxps://www[.]ksog[.]org/insert_file/handle.php C2 of ClientHub
恶意软件描述
恶意软件技术
后量子密码学
“闪光洞行动”:拉撒路突破安全防线,无视控制
本网站使用 Akismet 来减少垃圾邮件。了解您的评论数据如何处理。
伟大的想法。巴拉莱卡版
绝妙创意。绿茶版
GReAT Ideas。由 SAS 提供支持:恶意软件归因和下一代物联网蜜罐
GReAT Ideas。由 SAS 提供支持:威胁行为者在新战线上不断扩张
GReAT Ideas。由 SAS 提供支持:威胁狩猎和新技术
出自同一作者之手
Kimsuky 的目标客户是使用基于 PebbleDash 工具的组织
加密货币投资浪费:BlueNoroff 的融资和就业幻影
同步洞行动:拉撒路APT重返井底
同一类别
纸独角兽的旅程:现代仓库里的奇遇
拉撒路APT的加密货币博弈:投资者对抗零日漏洞
Grandoreiro,这个拥有宏大目标的全球特洛伊木马
SAS CTF 以及在 Windows 7 上持久化内核 shellcode 的多种方法