Skip to content

Commit 462fb0c

Browse files
committed
Merge branch 'master' into staging
2 parents 7871a71 + 94b7e46 commit 462fb0c

File tree

16 files changed

+1236
-238
lines changed

16 files changed

+1236
-238
lines changed

analyzer/windows/dll/capemon.dll

512 Bytes
Binary file not shown.
512 Bytes
Binary file not shown.

analyzer/windows/lib/common/zip_utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
log = logging.getLogger(__name__)
1616

17-
FILE_NAME_REGEX = re.compile("[\s]{2}((?:[a-zA-Z0-9\.\-,_\\\\]+( [a-zA-Z0-9\.\-,_\\\\]+)?)+)\\r")
17+
# FILE_NAME_REGEX = re.compile("[\s]{2}((?:[a-zA-Z0-9\.\-,_\\\\]+( [a-zA-Z0-9\.\-,_\\\\]+)?)+)\\r")
18+
FILE_NAME_REGEX = re.compile(r"\s{2}((?:[a-zA-Z0-9.\-,_\\]+(?: [a-zA-Z0-9.\-,_\\]+)?)*)\r")
1819
FILE_EXT_OF_INTEREST = [
1920
".bat",
2021
".cmd",

changelog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### [05.02.2025]
2+
* Monitor update: Fix hooking deadlock with delay-loaded dlls & make LdrpCallInitRoutine hook transparent
3+
14
### [28.01.2025]
25
* Require `poetry>=2.0`.
36

data/dnsbl.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
dnsbl_servers = (
2+
"zen.spamhaus.org",
3+
"dnsbl.sorbs.net",
4+
"bl.spamcop.net",
5+
"cbl.abuseat.org",
6+
"b.barracudacentral.org",
7+
"dnsbl-1.uceprotect.net",
8+
"dnsbl-2.uceprotect.net",
9+
"dnsbl-3.uceprotect.net",
10+
"dnsbl.dronebl.org",
11+
"noptr.spamrats.com",
12+
"multi.surbl.org",
13+
"psbl.surriel.com",
14+
"dnsbl.invaluement.com",
15+
"dyna.spamrats.com",
16+
"spam.spamrats.com",
17+
"dul.dnsbl.sorbs.net",
18+
"dynip.rothen.com",
19+
"spamsources.fabel.dk",
20+
"truncate.gbudb.net",
21+
"db.wpbl.info",
22+
"dnsbl.zapbl.net",
23+
"combined.rbl.msrbl.net",
24+
"tor.dan.me.uk",
25+
"relays.nether.net",
26+
"rbl.efnetrbl.org",
27+
"bl.kundenserver.de",
28+
"rbl.interserver.net",
29+
"rbl.rbldns.ru",
30+
"all.rbl.jp",
31+
"sbl.spamhaus.org",
32+
"xbl.spamhaus.org",
33+
"pbl.spamhaus.org",
34+
"dnsbl-4.uceprotect.net",
35+
"dnsbl-5.uceprotect.net",
36+
"dnsbl-6.uceprotect.net",
37+
"spamrbl.imp.ch",
38+
"bogons.cymru.com",
39+
"rbl.realtimeblacklist.com",
40+
"http.dnsbl.sorbs.net",
41+
)

data/yara/CAPE/AsyncRAT.yar

Lines changed: 268 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,287 @@
1-
rule AsyncRAT
2-
{
3-
meta:
4-
author = "kevoreilly, JPCERT/CC Incident Response Group"
5-
description = "AsyncRAT Payload"
6-
cape_type = "AsyncRAT Payload"
7-
strings:
8-
$salt = {BF EB 1E 56 FB CD 97 3B B2 19 02 24 30 A5 78 43 00 3D 56 44 D2 1E 62 B9 D4 F1 80 E7 E6 C3 39 41}
9-
$b1 = {00 00 00 0D 53 00 48 00 41 00 32 00 35 00 36 00 00}
10-
$b2 = {09 50 00 6F 00 6E 00 67 00 00}
11-
$string1 = "Pastebin" ascii wide nocase
12-
$string2 = "Pong" wide
13-
$string3 = "Stub.exe" ascii wide
14-
$kitty = "StormKitty" ascii
15-
condition:
16-
uint16(0) == 0x5A4D and not $kitty and ($salt and (2 of ($str*) or 1 of ($b*))) or (all of ($b*) and 2 of ($str*))
17-
}
18-
191
rule AsyncRAT_kingrat {
202
meta:
213
author = "jeFF0Falltrades"
22-
cape_type = "AsyncRAT Payload"
4+
cape_type = "AsyncRAT Payload"
235

246
strings:
257
$str_async = "AsyncClient" wide ascii nocase
268
$str_aes_exc = "masterKey can not be null or empty" wide ascii
279
$str_schtasks = "schtasks /create /f /sc onlogon /rl highest" wide ascii
10+
$byte_aes_key_base = { 7E [3] 04 73 [3] 06 80 }
11+
$byte_aes_salt_base = { BF EB 1E 56 FB CD 97 3B B2 19 }
12+
$patt_verify_hash = { 7e [3] 04 6f [3] 0a 6f [3] 0a 74 [3] 01 }
13+
$patt_config = { 72 [3] 70 80 [3] 04 }
14+
2815
$dcrat_1 = "dcrat" wide ascii nocase
2916
$dcrat_2 = "qwqdan" wide ascii
3017
$dcrat_3 = "YW1zaS5kbGw=" wide ascii
3118
$dcrat_4 = "VmlydHVhbFByb3RlY3Q=" wide ascii
3219
$dcrat_5 = "save_Plugin" wide ascii
20+
21+
$ww2 = "WorldWindClient" wide fullword nocase
22+
$ww3 = "WorldWindStealer" wide fullword nocase
23+
$ww4 = "*WorldWind Pro - Results:*" wide fullword nocase
24+
$ww5 = /WorldWind(\s)?Stealer/ ascii wide
25+
26+
$prynt = /Prynt(\s)?Stealer/ ascii wide
27+
28+
condition:
29+
(not any of ($dcrat*) and not any of ($ww*) and not $prynt) and 6 of them and #patt_config >= 10
30+
}
31+
32+
rule StormKitty {
33+
meta:
34+
author = "ditekSHen"
35+
description = "StormKitty infostealer payload"
36+
cape_type = "StormKitty Payload"
37+
strings:
38+
$x1 = "\\ARTIKA\\Videos\\Chrome-Password-Recovery" ascii
39+
$x2 = "https://github.com/LimerBoy/StormKitty" fullword ascii
40+
$x3 = "StormKitty" fullword ascii
41+
$s1 = "GetBSSID" fullword ascii
42+
$s2 = "GetAntivirus" fullword ascii
43+
$s3 = "C:\\Users\\Public\\credentials.txt" fullword wide
44+
$s4 = "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" fullword wide
45+
$s5 = "BCrypt.BCryptGetProperty() (get size) failed with status code:{0}" fullword wide
46+
$s6 = "\"encrypted_key\":\"(.*?)\"" fullword wide
47+
48+
$ww2 = "WorldWindClient" wide fullword nocase
49+
$ww3 = "WorldWindStealer" wide fullword nocase
50+
$ww4 = "*WorldWind Pro - Results:*" wide fullword nocase
51+
$ww5 = /WorldWind(\s)?Stealer/ ascii wide
52+
53+
$prynt = /Prynt(\s)?Stealer/ ascii wide
54+
55+
condition:
56+
uint16(0) == 0x5a4d and (not any of ($ww*) and not $prynt) and (2 of ($x*) or 5 of ($s*) or (3 of ($s*) and 1 of ($x*)))
57+
}
58+
59+
60+
rule WorldWind {
61+
meta:
62+
author = "ditekSHen"
63+
description = "Detects WorldWind infostealer"
64+
cape_type = "WorldWind Payload"
65+
strings:
66+
$c1 = /WorldWind(\s)?Stealer/ ascii wide
67+
$x2 = "@FlatLineStealer" ascii wide
68+
$x3 = "@CashOutGangTalk" ascii wide
69+
$m1 = ".Passwords.Targets." ascii
70+
$m2 = ".Modules.Keylogger" ascii
71+
$m3 = ".Modules.Clipper" ascii
72+
$m4 = ".Modules.Implant" ascii
73+
$s1 = "--- Clipper" wide
74+
$s2 = "Downloading file: \"{file}\"" wide
75+
$s3 = "/bot{0}/getUpdates?offset={1}" wide
76+
$s4 = "send command to bot!" wide
77+
$s5 = " *Keylogger " fullword wide
78+
$s6 = "*Stealer" wide
79+
$s7 = "Bot connected" wide
80+
condition:
81+
uint16(0) == 0x5a4d and 1 of ($c*) and (1 of ($x*) or 2 of ($m*) or 3 of ($s*))
82+
}
83+
84+
85+
rule Prynt {
86+
meta:
87+
author = "ditekSHen"
88+
description = "Detects Prynt infostealer"
89+
cape_type = "Prynt Payload"
90+
strings:
91+
$c1 = /Prynt(\s)?Stealer/ ascii wide
92+
$x2 = "@FlatLineStealer" ascii wide
93+
$x3 = "@CashOutGangTalk" ascii wide
94+
$m1 = ".Passwords.Targets." ascii
95+
$m2 = ".Modules.Keylogger" ascii
96+
$m3 = ".Modules.Clipper" ascii
97+
$m4 = ".Modules.Implant" ascii
98+
$s1 = "--- Clipper" wide
99+
$s2 = "Downloading file: \"{file}\"" wide
100+
$s3 = "/bot{0}/getUpdates?offset={1}" wide
101+
$s4 = "send command to bot!" wide
102+
$s5 = " *Keylogger " fullword wide
103+
$s6 = "*Stealer" wide
104+
$s7 = "Bot connected" wide
105+
condition:
106+
uint16(0) == 0x5a4d and 1 of ($c*) and (1 of ($x*) or 2 of ($m*) or 3 of ($s*))
107+
}
108+
109+
110+
rule XWorm {
111+
meta:
112+
author = "ditekSHen"
113+
description = "Detects XWorm"
114+
cape_type = "XWorm Payload"
115+
strings:
116+
$x1 = "XWorm " wide nocase
117+
$x2 = /XWorm\s(V|v)\d+\.\d+/ fullword wide
118+
$s1 = "RunBotKiller" fullword wide
119+
$s2 = "XKlog.txt" fullword wide
120+
$s3 = /(shell|reg)fuc/ fullword wide
121+
$s4 = "closeshell" fullword ascii
122+
$s5 = { 62 00 79 00 70 00 73 00 73 00 00 ?? 63 00 61 00 6c 00 6c 00 75 00 61 00 63 00 00 ?? 73 00 63 00 }
123+
$s6 = { 44 00 44 00 6f 00 73 00 54 00 00 ?? 43 00 69 00 6c 00 70 00 70 00 65 00 72 00 00 ?? 50 00 45 00 }
124+
$s7 = { 69 00 6e 00 6a 00 52 00 75 00 6e 00 00 ?? 73 00 74 00 61 00 72 00 74 00 75 00 73 00 62 }
125+
$s8 = { 48 6f 73 74 00 50 6f 72 74 00 75 70 6c 6f 61 64 65 72 00 6e 61 6d 65 65 65 00 4b 45 59 00 53 50 4c 00 4d 75 74 65 78 78 00 }
126+
$v2_1 = "PING!" fullword wide
127+
$v2_2 = "Urlhide" fullword wide
128+
$v2_3 = /PC(Restart|Shutdown)/ fullword wide
129+
$v2_4 = /(Start|Stop)(DDos|Report)/ fullword wide
130+
$v2_5 = /Offline(Get|Keylogger)/ wide
131+
$v2_6 = "injRun" fullword wide
132+
$v2_7 = "Xchat" fullword wide
133+
$v2_8 = "UACFunc" fullword ascii wide
134+
condition:
135+
uint16(0) == 0x5a4d and ((1 of ($x*) and (3 of ($s*) or 3 of ($v2*))) or 6 of them)
136+
}
137+
138+
rule xworm_kingrat {
139+
meta:
140+
author = "jeFF0Falltrades"
141+
cape_type = "XWorm payload"
142+
strings:
143+
$str_xworm = "xworm" wide ascii nocase
144+
$str_xwormmm = "Xwormmm" wide ascii
145+
$str_xclient = "XClient" wide ascii
146+
$str_default_log = "\\Log.tmp" wide ascii
147+
$str_create_proc = "/create /f /RL HIGHEST /sc minute /mo 1 /t" wide ascii
148+
$str_ddos_start = "StartDDos" wide ascii
149+
$str_ddos_stop = "StopDDos" wide ascii
150+
$str_timeout = "timeout 3 > NUL" wide ascii
151+
$byte_md5_hash = { 7e [3] 04 28 [3] 06 6f }
152+
$patt_config = { 72 [3] 70 80 [3] 04 }
153+
condition:
154+
5 of them and #patt_config >= 7
155+
}
156+
157+
rule DCRat {
158+
meta:
159+
author = "ditekSHen"
160+
description = "DCRat payload"
161+
cape_type = "DCRat Payload"
162+
strings:
163+
// DCRat
164+
$dc1 = "DCRatBuild" ascii
165+
$dc2 = "DCStlr" ascii
166+
$x1 = "px\"><center>DCRat Keylogger" wide
167+
$x2 = "DCRat-Log#" wide
168+
$x3 = "DCRat.Code" wide
169+
$string1 = "CaptureBrowsers" fullword ascii
170+
$string2 = "DecryptBrowsers" fullword ascii
171+
$string3 = "Browsers.IE10" ascii
172+
$string4 = "Browsers.Chromium" ascii
173+
$string5 = "WshShell" ascii
174+
$string6 = "SysMngmts" fullword ascii
175+
$string7 = "LoggerData" fullword ascii
176+
// DCRat Plugins/Libraries
177+
$plugin = "DCRatPlugin" fullword ascii
178+
// AntiVM
179+
$av1 = "AntiVM" ascii wide
180+
$av2 = "vmware" fullword wide
181+
$av3 = "VirtualBox" fullword wide
182+
$av4 = "microsoft corporation" fullword wide
183+
$av5 = "VIRTUAL" fullword wide
184+
$av6 = "DetectVirtualMachine" fullword ascii
185+
$av7 = "Select * from Win32_ComputerSystem" fullword wide
186+
// Plugin_AutoStealer, Plugin_AutoKeylogger
187+
$pl1 = "dcratAPI" fullword ascii
188+
$pl2 = "dsockapi" fullword ascii
189+
$pl3 = "file_get_contents" fullword ascii
190+
$pl4 = "classthis" fullword ascii
191+
$pl5 = "typemdt" fullword ascii
192+
$pl6 = "Plugin_AutoStealer" ascii wide
193+
$pl7 = "Plugin_AutoKeylogger" ascii wide
194+
// variant
195+
$v1 = "Plugin couldn't process this action!" wide
196+
$v2 = "Unknown command!" wide
197+
$v3 = "PLUGINCONFIGS" wide
198+
$v4 = "Saving log..." wide
199+
$v5 = "~Work.log" wide
200+
$v6 = "MicrophoneNum" fullword wide
201+
$v7 = "WebcamNum" fullword wide
202+
$v8 = "%SystemDrive% - Slow" wide
203+
$v9 = "%UsersFolder% - Fast" wide
204+
$v10 = "%AppData% - Very Fast" wide
205+
$v11 = /<span style=\"color: #F85C50;\">\[(Up|Down|Enter|ESC|CTRL|Shift|Win|Tab|CAPSLOCK: (ON|OFF))\]<\/span>/ wide
206+
$px1 = "[Browsers] Scanned elements: " wide
207+
$px2 = "[Browsers] Grabbing cookies" wide
208+
$px3 = "[Browsers] Grabbing passwords" wide
209+
$px4 = "[Browsers] Grabbing forms" wide
210+
$px5 = "[Browsers] Grabbing CC" wide
211+
$px6 = "[Browsers] Grabbing history" wide
212+
$px7 = "[StealerPlugin] Invoke: " wide
213+
$px8 = "[Other] Grabbing steam" wide
214+
$px9 = "[Other] Grabbing telegram" wide
215+
$px10 = "[Other] Grabbing discord tokens" wide
216+
$px11 = "[Other] Grabbing filezilla" wide
217+
$px12 = "[Other] Screenshots:" wide
218+
$px13 = "[Other] Clipboard" wide
219+
$px14 = "[Other] Saving system information" wide
220+
condition:
221+
uint16(0) == 0x5a4d and (all of ($dc*) or all of ($string*) or 2 of ($x*) or 6 of ($v*) or 5 of ($px*)) or ($plugin and (4 of ($av*) or 5 of ($pl*)))
222+
}
223+
224+
rule dcrat_kingrat {
225+
meta:
226+
author = "jeFF0Falltrades"
227+
cape_type = "DCRat Payload"
228+
strings:
229+
$venom_1 = "VenomRAT" wide ascii nocase
230+
$venom_2 = "HVNC_REPLY_MESSAGE" wide ascii
231+
$str_aes_exc = "masterKey can not be null or empty" wide ascii
232+
$str_b64_amsi = "YW1zaS5kbGw=" wide ascii
233+
$str_b64_virtual_protect = "VmlydHVhbFByb3RlY3Q=" wide ascii
234+
$str_dcrat = "dcrat" wide ascii nocase
235+
$str_plugin = "save_Plugin" wide ascii
236+
$str_qwqdan = "qwqdan" wide ascii
33237
$byte_aes_key_base = { 7E [3] 04 73 [3] 06 80 }
34-
$byte_aes_salt_base = { BF EB 1E 56 FB CD 97 3B B2 19 }
238+
$patt_config = { 72 [3] 70 80 [3] 04 }
35239
$patt_verify_hash = { 7e [3] 04 6f [3] 0a 6f [3] 0a 74 [3] 01 }
240+
241+
condition:
242+
(not any of ($venom*)) and 5 of them and #patt_config >= 10
243+
}
244+
245+
rule QuasarRAT {
246+
meta:
247+
author = "ditekshen"
248+
description = "QuasarRAT payload"
249+
cape_type = "QuasarRAT Payload"
250+
strings:
251+
$s1 = "GetKeyloggerLogsResponse" fullword ascii
252+
$s2 = "GetKeyloggerLogs" fullword ascii
253+
$s3 = "/>Log created on" wide
254+
$s4 = "User: {0}{3}Pass: {1}{3}Host: {2}" wide
255+
$s5 = "Domain: {1}{0}Cookie Name: {2}{0}Value: {3}{0}Path: {4}{0}Expired: {5}{0}HttpOnly: {6}{0}Secure: {7}" wide
256+
$s6 = "grabber_" wide
257+
$s7 = "<virtualKeyCode>" ascii
258+
$s8 = "<RunHidden>k__BackingField" fullword ascii
259+
$s9 = "<keyboardHookStruct>" ascii
260+
$s10 = "add_OnHotKeysDown" ascii
261+
$mutex = "QSR_MUTEX_" ascii wide
262+
$ua1 = "Mozilla/5.0 (Windows NT 6.3; rv:48.0) Gecko/20100101 Firefox/48.0" fullword wide
263+
$us2 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A" fullword wide
264+
condition:
265+
uint16(0) == 0x5a4d and ($mutex or (all of ($ua*) and 2 of them) or 6 of ($s*))
266+
}
267+
268+
rule quasarrat_kingrat {
269+
meta:
270+
author = "jeFF0Falltrades"
271+
cape_type = "QuasarRAT Payload"
272+
strings:
273+
$str_quasar = "Quasar." wide ascii
274+
$str_hidden = "set_Hidden" wide ascii
275+
$str_shell = "DoShellExecuteResponse" wide ascii
276+
$str_close = "echo DONT CLOSE THIS WINDOW!" wide ascii
277+
$str_pause = "ping -n 10 localhost > nul" wide ascii
278+
$str_aes_exc = "masterKey can not be null or empty" wide ascii
279+
$byte_aes_key_base = { 7E [3] 04 73 [3] 06 25 }
280+
$byte_aes_salt_base = { BF EB 1E 56 FB CD 97 3B B2 19 }
281+
$byte_special_folder = { 7e 73 [4] 28 [4] 80 }
36282
$patt_config = { 72 [3] 70 80 [3] 04 }
283+
$patt_verify_hash = { 7e [3] 04 6f [3] 0a 6f [3] 0a 74 [3] 01 }
37284
38285
condition:
39-
(not any of ($dcrat*)) and 6 of them and #patt_config >= 10
286+
6 of them and #patt_config >= 10
40287
}

0 commit comments

Comments
 (0)