YARA Detection Rule: Win64_Ransomware_Cactus
Repository: reversinglabs/reversinglabs-yara-rules
Detects: Yara rule that detects Cactus ransomware.
Malware family: CACTUS
Author: ReversingLabs

Pattern signatures:
$encrypt_files_p1 = {
            55 41 57 41 56 41 55 41 54 56 53 B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 29 C4 48 8D AC 24
            ?? ?? ?? ?? 48 89 8D ?? ?? ?? ?? 48 89 95 ?? ?? ?? ?? 4C 89 85 ?? ?? ?? ?? C7 85 ??
            ?? ?? ?? ?? ?? ?? ?? C7 85 ?? ?? ?? ?? ?? ?? ?? ?? 48 8D 85 ?? ?? ?? ?? 48 89 C1 E8
            ?? ?? ?? ?? C7 85 ?? ?? ?? ?? ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? 48 C7 85 ?? ?? ?? ??
            ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 89 85 ?? ?? ?? ?? 48 8B 85 ?? ?? ?? ?? 48 89 C1 E8 ??
            ?? ?? ?? 48 98 48 89 C1 E8 ?? ?? ?? ?? 48 89 45 ?? B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 48
            89 85 ?? ?? ?? ?? 48 C7 85 ?? ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 89 C1 4C 8D 4D
            ?? 4C 8D 45 ?? 48 8B 85 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 48 8D 95 ?? ?? ?? ?? 48
            89 54 24 ?? 48 8B 95 ?? ?? ?? ?? 48 89 54 24 ?? 48 89 CA 48 89 C1 E8 ?? ?? ?? ?? 48
            8D 45 ?? 48 8B 95 ?? ?? ?? ?? 4C 8D 05 ?? ?? ?? ?? 48 89 C1 E8 ?? ?? ?? ?? 48 8D 45
            ?? 48 

Detection condition:
uint16(0) == 0x5A4D and
        (
            all of ($find_files_p*)
        ) and
        (
            all of ($encrypt_files_p*)
        ) and
        (
            $check_processes
        ) and
        (
            all of ($kill_file_processes_p*)
        )

Full rule:
rule Win64_Ransomware_Cactus : tc_detection malicious
{
    meta:

        author              = "ReversingLabs"

        source              = "ReversingLabs"
        status              = "RELEASED"
        sharing             = "TLP:WHITE"
        category            = "MALWARE"
        malware             = "CACTUS"
        description         = "Yara rule that detects Cactus ransomware."

        tc_detection_type   = "Ransomware"
        tc_detection_name   = "Cactus"
        tc_detection_factor = 5

    strings:

        $encrypt_files_p1 = {
            55 41 57 41 56 41 55 41 54 56 53 B8 ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 29 C4 48 8D AC 24
            ?? ?? ?? ?? 48 89 8D ?? ?? ?? ?? 48 89 95 ?? ?? ?? ?? 4C 89 85 ?? ?? ?? ?? C7 85 ??
            ?? ?? ?? ?? ?? ?? ?? C7 85 ?? ?? ?? ?? ?? ?? ?? ?? 48 8D 85 ?? ?? ?? ?? 48 89 C1 E8
            ?? ?? ?? ?? C7 85 ?? ?? ?? ?? ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? 48 C7 85 ?? ?? ?? ??
            ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 89 85 ?? ?? ?? ?? 48 8B 85 ?? ?? ?? ?? 48 89 C1 E8 ??
            ?? ?? ?? 48 98 48 89 C1 E8 ?? ?? ?? ?? 48 89 45 ?? B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 48
            89 85 ?? ?? ?? ?? 48 C7 85 ?? ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 89 C1 4C 8D 4D
            ?? 4C 8D 45 ?? 48 8B 85 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 48 8D 95 ?? ?? ?? ?? 48
            89 54 24 ?? 48 8B 95 ?? ?? ?? ?? 48 89 54 24 ?? 48 89 CA 48 89 C1 E8 ?? ?? ?? ?? 48
            8D 45 ?? 48 8B 95 ?? ?? ?? ?? 4C 8D 05 ?? ?? ?? ?? 48 89 C1 E8 ?? ?? ?? ?? 48 8D 45
            ?? 48 8B 95 ?? ?? ?? ?? 4C 8D 05 ?? ?? ?? ?? 48 89 C1 E8 ?? ?? ?? ?? 48 8D 45 ?? 48
            89 C1 E8 ?? ?? ?? ?? 48 89 C3 48 8B 85 ?? ?? ?? ?? 48 89 C1 E8 ?? ?? ?? ?? 48 89 DA
            48 89 C1 48 8B 05 ?? ?? ?? ?? FF D0 BA ?? ?? ?? ?? B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? BA
            ?? ?? ?? ?? 89 C1 E8 ?? ?? ?? ?? 89 C3 48 8D 45 ?? 48 89 C1 E8 ?? ?? ?? ?? 48 89 C2
            48 8D 85 ?? ?? ?? ?? 41 89 D8 48 89 C1 E8 ?? ?? ?? ?? 48 8D 85 ?? ?? ?? ?? 41 B8 ??