本文作者:Aloha(信安之路应急响应小组成员) 成员招募:信安之路应急响应小组寻找志同道合的朋友
关于 Moloch 的安装、部署、维护及优缺点介绍, Cherishao 已经在信安之路投稿了文章《Moloch 那些不得不说的事》
在网上关于 Moloch 的使用说明不多,很多文章都是这家 Copy 一下,哪里 Copy 一下;本手册主要是根据自己在使用时对相关功能的总结,参考官网的资料说明,对 Moloch 流量回溯系统的功能进行较为详细的介绍。
在工作中,我使用的是国内某家公司的全流量分析系统,相比之下,我认为 Moloch 作为一款开源系统,其对流量数据的解析功能非常强大,可以花式构造过滤语句。但毕竟以流量为主,不具备基于行为或特征之类的常见检测机制,如果需要,可以配合 Snort、Bro、Suricata 等检测系统。(Moloch 可将 Suricata作为插件结合,有兴趣的朋友可以试试)
文中用法多为个人理解,可能存在偏差,在此仅做抛砖引玉,希望各位表哥多交流指点!
搜索栏
输入过滤表达式,点击 search 进行检索。
经预先设置后,将指定的条件作为默认过滤。
如图1-2:选择该条已定义好的规则,将检索所有捕获到的 TCP 数据,然后检索出与 IP 10.0.1.1 相关 TCP数据。
点击 “New View” 可以添加新的默认过滤条件。
如图 1-4,可设置默认过滤名称及相应过滤表达式
可以在 Settings 面板点击 “Views” 来查看默认过滤配置情况。
PS:我在试用中创建新条目时,Name值不可为中文字符。
导出查询结果,保存为 PCAP 格式或 CSV 格式。
选择区间回溯
选定回溯区间,点击 “Search”,查询数据。
指定时间段回溯
指定时间段,点击 “Search”,查询数据。
会话选择方式
由于每个会话都有第一个包,最后一个包及相应的数据库时间戳,因此可以根据以上条件对会话进行选择:
First Packet:按选中的区间,在会话显示面板按时间正序显示捕获的会话。
Last Packet按选中的区间,在会话显示面板按时间倒序显示捕获的会话。
Bounded:过滤出已完成的会话数据。
Session Overlaps: 过滤出已捕获到第一个包,还未接捕获最后一个包(即:会话正在进行)的会话数据。
Database:按会话写入数据库的时间进行显示(有一定延迟,可能是在收到最后一个包的几分钟后)。
显示单位时间内流量趋势。(默认为小时)
会话显示
设置 Sessions 页面显示会话数。(页面默认显示50条会话)
并可看到当前查询结果包含总会话数。
流量面板
展示了实时监控趋势。
放大镜用来调整展示的时间区间
sessions(会话)、packets(包)、databytes(字节)为三种展现形式
可选择以折线图(Lines)或柱状图(Bars)来展示流量趋势
在地图中展示通信双方的地理位置
S(source country)
D(destination country)
点击图1-14中所示按钮,可使下方的显示的各列信息进行窗口自适应。
自适应前:
自适应后:
数据信息
如图1-16显示的为元数据信息,如源IP,源端口,目的IP,目的端口等。
可以通过点击图 1-17 中所示按钮,可将想要在页面中显示的字段应用为列。
点击旁边的按钮,可将经选择后展示在页面中的列形成一条配置,并进行命名。
如图1-18,可以看到除了默认配置(Moloch Default)之外,还定制了名为“A”的配置。
通过查看 “Settings” 面板中的 “Column Configs” 条目,可以清楚的看到默认配置与 “A” 配置的区别,即选择默认配置时将多出一列 “info” 信息。
点击每条会话前的 '+',将显示完整的会话信息。
点击 “Download Pcap” 或下拉 “Action” 菜单,选中 “Export Pcap” 即可下载该数据包。
所有字段名均带有下拉菜单。
以图 1-21 为例,对 5 项操作进行说明:
Export Unique Method(显示支持的HTTP方法)
Export Unique Method with counts(对选中区间内各HTTP请求方法进行计数)
Open Method SPI Graph(在SPIGraph界面对各HTTP请求方法进行统计)
Toggle Method column(将Request Method应用为列)
Toggle Method in info column(将本次请求详细内容显示在info列中)
会话中字段的值可以展开下拉菜单,选定条件,设置为对应的过滤规则。
技巧:此处对元数据的操作配合之前提到的Export Unique Method操作,可以构造出自己想要的过滤语句!
例如:
下图中该会话通过GET方法,请求了一张图片。想检索所有请求图片的会话,可以点击
and image/jpeg,将生成相应的过滤语句。
此外,可以通过 Export Unique Method查看支持的其他类型,从而构造相应的过滤语句。
如下图,点击 “Load All” 将展开菜单,加载所有相关字段信息。点击 “Unload All” 关闭加载。(字段名及字段值其他操作'数据信息'部分已介绍,此处不再说明)
例:如何配置自己想查看的字段信息?
第一步:点击“Unload All”,不加载任何字段
第二步:单击选择需要查看的字段信息
第三步:输入配置名并保存,完成配置
解析功能强大,可构造各种过滤语句!
SPIGraph 界面将以流量趋势图的方式展示指定字段的流量情况。除了直接在 SPIGraph 界面中选择字段,也可以在Sessions 及 SPIView 界面进行指定要查看的字段,通过 SPIGraph 选项跳转至本界面。
Connections 界面用于直观的展示源节点与目的节点的关系。
在 Hunt 界面中,可以捕获出带有指定内容的会话。
Hunt 功能默认不开启,可在 Users 界面,对指定用户勾选“Can Search Packets”进行启用。
检索到数据后,可点击下图所示文件夹图标查看检索结果。
例:检索包含字符串“administrator”的会话。
①配置检索条目,进行检索
②查看捕获结果
优点:
可设置数据流特征值(支持 ASCII,HEX,正则表达式)来进行监测。
不足:
定义捕获规则时,Name 不支持中文字符;
只能同时启用一条捕获规则(按顺序逐条执行,且捕获规则停止后再启动将报错);
只能对数据包内容进行匹配,无法针对数据包大小设置捕获规则(如定长心跳包等难以监测)。
Files 页面显示已捕获的 pcap 。各字段详细说明见下图:
Stats 界面为 Moloch 状态信息。在 Moloch 维护及故障排除方面有较大帮助。
PS:因为 Moloch 基于 Elasticsearch 引擎,涉及到数据处理,集群等相关知识,我对这些了解不足,以下只对界面内容进行简要说明
附上 Elasticsearch 学习链接:
https://blog.csdn.net/huakai_sun/article/details/79312157
https://es.xiaoleilu.com/
Capture Graphs 选项卡显示了当前网卡的实时捕获的会话数。(实际使用方法不清楚,页面说明中提到使用时需要将浏览器像素宽调整到1500+...)
Capture Stats 选项卡中为当前捕获节点详细信息。可通过列配置下拉框选择在该页面显示的字段,下图对默认信息进行了说明。
字段说明:
Node:捕获节点
Time:捕获时间
Seesions:当前监测到的会话数
Free Space:磁盘剩余空间
CPU:Moloch占用CPU大小
Memory:Moloch占用内存大小
Packet Q:待处理数据包
Disk Q:待发送到磁盘的数据包
ES Q:待发送到ES的数据包
Packet/s:待添加到Packet Q数据包
Bytes/s: 待添加到Packet Q数据包大小
Sessions/s:每秒发送到ES会话数
Packet Drops/s:每秒丢包数
Bits/Sec:与Bytes/s相同,只不过由字节/秒变为位/秒
Written Bytes/s:Moloch写入磁盘的所有数据包的大小
Unwritten Bytes/s: Moloch未写入磁盘的所有数据包的大小
Active TCP Sessions:监测中的TCP会话数
Active UDP Sessions:监测中的UDP会话数
Active ICMP Sessions:监测中的ICMP会话数
Active SCTP Sessions:监测中的SCTP会话数
Active ESP Sessions:监测中的ESP会话数
Used Space:已使用磁盘大小
ES Health Response MS:ES健康状态响应
Closing Q:已关闭的会话数
Watting Q:等待写入的会话数
Active Fragments:活跃的ES分片数
Fragments Dropped/Sec:每秒丢弃的分片数
Total Dropped/Sec:总共丢弃的分片数
ES Session Bytes/Sec: 每秒ES会话字节大小
Overload Drops/s:未知
ES Drops/s:未知
ES Session Size/Sec: 每秒ES会话大小
ES Nodes 选项卡中为 ES 节点信息。可通过列配置下拉框选择在该页面显示的字段。
字段说明:
Name:索引名
Documents:索引中
Disk Used:使用磁盘大小
Disk Free:磁盘剩余空间
Heap Size:堆大小(未知)
OS Load:系统加载(未知)
CPU:占用CPU百分比
Read/s:读取速率
Write/s:写入速率
Searches/s:查询速率
IP:节点对应IP
IP Excluded:未知
Node Excluded:未知
Non Heap Size:除去堆后剩余大小(未知)
Searches timeout:检索间隔
ES Indices 选项卡中为 ES 索引信息。可通过列配置下拉框选择在该页面显示的字段。
字段说明:
Name:索引名
Documents:索引中文档数
Disk Size:改索引所占存储
Shards:ES分片数
Segments: ES段
Replicas:备份分片
Memory:该索引占用内存
Health:索引健康状态(Green为最健康状态,Yellow为基本的分片可用,Red为部分的分片可用)
Status:索引状态(打开/关闭)
Created Date:索引创建时间
Current Query Phase Ops:当前查询阶段(未知)
UUID:索引内部UUID
ES Tasks 选项卡中为 ES 任务信息。可通过列配置下拉框选择在该页面显示的字段。
字段说明:
Action:行为
Description:正在执行行为的描述
Start Time:任务起始时间
Children:相关子任务
Cancellable:是否可取消
ID:ID(未知)
Node:节点
Task ID:任务ID
Type:任务类型
ES Shards 选项卡中为索引与节点分片的对应关系。
ES Recovery 选项卡中为ES任务信息(Recovery 是指将一个索引的未分配 shard 分配到一个结点的过程。)。可通过列配置下拉框选择在该页面显示的字段。
History 界面可以查看用户的历史操作记录,并支持对历史操作的重现。
PS:普通用户只能查看自己的操作,而管理员可以查看所有用户的操作
Settings 界面可对当前登录账号各项信息进行配置,具体细节如下:
如图9-1,可对Moloch进行常规信息设置。
Timezone Format:设置时区格式
Session Detail Format:默认会话包解析格式
Number of Packets:返回包默认数量
Show Packet Timestamps:显示/隐藏 数据包时间戳
Issue Query on Page Load:是否在页面加载时就进行查询
Sort Sessions By:默认会话排序
Default SPI Graph:SPI图形默认字段
Connections Src:默认源字段
Connections Dst:默认目的字段
用户可在此界面添加、更新、删除过滤规则。(具体用法已在Sessions部分说明)
设置定时任务,每隔一段时间会在 Sessions 界面执行定义好的过滤语句。(执行时相对会话有90s延迟,确保会话已完全传输)
对 Sessions 页面显示的列信息进配置。(具体用法已在Sessions部分说明)
对 SPI View 界面进行检索的字段进行配置。(具体用法已在SPI View部分说明)
用户可以选择自己喜欢的配色方案。
Users 页面负责用户管理。可进行添加、删除用户,也可对已有用户的权限进行限制。
主要对以下三个选项进行说明:
Forced Expression:当前用户的默认过滤条件。(如设置 protocols==tcp,则该用户只能查询到 tcp 数据)
Admin:是否赋予当前用户管理员权限(即拥有增删改权限)
Web Auth Header:登录时不需要密码,只需要基于Web头进行认证
https://github.com/aol/moloch/wiki/FAQ
https://github.com/aol/moloch/wiki/Settings