From 3dddf413aa38f06e4e13b160772cfeeecad67409 Mon Sep 17 00:00:00 2001 From: Marc Rivero López <mriverolopez@gmail.com> Date: Sat, 21 Jan 2017 17:41:37 +0100 Subject: [PATCH] Update APT_Derusbi.yar Fixed style and space --- malware/APT_Derusbi.yar | 482 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 file changed, 253 insertions(+), 229 deletions(-) diff --git a/malware/APT_Derusbi.yar b/malware/APT_Derusbi.yar index 71643f8..3a22cb2 100644 --- a/malware/APT_Derusbi.yar +++ b/malware/APT_Derusbi.yar @@ -3,183 +3,186 @@ */ -import "pe" - -rule apt_nix_elf_derusbi : APT Derusbi ELF +rule apt_nix_elf_derusbi { - meta: + + meta: Author = "@seifreed" - strings: - $ = "LxMain" - $ = "execve" - $ = "kill" - $ = "cp -a %s %s" - $ = "%s &" - $ = "dbus-daemon" - $ = "--noprofile" - $ = "--norc" - $ = "TERM=vt100" - $ = "/proc/%u/cmdline" - $ = "loadso" - $ = "/proc/self/exe" - $ = "Proxy-Connection: Keep-Alive" - $ = "Connection: Keep-Alive" - $ = "CONNECT %s" - $ = "HOST: %s:%d" - $ = "User-Agent: Mozilla/4.0" - $ = "Proxy-Authorization: Basic %s" - $ = "Server: Apache" - $ = "Proxy-Authenticate" - $ = "gettimeofday" - $ = "pthread_create" - $ = "pthread_join" - $ = "pthread_mutex_init" - $ = "pthread_mutex_destroy" - $ = "pthread_mutex_lock" - $ = "getsockopt" - $ = "socket" - $ = "setsockopt" - $ = "select" - $ = "bind" - $ = "shutdown" - $ = "listen" - $ = "opendir" - $ = "readdir" - $ = "closedir" - $ = "rename" - - condition: - (uint32(0) == 0x4464c457f) and (all of them) + + strings: + $ = "LxMain" + $ = "execve" + $ = "kill" + $ = "cp -a %s %s" + $ = "%s &" + $ = "dbus-daemon" + $ = "--noprofile" + $ = "--norc" + $ = "TERM=vt100" + $ = "/proc/%u/cmdline" + $ = "loadso" + $ = "/proc/self/exe" + $ = "Proxy-Connection: Keep-Alive" + $ = "Connection: Keep-Alive" + $ = "CONNECT %s" + $ = "HOST: %s:%d" + $ = "User-Agent: Mozilla/4.0" + $ = "Proxy-Authorization: Basic %s" + $ = "Server: Apache" + $ = "Proxy-Authenticate" + $ = "gettimeofday" + $ = "pthread_create" + $ = "pthread_join" + $ = "pthread_mutex_init" + $ = "pthread_mutex_destroy" + $ = "pthread_mutex_lock" + $ = "getsockopt" + $ = "socket" + $ = "setsockopt" + $ = "select" + $ = "bind" + $ = "shutdown" + $ = "listen" + $ = "opendir" + $ = "readdir" + $ = "closedir" + $ = "rename" + + condition: + (uint32(0) == 0x4464c457f) and (all of them) } -rule apt_nix_elf_derusbi_kernelModule : APT Derusbi ELF + +rule apt_nix_elf_derusbi_kernelModule { - meta: + + meta: Author = "@seifreed" - strings: - $ = "__this_module" - $ = "init_module" - $ = "unhide_pid" - $ = "is_hidden_pid" - $ = "clear_hidden_pid" - $ = "hide_pid" - $ = "license" - $ = "description" - $ = "srcversion=" - $ = "depends=" - $ = "vermagic=" - $ = "current_task" - $ = "sock_release" - $ = "module_layout" - $ = "init_uts_ns" - $ = "init_net" - $ = "init_task" - $ = "filp_open" - $ = "__netlink_kernel_create" - $ = "kfree_skb" - - condition: - (uint32(0) == 0x4464c457f) and (all of them) + + strings: + $ = "__this_module" + $ = "init_module" + $ = "unhide_pid" + $ = "is_hidden_pid" + $ = "clear_hidden_pid" + $ = "hide_pid" + $ = "license" + $ = "description" + $ = "srcversion=" + $ = "depends=" + $ = "vermagic=" + $ = "current_task" + $ = "sock_release" + $ = "module_layout" + $ = "init_uts_ns" + $ = "init_net" + $ = "init_task" + $ = "filp_open" + $ = "__netlink_kernel_create" + $ = "kfree_skb" + + condition: + (uint32(0) == 0x4464c457f) and (all of them) } + rule apt_nix_elf_Derusbi_Linux_SharedMemCreation : APT Derusbi ELF { - meta: + + meta: Author = "@seifreed" - strings: - $byte1 = { B6 03 00 00 ?? 40 00 00 00 ?? 0D 5F 01 82 } - condition: - (uint32(0) == 0x464C457F) and (any of them) + + strings: + $byte1 = { B6 03 00 00 ?? 40 00 00 00 ?? 0D 5F 01 82 } + + condition: + (uint32(0) == 0x464C457F) and (any of them) } -rule apt_nix_elf_Derusbi_Linux_Strings : APT Derusbi ELF +rule apt_nix_elf_Derusbi_Linux_Strings { - meta: + + meta: Author = "@seifreed" - strings: - $a1 = "loadso" wide ascii fullword - $a2 = "\nuname -a\n\n" wide ascii - $a3 = "/dev/shm/.x11.id" wide ascii - $a4 = "LxMain64" wide ascii nocase - $a5 = "# \\u@\\h:\\w \\$ " wide ascii - $b1 = "0123456789abcdefghijklmnopqrstuvwxyz" wide - $b2 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" wide - $b3 = "ret %d" wide fullword - $b4 = "uname -a\n\n" wide ascii - $b5 = "/proc/%u/cmdline" wide ascii - $b6 = "/proc/self/exe" wide ascii - $b7 = "cp -a %s %s" wide ascii - $c1 = "/dev/pts/4" wide ascii fullword - $c2 = "/tmp/1408.log" wide ascii fullword - condition: - uint32(0) == 0x464C457F and - ((1 of ($a*) and 4 of ($b*)) or - (1 of ($a*) and 1 of ($c*)) or - 2 of ($a*) or - all of ($b*)) + + strings: + $a1 = "loadso" wide ascii fullword + $a2 = "\nuname -a\n\n" wide ascii + $a3 = "/dev/shm/.x11.id" wide ascii + $a4 = "LxMain64" wide ascii nocase + $a5 = "# \\u@\\h:\\w \\$ " wide ascii + $b1 = "0123456789abcdefghijklmnopqrstuvwxyz" wide + $b2 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" wide + $b3 = "ret %d" wide fullword + $b4 = "uname -a\n\n" wide ascii + $b5 = "/proc/%u/cmdline" wide ascii + $b6 = "/proc/self/exe" wide ascii + $b7 = "cp -a %s %s" wide ascii + $c1 = "/dev/pts/4" wide ascii fullword + $c2 = "/tmp/1408.log" wide ascii fullword + + condition: + uint32(0) == 0x464C457F and ((1 of ($a*) and 4 of ($b*)) or (1 of ($a*) and 1 of ($c*)) or 2 of ($a*) or all of ($b*)) } -rule apt_win_exe_trojan_derusbi : APT Derusbi +rule apt_win_exe_trojan_derusbi { + meta: - Author = "@seifreed" + Author = "@seifreed" + strings: - $sa_1 = "USB" wide ascii - $sa_2 = "RAM" wide ascii - $sa_3 = "SHARE" wide ascii - $sa_4 = "HOST: %s:%d" - $sa_5 = "POST" - $sa_6 = "User-Agent: Mozilla" - $sa_7 = "Proxy-Connection: Keep-Alive" - $sa_8 = "Connection: Keep-Alive" - $sa_9 = "Server: Apache" - $sa_10 = "HTTP/1.1" - $sa_11 = "ImagePath" - $sa_12 = "ZwUnloadDriver" - $sa_13 = "ZwLoadDriver" - $sa_14 = "ServiceMain" - $sa_15 = "regsvr32.exe" - $sa_16 = "/s /u" wide ascii - $sa_17 = "rand" - $sa_18 = "_time64" - $sa_19 = "DllRegisterServer" - $sa_20 = "DllUnregisterServer" - $sa_21 = { 8b [5] 8b ?? d3 ?? 83 ?? 08 30 [5] 40 3b [5] 72 } // Decode Driver - - $sb_1 = "PCC_CMD_PACKET" - $sb_2 = "PCC_CMD" - $sb_3 = "PCC_BASEMOD" - $sb_4 = "PCC_PROXY" - $sb_5 = "PCC_SYS" - $sb_6 = "PCC_PROCESS" - $sb_7 = "PCC_FILE" - $sb_8 = "PCC_SOCK" - - $sc_1 = "bcdedit -set testsigning" wide ascii - $sc_2 = "update.microsoft.com" wide ascii - $sc_3 = "_crt_debugger_hook" wide ascii - $sc_4 = "ue8G5" wide ascii - - $sd_1 = "NET" wide ascii - $sd_2 = "\\\\.\\pipe\\%s" wide ascii - $sd_3 = ".dat" wide ascii - $sd_4 = "CONNECT %s:%d" wide ascii - $sd_5 = "\\Device\\" wide ascii - - $se_1 = "-%s-%04d" wide ascii - $se_2 = "-%04d" wide ascii - $se_3 = "FAL" wide ascii - $se_4 = "OK" wide ascii - $se_5 = "2.03" wide ascii - $se_6 = "XXXXXXXXXXXXXXX" wide ascii + $sa_1 = "USB" wide ascii + $sa_2 = "RAM" wide ascii + $sa_3 = "SHARE" wide ascii + $sa_4 = "HOST: %s:%d" + $sa_5 = "POST" + $sa_6 = "User-Agent: Mozilla" + $sa_7 = "Proxy-Connection: Keep-Alive" + $sa_8 = "Connection: Keep-Alive" + $sa_9 = "Server: Apache" + $sa_10 = "HTTP/1.1" + $sa_11 = "ImagePath" + $sa_12 = "ZwUnloadDriver" + $sa_13 = "ZwLoadDriver" + $sa_14 = "ServiceMain" + $sa_15 = "regsvr32.exe" + $sa_16 = "/s /u" wide ascii + $sa_17 = "rand" + $sa_18 = "_time64" + $sa_19 = "DllRegisterServer" + $sa_20 = "DllUnregisterServer" + $sa_21 = { 8b [5] 8b ?? d3 ?? 83 ?? 08 30 [5] 40 3b [5] 72 } // Decode Driver + $sb_1 = "PCC_CMD_PACKET" + $sb_2 = "PCC_CMD" + $sb_3 = "PCC_BASEMOD" + $sb_4 = "PCC_PROXY" + $sb_5 = "PCC_SYS" + $sb_6 = "PCC_PROCESS" + $sb_7 = "PCC_FILE" + $sb_8 = "PCC_SOCK" + $sc_1 = "bcdedit -set testsigning" wide ascii + $sc_2 = "update.microsoft.com" wide ascii + $sc_3 = "_crt_debugger_hook" wide ascii + $sc_4 = "ue8G5" wide ascii + $sd_1 = "NET" wide ascii + $sd_2 = "\\\\.\\pipe\\%s" wide ascii + $sd_3 = ".dat" wide ascii + $sd_4 = "CONNECT %s:%d" wide ascii + $sd_5 = "\\Device\\" wide ascii + $se_1 = "-%s-%04d" wide ascii + $se_2 = "-%04d" wide ascii + $se_3 = "FAL" wide ascii + $se_4 = "OK" wide ascii + $se_5 = "2.03" wide ascii + $se_6 = "XXXXXXXXXXXXXXX" wide ascii condition: - (uint16(0) == 0x5A4D) and ( (all of ($sa_*)) or ( - (13 of ($sa_*)) and - ( (5 of ($sb_*)) or (3 of ($sc_*)) or (all of ($sd_*)) or - ( (1 of ($sc_*)) and (all of ($se_*)) ) ) ) ) + (uint16(0) == 0x5A4D) and ( (all of ($sa_*)) or ((13 of ($sa_*)) and ( (5 of ($sb_*)) or (3 of ($sc_*)) or (all of ($sd_*)) or ( (1 of ($sc_*)) and (all of ($se_*)) ) ) ) ) } -rule Trojan_Derusbi : APT Derusbi { +rule Trojan_Derusbi +{ + meta: Author = "RSA_IR" Date = "4Sept13" @@ -200,138 +203,158 @@ rule Trojan_Derusbi : APT Derusbi { 2 of ($b1, $b2, $b3, $b4) and 1 of ($b5, $b6, $b7, $b8) } -rule APT_Derusbi_DeepPanda : APT Derusbi ELF DeepPanda +rule APT_Derusbi_DeepPanda { + meta: - author = "ThreatConnect Intelligence Research Team" - reference = "http://www.crowdstrike.com/sites/default/files/AdversaryIntelligenceReport_DeepPanda_0.pdf" + author = "ThreatConnect Intelligence Research Team" + reference = "http://www.crowdstrike.com/sites/default/files/AdversaryIntelligenceReport_DeepPanda_0.pdf" + strings: - $D = "Dom4!nUserP4ss" wide ascii + $D = "Dom4!nUserP4ss" wide ascii + condition: - $D + $D } -rule APT_Derusbi_Gen : APT Derusbi +rule APT_Derusbi_Gen { + meta: - author = "ThreatConnect Intelligence Research Team" + author = "ThreatConnect Intelligence Research Team" + strings: - $2 = "273ce6-b29f-90d618c0" wide ascii - $A = "Ace123dx" fullword wide ascii - $A1 = "Ace123dxl!" fullword wide ascii - $A2 = "Ace123dx!@#x" fullword wide ascii - $C = "/Catelog/login1.asp" wide ascii - $DF = "~DFTMP$$$$$.1" wide ascii - $G = "GET /Query.asp?loginid=" wide ascii - $L = "LoadConfigFromReg failded" wide ascii - $L1 = "LoadConfigFromBuildin success" wide ascii - $ph = "/photoe/photo.asp HTTP" wide ascii - $PO = "POST /photos/photo.asp" wide ascii - $PC = "PCC_IDENT" wide ascii + $2 = "273ce6-b29f-90d618c0" wide ascii + $A = "Ace123dx" fullword wide ascii + $A1 = "Ace123dxl!" fullword wide ascii + $A2 = "Ace123dx!@#x" fullword wide ascii + $C = "/Catelog/login1.asp" wide ascii + $DF = "~DFTMP$$$$$.1" wide ascii + $G = "GET /Query.asp?loginid=" wide ascii + $L = "LoadConfigFromReg failded" wide ascii + $L1 = "LoadConfigFromBuildin success" wide ascii + $ph = "/photoe/photo.asp HTTP" wide ascii + $PO = "POST /photos/photo.asp" wide ascii + $PC = "PCC_IDENT" wide ascii + condition: - any of them + any of them } + /* - Yara Rule Set - Author: Airbus Defence and Space Cybersecurity CSIRT - Fabien Perigaud - Date: 2015-12-09 + Yara Rule Set + Author: Airbus Defence and Space Cybersecurity CSIRT - Fabien Perigaud + Date: 2015-12-09 Reference = http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family - Identifier: Derusbi Dez 2015 + Identifier: Derusbi Dez 2015 */ -rule derusbi_kernel : APT Derusbi +rule derusbi_kernel { + meta: description = "Derusbi Driver version" date = "2015-12-09" author = "Airbus Defence and Space Cybersecurity CSIRT - Fabien Perigaud" + strings: $token1 = "$$$--Hello" $token2 = "Wrod--$$$" $cfg = "XXXXXXXXXXXXXXX" $class = ".?AVPCC_BASEMOD@@" $MZ = "MZ" + condition: $MZ at 0 and $token1 and $token2 and $cfg and $class } -rule derusbi_linux : APT Derusbi ELF +rule derusbi_linux { + meta: description = "Derusbi Server Linux version" date = "2015-12-09" author = "Airbus Defence and Space Cybersecurity CSIRT - Fabien Perigaud" + strings: $PS1 = "PS1=RK# \\u@\\h:\\w \\$" $cmd = "unset LS_OPTIONS;uname -a" $pname = "[diskio]" $rkfile = "/tmp/.secure" $ELF = "\x7fELF" + condition: $ELF at 0 and $PS1 and $cmd and $pname and $rkfile } /* - Yara Rule Set - Author: Florian Roth - Date: 2015-12-15 - Identifier: Derusbi Dez 2015 + Yara Rule Set + Author: Florian Roth + Date: 2015-12-15 + Identifier: Derusbi Dez 2015 */ -rule Derusbi_Kernel_Driver_WD_UDFS : APT Derusbi { - meta: - description = "Detects Derusbi Kernel Driver" - author = "Florian Roth" - reference = "http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family" - date = "2015-12-15" - score = 80 - hash1 = "1b449121300b0188ff9f6a8c399fb818d0cf53fd36cf012e6908a2665a27f016" - hash2 = "50174311e524b97ea5cb4f3ea571dd477d1f0eee06cd3ed73af39a15f3e6484a" - hash3 = "6cdb65dbfb2c236b6d149fd9836cb484d0608ea082cf5bd88edde31ad11a0d58" - hash4 = "e27fb16dce7fff714f4b05f2cef53e1919a34d7ec0e595f2eaa155861a213e59" - strings: - $x1 = "\\\\.\\pipe\\usbpcex%d" fullword wide - $x2 = "\\\\.\\pipe\\usbpcg%d" fullword wide - $x3 = "\\??\\pipe\\usbpcex%d" fullword wide - $x4 = "\\??\\pipe\\usbpcg%d" fullword wide - $x5 = "$$$--Hello" fullword ascii - $x6 = "Wrod--$$$" fullword ascii - - $s1 = "\\Registry\\User\\%s\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings" fullword wide - $s2 = "Update.dll" fullword ascii - $s3 = "\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control\\WMI" fullword wide - $s4 = "\\Driver\\nsiproxy" fullword wide - $s5 = "HOST: %s" fullword ascii - condition: - uint16(0) == 0x5a4d and filesize < 800KB and - ( - 2 of ($x*) or all of ($s*) - ) +rule Derusbi_Kernel_Driver_WD_UDFS +{ + + meta: + description = "Detects Derusbi Kernel Driver" + author = "Florian Roth" + reference = "http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family" + date = "2015-12-15" + score = 80 + hash1 = "1b449121300b0188ff9f6a8c399fb818d0cf53fd36cf012e6908a2665a27f016" + hash2 = "50174311e524b97ea5cb4f3ea571dd477d1f0eee06cd3ed73af39a15f3e6484a" + hash3 = "6cdb65dbfb2c236b6d149fd9836cb484d0608ea082cf5bd88edde31ad11a0d58" + hash4 = "e27fb16dce7fff714f4b05f2cef53e1919a34d7ec0e595f2eaa155861a213e59" + + strings: + $x1 = "\\\\.\\pipe\\usbpcex%d" fullword wide + $x2 = "\\\\.\\pipe\\usbpcg%d" fullword wide + $x3 = "\\??\\pipe\\usbpcex%d" fullword wide + $x4 = "\\??\\pipe\\usbpcg%d" fullword wide + $x5 = "$$$--Hello" fullword ascii + $x6 = "Wrod--$$$" fullword ascii + $s1 = "\\Registry\\User\\%s\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings" fullword wide + $s2 = "Update.dll" fullword ascii + $s3 = "\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control\\WMI" fullword wide + $s4 = "\\Driver\\nsiproxy" fullword wide + $s5 = "HOST: %s" fullword ascii + +condition: + uint16(0) == 0x5a4d and filesize < 800KB and (2 of ($x*) or all of ($s*)) } -rule Derusbi_Code_Signing_Cert : APT Derusbi { - meta: - description = "Detects an executable signed with a certificate also used for Derusbi Trojan - suspicious" - author = "Florian Roth" - reference = "http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family" - date = "2015-12-15" - score = 40 +rule Derusbi_Code_Signing_Cert +{ + + meta: + description = "Detects an executable signed with a certificate also used for Derusbi Trojan - suspicious" + author = "Florian Roth" + reference = "http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family" + date = "2015-12-15" + score = 40 + strings: $s1 = "Fuqing Dawu Technology Co.,Ltd.0" fullword ascii $s2 = "XL Games Co.,Ltd.0" fullword ascii $s3 = "Wemade Entertainment co.,Ltd0" fullword ascii + condition: uint16(0) == 0x5a4d and filesize < 800KB and 1 of them } -rule XOR_4byte_Key : APT Derusbi { - meta: - description = "Detects an executable encrypted with a 4 byte XOR (also used for Derusbi Trojan)" - author = "Florian Roth" - reference = "http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family" - date = "2015-12-15" - score = 60 +rule XOR_4byte_Key +{ + + meta: + description = "Detects an executable encrypted with a 4 byte XOR (also used for Derusbi Trojan)" + author = "Florian Roth" + reference = "http://blog.airbuscybersecurity.com/post/2015/11/Newcomers-in-the-Derusbi-family" + date = "2015-12-15" + score = 60 + strings: /* Op Code */ $s1 = { 85 C9 74 0A 31 06 01 1E 83 C6 04 49 EB F2 } @@ -344,16 +367,18 @@ rule XOR_4byte_Key : APT Derusbi { dec ecx jmp short loc_590162 */ + condition: uint16(0) == 0x5a4d and filesize < 900KB and all of them } -rule apt_win32_dll_bergard_pgv_pvid_variant : Win32 Derusbi +rule apt_win32_dll_bergard_pgv_pvid_variant { meta: copyright = "Fidelis Cybersecurity" reference = "http://www.threatgeek.com/2016/05/turbo-twist-two-64-bit-derusbi-strains-converge.html" + strings: $ = "Accept:" $ = "User-Agent: %s" @@ -369,6 +394,5 @@ rule apt_win32_dll_bergard_pgv_pvid_variant : Win32 Derusbi $ = "HTTP/1.0" condition: - (uint16(0) == 0x5A4D) and (all of them) } -- libgit2 0.26.0