本篇文章给大家分享的是有关明尼苏达邮件检测工具怎么在python中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
概要介绍
明尼苏达,是一款使用python实现的开源邮件快速检测工具库,基于社区框架设计开发.mmpi支持对邮件头,邮件正文,邮件附件的解析检测,并输出json检测报告。
明尼苏达,代码项目地址:https://github.com/a232319779/mmpi pypi项目地址https://pypi.org/project/mmpi/
明尼苏达,邮件快速检测工具库检测逻辑:
- <李>
支持解析提取邮件头数据,包括收件的人,发件人的姓名和邮箱,邮件主题,邮件发送时间,以及邮件原始发送IP。通过检测发件人邮箱和邮件原始发送IP,实现对邮件头的检测。
李> <李>支持对邮件正文的解析检测,提取文本和html格式的邮件正文,对文本邮件正文进行关键字匹配,对html邮件正文进行解析分析检测,实现探针邮件检测,钓鱼邮件检测,垃圾邮件检测等其他检测。
李> <李>支持对邮件附件等解析检测
李>奥立文件格式:如医生,xls等,提取其中的vba宏代码,模板注入链接
zip文件格式:提取压缩文件列表,统计文件名,文件格式等
rtf文件格式:解析内嵌ole对象等
其他文件格式:如PE可执行文件
- <李>
检测方式包括
李>基础信息规则检测方式
雅苒规则检测方式
适用前提
明尼苏达的分析判定检测前提:邮件系统环境。脱离邮件环境上下文,检测规则的依据就不可靠了。
使用方式
1。安装
,美元pip install 明尼苏达
备注:windows安装yara-python,可以从这里下载
2。命令执行
,美元mmpi-run $ email_path
3。快速开始
得到mmpi import 明尼苏达 def main (): emp 才能=,明尼苏达() emp.parse才能(& # 39;test.eml& # 39;) 时间=report 才能;emp.get_report () 打印才能(报告) if __name__ ==,“__main__": 以前,,main () >4。输出格式
{ ,//固定字段 “headers"才能:,[], “body"才能:,[], “attachments"才能:,[], “signatures"才能:,[]//,才能动态字段 “vba"才能:,[], “rtf"才能:,[], }工具特色
明尼苏达完全基于python开发,使用python原生电子邮件、html、压缩库进行解析,基于oletool做定制化修改,支持对办公室文档和rtf文档的解析,再结合雅苒实现对其他文件的检测。
项目代码结构
。 ├──明尼苏达 │,,,├──,常见 │,,,├──,核心 │,,,├──,数据 ││,,还以为,,,├──,签名 ││,,还以为,,,│,,,├──,eml ││,,还以为,,,│,,,├──,html ││,,还以为,,,│,,,├──,奥立 ││,,还以为,,,│,,,├──, ││,,还以为,,,│,,,├──,rtf ││,,还以为,,,│,,,└──,邮政编码 ││,,还以为,,,├──,白色 ││,,还以为,,,└──,亚拉 ││,,还以为,,,,,├──,exe ││,,还以为,,,,,├──,pdf ││,,还以为,,,,,└──,vba │,,,└──,处理 └──,测试 └才能──,样本
- <李>
明尼苏达/常见:基础模块,实现基本流程功能
李> <李>明尼苏达/核心:核心调度模块,实现插件的加载及相关模块的初始化
李> <李>明尼苏达/数据:核心检测模块,实现基本检测规则及雅苒检测规则
李> <李>明尼苏达/处理:核心解析模块,实现eml、html、邮政等文件格式的解析
李> <李>测试:测试模块
检测规则示例说明
1。PE文件伪装文档类检测
检测规则:压缩包中文件名以。exe结尾,并且中间插入20个以上空格的
class PEFakeDocument(签名): authors 才能=,(“ddvv") 时间=sig_type 才能;& # 39;邮政# 39; name =,才能“pe_fake_document" severity 才能=9 description =,才能“PE File Fake Document" def 才能on_complete(自我): ,,,results =, self.get_results () ,,,for result 结果:拷贝 ,,,,,if result.get(& # 39;类型# 39;,,& # 39;& # 39;),==,self.sig_type: ,,,,,,,infos =, result.get(& # 39;价值# 39;,,{}). get(& # 39;信息# 39;,,[]) ,,,,,,,for info 拷贝信息: ,,,,,,,,,file_type =, info.get(& # 39;类型# 39;) ,,,,,,,,,file_name =, info.get(& # 39;名字# 39;) ,,,,,,,,,space_count =, file_name.count (& # 39;, & # 39;) ,,,,,,,,,if & # 39; exe # 39;,==, file_type 以及space_count 祝辞,20: ,,,,,,,,,,,self.mark (type=皕ip",,标签=self.name, data=https://www.yisu.com/zixun/info.get('名称')) 返回self.has_marks () 返回所有明尼苏达邮件检测工具怎么在python中使用