This release consists of the following:
- Path Wiper: df4781314908f39c55f9cb56498d2119
- Bert ransomware
- Loader + .NET: 00fdc504be1788231aa7b7d2d1335893
- ELF: 003291d904b89142bada57a9db732ae7
- CHAOS Rat, reported on by Acronis
- CHAOS Rat: b1de9503f4e7ecbc67ec77b03f6d1a8c
- CHAOS Rat (Base64): 1991d5f8f5c256c5940a7dbe9cf7e8e0
- Switch Stealer: 406649a0e261c7979b438faf3ddd5c74
- JunkBoss Implant: 18cf1e3be0e95be666c11d1dbde4588e
- The malware was unnamed in the article and was named JunkBoss by Cipher Tech by combining a method name “junkCalc2” with the targeted Linux distribution “BOSS.”
- SquidLoader components (Loader variants, Downloader, Implant)
- AdaptixC2 Gopher Agent, reported by X user suyog41
- SaadAhla tool PE-Obfuscator loader (observed loading AdaptixC2 Gopher Agent): 9aab263a9d949b2cf05137a4f6571e00
- Earth Lamia PulsePack malware:
- PulsePack Loader + PulsePack.Http: 341997cb408abe151f5a96fb29c38295
- PulsePack.WebSocket: 06a6a9fe8372615fb3202fd85ef18282
- Global Ransomware: 4e01e0eca4d82cbadc70b754a4f9fd3c
- NightSpire Ransomware: 2e07a4de9e6ba84728fbdf27384ea0b9
- Debian Stealer: abb28b56925c628a163403237d696fce
- NordDragonScan malware: 4117ba23e07b239f83b52c839430e23e
- DRAT .NET and Delphi versions:
- .NET Variant: 307b907498999971658d6d3e60184c15
- Delphi Variant: 356a0f50131eb175f1cca91a1476f3a4
SquidLoader
As described by researchers at Trellix, SquidLoader consists of multiple layers of obfuscated components. In addition to the loader component described in the article which uses an xor-add algorithm to decode the next layer, we identified the following loader variants:
- A loader variant which searches for a hard-coded egg b”PNG\r\n\x1a\nGIF87a”, marking the start of an 8-bit integer prefixed structure (entry count) of ChaCha20-Poly1350 32-bit prefixed data buffers.
- A loader variant containing an RC4 encrypted and Base64 encoded shellcode buffer, where the RC4 key is derived using a custom algorithm described in the Python code below, where
key
,encoded
, andadd_key
are predefined parameters:
for i in range(0, len(key), 2):
ka = key[i]
kb = key[i + 1]
kx = (ka ^ kb) + i
da = (encoded[ka] - kx) & 0xff
db = (encoded[kb] - kx) & 0xff
encoded[kb] = (da + add_key) & 0xff
encoded[ka] = (db + add_key) & 0xff
Following the initial loader may be a loader shellcode layer (described in the article as Stage 2) which uses RC4 and a custom substitution cipher to load multiple payloads from the parent loader component.
From the collected samples, two payload variants were observed:
- A simple downloader which contains download parameters (address and port) in plaintext that is loaded by an additional shellcode loader which xor decodes the payload.
- An implant which contains msgpack serialized and xor encoded configuration settings consisting of at least an RSA public key and one of the following:
- c2 socket addresses
- c2 urls and a user-agent string
Samples:
- xor-add Loader + Implant: 2a571238803846eeacd1274c54048d9c
- xor-add Loader + Downloader: 60bec57db4f367e60c6961029d952fa6
- Base64+RC4 Loader + Implant: 96ef56de2df26cfe5bde1d9b5373bd66
- ChaCha20-Poly1305 Loader + Implant: d61587e79217f91278c13e81e59a2e18