08e8d462fe
RED PILL 🔴 💊
215 lines
10 KiB
Text
215 lines
10 KiB
Text
|
|
|
|
rule MAL_LNX_RedMenshen_BPFDoor_May23_1 {
|
|
meta:
|
|
description = "Detects BPFDoor malware"
|
|
author = "Florian Roth"
|
|
reference = "https://www.deepinstinct.com/blog/bpfdoor-malware-evolves-stealthy-sniffing-backdoor-ups-its-game"
|
|
date = "2023-05-11"
|
|
score = 80
|
|
hash1 = "afa8a32ec29a31f152ba20a30eb483520fe50f2dce6c9aa9135d88f7c9c511d7"
|
|
id = "25df4dba-ec6e-5999-b6be-56fe933cb0d0"
|
|
strings:
|
|
$x1 = "[-] Execute command failed" ascii fullword
|
|
$x2 = "/var/run/initd.lock" ascii fullword
|
|
|
|
$xc1 = { 2F 00 3E 3E 00 65 78 69 74 00 72 00 }
|
|
|
|
$sc1 = { 9F CD 30 44 }
|
|
$sc2 = { 66 27 14 5E }
|
|
|
|
$sa1 = "TLS-CHACHA20-POLY1305-SHA256" ascii fullword
|
|
|
|
$sop1 = { 48 83 c0 01 4c 39 f8 75 ea 4c 89 7c 24 68 48 69 c3 d0 00 00 00 48 8b 5c 24 50 48 8b 54 24 78 48 c7 44 24 38 00 00 00 00 }
|
|
$sop2 = { 48 89 de f3 a5 89 03 8b 44 24 2c 39 44 24 28 44 89 4b 04 48 89 53 10 0f 95 c0 }
|
|
$sop3 = { 49 d3 cd 4d 31 cd b1 29 49 89 e9 49 d3 c8 4d 31 c5 4c 03 68 10 48 89 f9 }
|
|
condition:
|
|
// file-based detection
|
|
uint16(0) == 0x457f and
|
|
filesize < 900KB and (
|
|
( 1 of ($x*) and 1 of ($s*) )
|
|
or 4 of them
|
|
/* looks for the magic byte sequences in close proximity to each other */
|
|
or (
|
|
all of ($sc*)
|
|
and $sc1 in (@sc2[1]-50..@sc2[1]+50)
|
|
)
|
|
// in-memory detection
|
|
) or (
|
|
2 of ($x*)
|
|
or 5 of them
|
|
)
|
|
}
|
|
|
|
|
|
rule APT_MAL_LNX_RedMenshen_BPFDoor_Controller_May22_1 {
|
|
meta:
|
|
description = "Detects unknown Linux implants (uploads from KR and MO)"
|
|
author = "Florian Roth (Nextron Systems)"
|
|
reference = "https://doublepulsar.com/bpfdoor-an-active-chinese-global-surveillance-tool-54b078f1a896"
|
|
date = "2022-05-05"
|
|
score = 90
|
|
hash1 = "07ecb1f2d9ffbd20a46cd36cd06b022db3cc8e45b1ecab62cd11f9ca7a26ab6d"
|
|
hash2 = "4c5cf8f977fc7c368a8e095700a44be36c8332462c0b1e41bff03238b2bf2a2d"
|
|
hash3 = "599ae527f10ddb4625687748b7d3734ee51673b664f2e5d0346e64f85e185683"
|
|
hash4 = "5b2a079690efb5f4e0944353dd883303ffd6bab4aad1f0c88b49a76ddcb28ee9"
|
|
hash5 = "5faab159397964e630c4156f8852bcc6ee46df1cdd8be2a8d3f3d8e5980f3bb3"
|
|
hash6 = "93f4262fce8c6b4f8e239c35a0679fbbbb722141b95a5f2af53a2bcafe4edd1c"
|
|
hash7 = "97a546c7d08ad34dfab74c9c8a96986c54768c592a8dae521ddcf612a84fb8cc"
|
|
hash8 = "c796fc66b655f6107eacbe78a37f0e8a2926f01fecebd9e68a66f0e261f91276"
|
|
hash9 = "f8a5e735d6e79eb587954a371515a82a15883cf2eda9d7ddb8938b86e714ea27"
|
|
hash10 = "fd1b20ee5bd429046d3c04e9c675c41e9095bea70e0329bd32d7edd17ebaf68a"
|
|
id = "1438c3bf-3c42-59d5-9f3f-2d72bdaaac42"
|
|
strings:
|
|
$s1 = "[-] Connect failed." ascii fullword
|
|
$s2 = "export MYSQL_HISTFILE=" ascii fullword
|
|
$s3 = "udpcmd" ascii fullword
|
|
$s4 = "getshell" ascii fullword
|
|
|
|
$op1 = { e8 ?? ff ff ff 80 45 ee 01 0f b6 45 ee 3b 45 d4 7c 04 c6 45 ee 00 80 45 ff 01 80 7d ff 00 }
|
|
$op2 = { 55 48 89 e5 48 83 ec 30 89 7d ec 48 89 75 e0 89 55 dc 83 7d dc 00 75 0? }
|
|
$op3 = { e8 a? fe ff ff 0f b6 45 f6 48 03 45 e8 0f b6 10 0f b6 45 f7 48 03 45 e8 0f b6 00 8d 04 02 }
|
|
$op4 = { c6 80 01 01 00 00 00 48 8b 45 c8 0f b6 90 01 01 00 00 48 8b 45 c8 88 90 00 01 00 00 c6 45 ef 00 0f b6 45 ef 88 45 ee }
|
|
condition:
|
|
uint16(0) == 0x457f and
|
|
filesize < 80KB and 2 of them or 5 of them
|
|
}
|
|
|
|
rule APT_MAL_LNX_RedMenshen_BPFDoor_Controller_May22_2 {
|
|
meta:
|
|
description = "Detects BPFDoor implants used by Chinese actor Red Menshen"
|
|
author = "Florian Roth (Nextron Systems)"
|
|
reference = "https://doublepulsar.com/bpfdoor-an-active-chinese-global-surveillance-tool-54b078f1a896"
|
|
date = "2022-05-07"
|
|
score = 85
|
|
hash1 = "76bf736b25d5c9aaf6a84edd4e615796fffc338a893b49c120c0b4941ce37925"
|
|
hash2 = "96e906128095dead57fdc9ce8688bb889166b67c9a1b8fdb93d7cff7f3836bb9"
|
|
hash3 = "c80bd1c4a796b4d3944a097e96f384c85687daeedcdcf05cc885c8c9b279b09c"
|
|
hash4 = "f47de978da1dbfc5e0f195745e3368d3ceef034e964817c66ba01396a1953d72"
|
|
id = "d5c3d530-ed6f-563e-a3b0-55d4c82e4899"
|
|
strings:
|
|
$opx1 = { 48 83 c0 0c 48 8b 95 e8 fe ff ff 48 83 c2 0c 8b 0a 8b 55 f0 01 ca 89 10 c9 }
|
|
$opx2 = { 48 01 45 e0 83 45 f4 01 8b 45 f4 3b 45 dc 7c cd c7 45 f4 00 00 00 00 eb 2? 48 8b 05 ?? ?? 20 00 }
|
|
|
|
$op1 = { 48 8d 14 c5 00 00 00 00 48 8b 45 d0 48 01 d0 48 8b 00 48 89 c7 e8 ?? ?? ff ff 48 83 c0 01 48 01 45 e0 }
|
|
$op2 = { 89 c2 8b 85 fc fe ff ff 01 c2 8b 45 f4 01 d0 2d 7b cf 10 2b 89 45 f4 c1 4d f4 10 }
|
|
$op3 = { e8 ?? d? ff ff 8b 45 f0 eb 12 8b 85 3c ff ff ff 89 c7 e8 ?? d? ff ff b8 ff ff ff ff c9 }
|
|
condition:
|
|
uint16(0) == 0x457f and
|
|
filesize < 100KB and 2 of ($opx*) or 4 of them
|
|
}
|
|
|
|
rule APT_MAL_LNX_RedMenshen_BPFDoor_Controller_May22_3 {
|
|
meta:
|
|
description = "Detects BPFDoor implants used by Chinese actor Red Menshen"
|
|
author = "Florian Roth (Nextron Systems)"
|
|
reference = "https://doublepulsar.com/bpfdoor-an-active-chinese-global-surveillance-tool-54b078f1a896"
|
|
date = "2022-05-08"
|
|
score = 85
|
|
hash1 = "144526d30ae747982079d5d340d1ff116a7963aba2e3ed589e7ebc297ba0c1b3"
|
|
hash2 = "fa0defdabd9fd43fe2ef1ec33574ea1af1290bd3d763fdb2bed443f2bd996d73"
|
|
id = "91c2153a-a6e0-529e-852c-61f799838798"
|
|
strings:
|
|
$s1 = "hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event" ascii fullword
|
|
$s2 = "/sbin/mingetty /dev" ascii fullword
|
|
$s3 = "pickup -l -t fifo -u" ascii fullword
|
|
condition:
|
|
uint16(0) == 0x457f and
|
|
filesize < 200KB and 2 of them or all of them
|
|
}
|
|
|
|
rule APT_MAL_LNX_RedMenshen_BPFDoor_Controller_Generic_May22_1 {
|
|
meta:
|
|
description = "Detects BPFDoor malware"
|
|
author = "Florian Roth (Nextron Systems)"
|
|
reference = "https://doublepulsar.com/bpfdoor-an-active-chinese-global-surveillance-tool-54b078f1a896"
|
|
date = "2022-05-09"
|
|
score = 90
|
|
hash1 = "07ecb1f2d9ffbd20a46cd36cd06b022db3cc8e45b1ecab62cd11f9ca7a26ab6d"
|
|
hash2 = "1925e3cd8a1b0bba0d297830636cdb9ebf002698c8fa71e0063581204f4e8345"
|
|
hash3 = "4c5cf8f977fc7c368a8e095700a44be36c8332462c0b1e41bff03238b2bf2a2d"
|
|
hash4 = "591198c234416c6ccbcea6967963ca2ca0f17050be7eed1602198308d9127c78"
|
|
hash5 = "599ae527f10ddb4625687748b7d3734ee51673b664f2e5d0346e64f85e185683"
|
|
hash6 = "5b2a079690efb5f4e0944353dd883303ffd6bab4aad1f0c88b49a76ddcb28ee9"
|
|
hash7 = "5faab159397964e630c4156f8852bcc6ee46df1cdd8be2a8d3f3d8e5980f3bb3"
|
|
hash8 = "76bf736b25d5c9aaf6a84edd4e615796fffc338a893b49c120c0b4941ce37925"
|
|
hash9 = "93f4262fce8c6b4f8e239c35a0679fbbbb722141b95a5f2af53a2bcafe4edd1c"
|
|
hash10 = "96e906128095dead57fdc9ce8688bb889166b67c9a1b8fdb93d7cff7f3836bb9"
|
|
hash11 = "97a546c7d08ad34dfab74c9c8a96986c54768c592a8dae521ddcf612a84fb8cc"
|
|
hash12 = "c796fc66b655f6107eacbe78a37f0e8a2926f01fecebd9e68a66f0e261f91276"
|
|
hash13 = "c80bd1c4a796b4d3944a097e96f384c85687daeedcdcf05cc885c8c9b279b09c"
|
|
hash14 = "f47de978da1dbfc5e0f195745e3368d3ceef034e964817c66ba01396a1953d72"
|
|
hash15 = "f8a5e735d6e79eb587954a371515a82a15883cf2eda9d7ddb8938b86e714ea27"
|
|
hash16 = "fa0defdabd9fd43fe2ef1ec33574ea1af1290bd3d763fdb2bed443f2bd996d73"
|
|
hash17 = "fd1b20ee5bd429046d3c04e9c675c41e9095bea70e0329bd32d7edd17ebaf68a"
|
|
id = "d30df2ae-7008-53c0-9a61-8346a9c9f465"
|
|
strings:
|
|
$op1 = { c6 80 01 01 00 00 00 48 8b 45 ?8 0f b6 90 01 01 00 00 48 8b 45 ?8 88 90 00 01 00 00 c6 45 ?? 00 0f b6 45 ?? 88 45 }
|
|
$op2 = { 48 89 55 c8 48 8b 45 c8 48 89 45 ?? 48 8b 45 c8 0f b6 80 00 01 00 00 88 45 f? 48 8b 45 c8 0f b6 80 01 01 00 00 }
|
|
$op3 = { 48 89 45 ?? 48 8b 45 c8 0f b6 80 00 01 00 00 88 45 f? 48 8b 45 c8 0f b6 80 01 01 00 00 88 45 f? c7 45 f8 00 00 00 00 }
|
|
$op4 = { 48 89 7d d8 89 75 d4 48 89 55 c8 48 8b 45 c8 48 89 45 ?? 48 8b 45 c8 0f b6 80 00 01 00 00 88 45 f? }
|
|
$op5 = { 48 8b 45 ?8 c6 80 01 01 00 00 00 48 8b 45 ?8 0f b6 90 01 01 00 00 48 8b 45 ?8 88 90 00 01 00 00 c6 45 ?? 00 0f b6 45 }
|
|
$op6 = { 89 75 d4 48 89 55 c8 48 8b 45 c8 48 89 45 ?? 48 8b 45 c8 0f b6 80 00 01 00 00 88 45 f? 48 8b 45 c8 }
|
|
condition:
|
|
uint16(0) == 0x457f and
|
|
filesize < 200KB and 2 of them or 4 of them
|
|
}
|
|
|
|
/* prone to FPs https://github.com/Neo23x0/signature-base/issues/282
|
|
rule APT_MAL_LNX_RedMenshen_BPFDoor_Tricephalic_Implant_May22 {
|
|
|
|
meta:
|
|
description = "Detects BPFDoor/Tricephalic Hellkeeper passive implant"
|
|
author = "Exatrack"
|
|
reference = "https://exatrack.com/public/Tricephalic_Hellkeeper.pdf"
|
|
date = "2022-05-09"
|
|
score = 90
|
|
|
|
strings:
|
|
$str_message_01 = "hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event"
|
|
$str_message__02 = "/var/run/haldrund.pid"
|
|
|
|
//$str_message_03 = "/bin/rm -f /dev/shm/%s;/bin/cp %s /dev/shm/%s && /bin/chmod 755 /dev/shm/%s && /dev/shm/%s --init && /bin/rm -f /dev/shm/%s" // in the stack
|
|
|
|
$str_message_04 = "Cant fork pty"
|
|
$str_hald_05 = "/sbin/iptables -t nat -D PREROUTING -p tcp -s %s --dport %d -j REDIRECT --to-ports %d"
|
|
|
|
//$str_command_01 = "/sbin/iptables -t nat -A PREROUTING -p tcp -s %s --dport %d -j REDIRECT --to-ports %d"
|
|
//$str_command_02 = "/sbin/iptables -I INPUT -p tcp -s %s -j ACCEPT"
|
|
|
|
$str_command_03 = "/bin/rm -f /dev/shm/%s"
|
|
|
|
//$str_command_04 = "/bin/cp %s /dev/shm/%s"
|
|
//$str_command_05 = "/bin/chmod 755 /dev/shm/%s"
|
|
|
|
// $str_command_06 = "/dev/shm/%s --init"
|
|
// $str_server_01 = "[+] Spawn shell ok."
|
|
// $str_server_02 = "[+] Monitor packet send."
|
|
|
|
$str_server_03 = "[-] Spawn shell failed."
|
|
$str_server_04 = "[-] Can't write auth challenge"
|
|
$str_server_05 = "[+] Packet Successfuly Sending %d Size."
|
|
$str_server_06 = "[+] Challenging %s."
|
|
$str_server_07 = "[+] Auth send ok."
|
|
$str_server_08 = "[+] possible windows"
|
|
|
|
$str_filter_01 = "(udp[8:2]=0x7255)"
|
|
$str_filter_02 = "(icmp[8:2]=0x7255)"
|
|
$str_filter_03 = "(tcp[((tcp[12]&0xf0)>>2):2]=0x5293)"
|
|
|
|
// $str_filter_04 = {15 00 ?? ?? 55 72 00 00}
|
|
//$str_filter_05 = {15 00 ?? ?? 93 52 00 00}
|
|
|
|
$error_01 = "[-] socket"
|
|
$error_02 = "[-] listen"
|
|
$error_03 = "[-] bind"
|
|
$error_04 = "[-] accept"
|
|
$error_05 = "[-] Mode error."
|
|
$error_06 = "[-] bind port failed."
|
|
$error_07 = "[-] setsockopt"
|
|
$error_08 = "[-] missing -s"
|
|
$error_09 = "[-] sendto"
|
|
condition:
|
|
any of ($str*) or 3 of ($error*)
|
|
}
|
|
*/
|