avatar

目录
一些Yara规则

用来存放一些恶意样本的Yara规则

Yara

通过数字签名使用Yara Hunt 文件

需要导入”pe”模块

在证书详情中找到证书的序列号,同时也可以记录下来颁发者

Code
1
2
3
4
5
6
7
8
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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// For feedback or questions contact us at: github@eset.com
// 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 = "github@eset.com"
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 = "github@eset.com"
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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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
}
文章作者: Yenn_
文章链接: https://0xdf1001f.github.io/2020/12/01/Yara%E8%A7%84%E5%88%99/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wei's Blog

评论