mcafee siem api python包装器
msiemp的Python项目详细描述
McAfee Siem API Python包装器
本项目旨在为McAfee Siem API提供一个基本的API包装器,以帮助它 无障碍和Python。
这个python模块目前正在实验中
主要特点
- ESM监控(进行中的工作)
- 数据源操作:添加、编辑、删除-包括客户端数据源(正在工作)
- 报警操作及查询:过滤、取消确认、删除
- 事件查询和内置解决方案SIEM查询
limit
- 观察列表操作:列出观察列表,添加值(正在工作)
- 单个稳定会话处理程序和内置异步作业
文档和链接
- Module documentation
- Class diagram
- McAfee Siem API文档:https://HOST/rs/esm/help
安装
pip install msiempy
认证和配置设置
该模块提供了针对siem的单点身份验证,因此在编写脚本时不必担心身份验证问题。这意味着您需要使用配置文件预先配置身份验证。
配置文件(默认情况下)安全地位于用户目录中,因为它包含凭据
- 对于Windows:
%APPDATA%\.msiem\conf.ini
- 对于mac:
$HOME/.msiem/conf.ini
- 对于Linux:
$XDG_CONFIG_HOME/.msiem/conf.ini
或:$HOME/.msiem/conf.ini
[esm]
host = HOST
user = USER
passwd = PASSWORD's BASE64
[general]
verbose = yes
quiet = no
logfile = /var/log/msiempy/log.txt
timeout = 30
ssl_verify = no
output = text
要生成密码的base64,可以使用base64
unix命令,例如:echo 'p@ss0rd' | base64
您还可以使用python动态编辑配置。
>>>frommsiempyimportNitroConfig>>>config=NitroConfig()>>>config.iset('esm')Enter[esm]host.Press<Enter>tokeepempty:<typehere>Enter[esm]user.Press<Enter>tokeepempty:<typehere>Enter[esm]passwd.Press<Enter>toskip:<typehere>>>>config.iset('general')[...]>>>print(config)Configurationfile:/Users/username/.msiem/conf.ini{'esm':{'host':'***','user':'***','passwd':'***=='},'general':{'verbose':'no','quiet':'no','logfile':'','timeout':'60','ssl_verify':'no','output':'text'}}>>>config.write()
示例
警报
打印一年中名称匹配的所有unacknowledged
警报'IPS alarm'
,并触发事件消息匹配'Wordpress'
然后加载触发警报的真正的Event
对象(从查询模块),并打印它们的所有json表示。
检索的报警数由page_size
属性定义。
importmsiempy.alarmalarms=msiempy.alarm.AlarmManager(time_range='CURRENT_YEAR',status_filter='unacknowledged',filters=[('alarmName','IPS alarm'),('ruleMessage','Wordpress')],page_zize='400')alarms.load_data()print(alarms)alarms.load_events(extra_fields=['HostID','UserIDSrc'])[printalarm['events'].jsonforalarminalarms]
见:FilteredQueryList,AlarmManager,Alarm
事件
根据目标IP和主机名筛选器查询事件,使用围绕SIEM查询limit
的压缩parralel任务加载数据,并打印选定的数据字段。
max_query_depth
参数指定查询最多可以使用的子分区数(默认为零)只有在当前查询设置尚未完成时,查询才会被分割第一个划分是通过将查询的时间范围划分为持续时间为delta
的时段来完成的,然后将查询划分为指定数量的slots
。使用workers
参数控制异步作业的数量
importmsiempy.eventevents=msiempy.event.EventManager(time_range='LAST_3_DAYS',fields=['HostID','UserIDSrc'],filters=[msiempy.query.FieldFilter('DstIP',['8.8.0.0/8',]),msiem.query.FieldFilter('HostID',['mydomain.local'],operator='CONTAINS')],limit=500,max_query_depth=2)events.load_data(delta='2h',slots='4',workers=5)print(events.get_text(fields=['Alert.LastTime','Alert.SrcIP','Alert.BIN(4','Alert.BIN(7)','Rule.msg']))
见:FilteredQueryList,EventManager,FieldFilter,Event
ESM
打印一些esm信息这项工作仍在进行中
>>>importmsiempy.device>>>esm=msiempy.device.ESM()>>>esm.version()'11.2.1'>>>esm.recs()[('ERC-1',144116287587483648)]>>>esm.buildstamp()'11.2.1 20190725050014'
见:ESM
数据源
加载所有数据源。这项工作仍在进行中
importmsiempy.devicedevtree=msiempy.device.DevTree()
观察列表
打印列表。这项工作仍在进行中
importmsiempy.watchlistwatchlists=msiempy.watchlist.WatchlistManager()print(watchlists)
贡献
如果你喜欢这个项目,并认为你可以帮助它变得更好,有很多方法可以做到:
- 为新功能建议或错误创建新问题
- 实现现有问题
- 帮助改进文档
- 向你的同事、朋友、博客或任何其他渠道传播有关该项目的信息
- 任何你能想象的事情
- 任何贡献都将是巨大的帮助,我将非常感谢!如果您有任何问题,请创建一个新问题,或通过tris.la.tr@gmail.com联系我
运行测试
./setup.py test
[...]
----------------------------------------------------------------------
Ran 13 tests in 182.815s
OK
不超过5分钟
错误报告
在配置文件中配置日志文件报告并执行:cat /path/to/your/log/file | cut -c 25-500 | grep -i error | sort | uniq
免责声明
这是一个非正式的项目,由McAfee赞助或支持,在C。如果不小心删除了所有数据源,请不要致电支持人员(或我)产品访问将始终限于“安全”方法和McAfee的知识产权