Mwdb配置解析器
项目描述
mwdb-iocextract
Python 3库,用于从mwdb配置中获取结构化IOC数据。
为什么?
Malduck配置(如mwdb中的配置)通常是未结构化的(它们只是带有一些附加元数据的JSON)。另一方面,自动处理通常需要结构化数据。
例如,URL处理和提取是分析师的常见用例。遗憾的是,每个模块都以略有不同的方式存储它们(并且由于向后兼容性,我们尚未准备好进行更改)。
例如,比较我们如何存储ISFB的URL
"domains": [
{
"cnc": "http://fantaniz.ru"
},
{
"cnc": "http://snezhkaie.ru"
}
]
Lokibot
"urls": [
{
"url": "http://hockvvee.com/chief4/five/fre.php"
},
{
"url": "kbfvzoboss.bid/alien/fre.php"
},
{
"url": "alphastand.top/alien/fre.php"
}
]
和mirai
"cncs": [
{
"host": "107.160.244.5",
"port": 1024
}
]
使用mwdb-iocextract,您可以以相同的方式处理所有这些(以及更多)配置类型
from mwdb_iocextract import parse
config_family = "mirai"
config_data = {
"cncs": [
{
"host": "107.160.244.5",
"port": 1024
}
],
"table_key": "0xdedefbaf",
"variant": "OWARI",
"type": "mirai"
}
iocs = parse(config_family, config_data)
print(iocs.prettyprint())
> python test.py
NetLoc 107.160.244.5:1024
下面提供更多使用示例。
安装
$ pip install mwdb-iocextract
您可以在这里找到最新版本
https://pypi.ac.cn/project/mwdb-iocextract/
如何工作
大多数配置可以在不修改此库的情况下解析。标准键,如"urls",将自动识别和正确解析。
键名的复数形式无关紧要。当值是列表时,所有元素都将分别添加。例如,这两个是等效的
{
"urls": "127.0.0.1"
}
{
"url": ["127.0.0.1"]
}
目前此库支持
网络位置
"网络位置"可以是IP、域名、URL等。有多种可用格式。
"hosts": [
"127.0.0.1", # format 1 - IP
"http://malware.com", # format 2 - URL
{ "cnc": "http://malware.com:1337" }, # format 3 - URL in a dict.
# Allowed keys: "cnc", "url", "ip", "domain", "host" (all handled in the same way)
{ "cnc": "malware.com", "port": 1337 }, # format 4 - domain/port pair
# NOT allowed: url + port
# { "cnc": "http://malware.com:1337", "port": 1337 },
配置键:urls
、c2
、ips
、domains
、url
、cnc
、cncs
、hosts
、host
、cncurl
。
密码
恶意软件中硬编码的密码。明文。
配置键:password
。
互斥锁
配置键:mtx
、mutex
。明文。
电子邮件
恶意软件使用的电子邮件和源中硬编码的电子邮件。明文。
配置键:email
、emails
。
勒索信息
源中硬编码的HTML或txt勒索信息。明文。
配置键:ransommessage
。
RSA密钥
二进制中硬编码的RSA公钥或私钥。
支持两种格式
- 明文(
"-----BEGIN PUBLIC KEY-----..."
) - 解析后的格式 - 包含“n”、“e”和可选的“d”键的字典。
解析格式更确定,建议用于您的模块,但您可以使用两者。
配置键:publickey
、rsapub
、rsakey
、pubkey
、privkey
。
AES密钥
二进制中硬编码的AES密钥。明文。
配置键:aeskey
。
XOR密钥
二进制中硬编码的XOR密钥。明文。
配置键:xorkey
。
Serpent密钥
二进制中硬编码的XOR密钥。明文。
配置键:serpentkey
。
加密密钥
在恶意软件中发现的其它密钥类型。提取为“未知”类型的密钥。明文。
配置键:encryptionkey
、key
、keys
。
释放的文件
恶意软件释放的文件的路径或文件名。明文。
配置键:drop_name
。
贡献
如果您想扩展此库或添加更多模块的支持,请随时为此存储库做出贡献。我们只对至少部分公开可访问的模块感兴趣。因此,可以合并mwcfg.info模块支持,但您的内部TLP:RED模块可能不行。
用法
扫描mwdb
如何从mwdb下载配置并解析它
from mwdb_iocextract import parse
from mwdblib import Malwarecage
def main():
# See also https://mwdblib.readthedocs.io/en/latest/index.html
mwdb = Malwarecage()
mwdb.login("msm", "my_secret_password")
for cfg in mwdb.recent_configs():
if cfg.type != "static":
# This library only works with configs of type "static"
# (default mwdb config type).
continue
iocs = parse(cfg.family, cfg.cfg)
print(iocs.prettyprint()) # convert all IoCs to string
if __name__ == "__main__":
main()
处理IOCs
parse()
的结果是一个IocCollection
对象。您可以使用它像正常Python对象一样,例如
iocs = parse(cfg.family, cfg.cfg)
for rsa_key in iocs.rsa_keys:
e = rsa_key.e # get e
n = rsa_key.n # get n
for netloc in iocs.network_locations:
ip = netloc.ip # get IP if known
domain = netloc.domain # get domain if known
host = netloc.host # get domain if known, otherwise IP
port = netloc.port # get port if known
loctype = netloc.location_type # get type (usually CNC)
url = netloc.url # get host + port + path
for key_type, key_data in iocs.keys:
# key_type - for example "rc4"
# key_data - hexencoded bytes, for example "6123541243"
pass
iocs.passwords # passwords or similar data found in the config
iocs.mutexes # mutex names used by malware
iocs.dropped_filenames # filenames dropped on the disk
iocs.emails # emails used by malware
MISP集成
您可以将IocCollection
转换为MISP对象
def upload_to_misp(family, config):
iocs = parse(family, config)
if not iocs:
# Nothing actionable found - skip the config
return
# Be careful not to upload duplicated events.
# We use uuid5s generated from mwdb dhash as unique deterministic UUIDs.
event = MISPEvent()
event.add_tag(f"mwdb:family:{family}")
event.info = f"Malware configuration ({family})"
for o in iocs.to_misp():
event.add_object(o)
misp = ExpandedPyMISP(MISP_URL, MISP_KEY, MISP_VERIFYCERT)
misp.add_event(event)
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
mwdb-iocextract-1.2.2.tar.gz的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 65b84b25c3c485a0b5761ceece16502c8c536bee9d17d68625efc27f3549986f |
|
MD5 | 9fd0be6d25b04a0c236c25ae4815b151 |
|
BLAKE2b-256 | 3a796ea77830b147f0da0048d9cca5c7555dfba8091f80afaf2efb9a772c589d |
mwdb_iocextract-1.2.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e969a3b6f8ca16634bc5510475ee1fce42f7696125049f3da4b473d5d2290276 |
|
MD5 | f219be9bbfbabb7a2f0cd9bba34e53a8 |
|
BLAKE2b-256 | ae91e0e56e76129a86a63fe68b44cd94b27d1bf807a31252f440da77e4ec8db1 |