CAPE-parsers 0.1.59__tar.gz → 0.1.61__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/PKG-INFO +1 -1
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Amadey.py +98 -16
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/AuraStealer.py +7 -5
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/pyproject.toml +1 -1
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/LICENSE +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/README.md +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/AgentTesla.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Amatera.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Arkei.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/AsyncRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/AuroraStealer.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Carbanak.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/CobaltStrikeBeacon.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/CobaltStrikeStager.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/DCRat.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Fareit.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/KoiLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/LokiBot.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Lumma.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/MonsterV2.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/MyKings.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/NanoCore.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Nighthawk.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Njrat.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/PhemedroneStealer.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/QuasarRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/README.md +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Snake.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/SparkRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/Stealc.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/VenomRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/WinosStager.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/XWorm.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/XenoRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/AdaptixBeacon.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Azorult.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/BitPaymer.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/BlackDropper.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Blister.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/BruteRatel.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/BumbleBee.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/DarkGate.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/DoppelPaymer.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/DridexLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Formbook.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/GuLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/IcedID.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/IcedIDLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Latrodectus.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/NitroBunnyDownloader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Oyster.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/PikaBot.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/PlugX.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/QakBot.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Quickbind.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/README.md +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/RedLine.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Remcos.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Rhadamanthys.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/SmokeLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Socks5Systemz.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/SquirrelWaffle.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Strrat.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/WarzoneRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/Zloader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/core/test_cape.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/RATDecoders/README.md +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/RATDecoders/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/RATDecoders/test_rats.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/BackOffLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/BackOffPOS.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/BlackNix.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/BuerLoader.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/ChChes.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Emotet.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Enfal.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/EvilGrab.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Greame.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Hancitor.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/HttpBrowser.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/JavaDropper.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Nymaim.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Pandora.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/PoisonIvy.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/PredatorPain.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Punisher.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/RCSession.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/REvil.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/RedLeaf.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Retefe.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/Rozena.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/SmallNet.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/TSCookie.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/TrickBot.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/UrsnifV3.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/_ShadowTech.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/_VirusRat.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/_jRat.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/unrecom.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/deprecated/xRAT.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/malduck/LICENSE +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/malduck/README.md +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/malduck/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/malduck/test_malduck.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/mwcp/README.md +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/mwcp/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/mwcp/test_mwcp.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/__init__.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/aplib.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/blzpack.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/blzpack_lib.so +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/dotnet_utils.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/lznt1.py +0 -0
- {cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/utils/strings.py +0 -0
|
@@ -28,6 +28,34 @@ rule Amadey_Key_String
|
|
|
28
28
|
}
|
|
29
29
|
"""
|
|
30
30
|
|
|
31
|
+
RULE_SOURCE_KEY_X64 = """
|
|
32
|
+
rule Amadey_Key_String_X64
|
|
33
|
+
{
|
|
34
|
+
meta:
|
|
35
|
+
author = "Matthieu Gras"
|
|
36
|
+
description = "Find decryption key in Amadey (64bit)."
|
|
37
|
+
strings:
|
|
38
|
+
$opcodes = {
|
|
39
|
+
/* sub rsp, imm8 */
|
|
40
|
+
48 83 EC ??
|
|
41
|
+
|
|
42
|
+
/* mov r8d, imm32 */
|
|
43
|
+
41 B8 ?? ?? ?? ??
|
|
44
|
+
|
|
45
|
+
/* lea rdx, [rip+disp32] */
|
|
46
|
+
48 8D 15 ?? ?? ?? ??
|
|
47
|
+
|
|
48
|
+
/* lea rcx, [rip+disp32] */
|
|
49
|
+
48 8D 0D ?? ?? ?? ??
|
|
50
|
+
|
|
51
|
+
/* call rel32 */
|
|
52
|
+
E8 ?? ?? ?? ??
|
|
53
|
+
}
|
|
54
|
+
condition:
|
|
55
|
+
$opcodes
|
|
56
|
+
}
|
|
57
|
+
"""
|
|
58
|
+
|
|
31
59
|
RULE_SOURCE_ENCODED_STRINGS = """
|
|
32
60
|
rule Amadey_Encoded_Strings
|
|
33
61
|
{
|
|
@@ -50,6 +78,43 @@ rule Amadey_Encoded_Strings
|
|
|
50
78
|
}
|
|
51
79
|
"""
|
|
52
80
|
|
|
81
|
+
RULE_SOURCE_ENCODED_STRINGS_X64 = """
|
|
82
|
+
rule Amadey_Encoded_Strings_X64
|
|
83
|
+
{
|
|
84
|
+
meta:
|
|
85
|
+
author = "Matthieu Gras"
|
|
86
|
+
description = "Find encoded strings in Amadey (64bit)."
|
|
87
|
+
strings:
|
|
88
|
+
$opcodes = {
|
|
89
|
+
/* sub rsp, imm8 */
|
|
90
|
+
48 83 EC ??
|
|
91
|
+
|
|
92
|
+
/* mov r8d, imm32 */
|
|
93
|
+
41 B8 ?? ?? ?? ??
|
|
94
|
+
|
|
95
|
+
/* lea rdx, [rip+disp32] */
|
|
96
|
+
48 8D 15 ?? ?? ?? ??
|
|
97
|
+
|
|
98
|
+
/* lea rcx, [rip+disp32] */
|
|
99
|
+
48 8D 0D ?? ?? ?? ??
|
|
100
|
+
|
|
101
|
+
/* call rel32 */
|
|
102
|
+
E8 ?? ?? ?? ??
|
|
103
|
+
|
|
104
|
+
/* lea rcx, [rip+disp32] */
|
|
105
|
+
48 8D 0D ?? ?? ?? ??
|
|
106
|
+
|
|
107
|
+
/* add rsp, imm8 */
|
|
108
|
+
48 83 C4 ??
|
|
109
|
+
|
|
110
|
+
/* jmp rel32 */
|
|
111
|
+
E9 ?? ?? ?? ??
|
|
112
|
+
}
|
|
113
|
+
condition:
|
|
114
|
+
$opcodes
|
|
115
|
+
}
|
|
116
|
+
"""
|
|
117
|
+
|
|
53
118
|
|
|
54
119
|
def contains_non_printable(byte_array):
|
|
55
120
|
for byte in byte_array:
|
|
@@ -68,14 +133,14 @@ def yara_scan_generator(raw_data, rule_source):
|
|
|
68
133
|
yield instance.offset, block.identifier
|
|
69
134
|
|
|
70
135
|
|
|
71
|
-
def get_keys(pe, data):
|
|
72
|
-
image_base = pe.OPTIONAL_HEADER.ImageBase
|
|
136
|
+
def get_keys(pe, data, is_64bit=False):
|
|
73
137
|
keys = []
|
|
74
|
-
|
|
138
|
+
rule_source = RULE_SOURCE_KEY_X64 if is_64bit else RULE_SOURCE_KEY
|
|
139
|
+
|
|
140
|
+
for offset, _ in yara_scan_generator(data, rule_source):
|
|
75
141
|
try:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
key_string = pe.get_string_from_data(key_string_dword_offset, data)
|
|
142
|
+
key_string_offset = get_rip_relative_address(pe, data, offset, is_64bit)
|
|
143
|
+
key_string = pe.get_string_from_data(key_string_offset, data)
|
|
79
144
|
|
|
80
145
|
if b"=" not in key_string:
|
|
81
146
|
keys.append(key_string.decode())
|
|
@@ -88,19 +153,34 @@ def get_keys(pe, data):
|
|
|
88
153
|
|
|
89
154
|
return []
|
|
90
155
|
|
|
156
|
+
def get_rip_relative_address(pe, data, offset, is_64bit):
|
|
157
|
+
if is_64bit:
|
|
158
|
+
offset += 10
|
|
159
|
+
disp = struct.unpack('<i', data[offset + 3 : offset + 7])[0]
|
|
160
|
+
rip_rva = pe.get_rva_from_offset(offset + 7)
|
|
161
|
+
target_rva = rip_rva + disp
|
|
162
|
+
target_offset = pe.get_offset_from_rva(target_rva)
|
|
163
|
+
else:
|
|
164
|
+
rva = struct.unpack('i', data[offset + 3 : offset + 7])[0]
|
|
165
|
+
target_offset = pe.get_offset_from_rva(rva - pe.OPTIONAL_HEADER.ImageBase)
|
|
91
166
|
|
|
92
|
-
|
|
167
|
+
return target_offset
|
|
168
|
+
|
|
169
|
+
def get_encoded_strings(pe, data, is_64bit=False):
|
|
93
170
|
encoded_strings = []
|
|
94
|
-
|
|
95
|
-
|
|
171
|
+
rule_source = RULE_SOURCE_ENCODED_STRINGS_X64 if is_64bit else RULE_SOURCE_ENCODED_STRINGS
|
|
172
|
+
|
|
173
|
+
for offset, _ in yara_scan_generator(data, rule_source):
|
|
96
174
|
|
|
97
175
|
try:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
176
|
+
if is_64bit:
|
|
177
|
+
encoded_string_size = struct.unpack('<I', data[offset + 6 : offset + 10])[0]
|
|
178
|
+
else:
|
|
179
|
+
encoded_string_size = data[offset + 1]
|
|
180
|
+
|
|
181
|
+
encoded_string_offset = get_rip_relative_address(pe, data, offset, is_64bit)
|
|
182
|
+
encoded_string = pe.get_string_from_data(encoded_string_offset, data)
|
|
102
183
|
|
|
103
|
-
# Make sure the string matches length from operand
|
|
104
184
|
if encoded_string_size != len(encoded_string):
|
|
105
185
|
continue
|
|
106
186
|
|
|
@@ -147,13 +227,15 @@ def extract_config(data):
|
|
|
147
227
|
pe = pefile.PE(data=data, fast_load=True)
|
|
148
228
|
# image_base = pe.OPTIONAL_HEADER.ImageBase
|
|
149
229
|
|
|
150
|
-
|
|
230
|
+
is_64bit = pe.OPTIONAL_HEADER.Magic == pefile.OPTIONAL_HEADER_MAGIC_PE_PLUS
|
|
231
|
+
|
|
232
|
+
keys = get_keys(pe, data, is_64bit)
|
|
151
233
|
if not keys:
|
|
152
234
|
return {}
|
|
153
235
|
|
|
154
236
|
decode_key = keys[0]
|
|
155
237
|
rc4_key = keys[1]
|
|
156
|
-
encoded_strings = get_encoded_strings(pe, data)
|
|
238
|
+
encoded_strings = get_encoded_strings(pe, data, is_64bit)
|
|
157
239
|
|
|
158
240
|
decoded_strings = []
|
|
159
241
|
for encoded_string in encoded_strings:
|
|
@@ -40,14 +40,16 @@ def decrypt(data: bytes) -> Tuple[bytes, bytes, bytes]:
|
|
|
40
40
|
def extract_config(data: bytes) -> Dict[str, Any]:
|
|
41
41
|
cfg: Dict[str, Any] = {}
|
|
42
42
|
plaintext = b""
|
|
43
|
+
data_section = None
|
|
43
44
|
|
|
44
45
|
pe = pefile.PE(data=data, fast_load=True)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
for s in pe.sections:
|
|
47
|
+
name = s.Name.decode("utf-8", errors="ignore").rstrip("\x00")
|
|
48
|
+
if name in ("UPX1", ".data"):
|
|
49
|
+
data_section = s
|
|
50
|
+
break
|
|
49
51
|
|
|
50
|
-
if
|
|
52
|
+
if data_section is None:
|
|
51
53
|
return cfg
|
|
52
54
|
|
|
53
55
|
data = data_section.get_data()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/CobaltStrikeBeacon.py
RENAMED
|
File without changes
|
{cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/CobaltStrikeStager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cape_parsers-0.1.59 → cape_parsers-0.1.61}/cape_parsers/CAPE/community/PhemedroneStealer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|