blackCatConf is a static configuration extractor implemented in Golang for BlackCat Ransomware (targeting Microsoft Windows and GNU/Linux + VMware ESXi). By default the script will print the extracted information to stdout. It is also capable of dumping the malware configuration to disk as a JSON file with the -j
flag.
Info: This tool does currently not support the new version of BlackCat/ALPHV ransomware.
go run blackcatconf.go [-j] path/to/blackcat_sample.bin
Sensitive victim information in the screenshot below and the example config file has been redacted.
With these novel BlackCat Ransomware samples this config extractor could easily be replaced by a bash one-liner (e.g. strings ... | grep "{\"config_id" > config.json
), but I expect that there will be config obfuscation/encryption added in future samples of BlackCat, similar to e.g. the changes made in Darkside Ransomware over time. If this is the case here as well having a structure to unmarshal the json config into will save me some time down the road.
Speaking of Darkside/BlackMatter: The configuration structure and values of BlackCat share significant similarities with those found in BlackMatter. The Korean Threat Intelligence company S2W Lab published a thorough analysis of the similarities between these two Ransomware strains.
Key | Value / Purpose | Type |
---|---|---|
config_id | Configuration ID, empty up until now (= Victim Identifier?) | unknown |
public_key | RSA Public Key (Base64 encoded) | string |
extension | Extension for encrypted files | string |
note_file_name | Filename of the Ransomnote | string |
note_full_text | Long version of the Ransomnote | string |
note_short_text | Short version of the Ransomnote | string |
default_file_mode | File Encryption Mode (observed: "auto" and "Smartpattern") | string or []int |
default_file_cipher | File Encryption Cipher (observed: "Best") | string |
credentials | Array of compromised credentials for escalation and propagation | [][]string |
kill_services | List of services to be terminated | []string |
kill_processes | List of processes to be terminated | []string |
exclude_directory_names | Directories that are excluded from the encryption process | []string |
exclude_file_names | Files that are excluded from the encryption process | []string |
exclude_file_extensions | File extensions that are excluded from the encryption process | []string |
exclude_file_path_wildcard | Filepaths to be excluded via wildcard | []string (?) |
enable_network_discovery | Switch to enable/disable network discovery | bool |
enable_self_propagation | Switch to enable/disable self propagation | bool |
enable_set_wallpaper | Switch to enable/disable wallpaper change | bool |
enable_esxi_vm_kill | Switch to enable/disable VM termination on ESXi Hosts | bool |
enable_esxi_vm_snapshot_kill | Switch to enable/disable Snapshot deletion on ESXi Hosts | bool |
strict_include_paths | Hardcoded filepaths (likely victim-specific) | []string (?) |
esxi_vm_kill_exclude | Exclusion list for virtual machines on ESXi Hosts | []string (?) |
This configuration extractor has been tested successfully with the following samples:
SHA-256 | OS | Sample |
---|---|---|
59868f4b346bd401e067380cac69080709c86e06fae219bfb5bc17605a71ab3f | Windows | Malware Bazaar |
731adcf2d7fb61a8335e23dbee2436249e5d5753977ec465754c6b699e9bf161 | Windows | Malware Bazaar |
5121f08cf8614a65d7a86c2f462c0694c132e2877a7f54ab7fcefd7ee5235a42 | Linux | VX-Underground |
f8c08d00ff6e8c6adb1a93cd133b19302d0b651afd73ccb54e3b6ac6c60d99c6 | Linux | VX-Underground |
If you encounter an error with blackCatConf, please file a bug report via an issue. Contributions are always welcome :)