Go Injector: A Pathway to Stealers

Short Summary:

eSentire’s Threat Response Unit (TRU) reported on the detection of Go Injector leading to the execution of Lumma Stealer, a malware targeting sensitive data. The infection involved a fake captcha page tricking users into executing malicious PowerShell commands. The investigation revealed a sophisticated delivery method and highlighted the need for vigilance against such social engineering tactics.

Key Points:

  • eSentire operates 24/7 SOCs with elite threat hunters and cyber analysts.
  • TRU observed Go Injector leading to the execution of Lumma Stealer in August 2024.
  • Lumma Stealer targets cryptocurrency wallets and sensitive data, operating as Malware-as-a-Service since August 2022.
  • The infection chain began with a user visiting a malicious website displaying a fake captcha.
  • Malicious PowerShell commands were used to download and execute malware.
  • Go Injector performs a 3-step injection process to execute Lumma Stealer.
  • Recommendations include awareness of social engineering tactics and monitoring for indicators of compromise.

MITRE ATT&CK TTPs – created by AI

  • ExecutionPowerShell (T1059.001)
    • Used to execute a Base64 encoded command provided to the user via a fake captcha page.
  • ExecutionCommand and Scripting Interpreter (T1059)
    • PowerShell commands were executed to download and extract malicious payloads.
  • PersistenceInfectious Software (T1055)
    • Go Injector uses a process injection technique to execute Lumma Stealer.
  • Credential AccessCredential Dumping (T1003)
    • Lumma Stealer targets sensitive data including cryptocurrency wallets and 2FA browser extensions.

Adversaries don’t work 9-5 and neither do we. At eSentire, our 24/7 SOCs are staffed with Elite Threat Hunters and Cyber Analysts who hunt, investigate, contain and respond to threats within minutes.

We have discovered some of the most dangerous threats and nation state attacks in our space – including the Kaseya MSP breach and the more_eggs malware.

Our Security Operations Centers are supported with Threat Intelligence, Tactical Threat Response and Advanced Threat Analytics driven by our Threat Response Unit – the TRU team.

In TRU Positives, eSentire’s Threat Response Unit (TRU) provides a summary of a recent threat investigation. We outline how we responded to the confirmed threat and what recommendations we have going forward.

Here’s the latest from our TRU Team…

What did we find?

In August 2024, eSentire’s Threat Response Unit (TRU) observed Go Injector leading to the attempted execution of Lumma Stealer.

Lumma Stealer (aka LummaC2 Stealer) is an information stealing malware developed in the C programming language. It has been operating as Malware-as-a-Service (MaaS) in Russian-speaking forums since August 2022. Lumma Stealer targets cryptocurrency wallets, 2FA browser extensions, and other sensitive data on victims’ devices.

The infection chain began with the user navigating to a malicious website that displayed a fake captcha page. The page copies a Base64 encoded PowerShell command (Figure 1) to the users’ clipboard and provides instructions to execute it using the Windows Run keyboard shortcut as part of a “Verification Step” (Figure 2).

Figure 1: Base64 encoded PowerShell command provided to user
Figure 1: Base64 encoded PowerShell command provided to user
Figure 2: Fake captcha page
Figure 2: Fake captcha page

The file retrieved, as seen in the decoded PowerShell command from Figure 2, is named smart1. The smart1 file is a PE, Dialer.exe (Figure 3), which is used to masquerade as a legitimate application. By executing Dialer.exe with MSHTA all the non-HTML/script data is ignored, only executing the embedded script content within. The embedded script content can be observed when opening the smart1 file in a text editor.

When investigating the domain which served the smart1 file, we were able to identify an additional four files numbering from smart1 to smart5 which are likely used to deliver varying payloads.

Figure 3: smart1 showing as PE
Figure 3: smart1 showing as PE

Through decoding the HTA payload found within, VBScript code can be identified (Figure 4)

Figure 4: VBScript code found within HTA payload
Figure 4: VBScript code found within HTA payload

When decoding the VBScript code, an encoded PowerShell command is present. By beautifying the PowerShell command, code responsible for retrieving the archive file ‘smart1.zip’ to the Temp directory, extracting the contents and executing them, can be identified (Figure 5).

