YARA Detection Rule: Linux_Backdoor_BPFDoor
Repository: reversinglabs/reversinglabs-yara-rules
Detects: Yara rule that detects BPFDoor backdoor.
Malware family: BPFDOOR
Author: ReversingLabs

Pattern signatures:
$packet_loop_v1_p1 = {
            55 48 89 E5 53 48 81 EC ?? ?? ?? ?? 48 C7 45 ?? ?? ?? ?? ?? 48 8D 95 ?? ?? ?? ?? BB
            ?? ?? ?? ?? B8 ?? ?? ?? ?? 48 89 D7 48 89 DE 48 89 C1 F3 48 A5 66 C7 85 ?? ?? FF FF
            ?? ?? 48 8D 85 ?? ?? ?? ?? 48 89 85 ?? ?? ?? ?? BF ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B7
            C0 89 C2 BE ?? ?? ?? ?? BF ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 45 ?? 83 7D ?? ?? 0F 8E ??
            ?? ?? ?? 48 8D 95 ?? ?? ?? ?? 8B 45 ?? 41 B8 ?? ?? ?? ?? 48 89 D1 BA ?? ?? ?? ?? BE
            ?? ?? ?? ?? 89 C7 E8 ?? ?? ?? ?? 83 F8 ?? 0F 84 ?? ?? ?? ?? EB ?? 90 48 8D 85 ?? ??
            ?? ?? BA ?? ?? ?? ?? BE ?? ?? ?? ?? 48 89 C7 E8 ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? 48
            8D 9D ?? ?? ?? ?? 8B 45 ?? 41 B9 ?? ?? ?? ?? 41 B8 ?? ?? ?? ?? B9 ?? ?? ?? ?? BA ??
            ?? ?? ?? 48 89 DE 89 C7 E8 ?? ?? ?? ?? 89 45 ?? 48 8D 85 ?? ?? ?? ?? 48 83 C0 ?? 48
            89 45 ?? 48 8B 45 ?? 0F B6 00 0F B6 C0 83 E0 ?? C1 E0 ?? 89 45 ?? 83 7D ?? ?? 7F ??
            90 EB

Detection condition:
uint32(0) == 0x464C457F and
        (
            (
                (
                    all of ($packet_loop_v1_p*)
                ) and
                (
                    all of ($reverse_shell_v1_p*)
                ) and
                (
                    all of ($set_process_name_v1_p*)

Full rule:
rule Linux_Backdoor_BPFDoor : tc_detection malicious
{
    meta:

        author              = "ReversingLabs"

        source              = "ReversingLabs"
        status              = "RELEASED"
        sharing             = "TLP:WHITE"
        category            = "MALWARE"
        malware             = "BPFDOOR"
        description         = "Yara rule that detects BPFDoor backdoor."

        tc_detection_type   = "Backdoor"
        tc_detection_name   = "BPFDoor"
        tc_detection_factor = 5

    strings:

        $packet_loop_v1_p1 = {
            55 48 89 E5 53 48 81 EC ?? ?? ?? ?? 48 C7 45 ?? ?? ?? ?? ?? 48 8D 95 ?? ?? ?? ?? BB
            ?? ?? ?? ?? B8 ?? ?? ?? ?? 48 89 D7 48 89 DE 48 89 C1 F3 48 A5 66 C7 85 ?? ?? FF FF
            ?? ?? 48 8D 85 ?? ?? ?? ?? 48 89 85 ?? ?? ?? ?? BF ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B7
            C0 89 C2 BE ?? ?? ?? ?? BF ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 45 ?? 83 7D ?? ?? 0F 8E ??
            ?? ?? ?? 48 8D 95 ?? ?? ?? ?? 8B 45 ?? 41 B8 ?? ?? ?? ?? 48 89 D1 BA ?? ?? ?? ?? BE
            ?? ?? ?? ?? 89 C7 E8 ?? ?? ?? ?? 83 F8 ?? 0F 84 ?? ?? ?? ?? EB ?? 90 48 8D 85 ?? ??
            ?? ?? BA ?? ?? ?? ?? BE ?? ?? ?? ?? 48 89 C7 E8 ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? 48
            8D 9D ?? ?? ?? ?? 8B 45 ?? 41 B9 ?? ?? ?? ?? 41 B8 ?? ?? ?? ?? B9 ?? ?? ?? ?? BA ??
            ?? ?? ?? 48 89 DE 89 C7 E8 ?? ?? ?? ?? 89 45 ?? 48 8D 85 ?? ?? ?? ?? 48 83 C0 ?? 48
            89 45 ?? 48 8B 45 ?? 0F B6 00 0F B6 C0 83 E0 ?? C1 E0 ?? 89 45 ?? 83 7D ?? ?? 7F ??
            90 EB ?? 48 8B 45 ?? 0F B6 40 ?? 0F B6 C0 83 F8 ?? 74 ?? 83 F8 ?? 74 ?? 83 F8 ?? 74
            ?? E9 ?? ?? ?? ?? 8B 45 ?? 48 98 48 8D 50 ?? 48 8D 85 ?? ?? ?? ?? 48 01 D0 48 89 45
            ?? 48 8B 45 ?? 0F B6 40 ?? C0 E8 ?? 0F B6 C0 C1 E0 ?? 89 45 ?? 8B 45 ?? 48 63 D0 8B
            45 ?? 48 98 48 8D 04 02 48 8D 50 ?? 48 8D 85 ?? ?? ?? ?? 48 01 D0 48 89 45 ?? EB ??
            48 8B 45 ?? 48 83 C0 ?? 48 89 45 ?? 48 8B 45 ?? 48 83 C0 ?? 48 89 45 ?? EB ?? 48 8B