Skip to content

Commit 82b0e5c

Browse files
authored
Merge pull request #485 from kevross33/patch-76
Add signature for Mavinject Lolbin
2 parents e0da921 + f8df95c commit 82b0e5c

File tree

1 file changed

+41
-39
lines changed

1 file changed

+41
-39
lines changed

modules/signatures/windows/windows_utilities.py

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,10 @@ class UsesWindowsUtilitiesScheduler(Signature):
3232

3333
def on_call(self, _, process):
3434
if process["process_name"].lower() in self.filter_processnames:
35+
# ToDo this doesn't apply MITRE map conversion for newer versions
3536
self.ttps += ["T1053.005"] if process["process_name"].lower() == "schtasks" else ["T1053.002"] # MITRE v7,8
36-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
37-
for cmdline in cmdlines:
38-
lower = cmdline.lower()
39-
if re.search(process["process_name"].lower(), lower):
37+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
38+
if re.search(process["process_name"].lower(), cmdline.lower()):
4039
self.data.append({"command": cmdline})
4140
return True
4241
return False
@@ -116,8 +115,7 @@ def run(self):
116115
r"Internet Explorer",
117116
]
118117
ret = False
119-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
120-
for cmdline in cmdlines:
118+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
121119
lower = cmdline.lower()
122120
for utility in utilities:
123121
if re.search(utility, lower):
@@ -206,8 +204,7 @@ def run(self):
206204
]
207205

208206
ret = False
209-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
210-
for cmdline in cmdlines:
207+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
211208
lower = cmdline.lower()
212209
for utility_regex in utilities:
213210
if re.search(utility_regex, lower):
@@ -239,8 +236,7 @@ def run(self):
239236
]
240237

241238
ret = False
242-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
243-
for cmdline in cmdlines:
239+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
244240
lower = cmdline.lower()
245241
for utility in utilities:
246242
if utility in lower:
@@ -265,8 +261,7 @@ class SuspiciousPingUse(Signature):
265261

266262
def run(self):
267263
ret = False
268-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
269-
for cmdline in cmdlines:
264+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
270265
lower = cmdline.lower()
271266
if "ping" in lower and ("-n" in lower or "/n" in lower):
272267
ret = True
@@ -313,8 +308,7 @@ def run(self):
313308
]
314309

315310
ret = False
316-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
317-
for cmdline in cmdlines:
311+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
318312
lower = cmdline.lower()
319313
if "wmic" in lower:
320314
for argument in self.arguments:
@@ -397,8 +391,7 @@ class SuspiciousCertutilUse(Signature):
397391

398392
def run(self):
399393
ret = False
400-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
401-
for cmdline in cmdlines:
394+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
402395
lower = cmdline.lower()
403396
if "certutil" in lower and ("urlcache" in lower or "encode" in lower or "decode" in lower or "addstore" in lower):
404397
ret = True
@@ -468,8 +461,7 @@ class DotNETCSCBuild(Signature):
468461

469462
def run(self):
470463
ret = False
471-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
472-
for cmdline in cmdlines:
464+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
473465
lower = cmdline.lower()
474466
if "csc " in lower or "csc.exe" in lower:
475467
ret = True
@@ -545,8 +537,7 @@ def run(self):
545537
]
546538

547539
ret = False
548-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
549-
for cmdline in cmdlines:
540+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
550541
lower = cmdline.lower()
551542
for utility in utilities:
552543
if utility in lower:
@@ -574,8 +565,7 @@ def run(self):
574565
]
575566

576567
ret = False
577-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
578-
for cmdline in cmdlines:
568+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
579569
lower = cmdline.lower()
580570
for utility in utilities:
581571
if utility in lower:
@@ -604,8 +594,7 @@ def run(self):
604594
]
605595

606596
ret = False
607-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
608-
for cmdline in cmdlines:
597+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
609598
lower = cmdline.lower()
610599
for utility in utilities:
611600
if utility in lower:
@@ -635,8 +624,7 @@ def run(self):
635624
]
636625

637626
ret = False
638-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
639-
for cmdline in cmdlines:
627+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
640628
lower = cmdline.lower()
641629
for utility in utilities:
642630
if utility in lower:
@@ -658,20 +646,18 @@ class UsesWindowsUtilitiesCurl(Signature):
658646
mbcs = ["OB0009", "E1203.m06"]
659647

660648
def run(self):
661-
utilities = [
649+
utilities = (
662650
"curl ",
663651
"curl.exe ",
664-
]
652+
)
665653

666654
ret = False
667-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
668-
for cmdline in cmdlines:
655+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
669656
lower = cmdline.lower()
670657
for utility in utilities:
671658
if utility in lower:
672659
ret = True
673660
self.data.append({"command": cmdline})
674-
675661
return ret
676662

677663

@@ -721,8 +707,7 @@ def run(self):
721707
]
722708

723709
ret = False
724-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
725-
for cmdline in cmdlines:
710+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
726711
lower = cmdline.lower()
727712
for utility in utilities:
728713
if utility in lower:
@@ -749,8 +734,7 @@ def run(self):
749734
]
750735

751736
ret = False
752-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
753-
for cmdline in cmdlines:
737+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
754738
lower = cmdline.lower()
755739
for utility in utilities:
756740
if utility in lower:
@@ -778,8 +762,7 @@ def run(self):
778762
]
779763

780764
ret = False
781-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
782-
for cmdline in cmdlines:
765+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
783766
lower = cmdline.lower()
784767
for utility in utilities:
785768
if utility in lower:
@@ -809,8 +792,7 @@ def run(self):
809792
]
810793

811794
ret = False
812-
cmdlines = self.results.get("behavior", {}).get("summary", {}).get("executed_commands", [])
813-
for cmdline in cmdlines:
795+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
814796
lower = cmdline.lower()
815797
for utility in utilities:
816798
if utility in lower:
@@ -1002,3 +984,23 @@ def on_complete(self):
1002984
if self.detected:
1003985
return True
1004986
return False
987+
988+
class MavInjectLolbin(Signature):
989+
name = "mavinject_lolbin"
990+
description = "Uses mavinject to inject code"
991+
severity = 3
992+
categories = ["injection", "anti-av", "lolbin"]
993+
authors = ["Kevin Ross"]
994+
minimum = "1.3"
995+
evented = True
996+
ttps = ["T1218.013"]
997+
998+
def run(self):
999+
ret = False
1000+
for cmdline in self.results.get("behavior", {}).get("summary", {}).get("executed_commands", []):
1001+
lower = cmdline.lower()
1002+
if "mavinject" in lower and ("injectrunning" in lower or "hmodule" in lower):
1003+
ret = True
1004+
self.data.append({"command": cmdline})
1005+
1006+
return ret

0 commit comments

Comments
 (0)