Proofpoint researchers have observed a new downloader in the wild that we and other researchers are calling “GuLoader.” Our researchers first observed GuLoader in late December 2019 being used to deliver Parallax RAT, which itself had recently been released. While we regularly observe new loaders, GuLoader has gained popularity quickly and is in active use by multiple threat actors. GuLoader is a downloader, written partly in VB6, which typically stores its encrypted payloads on Google Drive or Microsoft OneDrive (underscoring that threat actors continue to adopt the cloud just like legitimate businesses are).
GuLoader is a portable executable (PE) file that is often observed embedded in a container file such as an .iso or .rar file. We have also observed it being downloaded directly from various cloud hosting platforms. GuLoader is used predominantly to download remote access Trojans (RATs) and information stealers such as Agent Tesla/Origin Logger, FormBook, NanoCore RAT, Netwire RAT, Remcos RAT, Ave Maria/Warzone RAT and Parallax RAT.
The GuLoader executable is a Visual Basic 6 wrapper which decrypts (XORing with a DWORD, 4-byte key) some shellcode containing the main functionality.
The loader uses sophisticated injection techniques to make analysis difficult. For example, it
- spawns a child process copy of itself (in suspended state)
- maps the image of a system DLL (typically “msvbvm60.dll” or “mstsc.exe”) over the child at 0x400000 (instead of a normal high load address)
- injects the unpacking code into the child
- modifies a register within the context of the suspended child thread to redirect execution into the injected code
- resumes the child
- the child overwrites the system DLL image at 0x400000 with the unpacked code
The downloaded files consist of 64 hex digits followed by a PE executable encoded with XOR, where the XOR key is stored in the shellcode.
The payload URI paths (other than Google Drive or OneDrive ones) and downloaded filename frequently have the form “<something>_encrypted_XXXXXX.bin” where “XXXXXXX” are hexadecimal digits.
The downloaded payloads consist of
* 64 lower-case hex digits
* the XORed PE binary
The XOR key was fixed at 96 bytes in early versions of the loader
Later versions have longer keys, typically 512-768 bytes long, usually consisting of a 256-byte key repeated to give the required length. The key is stored completely in the decoded shellcode.
Parallax Sample – 2019-12-23
Remcos Sample – 2020-02-20