一、关于
Moloch是一个大型的、开源的、全数据包捕获、索引和数据库系统。
Moloch并不打算取代入侵检测系统(IDS)。Moloch通过以标准PCAP格式存储和索引网络流量来增强您当前的安全基础设施,同时还提供快速的索引访问。Moloch具有直观的UI/UX,减少了可疑事件的分析时间。
二、搜索栏
大多数Moloch标签页的顶部都有一个搜索栏。Moloch使用非常简单的查询语言来构建表达式。它支持使用括号进行分组,以及分别使用&&和||进行逻辑和和或语句的分组。可以使用下表中描述的字段名称和操作符直接访问字段。大多数字段还支持使用方括号的简写或查询,使用CSV规则列出可能的值(字段==[item1,item2,item3])。
使用ua进行查询(来源:http://blog.alejandronolla.com/2013/04/06/moloch-capturing-and-indexing-network-traffic-in-realtime/):
使用port.dst == 53 && packets == 1进行查询
所有查询都受开始和结束时间的限制。有范围的开始和停止时间可以通过从一个快速的相对下拉菜单中选择一个选项来设置,也可以通过输入精确的时间部分来设置。由于每个会话都有第一个包、最后一个包和数据库时间戳,所以Moloch提供了如何选择会话的选择:
(1)First Packet,第一个包
会话接收到的第一个包的时间戳。
(2)Last Packet,最后一个包
会话接收到的最后一个包的时间戳。
(3)Bounded,范围
会话的第一个和最后一个包时间戳都必须在时间窗口内。
(4)Session Overlaps,会话重叠
第一个包的时间戳必须在时间窗口结束之前,最后一个包的时间戳必须在时间窗口开始之后。
(5)Database,数据库
会话写入数据库的时间戳。这可能是在收到最后一个包后几分钟。
2.1字符串搜索
在Moloch中,字符串字段是特殊的,因为它们可以以几种不同的方式搜索。当字段被索引时,它们的大小写可能是标准化的,也可能不是标准化的,这在下面的fields表中有记录。字符串搜索的类型有:
(1)通配符
如果表达式中出现*,则假定使用通配符匹配。支持的通配符是*,它匹配任何字符序列(包括空字符),以及?,它匹配任何单个字符。通配符查询针对全文字符串运行,如果字段启用大小写规范化,则在大小写规范化之后运行。例如http.uri == "www.f*k.com"将捕获http.uri字符串,它包含www.fork.com或www.frack.com。
(2)正则表达式
正则表达式查询必须被前斜杠包围,并且始终被锚定。这意味着您几乎总是希望包含一个开头和结尾。在regex查询中。regex查询在字段的大小写规范化(如果启用)之后针对全文字符串运行。例如http.uri = = /.* www \ .f.* k \ com.* /。它使用不支持大多数PCRE特性的Lucene regex实现。
(3)列表
在Moloch中,列表被用作执行多个或查询的快速方法。例如,协议== [http,ssh]。该查询将搜索包含http或ssh的任何会话。注意:包含通配符或正则表达式字符串的列表将作为普通字符串处理,而不是通配符和正则表达式。
2.2IP搜索
IP搜索非常灵活,可以使用完整的IP地址、部分IP地址或CIDR表示来执行。对于包含端口号的字段,可以使用冒号(ip4)或点(ip6)跟踪任何IP表示,然后使用端口号进一步细化查询。端口也是一级搜索,可以直接搜索。例如:ip == 1.2.3/24:80。该查询将搜索所有包含1.2.3/24 CIDR范围内的IP地址的会话,并在会话期间使用端口80。IP搜索也可以使用IP列表来完成,这些IP可能是混合表示的:ip == [1.2.3.4,1.3/16]。
2.3数字搜索
除了默认的=和not =查询类型之外,数值字段还支持简单的范围操作符。例如,要显示传输的字节小于10000的事件,可以使用以下查询:bytes <= 10000。数值字段还使用列表支持简单的或查询。例如,port == [80,443,23]。
2.4日期搜索
除了默认的=和not =之外,Date字段还支持简单的范围操作符。例如:starttime == "2004/07/31 05:33:41"。它们还使用列表支持简单的或查询。例如:stoptime ==["2004/07/31 05:33:41","2004/07/31 06:33:41"]。但是,使用搜索栏下的时间限制控件要容易得多。
最后,使用Splunk语法支持相对日期和可选的快照:
1、以加号(+)或减号(-)开头的字符串表示当前时间的偏移量。
2、用数字和单位定义时间量。支持的时间单位为:
(1)秒:s, sec, sec, second, seconds
(2)分钟:m, min, minute, minutes
(3)小时:h, hr, hrs, hour, hours
(4)天: d, day, days
(5)周:w, week, weeks
(6)月:mon, month, months
(7)季度:q, qtr, qtrs, quarter, quarters
(8)年: y, yr, yrs, year, years
2.4字段存在查询
检查一个字段在会话中是否存在或者不存在使用:存在某字段,field==EXISTS!,或者否定存在某字段,field!=EXISTS!。例如,为了验证一个证书没有签发者常用名但是具有一个签发者组织名称,那么应该使用:cert.issuer.cn != EXISTS! && cert.issuer.on == EXISTS!
2.5例子
找出会话中涉及俄罗斯(RU)或者中国(CN),并且使用端口号80且主机名中包含“COM”的会话:
(country == RU || country == CN) && port == 80 && host == *com
找出会话类型为"text/plain",涉及加拿大(CA),包含少于20个数据包的会话:
tags == "http:content:text/plain" && country == CA && packets < 20
三、会话
在Moloch中的Sessions页面中,分析师可以找到关于正在调查的会话的大部分细节。
3.1搜索
左上角的放大镜指示搜索栏。在这里输入查询字符串,然后单击Enter或单击“Search”按钮运行查询。在查询栏中键入字段名时,谓词类型将与基于到目前为止键入的内容的潜在字段名选项重叠。有关更深入的信息,请参见搜索部分。
3.2时间边界
搜索栏下的控件包含时间范围选择。第一个元素设置相对时间(如最后一个小时、最后一天等)。开始框允许选择开始时间/日期。结束框允许选择结束时间/日期。边界框用于选择应用时间边界的位置(最后一个包、边界、会话重叠、数据库)
3.3分页
每个页面选择框的分页控制和记录都在时间范围输入下找到,并允许用户导航返回的会话。将鼠标悬停在每页文本的记录上,以获取关于搜索了多少条目的更多信息。
3.4视图
eyeball图标按钮允许分析员将保存的“视图”叠加到当前的查询上,或者将当前的查询保存为“视图”,以便将来方便地回忆。视图应经常用于分析员经常发现自己运行的搜索查询。
3.5下箭头
下箭头按钮包含几个选项:
(1)导出所需会话数据的PCAP。
(2)查看器中的数据也可以导出为CSV,以供进一步查看和操作。
(3)可以从分析人员的查询检测到的会话中添加或删除标记。然后,可以使用标记==“blah”语句收回这些事件。
(4)将选定的数据发送到另一个系统进行进一步分析。
(5)通过覆盖包来擦除包数据(如果用户有数据删除特权)。
(6)完全删除SPI和PCAP数据(如果用户有数据删除特权)。
这些选项中的每一个都可以应用于已打开的会话(通过单击sessions + box)、可见的任何项(在当前页面上)或匹配查询字符串的所有项。
3.6可视化
会话表上面的部分包含查询输出的可视化。这种快速浏览可视化可以通过会话计数、包计数或数据库计数来查看。单击并拖动图表中的条形图将深入到所选的时间框架中,因此只有它被选中。此外,用户可以点击“+”或“-”放大镜,快速缩小或放大被观察的时间窗口。
3.7会话表
现在我们进入了会话页面的核心部分……我们的会话数据!在深入研究会话数据中可以观察到的内容之前,请注意列配置()按钮。通过单击此按钮,分析师可以选择他们希望观察的任何字段,而无需通过将其作为列添加到表中来完全打开会话。在这个盒子里,预测式打字也适用。示例:分析人员仅通过分析人员的搜索查询调查可疑的IRC会话。该分析人员决定只显示开始时间、结束时间、Src IP、Src端口、Dst IP、Dst端口、IRC通道和IRC昵称,而不是深入每个会话。这个列选择工具允许分析人员随时查看对他们很重要的信息,每个调查都可以配置这些信息。
提示:分析员可以通过单击保存/加载列配置()按钮来保存或加载以前保存的列配置。
将鼠标悬停在列标题上,然后单击列的操作()按钮来执行以下操作:
(1)从表中隐藏列
(2)导出列值
(3)导出带有计数的列值
(4)使用该字段打开SPI图形页面(更多细节请参见SPI图形部分)
查看特定网络会话的会话数据就像单击每个会话左边的plus()按钮一样简单。单击按钮后,会话抽屉将展开,为会话提供进一步的上下文。所有被分析的包数据现在将被显示。这包括从连接到会话期间观察到的TCP标志的用户的所有内容。如果会话是基于HTTP的,那么更深入的数据(如方法、用户代理和响应头)很容易观察到。提取的请求和响应包文本也可以很容易地以自然、ascii、utf8或十六进制格式提供。此外,分析人员可以解压在会话期间传输的响应数据和图像文件(在调查敏感图像时,请小心单击此选项)。其他文件(如mp3、swf或js文件)可以单击,以便在需要时下载和分析。
四、SPI视图
SPI(会话概要信息)视图用于深入分析人员希望进一步研究的会话的特定指标。分析师可以将鼠标悬停在SPI视图中的字段值上,将特定的项目作为AND或而不是添加到查询中,而不是手工编写查询。该页面还允许分析人员快速查看用户感兴趣的每个项目的计数。例如,如果分析人员希望查看在当前时间窗口中记录的所有基本授权头,那么分析人员可以打开http折叠项并单击以启用 http-authorization字段。然后,分析人员可以更新他们的搜索查询,以包含已观察到的特定授权字符串,或者使用通配符查看所有特定类型的授权头(Basic *、承载器*等)。此外,SPI视图允许分析人员在时间窗口内快速查看观察到的IP地址、http响应代码、IRC NICKs/ channel等等。
提示:通过单击save/load字段配置()按钮,分析人员可以保存或加载他们在SPI视图页面上显示/隐藏的字段。
五、连接
连接页面允许用户基于所选择的源节点和目标节点查看树的强制图。使用这种方法可以直观地确定关系。例如,将您的Src节点设置为IP - Src,将Dst节点设置为IP - Dst:port,您将能够可视化源IP地址与目标IP地址/端口组合的关系。那些喜欢直观地分析会话数据的人可能会严重依赖这些图表。此页面的默认设置可以在设置页面中设置。(图来自:http://blog.alejandronolla.com/2013/04/06/moloch-capturing-and-indexing-network-traffic-in-realtime/)
六、文件
文件页显示已写入的pcap的表视图。详细资料包括:档案编号,节点,文件名,文件是否被锁定,第一个日期和文件大小。
七、统计数据
有几个选项卡包含关于捕获节点和Elasticsearch节点的统计信息,枚举如下:
7.1捕获图像
Capture Graphs选项卡显示表示捕获节点正在做什么的实时图表。较大的值以连续较暗的颜色过度绘制。将鼠标悬停在图上,查看每个捕获节点在任何特定时间捕获的内容。
提示:这些图宽1440像素(每隔10秒4小时的数据)。将您的浏览器窗口扩展到至少1500像素宽以获得最佳浏览效果,否则您将看到一个水平滚动条(ew)。
7.2捕获状态
Capture Stats选项卡显示一个表,其中包含每个捕获节点的信息。请使用列配置下拉框更改显示的字段。
(1)节点:捕获节点的名称
(2)时间:捕获节点报告的时间
(3)会话:当前在内存中监控的会话数
(4)剩余空间:所有配置磁盘的剩余空间的百分比
(5)CPU:Moloch使用的CPU百分比
(6)内存%:Moloch使用的内存容量
(7)数据包Q:等待处理的数据包的数量
(8)包/秒:我们试图每秒将接收到的未损坏的数据包的数量添加到packetQ中
(9)字节/秒:接收到的所有未损坏的数据包的大小,我们尝试将其添加到每秒的packetQ中
(10)会话/ s:每秒发送到Elasticsearch的会话数
(11)丢包/秒:操作系统或网卡每秒报告的数据包丢失数量(Moloch从未看到过这些)
(12)过载丢包/ s:因为没有可以自由处理它们的包队列而丢失的包数
(13)ES丢包/s:由于每秒队列溢出而放弃的Elasticsearch搜索请求数
(14)比特/秒:与字节/秒相同,但单位是位/秒
(15)会话:当前监控的Moloch会话数
(16)活跃的TCP会话:目前Moloch正在监控TCP会话的数量
(17)活跃的UDP会话:Moloch目前正在监控UDP会话的数量
(18)活跃的ICMP会话:Moloch目前正在监控ICMP会话的数量
(19)剩余空间:所有已配置盘的自由空间
(20)内存:Moloch使用的内存量
(21)磁盘Q:等待写入磁盘的数据块的数量
(22)ES Q:等待发送的Elasticsearch搜索请求的数量
(23)结束Q:接收到FIN和Moloch的TCP会话的数量正在等待查看是否实际关闭
(24)等待Q:准备写入但正在等待异步请求(明智的,插件)完成的会话数
(25)活跃的片段:等待剩余IP片段出现的数据包数量
(26)片段丢包数量/秒:由于frag过载或超时而丢失的包数
(27)总丢包数/秒:丢失的输入和过载指标的总和
(28)写的字节/秒:Moloch写入磁盘的所有数据包的大小
(29)Unritten字节/秒:Moloch不会写入磁盘的所有数据包的大小,但是我们已经处理过了
7.3ES索引
ES indexes选项卡显示一个表,其中包含每个Elasticsearch索引的信息。请使用列配置下拉框更改显示的字段。
(1)名称:索引的名称
(2)文档:索引中的文档数量
(3)磁盘大小:此索引的弹性搜索存储区大小
(4)碎片:为该索引创建的碎片数
(5)段:该索引的段数
(6)副本:索引中主碎片的副本数量
(7)内存:这个索引使用了多少内存
(8)健康:索引的健康状态(绿色、黄色或红色)
(9)状态:索引是打开的还是关闭的
(10)创建日期:创建索引时间
(11)UUID:索引的内部UUID
7.4ES任务
ESs任务选项卡显示一个表,其中包含每个Elasticsearch任务的信息。请使用列配置下拉框更改显示的字段。
(1)行动:任务正在执行的操作
(2)描述:关于正在执行的操作的更多细节
(3)开始时间:任务启动的时间(任务完成后从该列表中删除)
(4)运行时间:任务所花费的时间
(5)子任务:与此任务关联的子任务的数量
(6)任务是否可取消:任务可以停止吗
(7)ID:任务id
(8)类型:任务类型
7.5ES Shards
ES Shards选项卡显示一个包含ES索引和节点的矩阵。每个单元格描述该索引在该特定节点中的shard数量。灰色表示它是一个可选的shard,另一种颜色表示它是一个主shard。悬停在单元格上以获取更多信息。
八、历史
历史页面提供了向ES查看Moloch操作/查询的功能。它既可用作用户的历史记录,也可用作管理员的审计功能。非管理员用户只能查看自己的操作。管理员用户可以查看所有用户的操作。
(1)使用页面顶部的搜索输入来搜索特定的历史项。
(2)有关如何查询历史表的更多信息,请参阅ES查询字符串语法。
(3)利用搜索栏下的时间控件按时间范围过滤历史记录。
(4)通过单击任何列标题对历史进行排序。
(5)使用filter按钮按特定字段值过滤历史记录。
(6)使用列标题中的复选框来显示始终具有该字段值的历史项。
(7)使用expand按钮显示有关历史项的更多信息。
(8)使用open按钮“转到”历史项。这将打开操作/查询发出的页面。
这只适用于应用程序中来自页面的主GET请求。
九、设置
设置页面允许管理基于一般用户的设置,并被分为不同的部分。管理员可以更新任何用户的设置。
9.1一般设置项
在这里,用户可以:
管理他们的时区格式
设置它们的默认会话详细包格式
设置返回包的默认数量
设置显示或隐藏包时间戳的默认值
管理是否在会话页面加载时发出查询
设置它们的默认会话表排序
设置它们的默认SPI图形字段
设置它们的默认连接源字段
设置它们的默认Connetions目标字段
9.2视图
在这里,用户可以通过更新、删除或共享保存的视图来管理它们。共享视图允许所有其他用户使用该视图(只有管理员可以编辑它)。用户还可以在这个区域创建一个新视图。有关更多信息,请参见视图部分。
9.3Cron查询
在这里,用户可以通过更新或删除cron查询来管理它们。它们还可以创建一个新的cron查询。
9.4列配置
在这里,用户可以查看和删除当前保存的自定义会话表列配置。
9.5SPI视图字段配置
在这里,用户可以查看和删除当前保存的自定义SPI视图字段配置。
9.6主题
在这里,用户可以从几个预定义的用户界面主题中进行选择。如果他们喜欢冒险,可能还有些危险,他们可以创建自己的定制主题。
9.7密码
在这里,用户可以更新密码。
十、用户
正如您所猜测的,Users页面是配置用户选项并将其添加到系统的地方。可以利用基于角色的访问控制(RBAC)的多个选项。这些选项包括:用户ID、用户的名字,迫使表达式(只允许一个用户数据与指定表达式/查询),一个帐户启用切换,管理员切换,是否允许用户访问web界面,是否允许用户允许访问http基础授权头,是否允许用户可以搜索捕获的电子邮件数据,是否允许用户可以从系统中删除数据(擦洗)。该页面还允许删除以前创建的用户。单击设置链接将跳转到用户设置页面。
十一、键盘快捷键
'Q' -设置焦点到查询栏
' T ' -设置时间范围选择器的焦点
'S' -跳转到Sessions页面
“V”-跳转到SPI视图页面
“G”-跳转到SPI图形页面
“C”-跳转到连接页面
“H”-跳到“莫洛奇帮助”页面
“U”-跳转到莫洛奇搜索页面
'shift + enter' -问题搜索/刷新
“esc”-从任何输入中移除焦点并关闭键盘快捷键帮助对话框
”?”-显示键盘快捷键帮助对话框
十二、字段名称