
TCP/IP-Paket-Demultiplexer. Herunterladen von:
Download-Verzeichnis: http://digitalcorpora.org/downloads/tcpflow/
Die meisten gängigen GNU/Linux-Distributionen liefern tcpflow in ihren Paketquellen aus. Auf Debian/Ubuntu/etc. kann man also eingeben:
sudo apt-get install tcpflow
und auf Fedora/RedHat/CentOS/etc.:
sudo dnf install tcpflow
Das war's. Falls dies aus irgendeinem Grund nicht ausreicht, können Sie aus dem Quellcode bauen:
Um für Linux zu kompilieren:
Stellen Sie sicher, dass Sie die notwendigen Voraussetzungen haben. Es gibt Dateien im Wurzelverzeichnis, die dies für Sie erledigen, abhängig von Ihrem Host-Betriebssystem:
CONFIGURE_ARCH_17_8.sh CONFIGURE_FEDORA_18.sh CONFIGURE_FEDORA_26.sh CONFIGURE_UBUNTU_16_04.sh
Abhängig von Ihrem Betriebssystem einfach:
# sudo bash CONFIGURE_<YOUROS>.sh
Sobald Sie Ihr Betriebssystem konfiguriert haben, kompilieren und installieren Sie mit:
./configure
make
sudo make install
Wenn Sie den Entwicklungsbaum mit git herunterladen möchten, führen Sie einen vollständigen Checkout mit --recursive durch und führen Sie dann bootstrap.sh, configure und make aus:
git clone --recursive https://github.com/simsong/tcpflow.git
cd tcpflow
bash bootstrap.sh
./configure
make
sudo make install
Um für Amazon AMI herunterzuladen und zu kompilieren:
ssh ec2-user@<your ec2 instance>
sudo bash yum -y install git make gcc-c++ automake autoconf boost-devel cairo-devel libpcap-devel openssl-devel zlib-devel
git clone --recursive https://github.com/simsong/tcpflow.git
sh bootstrap.sh
Um für Windows mit mingw auf Fedora Core zu kompilieren:
yum -y install mingw64-gcc mingw64-gcc-c++ mingw64-boost mingw64-cairo mingw64-zlib
mingw64-configure
make
Zur Verwendung von CMake siehe die detaillierten Anweisungen: cmake/README.md
Aus einem sauberen Repository als normaler Benutzer (nicht root):
./bootstrap.sh # Erzeugt die Datei ./configure
./configure # Erzeugt die Datei tcpflow.spec
rpmbuild -bb tcpflow.spec --build-in-place
Überprüfen Sie die Specdatei und das resultierende RPM:
rpmlint tcpflow.spec
rpmlint ~/rpmbuild/RPMS/x86_64/tcpflow-....rpm
Installieren:
sudo dnf install ~/rpmbuild/RPMS/x86_64/tcpflow-....rpm
tcpflow ist ein Programm, das Daten erfasst, die als Teil von TCP-Verbindungen (Flows) übertragen werden, und die Daten in einer Weise speichert, die für die Protokollanalyse und Fehlersuche praktisch ist. Jeder TCP-Flow wird in einer eigenen Datei gespeichert. Somit wird der typische TCP-Flow in zwei Dateien gespeichert, eine für jede Richtung. tcpflow kann auch gespeicherte 'tcpdump'-Paketflüsse verarbeiten.
tcpflow speichert alle erfassten Daten in Dateien mit Namen der Form:
[timestampT]sourceip.sourceport-destip.destport[--VLAN][cNNNN]
wobei: timestamp ein optionaler Zeitstempel des Zeitpunkts ist, an dem das erste Paket gesehen wurde T ein Trennzeichen ist, das angibt, dass ein Zeitstempel bereitgestellt wurde sourceip die Quell-IP-Adresse ist sourceport der Quellport ist destip die Ziel-IP-Adresse ist destport der Zielport ist VLAN der VLAN-Port ist c ein Trennzeichen ist, das angibt, dass mehrere Verbindungen vorhanden sind NNNN ein Verbindungszähler ist, wenn mehrere Verbindungen mit der gleichen [Zeit]/Quell-IP/Quellport/Ziel-IP/Zielport-Kombination vorhanden sind. Beachten Sie, dass die Verbindungszählung selten auftritt, wenn Zeitstempel-Präfixe verwendet werden.
HIER sind einige Beispiele:
128.129.130.131.02345-010.011.012.013.45103
Der Inhalt der obigen Datei wären Daten, die von Host 128.129.131.131 Port 2345 zu Host 10.11.12.13 Port 45103 übertragen wurden.
128.129.130.131.02345-010.011.012.013.45103c0005
Die sechste Verbindung von 128.129.131.131 Port 2345 zu Host 10.11.12.13 Port 45103.
1325542703T128.129.130.131.02345-010.011.012.013.45103
Eine Verbindung von 128.129.131.131 Port 2345 zu Host 10.11.12.13 Port 45103, die am 2. Januar 2012 um 17:19 Uhr (-0500) begann.
128.129.130.131.02345-010.011.012.013.45103--3
Eine Verbindung von 128.129.131.131 Port 2345 zu Host 10.11.12.13 Port 45103, die auf VLAN-Port 3 gesehen wurde.
Sie können die Vorlage, die zur Erstellung von Dateinamen verwendet wird, mit den Optionen -F und -T ändern. Wenn ein Verzeichnis in der Vorlage erscheint, wird das Verzeichnis automatisch erstellt.
Wenn Sie die Option -a verwenden, interpretiert tcpflow automatisch HTTP-Antworten.
Wenn die Ausgabedatei
208.111.153.175.00080-192.168.001.064.37314
ist, erstellt die Nachbearbeitung die Dateien:
208.111.153.175.00080-192.168.001.064.37314-HTTP
208.111.153.175.00080-192.168.001.064.37314-HTTPBODY
Wenn der HTTPBODY mit GZIP komprimiert war, erhalten Sie möglicherweise auch eine
dritte Datei:
208.111.153.175.00080-192.168.001.064.37314-HTTPBODY-GZIP
Zusätzliche Informationen über diese Streams, wie z.B. ihr MD5-Hashwert,
werden ebenfalls in die DFXML-Datei geschrieben.
tcpflow ähnelt 'tcpdump', da beide Pakete von der Leitung oder aus einer gespeicherten Datei verarbeiten. Es unterscheidet sich jedoch darin, dass es die tatsächlichen Datenströme rekonstruiert und jeden Fluss zur späteren Analyse in einer separaten Datei speichert.
tcpflow versteht Sequenznummern und rekonstruiert Datenströme korrekt, unabhängig von erneuten Übertragungen oder Lieferungen in falscher Reihenfolge. Allerdings versteht tcpflow derzeit keine IP-Fragmente; Flüsse, die IP-Fragmente enthalten, werden nicht korrekt aufgezeichnet.
tcpflow kann einen zusammenfassenden Bericht im DFXML-Format ausgeben. Diese Datei enthält Informationen über das System, auf dem das tcpflow-Programm kompiliert wurde, wo es ausgeführt wurde, und jeden TCP-Fluss, einschließlich Quell- und Ziel-IP-Adressen und Ports, Anzahl der Bytes, Anzahl der Pakete und (optional) den MD5-Hash jedes Bytestroms.
tcpflow verwendet die LBL Packet Capture Library (verfügbar unter ftp://ftp.ee.lbl.gov/libpcap.tar.Z) und unterstützt daher die gleichen umfangreichen Filterausdrücke wie Programme wie 'tcpdump'. Es sollte unter den meisten gängigen UNIX-Varianten kompilieren; siehe die Datei INSTALL für Details.
tcpflow ist ein nützliches Werkzeug zum Verständnis von Netzwerkpaketflüssen und zur Durchführung von Netzwerkforensik. Im Gegensatz zu Programmen wie WireShark, die viele Pakete oder eine einzelne TCP-Verbindung anzeigen, kann tcpflow Hunderte, Tausende oder Hunderttausende von TCP-Verbindungen im Kontext darstellen.
Eine häufige Verwendung von tcpflow besteht darin, die Inhalte von HTTP-Sitzungen offenzulegen. Mit tcpflow können Sie über HTTP heruntergeladene Webseiten rekonstruieren. Sie können sogar Malware extrahieren, die als 'Drive-by-Downloads' ausgeliefert wird.
Jeremy Elson schrieb dieses Programm ursprünglich, um die Daten zu erfassen, die von verschiedenen Programmen gesendet werden, die undokumentierte Netzwerkprotokolle verwenden, um diese Protokolle zu reverse-engineeren. RealPlayer (und die meisten anderen Streaming-Media-Player), ICQ und AOL IM sind gute Beispiele für diese Art von Anwendung. Später wurde es für die HTTP-Protokollanalyse verwendet.