目标:监控利用ATBroker,来达到自启动行为
思路:监控关键注册表写入
from lib.cuckoo.common.abstracts import Signature
import re
class TestReg(Signature):
name = "test_reg"
description = "just for test registry"
severity = 40 #这里给40分是因为这个分数最终会除5
categories = ["reg"]
authors = ["none"]
minimum = "2.0"
# 这里一定要写要监控的API名称,否则会监控所有的API
# 这里过滤的api名称,直接影响到on_call函数中的call["arguments"]["regkey"]
# 因为不是所有api都有这个regkey参数,如果不写过滤可能会在on_call报错
filter_apinames = [
"RegSetValueExA",
"RegSetValueExW",
"NtSetValueKey",
]
# 当API被调用的时候,用正则过滤你要监控哪些注册表键
indicator = ".*\\\\SOFTWARE\\\\(Wow6432Node\\\\)?Microsoft\\\\Windows NT\\\\CurrentVersion\\\\Accessibility\\\\.*"
def on_call(self, call, process):
regkey = call["arguments"]["regkey"]
regvalue = call["arguments"]["value"]
# 当上面的API被调用的时候,使用正则过滤注册表键,使用self.mark打印出来
if re.match(self.indicator,regkey,re.IGNORECASE):
self.mark(process=process['process_name'], reg_key=regkey, reg_value=regvalue)
# 如果在on_call函数中有调用mark函数,这里就返回has_marks()
def on_complete(self):
return self.has_marks()
效果图:
匹配到任何Signature,都会出现在沙箱报告的Signatures部分下面