Mwdb配置分析器
mwdb-iocextract的Python项目详细描述
mwdb iocextract公司
python3库用于从mwdb配置获取结构化IOC数据。在
为什么?在
警告:此项目仅与mwdb用户相关。Mwdb是我们存储和提取恶意软件的解决方案。如果您是一名白帽子安全研究员,有兴趣访问它,请通过我们的网站或电子邮件发送请求info@cert.pl
。
Mwdb配置非常非结构化(它们基本上是带有一些附加元数据的json)。另一方面,自动化处理通常需要结构化数据。在
例如,提取和处理url是分析员的常见用例。遗憾的是,每个模块存储它们的方式都有点不同(由于向后兼容,我们还没有准备好改变这一点)。在
例如,比较ISFB模块如何报告其url:
"domains":[{"cnc":"http://fantaniz.ru"},{"cnc":"http://snezhkaie.ru"}]
洛基博特:
^{pr2}$米拉:
"cncs":[{"host":"107.160.244.5","port":1024}]
你可以用同样的方式处理这些类型的文件:
frommwdb_iocextractimportparseconfig_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
有关更多用法示例,请参见下文。在
信息
联系人电子邮件:msm@cert.pl或info@cert.pl
安装
$ pip install mwdb-iocextract
您可以在这里找到最新版本:
https://pypi.org/project/mwdb-iocextract/
使用
扫描mwdb
在一个典型的用例中,您可能需要获取并解析配置 直接从mwdb下载。访问MWDBAPI并下载 我们使用的最新配置 mwdblib(我们的官方API mwdb])的绑定。在
frommwdb_iocextractimportparsefrommwdblibimportMalwarecagedefmain():# See also https://mwdblib.readthedocs.io/en/latest/index.htmlmwdb=Malwarecage()mwdb.login("msm","my_secret_password")forcfginmwdb.recent_configs():ifcfg.type!="static":# Not all configs are created equal.# This code only deals with "static" configs, i.e. configs# extracted from malware/memory dumpscontinuetry:iocs=parse(cfg.family,cfg.cfg)exceptFamilyNotSupportedYetError:# This means, that your mwdb_iocextract version does not# support this family. Consider updating it (it may take# us a few days to add support for a new family)continueprint(iocs.prettyprint())# convert all IoCs to stringif__name__=="__main__":main()
使用IOC
parse()
的结果是IocCollection
对象。
您可以像普通Python对象一样使用它,例如:
iocs=parse(cfg.family,cfg.cfg)forrsa_keyiniocs.rsa_keys:e=rsa_key.e# get en=rsa_key.n# get nfornetlociniocs.network_locations:ip=netloc.ip# get IP if knowndomain=netloc.domain# get domain if knownhost=netloc.host# get domain if known, otherwise IPport=netloc.port# get port if knownloctype=netloc.location_type# get type (usually CNC)url=netloc.url# get host + port + pathforkey_type,key_datainiocs.keys:# key_type - for example "rc4"# key_data - hexencoded bytes, for example "6123541243"passiocs.passwords# passwords or similar data found in the configiocs.mutexes# mutex names used by malwareiocs.dropped_filenames# filenames dropped on the diskiocs.emails# emails used by malware
MISP集成
您可以将IocCollection
转换为MISP对象:
defupload_to_misp(family,config):try:iocs=parse(family,config)exceptFamilyNotSupportedYetError:returnifnotiocs:# Nothing actionable found - skip the configreturn# 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})"foroiniocs.to_misp():event.add_object(o)misp=ExpandedPyMISP(MISP_URL,MISP_KEY,MISP_VERIFYCERT)misp.add_event(event)
或者,根据您代表的是谁,您可以联系我们,我们可以讨论与您分享我们的失误。
- 项目
标签: