
Bro-Analysator, der Googles QUIC-Protokoll erkennt.
Dieser Analyzer kann die Google-Implementierung von QUIC parsen und erkennen (der Einfachheit halber hier GQUIC genannt) und verwendet das unter folgender Adresse beschriebene Wire-Format:
https://www.chromium.org/quic.
Die zum Zeitpunkt der Erstellung dieses Analyzers von Chrome verwendete GQUIC-Version war Q039, wobei einige Google-Server (und möglicherweise Chrome-Canary-Builds) auch Q043 verwenden konnten. Dieser Analyzer konnte während der Tests beide Versionen erkennen.
Das in den GQUIC-Dokumenten zu jener Zeit beschriebene Wire-Format (4.–5. Mai 2018) schien ebenfalls nicht mit den tatsächlichen Implementierungen übereinzustimmen, die in der Praxis verwendet wurden.
Darüber hinaus scheint es regelmäßige Bemühungen zu geben, GQUIC an den IETF-Entwurfsstandard für QUIC anzugleichen, der unter folgender Adresse beschrieben ist:
https://github.com/quicwg/base-drafts https://datatracker.ietf.org/wg/quic/documents/
Dieser Entwurf unterscheidet sich erheblich von den GQUIC-Implementierungen, gegen die dieser Analyzer getestet wurde, und hat außerdem kürzlich sein Wire-Format geändert.
Zusammenfassend ist zu erwarten, dass dieser GQUIC-Analyzer, falls er in Zukunft nicht aktualisiert wird, nicht mehr mit späteren Weiterentwicklungen des QUIC-Protokolls funktionieren wird.
Über zkg <https://docs.zeek.org/projects/package-manager/en/stable>_::
zkg install corelight/zeek-quic
Andernfalls müssen Sie es selbst erstellen und installieren (vorausgesetzt, zeek-config
ist in Ihrem PATH)::
./configure
make
make install
Standardmäßig erkennt dieses Tool einfach, ob eine UDP-Verbindung wie das QUIC-Protokoll aussieht, fügt die Zeichenkette "guic" zum Feld "service" von conn.log hinzu und beendet dann das Parsen.
Wenn Sie ein benutzerdefiniertes Skript schreiben möchten, das andere vom Analyzer bereitgestellte Ereignisse verarbeitet, möchten Sie den Analyzer möglicherweise die Verbindung weiter parsen lassen, auch nachdem das Protokoll bestätigt wurde::
redef GQUIC::skip_after_confirm = F;
Die bereitgestellten Ereignisse können grobe Informationen zum Pakettyp liefern (Regular Packet vs. Version Negotiation vs. Public Reset) sowie den Inhalt des Public Header (wie Packet Number, QUIC Version, Connection ID oder Diversification Nonce).
Tools: https://github.com/quicwg/base-drafts/wiki/Tools
Implementierungen: https://github.com/quicwg/base-drafts/wiki/Implementations
Chromium: https://www.chromium.org/quic/playing-with-quic
Frühere Arbeit am QUIC-Analyzer von Mike Dopheide: https://github.com/dopheide-esnet/bro-quic