作者: Yenn_
原文链接: Wei's Blog
通过数字签名使用Yara Hunt 文件
需要导入”pe”模块
在证书详情中找到证书的序列号,同时也可以记录下来颁发者。
strings: $mz = {4d 5a} condition: ($mz at 0) and ( for any i in (0 .. pe.number_of_signatures) : ( pe.signatures[i].issuer contains "yoyojitox" and //颁发者 pe.signatures[i].serial == "06:fc:34:d3:43:cf:6a:8c:41:e3:aa:c2:85:d6:e4:87"//序列号,需要全小写 ))
Turla - Carbon Orchestrator V3.81
import "hash" private global rule MZOnly { strings: $mz = "MZ" condition: $mz at 0 } private global rule FileSize { condition: filesize < 1MB } rule CarbonOrchestrator_v3_81_ { meta: Author = "Intezer Analyze" Reference = "https://apt-ecosystem.com" strings: $block_0 = { E8 ?? ?? ?? ?? 99 B9 ?? ?? ?? ?? F7 ?? 8B ?? 48 ?? ?? ?? ?? 8B ?? ?? 2B ?? 8B ?? 89 ?? ?? ?? EB } $block_1 = { 8B ?? ?? ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 74 } $block_2 = { C7 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? 0F B6 ?? 88 ?? ?? ?? 0F B6 ?? ?? ?? 3D ?? ?? ?? ?? 0F 85 } $block_3 = { 4C ?? ?? ?? ?? 88 ?? ?? ?? 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? ?? 85 ?? 74 } $block_4 = { 5? 68 ?? ?? ?? ?? 6A ?? 5? 5? 68 ?? ?? ?? ?? FF 3? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 83 ?? ?? 0F 85 } $block_5 = { 5? 68 ?? ?? ?? ?? 6A ?? 5? 5? 68 ?? ?? ?? ?? FF 7? ?? FF 1? ?? ?? ?? ?? 89 ?? ?? 83 ?? ?? 0F 84 } $block_6 = { 66 ?? ?? ?? 6A ?? 8D ?? ?? 5? 5? 5? FF 7? ?? E8 ?? ?? ?? ?? 83 ?? ?? 8B ?? 89 ?? ?? 85 ?? 0F 85 } $block_7 = { 89 ?? ?? 6A ?? 8D ?? ?? ?? ?? ?? 5? 5? FF 7? ?? 5? E8 ?? ?? ?? ?? 83 ?? ?? 89 ?? ?? 3B ?? 0F 85 } $block_8 = { 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 48 ?? ?? ?? ?? 0F BE ?? ?? 83 ?? ?? 75 } $block_9 = { 0F B7 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? FF 9? ?? ?? ?? ?? 48 ?? ?? ?? ?? 66 ?? ?? ?? EB } $block_10 = { 8D ?? ?? ?? 5? 8D ?? ?? ?? 5? 8D ?? ?? ?? 5? FF 3? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 84 ?? 0F 84 } $block_11 = { FF 7? ?? ?? 8B ?? ?? ?? FF 7? ?? ?? E8 ?? ?? ?? ?? 33 ?? 5? 5? 89 ?? ?? ?? 39 ?? ?? ?? 0F 85 } $block_12 = { 5? FF 1? ?? ?? ?? ?? C7 ?? ?? ?? ?? ?? ?? 5? 89 ?? ?? ?? FF D? 5? 5? 89 ?? ?? ?? 3B ?? 0F 84 } $block_13 = { FF 7? ?? FF 1? ?? ?? ?? ?? C7 ?? ?? ?? ?? ?? ?? FF 7? ?? FF 1? ?? ?? ?? ?? 5? 5? 85 ?? 0F 85 } $block_14 = { 0F BE ?? ?? ?? BA ?? ?? ?? ?? 8B ?? E8 ?? ?? ?? ?? 88 ?? ?? ?? 0F B6 ?? ?? ?? 83 ?? ?? 7C } $block_15 = { 48 ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 33 ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 75 } $block_16 = { 48 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? 3D ?? ?? ?? ?? 75 } $block_17 = { 8B ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? 0F 84 } $block_18 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? 33 ?? B9 ?? ?? ?? ?? 48 ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? EB } $block_19 = { 4C ?? ?? ?? ?? 41 ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 85 ?? 0F 84 } $block_20 = { FF 1? ?? ?? ?? ?? FF 7? ?? 8B ?? 5? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 ?? ?? 83 ?? ?? 0F 84 } $block_21 = { 8B ?? ?? 89 ?? ?? 8D ?? ?? 5? FF 7? ?? 8D ?? ?? E8 ?? ?? ?? ?? 5? 5? 89 ?? ?? 85 ?? 0F 85 } $block_22 = { 8B ?? 99 F7 ?? 83 ?? ?? ?? 8A ?? 83 ?? ?? ?? 33 ?? 4? 89 ?? ?? 88 ?? ?? 89 ?? ?? 85 ?? 7E } $block_23 = { 8B ?? ?? 6A ?? 8D ?? ?? ?? 5? 5? 5? FF 7? ?? ?? E8 ?? ?? ?? ?? 8B ?? 83 ?? ?? 3B ?? 0F 85 } $block_24 = { 8B ?? ?? ?? 44 ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 85 ?? 0F 85 } $block_25 = { 48 ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 88 ?? ?? ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? ?? 85 ?? 74 } $block_26 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B6 ?? ?? 88 ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? 75 } $block_27 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? 0F B6 ?? ?? 88 ?? ?? ?? 8B ?? ?? ?? FF C? 89 ?? ?? ?? C7 } $block_28 = { 8B ?? ?? ?? ?? ?? ?? 8B ?? ?? ?? E8 ?? ?? ?? ?? 8B ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 74 } $block_29 = { 41 ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 75 } $block_30 = { 0F B6 ?? 23 ?? ?? 8B ?? ?? D3 ?? 8B ?? ?? D2 ?? 0A ?? FF 4? ?? 83 ?? ?? ?? 8B ?? ?? 7C } $block_31 = { 6A ?? 8D ?? ?? ?? 5? 5? FF 7? ?? ?? FF 7? ?? E8 ?? ?? ?? ?? 8B ?? 83 ?? ?? 85 ?? 0F 85 } $block_32 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? 33 ?? B9 ?? ?? ?? ?? 48 ?? ?? 48 ?? ?? ?? ?? ?? 73 } $block_33 = { 48 ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 0F BE ?? ?? ?? 83 ?? ?? 74 } $block_34 = { 48 ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 ?? ?? ?? 83 ?? ?? ?? ?? 0F 85 } $block_35 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? 48 ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 83 ?? ?? 0F 85 } $block_36 = { 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 83 ?? ?? 0F 84 } $block_37 = { 0F BF ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 89 ?? C7 ?? ?? ?? ?? ?? ?? ?? E9 } $block_38 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 89 ?? ?? ?? 83 ?? ?? ?? ?? 0F 85 } $block_39 = { 0F BF ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 89 ?? C7 ?? ?? ?? ?? ?? ?? ?? EB } $block_40 = { 8B ?? ?? ?? 8B ?? ?? ?? 03 ?? 8B ?? 89 ?? ?? ?? 8B ?? ?? ?? 39 ?? ?? ?? 0F 82 } $block_41 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 ?? ?? ?? 83 ?? ?? ?? ?? 0F 85 } $block_42 = { FF 1? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? ?? 81 B? ?? ?? ?? ?? ?? ?? ?? ?? ?? 0F 85 } $block_43 = { 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 48 ?? ?? 0F 84 } $block_44 = { 33 ?? 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 ?? ?? ?? 83 ?? ?? ?? ?? 0F 85 } $block_45 = { 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 48 ?? ?? 0F 85 } $block_46 = { 48 ?? ?? ?? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? ?? 83 ?? ?? 75 } $block_47 = { 0F BE ?? ?? ?? 8B ?? 48 ?? ?? ?? ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 48 ?? ?? 74 } $block_48 = { B2 ?? 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 ?? ?? ?? ?? ?? ?? ?? 0F 85 } $block_49 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 8B ?? ?? ?? 39 ?? ?? 0F 85 } $block_50 = { 48 ?? ?? ?? ?? C7 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? 0F B7 ?? ?? 85 ?? 74 } $block_51 = { 0F B7 ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? FF 9? ?? ?? ?? ?? 66 ?? ?? ?? ?? EB } $block_52 = { 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 85 ?? 0F 85 } $block_53 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? 8B ?? ?? 8B ?? ?? 2B ?? 3B ?? ?? ?? 0F 87 } $block_54 = { 0F B6 ?? ?? ?? B9 ?? ?? ?? ?? 2B ?? 8B ?? 0F B6 ?? ?? ?? 03 ?? 8B ?? 88 } $block_55 = { 8B ?? ?? ?? ?? ?? ?? FF C? 48 ?? 48 ?? ?? ?? ?? 0F BE ?? ?? 85 ?? 75 } $block_56 = { 0F BE ?? ?? ?? 8B ?? 48 ?? ?? ?? ?? FF 1? ?? ?? ?? ?? 48 ?? ?? 74 } $block_57 = { 48 ?? ?? ?? ?? 8B ?? ?? 99 83 ?? ?? 03 ?? C1 ?? ?? 39 ?? ?? ?? 7E } $block_58 = { 0F B7 ?? ?? ?? 48 ?? ?? ?? 48 ?? ?? ?? 8B ?? ?? ?? 39 ?? ?? ?? 77 } $block_59 = { 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 0F 84 } $block_60 = { 8B ?? ?? ?? 8B ?? ?? ?? ?? ?? ?? 2B ?? 8B ?? 3D ?? ?? ?? ?? 0F 8C } $block_61 = { B2 ?? 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 75 } $block_62 = { 0F B6 ?? ?? ?? ?? ?? ?? 88 ?? ?? ?? 0F B6 ?? ?? ?? 85 ?? 0F 84 } $block_63 = { 48 ?? ?? ?? ?? 0F B6 ?? 88 ?? ?? ?? 0F B6 ?? ?? ?? 83 ?? ?? 75 } $block_64 = { 8B ?? ?? ?? FF C? 89 ?? ?? ?? 0F B7 ?? ?? ?? 39 ?? ?? ?? 0F 83 } $block_65 = { 48 ?? ?? ?? ?? ?? ?? ?? 8B ?? ?? 39 ?? ?? ?? ?? ?? ?? 0F 83 } $block_66 = { 0F B7 ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? ?? ?? ?? ?? 3B ?? 0F 85 } $block_67 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? 0F 84 } $block_68 = { 8B ?? ?? ?? FF C? 48 ?? 48 ?? ?? ?? ?? 0F BE ?? ?? 85 ?? 75 } $block_69 = { 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 83 ?? ?? 75 } $block_70 = { 0F B7 ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? ?? ?? ?? ?? 3B ?? 7D } $block_71 = { 0F B7 ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? ?? ?? ?? ?? 3B ?? 75 } $block_72 = { 0F B7 ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? ?? ?? ?? ?? 3B ?? 7F } $block_73 = { 8B ?? ?? ?? 8B ?? ?? ?? ?? ?? ?? 2B ?? 8B ?? 85 ?? 0F 85 } $block_74 = { 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? 48 ?? ?? 0F 85 } $block_75 = { 8B ?? ?? ?? 8B ?? ?? ?? ?? ?? ?? 2B ?? 8B ?? 85 ?? 0F 8E } $block_76 = { 48 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 0F 85 } $block_77 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? 8B ?? ?? 39 ?? ?? 0F 83 } $block_78 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? 3D ?? ?? ?? ?? 75 } $block_79 = { B2 ?? 48 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 75 } $block_80 = { 8B ?? ?? ?? 8B ?? ?? ?? FF C? 89 ?? ?? ?? 85 ?? 0F 84 } $block_81 = { 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 ?? ?? 0F 85 } $block_82 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? 3D ?? ?? ?? ?? 74 } $block_83 = { 48 ?? ?? ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 ?? ?? 0F 86 } $block_84 = { 33 ?? 8B ?? ?? ?? F7 ?? ?? ?? FF C? 0F AF ?? ?? ?? 89 } $block_85 = { 8B ?? ?? ?? 48 ?? ?? ?? ?? 0F BE ?? ?? 85 ?? 0F 85 } $block_86 = { 48 ?? ?? ?? ?? ?? ?? ?? 83 ?? ?? ?? ?? ?? ?? 0F 85 } $block_87 = { 0F B7 ?? ?? ?? ?? ?? ?? 25 ?? ?? ?? ?? 85 ?? 0F 84 } $block_88 = { 0F B7 ?? ?? ?? 48 ?? ?? ?? ?? 0F B7 ?? ?? 3B ?? 7D } $block_89 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? 39 ?? ?? ?? 0F 85 } $block_90 = { 8B ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 0F 85 } $block_91 = { 48 ?? ?? ?? ?? 48 ?? ?? 83 ?? ?? ?? ?? ?? ?? 0F 85 } $block_92 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F B7 ?? ?? 83 ?? ?? 75 } $block_93 = { 8B ?? ?? ?? ?? ?? ?? 0F BE ?? ?? ?? 83 ?? ?? 74 } $block_94 = { 8B ?? ?? ?? ?? ?? ?? 39 ?? ?? ?? ?? ?? ?? 0F 83 } $block_95 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F BE ?? ?? 83 ?? ?? 75 } $block_96 = { 48 ?? ?? ?? ?? 48 ?? ?? ?? ?? 48 ?? ?? ?? 0F 85 } $block_97 = { B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 0F B6 ?? 85 ?? 74 } $block_98 = { 48 ?? ?? ?? ?? ?? ?? ?? 0F BE ?? ?? 83 ?? ?? 74 } $block_99 = { 8B ?? ?? ?? ?? ?? ?? 39 ?? ?? ?? ?? ?? ?? 0F 8D } condition: hash.sha256(0, filesize) == "e82d4b6d037568a4602e70f099005572b587c220793afd8f90c13cb7bbde61ed" or hash.sha256(0, filesize) == "d1ad698567b04ea5ce8197c0316444ad8ee0350b46e0414f53f54c278b393a19" or hash.sha256(0, filesize) == "7fa4482bfbca550ce296d8e791b1091d60d733ea8042167fd0eb853530584452" or 24 of them }
Turla - Png Dropper
import "pe" rule turla_png_dropper { meta: author = "Ben Humphrey" description = "Detects the PNG Dropper used by the Turla group" reference = "https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2018/november/turla-png-dropper-is-back/" date = "2018/11/23" hash1 = "6ed939f59476fd31dc4d99e96136e928fbd88aec0d9c59846092c0e93a3c0e27" strings: $api0 = "GdiplusStartup" $api1 = "GdipAlloc" $api2 = "GdipCreateBitmapFromStreamICM" $api3 = "GdipBitmapLockBits" $api4 = "GdipGetImageWidth" $api5 = "GdipGetImageHeight" $api6 = "GdiplusShutdown" $code32 = { 8B 46 3C // mov eax, [esi+3Ch] B9 0B 01 00 00 // mov ecx, 10Bh 66 39 4C 30 18 // cmp [eax+esi+18h], cx 8B 44 30 28 // mov eax, [eax+esi+28h] 6A 00 // push 0 B9 AF BE AD DE // mov ecx, 0DEADBEAFh 51 // push ecx 51 // push ecx 03 C6 // add eax, esi 56 // push esi FF D0 // call eax } $code64 = { 48 63 43 3C // movsxd rax, dword ptr [rbx+3Ch] B9 0B 01 00 00 // mov ecx, 10Bh BA AF BE AD DE // mov edx, 0DEADBEAFh 66 39 4C 18 18 // cmp [rax+rbx+18h], cx 8B 44 18 28 // mov eax, [rax+rbx+28h] 45 33 C9 // xor r9d, r9d 44 8B C2 // mov r8d, edx 48 8B CB // mov rcx, rbx 48 03 C3 // add rax, rbx FF D0 // call rax } condition: (uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and all of ($api*) and 1 of ($code*) } rule turla_png_reg_enum_payload { meta: author = "Ben Humphrey" description = "Payload that has most recently been dropped by the Turla PNG Dropper" reference = "https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2018/november/turla-png-dropper-is-back/" date = "2018/11/23" hash1 = "fea27eb2e939e930c8617dcf64366d1649988f30555f6ee9cd09fe54e4bc22b3" strings: $crypt00 = "Microsoft Software Key Storage Provider" wide $crypt01 = "ChainingModeCBC" wide /* $crypt02 = "AES" wide */ /* disabled due to performance reasons */ condition: (uint16(0) == 0x5A4D and uint16(uint32(0x3c)) == 0x4550) and pe.imports("advapi32.dll", "StartServiceCtrlDispatcherA") and pe.imports("advapi32.dll", "RegEnumValueA") and pe.imports("advapi32.dll", "RegEnumKeyExA") and pe.imports("ncrypt.dll", "NCryptOpenStorageProvider") and pe.imports("ncrypt.dll", "NCryptEnumKeys") and pe.imports("ncrypt.dll", "NCryptOpenKey") and pe.imports("ncrypt.dll", "NCryptDecrypt") and pe.imports("ncrypt.dll", "BCryptGenerateSymmetricKey") and pe.imports("ncrypt.dll", "BCryptGetProperty") and pe.imports("ncrypt.dll", "BCryptDecrypt") and pe.imports("ncrypt.dll", "BCryptEncrypt") and all of them }
apt_carbon_paper_turla
// For feedback or questions contact us at: [email protected] // https://github.com/eset/malware-ioc/ // // These yara rules are provided to the community under the two-clause BSD // license as follows: // // Copyright (c) 2017, ESET // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, this // list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // import "pe" rule generic_carbon { meta: author = "ESET Research" date = "2017-03-30" description = "Turla Carbon malware" reference = "https://www.welivesecurity.com/2017/03/30/carbon-paper-peering-turlas-second-stage-backdoor/" source = "https://github.com/eset/malware-ioc/" contact = "[email protected]" license = "BSD 2-Clause" strings: $s1 = "ModStart" $t1 = "STOP|OK" $t2 = "STOP|KILL" condition: (uint16(0) == 0x5a4d) and (1 of ($s*)) and (1 of ($t*)) } rule carbon_metadata { meta: author = "ESET Research" date = "2017-03-30" description = "Turla Carbon malware" reference = "https://www.welivesecurity.com/2017/03/30/carbon-paper-peering-turlas-second-stage-backdoor/" source = "https://github.com/eset/malware-ioc/" contact = "[email protected]" license = "BSD 2-Clause" condition: (pe.version_info["InternalName"] contains "SERVICE.EXE" or pe.version_info["InternalName"] contains "MSIMGHLP.DLL" or pe.version_info["InternalName"] contains "MSXIML.DLL") and pe.version_info["CompanyName"] contains "Microsoft Corporation" }
SideWinder
//2021-01-14 19:27 rule SideWinderRTF { meta: description = "Detects SideWinder RTF Files" reference = "https://otx.alienvault.com/pulse/5f21d5b84d529ed134127a66" from = "https://cdn-cybersecurity.att.com/docs/global-perspective-of-the-sidewinder-apt.pdf" strings: $s1 ={423130434631333035413937333746454533363035363638374244313942443633314439353545363944463146453045314235373143434143463342373741433630434538314341463630303332354234443131384336363441313543344637454637} $s2 ={303036313030303130353030303030303030303030307D7B5C726573756C7420207D7D7B5C6F626A6563745C6F626A} $s3 ={4433433043373132394239423235374642394243414238363836463646394338454139424436453835453333384632353133314337343443344230394141334644304341314446334330384130434637383930364537304531334543353846303933} condition: uint16(0) == 0x5c7b and all of them } rule SideWinder_loader_dll { meta: author = "AT&T Alien Labs" description = "Detects SideWinder first dll loader" hash = "113c1c5e176cebe42e452e7ec6ded434c8f620372cef7ae7bfdc6b9469c1b3a4" reference = "https://otx.alienvault.com/pulse/5f21d5b84d529ed134127a66" strings: $code = {06 0A 06 8E 69 1F 20 59 8D (0E | 10) 00 00 01 0B 12 00 1F 20 12 01 07 8E 69 28 04 00 00 06 16 0C 2B 16 07 08 8F (0E | 10) 00 00 01 25 47 06 08 1F 20 5D 91 61 D2 52 08 17 58 0C 08 07 8E 69 32 E4 07 28 03 00 00 06 80 01 00 00 04 2A} //$tmp = {2E 00 74 00 6D 00 70 00 20 00 20 00 20 00 20 00 20 00} $tmp = ".tmp " wide condition: uint16(0) == 0x5A4D and all of them } rule SideWinder_implant { meta: author = "AT&T Alien Labs" description = "Detects SideWinder final payload" hash = "c568238dcf1e30d55a398579a4704ddb8196b685" reference = "https://otx.alienvault.com/pulse/5f21d5b84d529ed134127a66" strings: $code = {1B 30 05 00 C7 00 00 00 00 00 00 00 02 28 03 00 00 06 7D 12 00 00 04 02 02 FE 06 23 00 00 06 73 5B 00 00 0A 14 20 88 13 00 00 15 73 5C 00 00 0A 7D 13 00 00 04 02 02 FE 06 24 00 00 06 73 5B 00 00 0A 14 20 88 13 00 00 15 73 5C 00 00 0A 7D 15 00 00 04 02 7B 12 00 00 04 6F 0E 00 00 06 2C 1D 02 28 1F 00 00 06 02 7B 12 00 00 04 16 6F 0F 00 00 06 02 7B 12 00 00 04 6F 06 00 00 06 02 7B 12 00 00 04 6F 10 00 00 06 2C 23 02 28 20 00 00 06 02 28 21 00 00 06 02 7B 12 00 00 04 16} $strings = {2E 00 73 00 69 00 66 00 00 09 2E 00 66 00 6C 00 63 00 00 1B 73 00 65 00 6C 00 65 00 63 00 74 00 65 00 64 00 46 00 69 00 6C 00 65 00 73} condition: uint16(0) == 0x5A4D and all of them }
Bitter
rule Bitter_Artra_AutoDownloader { meta: date = "2020-12-22" strings: $sequence_0 = { 8b442410 5f 5e 83c41c c21000 5f 33c0 } // n = 7, score = 800 // 8b442410 | mov eax, dword ptr [esp + 0x10] // 5f | pop edi // 5e | pop esi // 83c41c | add esp, 0x1c // c21000 | ret 0x10 // 5f | pop edi // 33c0 | xor eax, eax $sequence_1 = { 51 8bc6 57 33c9 } // n = 4, score = 700 // 51 | push ecx // 8bc6 | mov eax, esi // 57 | push edi // 33c9 | xor ecx, ecx $sequence_2 = { 8bc6 41 8d7801 8d9b00000000 8a10 40 } // n = 6, score = 700 // 8bc6 | mov eax, esi // 41 | inc ecx // 8d7801 | lea edi, [eax + 1] // 8d9b00000000 | lea ebx, [ebx] // 8a10 | mov dl, byte ptr [eax] // 40 | inc eax $sequence_3 = { 84d2 75f9 2bc7 3bc8 72e3 8bc6 } // n = 6, score = 700 // 84d2 | test dl, dl // 75f9 | jne 0xfffffffb // 2bc7 | sub eax, edi // 3bc8 | cmp ecx, eax // 72e3 | jb 0xffffffe5 // 8bc6 | mov eax, esi $sequence_4 = { 57 33c9 8d7801 8da42400000000 } // n = 4, score = 700 // 57 | push edi // 33c9 | xor ecx, ecx // 8d7801 | lea edi, [eax + 1] // 8da42400000000 | lea esp, [esp] $sequence_5 = { 72e3 8bc6 8d5001 5f 8a08 } // n = 5, score = 700 // 72e3 | jb 0xffffffe5 // 8bc6 | mov eax, esi // 8d5001 | lea edx, [eax + 1] // 5f | pop edi // 8a08 | mov cl, byte ptr [eax] $sequence_6 = { 5f 8a08 40 84c9 75f9 2bc2 880c30 } // n = 7, score = 700 // 5f | pop edi // 8a08 | mov cl, byte ptr [eax] // 40 | inc eax // 84c9 | test cl, cl // 75f9 | jne 0xfffffffb // 2bc2 | sub eax, edx // 880c30 | mov byte ptr [eax + esi], cl $sequence_7 = { 2bc2 03fb 8a4f01 47 84c9 } // n = 5, score = 600 // 2bc2 | sub eax, edx // 03fb | add edi, ebx // 8a4f01 | mov cl, byte ptr [edi + 1] // 47 | inc edi // 84c9 | test cl, cl $sequence_8 = { 8bf8 85ff 0f8488000000 6a00 57 } // n = 5, score = 600 // 8bf8 | mov edi, eax // 85ff | test edi, edi // 0f8488000000 | je 0x8e // 6a00 | push 0 // 57 | push edi $sequence_9 = { 8b2d???????? 90 8b542410 8d4c2410 51 56 52 } // n = 7, score = 600 // 8b2d???????? | // 90 | nop // 8b542410 | mov edx, dword ptr [esp + 0x10] // 8d4c2410 | lea ecx, [esp + 0x10] // 51 | push ecx // 56 | push esi // 52 | push edx $sequence_10 = { 6a00 8d442414 50 ffd7 85c0 } // n = 5, score = 600 // 6a00 | push 0 // 8d442414 | lea eax, [esp + 0x14] // 50 | push eax // ffd7 | call edi // 85c0 | test eax, eax $sequence_11 = { 8a08 880a 40 42 84c9 75f6 e8???????? } // n = 7, score = 600 // 8a08 | mov cl, byte ptr [eax] // 880a | mov byte ptr [edx], cl // 40 | inc eax // 42 | inc edx // 84c9 | test cl, cl // 75f6 | jne 0xfffffff8 // e8???????? | $sequence_12 = { 8b1d???????? 55 8b2d???????? 90 } // n = 4, score = 600 // 8b1d???????? | // 55 | push ebp // 8b2d???????? | // 90 | nop $sequence_13 = { ffd7 85c0 7445 53 8b1d???????? } // n = 5, score = 600 // ffd7 | call edi // 85c0 | test eax, eax // 7445 | je 0x47 // 53 | push ebx // 8b1d???????? | $sequence_14 = { 57 ff15???????? 6a6d 56 ff15???????? 8bf0 e8???????? } // n = 7, score = 600 // 57 | push edi // ff15???????? | // 6a6d | push 0x6d // 56 | push esi // ff15???????? | // 8bf0 | mov esi, eax // e8???????? | $sequence_15 = { 6a0a f3a4 6a32 8d8c24ec000000 51 52 e8???????? } // n = 7, score = 500 // 6a0a | push 0xa // f3a4 | rep movsb byte ptr es:[edi], byte ptr [esi] // 6a32 | push 0x32 // 8d8c24ec000000 | lea ecx, [esp + 0xec] // 51 | push ecx // 52 | push edx // e8???????? | $sequence_16 = { 33f6 51 8945e8 8975e4 e8???????? 8975fc } // n = 6, score = 500 // 33f6 | xor esi, esi // 51 | push ecx // 8945e8 | mov dword ptr [ebp - 0x18], eax // 8975e4 | mov dword ptr [ebp - 0x1c], esi // e8???????? | // 8975fc | mov dword ptr [ebp - 4], esi $sequence_17 = { 7419 3c26 7515 807c24146c 750e } // n = 5, score = 400 // 7419 | je 0x1b // 3c26 | cmp al, 0x26 // 7515 | jne 0x17 // 807c24146c | cmp byte ptr [esp + 0x14], 0x6c // 750e | jne 0x10 $sequence_18 = { 8b0c8de03b4100 c1e006 8d440104 8020fe ff36 e8???????? } // n = 6, score = 400 // 8b0c8de03b4100 | mov ecx, dword ptr [ecx*4 + 0x413be0] // c1e006 | shl eax, 6 // 8d440104 | lea eax, [ecx + eax + 4] // 8020fe | and byte ptr [eax], 0xfe // ff36 | push dword ptr [esi] // e8???????? | $sequence_19 = { 885c2413 bf03000000 eb14 885c2414 bf02000000 eb09 885c2416 } // n = 7, score = 400 // 885c2413 | mov byte ptr [esp + 0x13], bl // bf03000000 | mov edi, 3 // eb14 | jmp 0x16 // 885c2414 | mov byte ptr [esp + 0x14], bl // bf02000000 | mov edi, 2 // eb09 | jmp 0xb // 885c2416 | mov byte ptr [esp + 0x16], bl $sequence_20 = { ffd6 85c0 75cc 5d 5b } // n = 5, score = 400 // ffd6 | call esi // 85c0 | test eax, eax // 75cc | jne 0xffffffce // 5d | pop ebp // 5b | pop ebx $sequence_21 = { 59 8b7508 8d34f520104100 391e 7404 } // n = 5, score = 400 // 59 | pop ecx // 8b7508 | mov esi, dword ptr [ebp + 8] // 8d34f520104100 | lea esi, [esi*8 + 0x411020] // 391e | cmp dword ptr [esi], ebx // 7404 | je 6 $sequence_22 = { 2bc2 8b542428 50 68???????? 6a01 6a00 } // n = 6, score = 200 // 2bc2 | sub eax, edx // 8b542428 | mov edx, dword ptr [esp + 0x28] // 50 | push eax // 68???????? | // 6a01 | push 1 // 6a00 | push 0 condition: 7 of them and filesize < 811008 }
PatchWork
rule Patchwork_Badnews_v1.0 { meta: description = "Patchwork_Badnews v1.0" sample_hash = "673d79ea65fca235a3f4adf17ea7ee9d" date = "2021-01-25" strings: $mz = {4d 5a} $string1 ={81 FF 80 38 01 00} //cmp edi 0x13880 $encrypt1 = {C1 E9 ?? 83 E1 ??} $encrypt2 = {83C7??83E9??83C6??} $crc = {26 63 72 63 3D 65 33 61 36 00} //crc=e3a6 condition: ($mz at 0) and all of them }
Donot
import "pe" rule donot_Downloader{ meta: description = "Donot Downloader" sample_hash = "1d4ac332517cea3030045b65c325c5330ff7f569c1f7c519498062c0f39972c8" date = "2021年1月25日" strings: $mz = {4d 5a} $checkVirtual = {0f 3f 07 0b} //虚拟机检查 $string1 = {4F0062006E0066003B002100} $decrypt1 = {8B559C668B4455C06683E8018B4D9C6689444DC0} //解密 //$string2 = {7C 00 7C 00 7C 00 7C 00 7C 00 7C 00 ?? ?? ?? ?? 7C 00 7C 00 7C 00 ?? ?? 7C 00 7C 00 7C} //版本? condition: ($mz at 0) and all of them } rule donot_yoyojitox_signature{ meta: description = "Donot yoyojitox Signature" simple_hash = "a057af76ead1d6c1abab5b73c6cabf56cd0e42fe24c2e2d3b7c7cae45102bd67" date = "2021年2月4日" strings: $mz = {4d 5a} condition: ($mz at 0) and for any i in (0 .. pe.number_of_signatures) : ( pe.signatures[i].serial == "06:fc:34:d3:43:cf:6a:8c:41:e3:aa:c2:85:d6:e4:87" ) } rule donot_yogonita_signature{ meta: description = "Donot yogonita Signature" simple_hash = "0acf801b4b679e409ebe2917a75a5048a20ca9861df3d496b914b3e5f1af560a" date = "2021年2月23日" strings: $mz = {4d 5a} condition: ($mz at 0) and for any i in (0 .. pe.number_of_signatures) : ( pe.signatures[i].serial == "44:75:b0:a1:22:61:7b:be:46:e5:d7:f1:7a:a6:c6:df" ) } rule donot_doc_downloader{ meta: description = "Donot doc downloader" sample_hash = "d4d86fc91e4fec9b1d9de30aa22a70cdc3509726bffeee61d526fdfc243081b5" date = "2021-02-23" remark = "test" strings: $func1 = "CreateRemoteThread"ascii wide $func2 = "VirtualAlloc"ascii wide $func3 = "RtlMoveMemory"ascii wide $string1 = "AutooPEN" $string2 = "WOrkBook_OPen"nocase ascii wide condition: all of them }
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1515/