Sto provando a scrivere una firma Suricata a scopo di test per avvisarla ogni volta che viene attivata con un singolo file PCAP contenente un singolo pacchetto, ma ciò si sta dimostrando più difficile di quanto pensassi.
Ad esempio, ho la seguente regola.
alert udp $HOME_NET any -> any 53 (msg:"Test A"; \
content:"|01 00 00 01 00 00 00 00 00 00|"; depth:10; offset:2; \
content:"|05|testa|03|com"; fast_pattern; nocase; distance:0; \
classtype:trojan-activity; sid:1099906; rev:1;)
Questa è una semplice firma UDP che cerca l'esadecimale 01 00 00 01 00 00 00 00 00 00
che definisce il pacchetto UDP come una ricerca DNS e il dominio testa.com
.
Se invio un pcap con il seguente contenuto usando tcpreplay
come questo
tcpreplay -i eth0 testa.pcapng
dove eth0
è la NIC che Suricata sta monitorando e testa.pcapng
è il PCAP che contiene il pacchetto sottostante. Posso attivare l'allarme una volta, ma se rieseguo il PCAP, non verrà avvisato fino a quando non lo riprodurrò per 3-5 volte.
Inquestaimmagine,puoivedereiparametriDNScorrispondentiingialloelaquerycorrispondenteinverde.
SeaggiungoilseguentepacchettodirispostaDNSalPCAP:
Sembra che spari ogni volta. Questo è strano, perché nulla nella firma cerca una risposta, quindi come posso scrivere una firma che ha bisogno di un solo pacchetto e spara ogni volta?