我是BRO的新手,刚刚开始在BRO上测试签名。我有一个脚本main.bro和一个签名文件protosigs.sig。这个想法是比较签名并在重写的事件函数-signature_match中做些事情。我尝试使用以下措施测试pcap文件,但该测试未生成notice.log。似乎没有调用函数signature_match。谁能告诉我这是怎么回事?非常感谢!
我如何测试脚本和签名:
bro -r ./bittorrent.Transfer.pcap ./main.bro -s ./protosigs.sig
我的签名:
signature torrent-request-tcp {
ip-proto == tcp
payload /^\x13/
tcp-state originator
event "torrent-request-tcp"
}
我的脚本-main.bro:
@load base/frameworks/notice
@load base/frameworks/signatures/main
@load base/utils/addrs
@load base/utils/directions-and-hosts
#@load-sigs ./protosigs.sig
module bittorrent;
export {
redef enum Notice::Type += {
Torrent,
};
}
event signature_match(state: signature_state, msg: string, data: string)
&priority=-5
{print "Triggerd!"; //at least this one should be triggered, but..
if ( /torrent/ in state$sig_id )
{
print "TTTTTTTTTTTTTTTTTTT";
NOTICE([$note=bittorrent::Torrent,
$msg="Torrent whatsoever",
$sub=data,
$conn=state$conn,
$identifier=fmt("%s%s", state$conn$id$orig_h, state$conn$id$resp_h)]);
}
}
答案 0 :(得分:0)
Xifeng的设置在这里似乎可以正常工作(撇开“ //”注释定界符,而在其中需要“#”)。签名也应该很好,因为BitTorrent协议实际上是由始发者以0x13开头的。我使用的pcap是这样的:
https://pcapr.net/view/gerald/2009/0/3/10/Comcast_Bittorrent_no_RST.pcap.html
您确定自己的pcap正常吗?确保它包含TCP握手,以便Bro可以正确地引导连接状态。