
Démultiplexeur de paquets TCP/IP. Télécharger depuis :
Répertoire de téléchargement : http://digitalcorpora.org/downloads/tcpflow/
La plupart des distributions GNU/Linux courantes incluent tcpflow dans leurs dépôts. Ainsi, sur Debian/Ubuntu/etc, vous pouvez taper :
sudo apt-get install tcpflow
et sur Fedora/RedHat/CentOS/etc, vous pouvez taper :
sudo dnf install tcpflow
Et voilà. Si cela ne vous convient pas pour une raison quelconque, vous pouvez compiler à partir des sources :
Pour compiler sous Linux
Assurez-vous de disposer des prérequis nécessaires. Il existe des fichiers dans le répertoire racine qui le feront pour vous, en fonction de votre système d'exploitation hôte :
CONFIGURE_ARCH_17_8.sh CONFIGURE_FEDORA_18.sh CONFIGURE_FEDORA_26.sh CONFIGURE_UBUNTU_16_04.sh
Selon votre OS, exécutez simplement :
# sudo bash CONFIGURE_<VOTRE_OS>.sh
Une fois votre OS configuré, compilez et installez avec :
./configure
make
sudo make install
Si vous souhaitez télécharger l’arbre de développement avec git, assurez-vous de faire un checkout complet avec --recursive, puis exécutez bootstrap.sh, configure et make :
git clone --recursive https://github.com/simsong/tcpflow.git
cd tcpflow
bash bootstrap.sh
./configure
make
sudo make install
Pour télécharger et compiler pour Amazon AMI :
ssh ec2-user@<votre_instance_ec2>
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
Pour compiler pour Windows avec mingw sous Fedora Core :
yum -y install mingw64-gcc mingw64-gcc-c++ mingw64-boost mingw64-cairo mingw64-zlib
mingw64-configure
make
Pour utiliser CMake, voir les instructions détaillées : cmake/README.md
À partir d’un dépôt propre en tant qu’utilisateur normal (pas root) :
./bootstrap.sh # Génère le fichier ./configure
./configure # Génère le fichier tcpflow.spec
rpmbuild -bb tcpflow.spec --build-in-place
Vérifiez le specfile et le RPM obtenu :
rpmlint tcpflow.spec
rpmlint ~/rpmbuild/RPMS/x86_64/tcpflow-....rpm
Installation :
sudo dnf install ~/rpmbuild/RPMS/x86_64/tcpflow-....rpm
tcpflow est un programme qui capture les données transmises dans le cadre de connexions TCP (flux) et les stocke d'une manière pratique pour l'analyse de protocole et le débogage. Chaque flux TCP est stocké dans son propre fichier. Ainsi, le flux TCP typique sera stocké dans deux fichiers, un pour chaque direction. tcpflow peut également traiter des flux de paquets 'tcpdump' déjà enregistrés.
tcpflow stocke toutes les données capturées dans des fichiers dont les noms sont de la forme :
[timestampT]sourceip.sourceport-destip.destport[--VLAN][cNNNN]
où : timestamp est un horodatage optionnel du moment où le premier paquet a été vu T est un délimiteur indiquant qu'un horodatage a été fourni sourceip est l'adresse IP source sourceport est le port source destip est l'adresse IP de destination destport est le port de destination VLAN est le port VLAN c est un délimiteur indiquant que plusieurs connexions sont présentes NNNN est un compteur de connexions, lorsqu'il y a plusieurs connexions avec la même combinaison [temps]/sourceip/sourceport/destip/destport. Notez que le comptage de connexions se produit rarement lorsque le préfixe d'horodatage est utilisé.
VOICI quelques exemples :
128.129.130.131.02345-010.011.012.013.45103
Le contenu du fichier ci-dessus correspondrait aux données transmises de l'hôte 128.129.131.131 port 2345, vers l'hôte 10.11.12.13 port 45103.
128.129.130.131.02345-010.011.012.013.45103c0005
La sixième connexion de 128.129.131.131 port 2345, vers l'hôte 10.11.12.13 port 45103.
1325542703T128.129.130.131.02345-010.011.012.013.45103
Une connexion de 128.129.131.131 port 2345, vers l'hôte 10.11.12.13 port 45103, démarrée à 17h19 (-0500) le 2 janvier 2012.
128.129.130.131.02345-010.011.012.013.45103--3
Une connexion de 128.129.131.131 port 2345, vers l'hôte 10.11.12.13 port 45103, observée sur le port VLAN 3.
Vous pouvez modifier le modèle utilisé pour créer les noms de fichiers avec les options -F et -T. Si un répertoire apparaît dans le modèle, celui-ci sera créé automatiquement.
Si vous utilisez l'option -a, tcpflow interprétera automatiquement les réponses HTTP.
Si le fichier de sortie est
208.111.153.175.00080-192.168.001.064.37314,
Alors le post-traitement créera les fichiers :
208.111.153.175.00080-192.168.001.064.37314-HTTP
208.111.153.175.00080-192.168.001.064.37314-HTTPBODY
Si le HTTPBODY était compressé avec GZIP, vous pouvez également obtenir un
troisième fichier :
208.111.153.175.00080-192.168.001.064.37314-HTTPBODY-GZIP
Des informations supplémentaires sur ces flux, comme leur valeur de hachage MD5,
sont également écrites dans le fichier DFXML.
tcpflow est similaire à 'tcpdump', dans le sens où les deux traitent des paquets provenant du réseau ou d'un fichier stocké. Mais il est différent car il reconstruit les flux de données réels et stocke chaque flux dans un fichier séparé pour une analyse ultérieure.
tcpflow comprend les numéros de séquence et reconstruira correctement les flux de données quelles que soient les retransmissions ou les livraisons hors séquence. Cependant, tcpflow ne comprend actuellement pas les fragments IP ; les flux contenant des fragments IP ne seront pas enregistrés correctement.
tcpflow peut générer un rapport récapitulatif au format DFXML. Ce fichier comprend des informations sur le système sur lequel le programme tcpflow a été compilé, où il a été exécuté, ainsi que sur chaque flux TCP, y compris les adresses IP source et destination et les ports, le nombre d'octets, le nombre de paquets et (optionnellement) le hachage MD5 de chaque flux d'octets.
tcpflow utilise la bibliothèque de capture de paquets LBL (disponible à ftp://ftp.ee.lbl.gov/libpcap.tar.Z) et supporte donc les mêmes expressions de filtrage riches que des programmes comme 'tcpdump'. Il devrait se compiler sous la plupart des versions courantes d'UNIX ; voir le fichier INSTALL pour plus de détails.
tcpflow est un outil utile pour comprendre les flux de paquets réseau et effectuer des analyses forensiques réseau. Contrairement à des programmes comme WireShark, qui montrent beaucoup de paquets ou une seule connexion TCP, tcpflow peut montrer des centaines, des milliers ou des centaines de milliers de connexions TCP en contexte.
Une utilisation courante de tcpflow est de révéler le contenu des sessions HTTP. Avec tcpflow, vous pouvez reconstruire des pages web téléchargées via HTTP. Vous pouvez même extraire des logiciels malveillants livrés sous forme de 'téléchargements furtifs'.
Jeremy Elson a initialement écrit ce programme pour capturer les données envoyées par divers programmes utilisant des protocoles réseau non documentés, dans le but de rétro-ingénierie de ces protocoles. RealPlayer (et la plupart des autres lecteurs de streaming multimédia), ICQ et AOL IM sont de bons exemples de ce type d'application. Il a ensuite été utilisé pour l'analyse du protocole HTTP.
Simson Garfinkel a fondé Sandstorm Enterprises en 1998. Sandstorm a créé un programme similaire à tcpflow appelé TCPDEMUX et une autre version du programme appelée NetIntercept. Ces programmes sont commerciaux. Après avoir quitté Sandstorm, Simson avait besoin d'un programme de réassemblage de flux TCP. Il a trouvé tcpflow et en a assuré la maintenance.
Veuillez signaler les bogues sur le traqueur de problèmes github
tcpflow ne comprend actuellement pas les fragments IP. Les flux contenant des fragments IP ne seront pas enregistrés correctement. La fragmentation IP est un événement de plus en plus rare, cela ne semble donc pas être un problème significatif.
Si vous rédigez un article sur tcpflow, veuillez citer notre rapport technique :
Simson L. Garfinkel [email protected]
Je continue de porter bulk_extractor, tcpflow, be13_api et dfxml vers le C++ moderne. Après avoir examiné les normes, j'ai décidé d'opter pour C++17 plutôt que C++14, car le support de 17 est maintenant largement répandu. (Je n'ai probablement pas besoin de 20). Je reste avec autotools, bien qu'il semble y avoir une forte raison de migrer vers CMake. Je conserve be13_api et dfxml en tant que modules inclus, à la manière de Python, plutôt que d'en faire des bibliothèques autonomes liées. Je ne suis pas sûr à 100% que ce soit la bonne décision, cependant.
Le projet prend plus de temps que prévu car j'effectue également une refactorisation générale du code. Ce qui prend du temps, c'est de comprendre comment démêler tous les objets C++ liés aux options et à la configuration de l'analyseur.
Étant donné que tcpflow et bulk_extractor utilisent tous deux be13_api, mon attention s'est déplacée vers l'utilisation de tcpflow pour rendre be13_api opérationnel, car c'est un programme plus simple. J'en suis maintenant aux trois quarts environ. Je prévois d'avoir quelque chose de terminé avant la fin de 2020.
--- Simson Garfinkel, 18 octobre 2020
Merci à :