
Analizzatore Bro che rileva il protocollo QUIC di Google
Questo analizzatore può eseguire il parsing e il rilevamento dell'implementazione Google di QUIC (chiamata GQUIC qui per semplicità), utilizzando il formato wire descritto al seguente indirizzo:
https://www.chromium.org/quic.
La versione di GQUIC utilizzata da Chrome al momento della stesura di questo analizzatore era la Q039, con alcuni server Google (e probabilmente anche le build Canary di Chrome) in grado di utilizzare la Q043. Questo analizzatore è stato in grado di rilevare entrambe le versioni durante i test.
Il formato wire descritto nei documenti GQUIC di quel periodo (4-5 maggio 2018) risultava inoltre non allineato con le implementazioni effettivamente utilizzate sul campo.
Inoltre, sembra esserci uno sforzo costante per migrare GQUIC verso lo standard draft IETF per QUIC descritto al seguente indirizzo:
https://github.com/quicwg/base-drafts https://datatracker.ietf.org/wg/quic/documents/
Tale draft differisce in modo significativo dalle implementazioni GQUIC su cui questo analizzatore è stato testato e ha inoltre modificato di recente il proprio formato wire.
In sintesi, se non verrà aggiornato in futuro, questo analizzatore GQUIC non è destinato a continuare a funzionare con le successive evoluzioni del protocollo QUIC.
Tramite zkg <https://docs.zeek.org/projects/package-manager/en/stable>_::
zkg install corelight/zeek-quic
In caso contrario, dovrai compilarlo e installarlo da solo (supponendo che sia nel tuo )::
zeek-configPATH./configure
make
make install
Per impostazione predefinita, questo analizzatore rileva semplicemente se una connessione UDP sembra utilizzare il protocollo QUIC, aggiunge la stringa "guic" al campo "service" di conn.log e poi interrompe il parsing.
Se desideri scrivere uno script personalizzato che gestisca altri eventi forniti dall'analizzatore, potresti volere che l'analizzatore continui ad analizzare la connessione anche dopo la conferma del protocollo::
redef GQUIC::skip_after_confirm = F;
Gli eventi forniti possono dare informazioni di massima riguardo al tipo di pacchetto (Regular Packet vs. Version Negotiation vs Public Reset) e sul contenuto del Public Header (come Packet Number, QUIC Version, Connection ID o Diversification Nonce).
Implementazioni: https://github.com/quicwg/base-drafts/wiki/Implementations
Precedente lavoro sull'analizzatore QUIC di Mike Dopheide: https://github.com/dopheide-esnet/bro-quic