虽然这对于 Wireshark 可能是可行的,但对于Bro来说要容易几个数量级。
提取 URI
只需使用您的跟踪文件运行它:
bro -r <trace>
此调用在当前目录中生成一堆日志文件。您感兴趣的是http.log
. 您可以过滤输出以仅获取 GET 请求:
bro-cut id.orig_h id.resp_h method host uri < http.log | awk '$3 == "GET"'
示例输出:
192.168.1.104 212.96.161.238 GET update.avg.com /softw/90/update/avg9infowin.ctf
192.168.1.104 77.67.44.206 GET backup.avg.cz /softw/90/update/u7avi1777u1705ff.bin
192.168.1.104 198.189.255.75 GET aa.avg.com /softw/90/update/u7iavi2511u2510ff.bin
192.168.1.104 77.67.44.206 GET backup.avg.cz /softw/90/update/x8xplsb2_118c8.bin
如您所见,最后两列构成了完整的 URL。要删除中间的空格,您可以使用 awk 连接最后两个字段。
提取文件
注意:即将发布的 Bro 2.1 版本将对文件提取进行重大改进。在此之前,您可以通过指定要存储的文件的 MIME 类型从 HTTP 流中提取所有文件:
bro -r <trace> 'HTTP::extract_file_type = /video\/avi/'
Bro 嗅探 HTTP 正文的 MIME 类型,如果它与正则表达式匹配/video\/avi/
,它会创建一个带有前缀的文件http-item
。HTTP::extraction_prefix
您可以通过重新定义变量来更改前缀名称。