Я новичок в 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)]);
}
}





Xifeng, ваша настройка, похоже, здесь работает нормально (оставив в стороне разделитель комментариев «//», вместо этого вы захотите «#»). Подпись тоже должна быть в порядке, поскольку протокол BitTorrent действительно начинается с 0x13 отправителем. Я использовал pcap:
https://pcapr.net/view/gerald/2009/0/3/10/Comcast_Bittorrent_no_RST.pcap.html
Вы уверены, что ваш pcap в порядке? Убедитесь, что он содержит подтверждение TCP, чтобы Бро мог правильно настроить состояние соединения.
Я чувствую, что ваша подпись очень ограничивающая. Вы понимаете, что подпись не проверяет наличие 0x13 в начале каждого пакета, она ищет 0x13 в начале потока, верно? Я подозреваю, что ваша подпись никогда не совпадает, поэтому signature_match никогда не вызывается.