搜索栏
字符串搜索
通配符:
如果表达式中出现*,则假定使用通配符匹配。支持的通配符是*,它匹配任何字符序列(包括空字符),以及?,它匹配任何单个字符。
通配符查询针对全文字符串运行,如果字段启用大小写规范化,则在大小写规范化之后运行。
例如http.uri == "www.f*k.com"将捕获http.uri字符串,它包含www.fork.com或www.frack.com。
正则表达式:
正则表达式查询必须被前斜杠包围,并且始终被锚定。这意味着您几乎总是希望包含一个开头和结尾。
在regex查询中。regex查询在字段的大小写规范化(如果启用)之后针对全文字符串运行。
例如http.uri = = /.* www \ .f.* k \ com.* /。它使用不支持大多数PCRE特性的Lucene regex实现。
列表:
在Moloch中,列表被用作执行多个或查询的快速方法。
例如,协议== [http,ssh]。该查询将搜索包含http或ssh的任何会话。
注意:包含通配符或正则表达式字符串的列表将作为普通字符串处理,而不是通配符和正则表达式。
IP搜索
对于包含端口号的字段,可以使用冒号(ip4)或点(ip6)跟踪任何IP表示,然后使用端口号进一步细化查询。端口也是一级搜索,可以直接搜索。
例如:ip == 1.2.3.4/24:80。该查询将搜索所有包含1.2.3.4/24 CIDR范围内的IP地址的会话,并在会话期间使用端口80。
IP搜索也可以使用IP列表来完成,这些IP可能是混合表示的:ip == [1.2.3.4,1.3/16]。
日期搜索
(1)除了默认的=和not =之外,Date字段还支持简单的范围操作符。例如:starttime == "2004/07/31 05:33:41"。
(2)还使用列表支持简单的或查询。例如:stoptime ==["2004/07/31 05:33:41","2004/07/31 06:33:41"]
字段存在查询
检查一个字段在会话中是否存在或者不存在使用:存在某字段,field==EXISTS!,或者否定存在某字段,field!=EXISTS!。
例如,为了验证一个证书没有签发者常用名但是具有一个签发者组织名称,那么应该使用:cert.issuer.cn != EXISTS! && cert.issuer.on == EXISTS!
找出会话中涉及俄罗斯(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
举例
Simple Moloch filtering expression:
ip.src == 10.0.0.38 && starttime >= "2016/03/03 22:19:03 && port.dst == 17500
Filtering expression using HTTP tags:
protocols == http && http.method == GET && http.statuscode == 200 && stoptime <= "2016/03/04 00:00:00" Simple Moloch filtering expression:
ip.src == 10.0.0.38 && starttime >= "2016/03/03 22:19:03 && port.dst == 17500
Filtering expression using HTTP tags:
protocols == http && http.method == GET && http.statuscode == 200 && stoptime <= "2016/03/04 00:00:00"