Moloch: 网络流量收集与分析

栏目: 数据库 · 发布时间: 6年前

内容简介:本篇文章主要介绍Moloch溯源平台的部署以及配合Suricata实现对网络流量的监控与检测, 提取IOC的网络行为。针对以上的需求, 直接部署Suricata基本可以满足。主要2、3点的需求, 更加偏向溯源的方向, Suricata在这一方面稍显欠缺。首先, Suricata在触发了告警之后只会保存攻击载荷(Payload)的数据包信息。但是, 对于一些有趣的事件, 我们很可能会需要查看整笔会话(Flow)的内容, 这个时候单独的一个告警数据包并不能起到很好的溯源效果。当然Suricata本身也提供了全

*本文原创作者:Shell.,本文属FreeBuf原创奖励计划,未经许可禁止转载

背景

本篇文章主要介绍Moloch溯源平台的部署以及配合Suricata实现对网络流量的监控与检测, 提取IOC的网络行为。

需求

 1. 具备NIDS能力;
 2. 支持对全量数据包的存储;
 3. 支持快速对多个节点中的数据包进行预览、下载等操作;

针对以上的需求, 直接部署Suricata基本可以满足。主要2、3点的需求, 更加偏向溯源的方向, Suricata在这一方面稍显欠缺。首先, Suricata在触发了告警之后只会保存攻击载荷(Payload)的数据包信息。但是, 对于一些有趣的事件, 我们很可能会需要查看整笔会话(Flow)的内容, 这个时候单独的一个告警数据包并不能起到很好的溯源效果。当然Suricata本身也提供了全数据包捕获的功能, 但因为没有Web界面的关系, 实际使用起来并不是很方便。不过我们使用Suricata的实际需求还是看重它的NIDS功能。当然你也可以选择直接怼一个安全洋葱(Security Onion), Bro也是个很牛X NIDS。但是这样一来对于蜜罐的机器配置就有所要求了。

为了满足2、3点的需求, 我这边采用的是Moloch。Moloch本身并不具备IDS功能, 好在Moloch-V1.5增加了Suricata的插件( suricata.so ), 可以直接提取Suricata的告警信息并Merge到Moloch的数据中。前提是你得安装Sruciata。

Moloch: Moloch是一个开源,大规模,完整的数据包捕获,索引和数据库系统。 Moloch扩展了您当前的安全基础架构,以标准PCAP格式存储和索引网络流量,提供快速的索引访问。为PCAP浏览,搜索和导出提供了直观简单的Web界面。 Moloch公开了API,允许直接下载和使用PCAP数据和JSON格式的会话数据。 Moloch以标准PCAP格式存储和导出所有数据包,使您在分析工作流程中也可以使用您喜欢的PCAP摄取工具,例如: Wireshark。

Suricata的安装方法就不阐述了, 网上随便找一篇即可。这里主要说下Moloch的安装以及如何启用Sruicata插件的支持。

注: 由于我主要是部署在蜜罐环境的宿主机上, 暂不考虑性能问题。 性能相关可参考:  pfring_Settings

宿主机环境: Ubuntu 16.04 x64

1. 下载

Moloch

2. 安装

dpkg -i moloch-master_ubuntu16_amd64.deb

3. 配置

3.1 指定捕获网卡

对于情报收集我并不关注宿主机网卡的流量, 我只关注 Docker 上层容器的流量。所以我这里网卡选择了 docker0

这里会问你是否要安装ES, 我已经部署好了ES, 所以这里选择了NO, 接下来就是让你写你ES地址了, ES是存储SPI数据的, 你就理解成协议解析之后的数据就可以了。

root@hujulongpan:/data/moloch/bin# /data/moloch/bin/Configure
Found interfaces: br-56add4565de5;br-ab64bc2f60bc;br-bb44b4b226cc;br-ff0873fcf29d;docker0;eth0;lo;veth350673b;veth41b53b9;veth6a5150e;veth8cb7c00;veth9d411c1;vethaa368c0;vethe528737;vethf1bf361

Semicolon ';' seperated list of interfaces to monitor [eth1] docker0

Install Elasticsearch server locally for demo, must have at least 3G of memory, NOT recommended for production use (yes or no) [no] no

