脚本学习:
bro的默认脚本/usr/local/bro/share/bro每次更新版本都会被重新覆盖,除了/usr/local/bro/share/bro/site这个文件可以自定义修改,不会被覆盖
其中核心为base和policy
/usr/local/bro/share/bro/base处理收集网络活动基本的有用的状态或提供框架程序扩展功能脚本,程序会自动加载他,带来的代价不高
policy 代价较高,要因地适宜,是否使用要自己判断
PREFIX/share/bro/site/local.bro这个路径是我们写脚本的入口,从这里下手。
bro脚本定义
用&redef 定义变量和常量限定符:const ignored_types: set[Notice::Type] = {} &redef;
但其初始值可以修改通过redef在编译时修改
例如:
module Notice;
export {
...
## Ignored notice types.
const ignored_types: set[Notice::Type] = {} &redef;
}
redef Notice::ignored_types += { SSL::Invalid_Server_Cert };
bro日志:
dpd.log 协议在非标准端口上遇到的摘要
dns.log 所有DNS活动
ftp.log 一个日志的FTP会话级别的活动
files.log 摘要通过网络传输的文件。这些信息是聚合不同的协议,包括HTTP、FTP、SMTP
http.log 总结所有的HTTP请求的回复
known_certs.log 使用SSL证书
smtp.log SMTP活动的一个总结
ssl.log SSL会话的记录,包括所使用的证书
weird.log 一个意想不到的协议级活动的日志。只要bro协议分析遇到不符合期望的(如:一个RFC违规)日志会记录在这个文件中。注意,在实践中,现实世界的网络往往表现出大量的“杂质”,通常是不值得跟进。
bro命令行方式:
bro -i en0 脚本.bro
从抓取的包 mypackets.trace进行分析
tcpdump -i en0 -s 0 -w mypackets.trace
bro -r mypackets.trace
bro -r mypackets.trace 脚本.bro
dpd.log 协议在非标准端口上遇到的摘要
dns.log 所有DNS活动
ftp.log 一个日志的FTP会话级别的活动
files.log 摘要通过网络传输的文件。这些信息是聚合不同的协议,包括HTTP、FTP、SMTP
http.log 总结所有的HTTP请求的回复
known_certs.log 使用SSL证书
smtp.log SMTP活动的一个总结
ssl.log SSL会话的记录,包括所使用的证书
weird.log 一个意想不到的协议级活动的日志。只要bro协议分析遇到不符合期望的(如:一个RFC违规)日志会记录在这个文件中。注意,在实践中,现实世界的网络往往表现出大量的“杂质”,通常是不值得跟进。
bro命令行方式:
bro -i en0 脚本.bro
从抓取的包 mypackets.trace进行分析
tcpdump -i en0 -s 0 -w mypackets.trace
bro -r mypackets.trace
bro -r mypackets.trace 脚本.bro
broctl方式:
PREFIX/share/bro/site/local.bro这个路径是我们写脚本的入口
1、/usr/local/bro/share/bro/policy路径中新建自己的策略脚本路径:/usr/local/bro/share/bro/policy/mypolicy
2、将自己的脚本cp到该路径
3、在local.bro中添加脚本加载:@load mypolicy/file_extraction
4、在/usr/local/bro/logs/current路径查看脚本执行结果
1、/usr/local/bro/share/bro/policy路径中新建自己的策略脚本路径:/usr/local/bro/share/bro/policy/mypolicy
2、将自己的脚本cp到该路径
3、在local.bro中添加脚本加载:@load mypolicy/file_extraction
4、在/usr/local/bro/logs/current路径查看脚本执行结果
bro就是一款IDS产品,用于旁路监听还是不错的,我们想做IPS还需要继续探索!