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.plinfo@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)

或者,根据您代表的是谁,您可以联系我们,我们可以讨论与您分享我们的失误。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java@AfterEach注释在Spring测试中被忽略   散列如何使用bouncy castle在Java中创建SHA512摘要字符串?   java无法使用Okhttp获取响应cookie   100个数的java阶乘   多线程如何在Java中实现对象计数器   java我的精灵不显示背景   java如何在com上应用PanelSlideListener。索特里。滑动面板。SlidengUpPanelLayout SlideUp库   java如何在JDBC中使用WHERE EXISTS函数   java Swing:标签前景中的白色被绘制为黑色   获取java的时间戳。util。另一个java的日期对象为(10/7/14)。util。日期对象(2014年10月7日星期二11:21:00)   java如何在Spring/OpenJPA 1中重新创建用于更新行锁定的选择   java在保存另一个maven项目中的类时,有没有办法让eclipse识别对该类的更改?   java如何解决Spring中的Servlet上下文错误?   java在mongodb中删除记录   显示的java片段与当前片段重叠,而不是替换它