
Stenographer ist eine Paketerfassungslösung (Packet-Capture-Lösung), die darauf abzielt, alle Pakete schnell auf die Festplatte zu spoolen und anschließend einfachen, schnellen Zugriff auf Teilmengen dieser Pakete zu bieten. Diskussionen/Ankündigungen unter [email protected]
Stenographer ist ein Dienstprogramm zur Vollpaketerfassung, das Pakete für die Zwecke der Einbruchserkennung und Vorfallreaktion auf die Festplatte puffert. Es bietet eine leistungsstarke Implementierung des Schreibens von NIC-zu-Disk-Paketen, verwaltet das Löschen dieser Dateien, wenn die Festplatte voll wird, und bietet Methoden zum schnellen und einfachen Zurücklesen bestimmter Paketsätze.
Es ist entwickelt für:
Es ist NICHT entwickelt für:
Komplexe Paketverarbeitung (TCP-Stream-Wiederzusammenführung, usw.)
Es ist schnell, weil es dies nicht tut. Selbst mit der sehr minimalen, einstufigen Verarbeitung von Paketen, die wir durchführen, kann die Verarbeitung von ~1 Gbit/s allein für die Indizierung >75% eines einzelnen Kerns in Anspruch nehmen.
Die Verarbeitung der Daten durch Rücklesen von der Festplatte funktioniert ebenfalls nicht: siehe nächster Punkt.
Große Mengen an Paketen zurücklesen (>1% der geschriebenen Pakete)
Das Schlüsselkonzept hier ist, dass Festplattenlesevorgänge mit Schreibvorgängen konkurrieren... Sie können mit 90% der Festplattengeschwindigkeit schreiben, aber das gibt Ihnen nur 10% der Festplattenzeit zum Lesen. Außerdem schreiben wir hochgradig sequenzielle Daten, die Festplatten sehr schnell verarbeiten können, und lesen im Allgemeinen spärliche Daten mit vielen Suchvorgängen zurück, was Festplatten langsam tun.
Weiterführende Informationen finden Sie in DESIGN.md für eine Erörterung des Designs von Stenographer, oder lesen Sie INSTALL.md für die Installation von Stenographer auf einem Rechner.
Ein Benutzer fordert Pakete von Stenographer an, indem er sie mit einer sehr einfachen Abfragesprache spezifiziert. Diese Sprache ist eine einfache Teilmenge von BPF und enthält die Grundelemente:
host 8.8.8.8 # Single IP address (hostnames not allowed)
net 1.0.0.0/8 # Network with CIDR
net 1.0.0.0 mask 255.255.255.0 # Network with mask
port 80 # Port number (UDP or TCP)
ip proto 6 # IP protocol number 6
icmp # equivalent to 'ip proto 1'
tcp # equivalent to 'ip proto 6'
udp # equivalent to 'ip proto 17'
# Stenographer-specific time additions:
before 2012-11-03T11:05:00Z # Packets before a specific time (UTC)
after 2012-11-03T11:05:00-07:00 # Packets after a specific time (with TZ)
before 45m ago # Packets before a relative time
after 3h ago # Packets after a relative time
HINWEIS: Relative Zeiten müssen wie oben gezeigt in ganzzahligen Stunden- oder Minutenwerten angegeben werden.
Grundelemente können mit and/&& und oder/|| kombiniert werden, die die gleiche Priorität haben und von links nach rechts ausgewertet werden. Klammern können auch zur Gruppierung verwendet werden.
(udp and port 514) or (tcp and port 8080)
Das Befehlszeilenskript stenoread automatisiert das Abrufen von Paketen von Stenographer und deren Aufbereitung in einem für Analysten nutzbaren Format. Es fordert Rohpakete von Stenographer an und leitet sie dann durch tcpdump, um eine umfassendere Formatierungs-/Filtererfahrung zu bieten. Das erste Argument für stenoread ist eine Stenographer-Abfrage (siehe 'Abfragesprache' oben). Alle anderen Argumente werden an tcpdump übergeben. Zum Beispiel:
# Request all packets from IP 1.2.3.4 port 6543, then do extra filtering by
# TCP flag, which typical stenographer does not support.
$ stenoread 'host 1.2.3.4 and port 6543' 'tcp[tcpflags] & tcp-push != 0'
# Request packets on port 8765, disabling IP resolution (-n) and showing
# link-level headers (-e) when printing them out.
$ stenoread 'port 8765' -n -e
# Request packets for any IPs in the range 1.1.1.0-1.1.1.255, writing them
# out to a local PCAP file so they can be opened in Wireshark.
$ stenoread 'net 1.1.1.0/24' -w /tmp/output_for_wireshark.pcap
Um den Quellcode herunterzuladen, installieren Sie Go lokal und führen Sie dann aus:
$ go get github.com/google/stenographer
Go wird das Herunterladen und Installieren aller Go-Bibliotheken übernehmen, von denen stenographer abhängt. Um stenotype zu erstellen, gehen Sie in das Verzeichnis stenotype und führen Sie make aus. Möglicherweise müssen Sie die folgenden Ubuntu-Pakete (oder deren Äquivalente auf anderen Linux-Distributionen) installieren:
Dies ist kein offizielles Google-Produkt (experimentell oder anderweitig), es ist nur Code, der zufällig Google gehört.
Dieser Code ist nicht dazu gedacht (oder wird nicht verwendet), Googles Benutzer zu überwachen. Sein Zweck ist es, die Sicherheit in unseren Netzwerken zu erhöhen, indem unsere internen Überwachungsfähigkeiten erweitert werden.