Snort Rule Writing (Alert si attiva ma il traffico non corrisponde * Intended * Rule)

2

Ho la seguente regola:

avviso tcp $ HOME_NET any > $ EXTERNAL_NET any (msg: "Questo non dovrebbe accadere"; flusso: stabilito, to_server; contenuto: "GET"; profondità: 4; contenuto: "Set-Cookie:"; http_header; within: 100; classtype: trojan-activity; sid: 1000001; rev: 1;)

L'intestazione e le opzioni generali non sono il problema: sono le opzioni di payload e non-payload che mi stanno buttando fuori. La mia comprensione è che questa regola dovrebbe sparare solo nelle seguenti condizioni:

  1. Esiste una sessione stabilita (flusso: stabilito)
  2. Attiva le richieste dei client da $ HOME_NET a $ EXTERNAL_NET (to_server)
  3. Il contenuto include 'GET'
  4. 'OTTIENI' entro 4 byte dall'inizio del payload
  5. Il contenuto include "Set-Cookie:" all'interno delle intestazioni HTTP
  6. 'GET' e 'Set-Cookie' si trovano entro 100 byte l'uno dall'altro

Questa è la versione 2.9.1.x. Il preprocessore http_inspect è stato modificato rispetto all'impostazione predefinita, ma non penso che questo sia il problema. Quindi, mi chiedo come questa regola si attiva sul traffico che non ha "Set-Cookie" proveniente dal client (Set-Cookie dovrebbe solo entrare in una risposta del server, mentre Cookie dovrebbe venire solo in una richiesta client). Forse sto seguendo la strada sbagliata la mia ricerca ha rivelato che Snort utilizza l'algoritmo di ricerca di stringhe Boyer-Moore ( link ) che corrisponde "... alla coda del modello piuttosto che alla testa ...". Quindi, nel mio caso, la regola si attiva sul traffico del client che include un cookie poiché vedrebbe "Cookie" (che fa parte di "Set-Cookie") ??

Non ho scritto la regola e la persona che ha fatto non è disponibile. Devo capire perché questo sta sparando sul traffico che ai miei occhi non corrisponde a quello che la regola sta cercando. La regola è scritta in modo errato per acquisire il traffico $ HOME_NET (client) su $ EXTERNAL_NET (server) con set di intestazione HTTP "Set-Cookie"?

Grazie per il tuo tempo e i tuoi commenti.

    
posta user1801810 27.02.2014 - 20:57
fonte

1 risposta

1

Boyer-Moore non è il problema. Snort deve corrispondere all'intera stringa, sempre. Non ha senso avere "within: 100" nella seconda corrispondenza di contenuto perché http_header è un buffer completamente diverso. Questo dovrebbe essere rimosso. Ma questo non spiega perché questo avverte se il contenuto non era nel pacchetto originale.

Hai una quantità di traffico che inciampa?

Grazie,

~ Patrick

    
risposta data 13.06.2014 - 03:16
fonte

Leggi altre domande sui tag