Elasticsearch server URL [ http://localhost:9200http://es_host:9200

Password to encrypt S2S and other things [no-default] hello_world!

Moloch - Creating configuration files

Not overwriting /data/moloch/etc/config.ini, delete and run again if update required (usually not), or edit by hand

Installing systemd start files, use systemctl

Download GEO files? (yes or no) [yes] yes

Moloch - Downloading GEO files

WARNING: timestamping does nothing in combination with -O. See the manual

for details.

3.2 启用Suricata.so插件支持

默认安装阶段不会让你选择是否启用Suricata的插件支持, 需要单独修改配置文件。

vim /data/moloch/etc/config.ini
plugins=suricata.so
suricataAlertFile=/var/log/suricata/eve.json # Suricata需开启eve.json。
suricataExpireMinutes=60

注: 默认会由于权限问题导致报错。

Jul 31 13:22:14 suricata.c:395 suricata_open(): ERROR - Permissions problem, can't open suricataAlertFile '/var/log/suricata/eve.json'

解决方法:

– 添加读取权限

chmod o+r /var/log/suricata/eve.json

– 修改用户

vim /data/moloch/etc/config.ini
# User to drop privileges to. The pcapDir must be writable by this user or group below
dropUser=nobod # 指定用户

插件请戳: Plugins

3.3 定期删除PCAP

vim /data/moloch/etc/config.ini
# Delete pcap files when free space is lower then this in gigabytes OR it can be
# expressed as a percentage (ex: 5%). This does NOT delete the session records in
# the database. It is recommended this value is between 5% and 10% of the disk.
# Database deletes are done by the db.pl expire script
freeSpaceG = 5%    # 根据实际情况进行调整

3.4 bfp过滤无用数据

其实我这边已经指定抓取了Docker内部的流量, 宿主机本身的流量我是不进行抓取的. 所以基本上没有”脏”数据.

# bpf=not port 9200

3.5 Moloch Viewer Web User

/data/moloch/bin/moloch_add_user.sh admin "Admin User" THEPASSWORD --admin # 登陆Web的密码, 溯源的时候用得着。

3.6 初始化Elasticsearch数据库

/data/moloch/db/db.pl http://ESHOST:9200 init

3.7 启动进程

systemctl start molochcapture.service    # Moloch 采集进程
systemctl start molochviewer.service      # Moloch Web进程 (溯源时候用的着)

如果没啥报错, 一切就搞定啦, 下面可以看下Moloch的基本功能。

Moloch Viewer

http://x.x.x.x:8005 # Web默认端口 8005

Moloch: 网络流量收集与分析

Moloch支持在同一个Web界面上对多个节点的数据包进行查看以及下载, 可以更加方便的对网络攻击进行溯源。

Moloch: 网络流量收集与分析

Moloch + Suricata的告警

Moloch: 网络流量收集与分析

Moloch 协议解析方面也比Suricata强

Moloch: 网络流量收集与分析

利用Moloch可以查询到可疑IP与外网IP的关联

src -> dst

Moloch: 网络流量收集与分析 dst -> src

Moloch: 网络流量收集与分析 src -> asn

Moloch: 网络流量收集与分析

被解析的协议字段均可做关联

Moloch: 网络流量收集与分析

SPI Data

Moloch: 网络流量收集与分析

Moloch 支持将SPI Data 数据发送到ES上, 可以看到SPI Data会记录同一笔会话中共触发了多少次告警及告警名称等信息. Moloch也帮助我们做了一层简单的聚合.

Moloch: 网络流量收集与分析

总结

Moloch是一个很好的开源全流量捕获平台, 溯源起来也非常的方便, 我个人觉得从溯源分析的角度来说比洋葱更加方便。不过在使用的时候也发现了一个问题。 Moloch 貌似暂不支持将SPI Data发送到 Redis 或者Kafka, 目前是直接发送到ES的, 这样流量一大就担心丢数据。我翻了一下Wiki并没有查到相关配置. 不知道是不是我有遗漏, 如果有知道的可以告知我一下, 感谢!

第一次写文章, 有不对的地方还请各位小伙伴及时指出。不喜勿喷, 谢谢!

*本文原创作者:Shell.,本文属FreeBuf原创奖励计划,未经许可禁止转载


以上所述就是小编给大家介绍的《Moloch: 网络流量收集与分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python算法教程

Python算法教程

[挪威] Magnus Lie Hetland 赫特兰 / 凌杰、陆禹淳、顾俊 / 人民邮电出版社 / 2016-1-1 / 69.00元

本书用Python语言来讲解算法的分析和设计。本书主要关注经典的算法,但同时会为读者理解基本算法问题和解决问题打下很好的基础。全书共11章。分别介绍了树、图、计数问题、归纳递归、遍历、分解合并、贪心算法、复杂依赖、Dijkstra算法、匹配切割问题以及困难问题及其稀释等内容。本书在每一章结束的时候均有练习题和参考资料,这为读者的自我检查以及进一步学习提供了较多的便利。在全书的最后,给出了练习题的提......一起来看看 《Python算法教程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试