Poulight Stealer, a new Comprehensive Data Stealer from Russia

Introduction

Nowadays, info-stealers are one of the most common threats. This category of malware includes famous malware like Azorult, Agent Tesla, and Hawkeye. The infostealer market is one of the most remunerative for cyber criminals, information gathered from infected systems could be resold in the cybercrime underground or used for credential stuffing attacks.

Over the last two months, we monitored the evolution and the diffusion of an infostealer dubbed by the authors Poulight that most likely has a Russian origin.

, New Info Stealer Poulight From The Russian Underground

Figure 1: C2 Panel of the Poulight infostealer

Poulight was first spotted by MalwareBytes researchers in middle March and indicators of compromise have been already shared among  the security community. The malicious code has advanced stealing capabilities and continues to evolve.

Technical Analysis

Hash8ef7b98e2fc129f59dd8f23d324df1f92277fcc16da362918655a1115c74ab95
ThreatPoulight Stealer
Brief DescriptionPoulight Stealer
Ssdeep1536:GJv5McKmdnrc4TXNGx1vZD8qlCGrUZ5Bx5M9D7wOHUN4ZKNJH:GJeunoMXNQC+E5B/MuO0Ogt

Table 1. Sample information

Like most of the malware of this specific family, it is generated from a builder available to cyber criminal groups that offer a subscription plan for its “product”. The result is a .NET executable:

, New Info Stealer Poulight From The Russian Underground

Figure 2: Static information about the binary file

A peculiarity of this sample is that it does not have a minimal sign of obfuscation, the analysis is quite easy, so describe the malware capabilities. When the malware is launched, it performs a classical evasion technique (as shown in Fig.3):

, New Info Stealer Poulight From The Russian Underground

Figure 3: Evasion Technique

