Skip to content

fox-it/blister-research

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Popping Blisters for research

This repository contains information related to our blog post Popping Blisters for research: An overview of past payloads and exploring recent developments, you can read it here:

We uploaded an archive containing all the payloads we retrieved from the Blister samples discussed in the blog to VirusTotal. This archive can be found here:

Dumping BlisterMythic configurations

The Mythic agent Blister drops, which we refer to as BlisterMythic, contains a configuration that can be decrypted. The script dump-blister-mythic-config.py tries to retrieve and decrypt this configuration, assuming it is a PE file. Blister in some cases also drops MythicPacker, which is a shellcode that decrypts and executes a PE file. You can use our other script to reconstruct the packed PE file and then use dump-blister-mythic-config.py to retrieve the configuration, see the next section.

There are different ways to decrypt the configuration, either by providing the key or using a brute force or known plaintext attack. By default, known plaintext attack is used, but you can specify the key with -k or --key or use the brute force attack method by specifying -b or --bruteforce.

By default, the script dumps the raw bytes of the decrypted configuration. However, you can provide the -ac or --agent-config option to dump the interpreted BlisterMythic agent configuration. To our knowledge, this configuration is not linked to Mythic in general, but specifically to BlisterMythic. Strangely enough, the agent configuration also contains the command-and-control server configuration.

Unpacking MythicPacker

The script unpack-mythic-packer.py can be used to reconstruct a PE file packed with MythicPacker shellcode. The script is solely based on encountered Blister payloads and assumes that the start of the shellcode is at offset 0. If this is not the case, it will fail. To retrieve the BlisterMythic configuration you could do the following:

$ python unpack-mythic-packer.py /tmp/mythicpackedfile | python dump-blister-mythic-config.py

Blister samples

blister-samples.json is a JSON file containing information on the Blister samples we analyzed in the blog. For example, it contains the SHA256 hash of the Blister sample and its payload, the payload label, the configuration flags and some other information as well.

Cobalt Strike beacons

In blister-payloads-cobaltstrike-iocs.csv, we list the beacon information of the Cobalt Strike beacons we encountered and to what payload they belong. You can use the SHA256 hash to find the corresponding Blister sample, using blister-samples.json.

Note

Some beacons are configured to use Domain Fronting, in that case the Host header is shown.

BlisterMythic

In blister-payloads-mythic-iocs.csv, we list the command-and-control domain and the payload SHA256 hash that is linked to it. Similar to the Cobalt Strike beacons, you can use this hash to find the corresponding Blister sample that dropped it, using blister-samples.json.

Furthermore, we included BlisterMythic C2 servers in blister-mythic-c2s.csv. And our YARA rules in rules.yara