Figure 5: PowerShell to download and extract content from smart1.zip
Figure 5: PowerShell to download and extract content from smart1.zip

The contents of the ‘smart1.zip’ archive are mainly legitimate DLL files; however, the executable file present is Go Injector (0klevgrand.exe), a malware injection program written in the Go programming language (Figure 6).

Figure 6: smart1.zip contents
Figure 6: smart1.zip contents

Go Injector

Upon examining the 0klevgrand.exe executable, we can find references to the Go build ID and Inno Setup (Figure 7). The Inno Setup portion is a part of its manifest file which may have been placed to masquerade as an Inno setup utility.

Figure 7: 0klevgrand.exe displaying the Go Build ID and Inno Setup
Figure 7: 0klevgrand.exe displaying the Go Build ID and Inno Setup

When 0klevgrand.exe is executed, a few key steps are performed, including basic initial host data collection where the malware identifies the hostname, username, and temporary and public directories. Go Injector will then copy the encrypted PE data of size 0x4E000 to the allocated region of memory from its .rdata section (Figure 8). It then calls VirtualAlloc again to allocate another region of memory where the same encrypted PE data is copied over.

Figure 8: Go Injector allocating memory to copy encrypted PE data
Figure 8: Go Injector allocating memory to copy encrypted PE data

The Go Injector uses a 3-step injection process comprising of CreateProcess to create a BitLockerToGo.exe process in suspended mode, WriteProcessMemory to write the contents of the Lumma Stealer module in memory of the BitLockerToGo.exe process and ResumeThread to resume the execution of the BitLockerToGo.exe process which now has overwritten Lumma Stealer content (Figure 9).

Figure 9: Go Injector 3-step injection process
Figure 9: Go Injector 3-step injection process

The decrypted PE data of the Lumma Stealer module is shown below (MD5: E372BBE59DC7DA4FDAB393DA71404848) (Figure 10).

Figure 10: Decrypted PE data (Lumma Stealer PE)

After copying over the PE data, Go Injector then allocates 0x4E000 bytes of memory to decrypt the final PE data of the payload using AES GCM decryption (Figure 11).

Figure 11: Decryption method used by Go Injector to decrypt the Lumma Stealer payload
Figure 11: Decryption method used by Go Injector to decrypt the Lumma Stealer payload

Lumma Stealer

On viewing the decrypted PE data using a disassembler, we see base64 like strings which are typical of Lumma Stealer (Figure 12).

Figure 12: Lumma Stealers base64 lookalike strings
Figure 12: Lumma Stealers base64 lookalike strings

Using our previous Lumma Decryptor with the new base64 like strings, we get the domains for the new samples.

Figure 13: Lumma Stealers decrypted C2 domains
Figure 13: Lumma Stealers decrypted C2 domains

The delivery method and the first stage injector indicate a possible Pay-Per-Install (PPI) service. During the investigation, the Threat Intelligence team was able to identify an almost identical execution of Go Injector on a public Joesandbox analysis report. In that incident the final payload appears to be another known malware dubbed StealC instead of Lumma Stealer (Figures 14 – 15).

Figure 14: eSentire observed Go Injector leading to Lumma Stealer
Figure 14: eSentire observed Go Injector leading to Lumma Stealer
Figure 15: Public Joesandbox sample with Go Injector leading to StealC source:https://www.joesandbox.com/analysis/1491044/0/html
Figure 15: Public Joesandbox sample with Go Injector leading to StealC source: https://www.joesandbox.com/analysis/1491044/0/html

What did we do?

Our 24/7 SOC Cyber Analysts investigated the suspicious activities, notified the client, and isolated the affected device.

What can you learn from this TRU Positive?

  • Fake captcha pages use a sophisticated social engineering tactic by mimicking legitimate verification pages to trick a user into running a malicious command on their device

    • This approach allows the threat actors to break apart the child parent relationship that may be identified during analysis, making the activity appear to originate from the user and not the web browser
  • Lumma Stealer was the final payload outlined in the incident observed, although it is highly likely other malware variants may be loaded in future deliveries

    • The final payload allows attackers to perform reconnaissance and steal sensitive data from an infected device

Recommendations from our Threat Response Unit (TRU):

Indicators of Compromise

You can access the indicators of compromise here.

Source: Original Post