The implemented evasion technique is one of the most classic ones, where, through the usage of Windows Management Instrumentation (WMI) by executing the query “Select * from Win32_ComputerSystem”. In particular, in this way, some checks of the most relevant tracks of virtualization are provided, like:

  • “vmware”
  • “VIRTUAL” 
  • “VirtualBox”
  • “sbiedll.dll” (Sandboxie)
  • “snxhk.dll” (Avast sandbox)
  • “SxIn.dll” (Avast sandbox)
  • “Sf2.dll” (Avast Sandbox”

These checks are also listed from the Al-Khaser or Pafish tools which are intended to be a test suite to detect malware analysis environments and designed to test the strength of the sandboxes.

Then, the malware is able to proceed with the infection starting a new threat called “Starter”.

, New Info Stealer Poulight From The Russian Underground

Figure 4: Loader module of the malware

The “Starter” class contains the routine to load the components of the malware. Before that, there is the inizalitation of some directories and files used to store the gathered information from the victim machine. This action is performed by the first instruction “global::Buffer.Start()”. The method is quite simple: a series of folders were created inside Windows Special folders (AppData, Local AppData, Personal, Desktop) in this way:

, New Info Stealer Poulight From The Russian Underground

Figure 5: Creation of folders in the Windows Special Folders

After that, the malware extracts the configuration file and its parameters from the resource named “String0”. It is a Base64 encoded string and through the following method are then decoded:

, New Info Stealer Poulight From The Russian Underground

Figure 6: Routine to extract the configuration file

Instead, the content of the configuration file is shown in below figure:

<settings>PHByb2cucGFyYW1zPllXUnRhVzQ9fE1RPT18TUE9PTwvcHJvZy5wYXJhbXM+PHRpdGxlPlVHOTFiR2xuYUhRPTwvdGl0bGU+PGNwZGF0YT5NSHd3ZkRFeVEwNTFTMnRMU3pGNFRFWnZUVGxRTlRoNlYxaHJSVXhOZURGNU5URjZObGw4TVRKRFRuVkxhMHRMTVhoTVJtOU5PVkExT0hwWFdHdEZURTE0TVhrMU1YbzJXWHd3PC9jcGRhdGE+PHVsZmlsZT5hSFIwY0RvdkwzSjFMWFZwWkMwMU1EY3pOVEk1TWpBdWNIQXVjblV2WlhoaGJYQnNaUzVsZUdVPTwvdWxmaWxlPjxtdXRleD5QTDJkNHZGRWdWYlFkZGRka21zMFpoUWlJMEk8L211dGV4Pg==</settings>

Code snippet 1

Decoding the Base64 string we obtain a list parameters coming from the builder. The result is:

<prog.params>YWRtaW4=|MQ==|MA==</prog.params><title>UG91bGlnaHQ=</title><cpdata>MHwwfDEyQ051S2tLSzF4TEZvTTlQNTh6V1hrRUxNeDF5NTF6Nll8MTJDTnVLa0tLMXhMRm9NOVA1OHpXWGtFTE14MXk1MXo2WXww</cpdata><ulfile>aHR0cDovL3J1LXVpZC01MDczNTI5MjAucHAucnUvZXhhbXBsZS5leGU=</ulfile><mutex>PL2d4vFEgVbQddddkms0ZhQiI0I</mutex>

Code snippet 2

The first information tag “prog.params” is immediately retrieved in the instruction “HandlerParams.Start()” seen in Figure 4. Now, a check of a previous infection is performed before starting a new one. The instruction “AntiReplaySender.CheckReplayStart()” (in figure 4) is delegated to do that. 

, New Info Stealer Poulight From The Russian Underground

Figure 7: Check of a previous infection

The malware tries to find the id of the mutex, declared inside the relative tag seen in code snippet 2, inside the “%TEMP%” folder. If the file is present, the malware does not execute itself another time, otherwise it writes this empty file to sign the infection is started. After that, we turn into the actual malicious main contained inside the “XS” class , as seen in the figure 4. The first piece of the code is the following: 

, New Info Stealer Poulight From The Russian Underground

Figure 8: Initialization of the mail module

The first instruction is “Information.Start()” where all the information about the hardware and software of the host is collected in this way:

, New Info Stealer Poulight From The Russian Underground

Figure 9: Routine for retrieving the configuration of the victim machine

We can notice that the malware uses both English and Russian languages to log the information gathered. After that, the stealer turns to enumerate and log all the active processes inside the operative system.

, New Info Stealer Poulight From The Russian Underground

Figure 10: Routine to extract the process list

Now, as seen in the figure 8, a check on the third parameter is performed. If it is equal to one, the “clipper” module is executed.

, New Info Stealer Poulight From The Russian Underground

Figure 11: Routine to decrypt and execute an embedded component

As show in the above figure, this code is able to decrypt a component contained inside the “clbase” tag with the AES key stored inside the “cpdata” tag. However, in the specific configuration there is no “clbase” field, so we don’t have any other component to install. The last instruction seen in Figure 8 is “CBoard.Start”, which works in the following way:

, New Info Stealer Poulight From The Russian Underground

Figure 12: Routine to steal the clipboard data

The next step is to gathered all the sensitive information on the victim machine:

, New Info Stealer Poulight From The Russian Underground

Figure 14: Stat of the stealing modules

The malware steal a huge amount of data:

  • Desktop Snapshot
  • Sensitive Documents
  • Webcam snapshot
  • Filezilla credentials
  • Pidgin credentials
  • Discord Credentials
  • Telegram
  • Skype 
  • Steam
  • Crypto Currencies
  • Chrome chronology

The most interesting part is the module “DFiles” instructed to steal the sensitive documents. It starts with searching files with one of the following extensions:

, New Info Stealer Poulight From The Russian Underground

Figure 15: Routine for search the files with the specific extensions

Inside of the collected files, the malware looks for the classic keywords indicating that the content of the files conserve some useful credentials. The keywords are the following:   

, New Info Stealer Poulight From The Russian Underground

Figure 16: List of keywords searched inside the documents 

Then the malware collect all the information inside an unique data structure and send it to the C2 retrieved in another resource named “connect”:

, New Info Stealer Poulight From The Russian Underground

Figure 17: Routine to upload to the C2 the stolen information

In the end, it downloads and executes other components from the Internet. The parameters are retrieved in the same way seen in the previous section: a tag named “ulfile” contains the component to download.

, New Info Stealer Poulight From The Russian Underground

Figure 18: Routine to download other components from Internet

Conclusion

Poulight stealer has an incredible potential to steal sensitive information. It is not excluded that in the future it might replace other info stealers like Agent Tesla, remcos ecc. However, the limitation of the implant is the lack of code obfuscation and data protection, but this could be explained due the fact that, maybe, the malware is in the early stages of development. The crooks probably will enhance these features, but at the same time, we’ll continue to keep track of them!

Indicators of Compromise

  • Hashes
    • 8ef7b98e2fc129f59dd8f23d324df1f92277fcc16da362918655a1115c74ab95
  • C2
  • Exfiltration
    • AccountLogin.TXT
    • {0}Telegram Desktop\tdata
    • loginusers.vdf
    • *.vdf
    • “SteamID”
    • {0}Microsoft\Skype for Desktop\Local Storage
    • {0}ProcessList.txt
    • {0}\Steam\info.txt
    • {0}\FileZilla.txt
    • {0}\recentservers.xml
    • {path}\NordVPN.txt
    • {0}.purple\accounts.xml
    • {0}Browsers\info.txt
    • {0}Browsers\Passwords.txt
    • “wallet.dat” 
    • {0}Ethereum\keystore
    • *.wallet
    • {0} \ wallets \ wallet.dat
    • {0}Browsers\[{1}-{2}] Cookies.txt
    • {0}Telegram Desktop\tdata
    • Google\Chrome\User Data
    • Yandex\YandexBrowser\User Data
    • Opera Software\Opera Stable
    • Amigo \ User \ User Data
    • Orbitum\User Data
    • Kometa\User Data
    • Maxthon\User Data
    • Torch\User Data
    • Epic Browser\User Data
    • Comodo\Dragon\User Data
    • CozMedia\Uran\User Data
    • CentBrowser\User Data
    • Go!\User Data
    • Sputnik\User Data
    • Titan Browser\User Data
    • AcWebBrowser\User Data
    • Vivaldi\User Data
    • Flock\User Data
    • SRWare Iron\User Data
    • Sleipnir\User Data
    • Rockmelt\User Data
    • Baidu Spark\User Data
    • CoolNovo\User Data
    • BlackHawk\User Data
    • MapleStudio\ChromePlus\User Data
    • .docx
    • password
    • account
    • \Desktop Files
    • \Documents Files
    • \AppData Files
    • \LocalAppData Files
    • \Disks Files

Yara Rules

import "pe"

rule Poulight_Stealer_May_2020 {
meta:
      description = "Yara rule for Poulight Stealer"
      hash = "8ef7b98e2fc129f59dd8f23d324df1f92277fcc16da362918655a1115c74ab95"
      author = "Cybaze - Yoroi  ZLab"
      last_updated = "2020-05-07"
      tlp = "white"
      category = "informational"
    
strings:
	$s1 = "http//fff.gearhostpreview.com/ARMBot" ascii
	$s2 = "WBcG91bGxpZ2h0Lhttp://poullight.ru/keys.txt" ascii 
	$s3 = "Poullight.exe"
	$s4 = "\\wallets\\wallet.dat" wide ascii
	$s5 = "=====================================" wide ascii
	$s6 = {2F 7B 00 30 00 7D 00 3C 00 63 00 6C 00 62 00 61
		00 73 00 65 00 3E 00 7B 00 ?? 00 7D 00 3C 00 2F
		00 63 00 6C 00 62 00 61 00 73 00 65 00 3E 00}
$s7 = "Select * from Win32_ComputerSystem" wide ascii
	
condition:
	uint16(0) == 0x5A4D and all of them
}

This blog post was authored by Luigi Martire, Antonio Pirozzi and Pierluigi Paganini