Manipulation avancée des fichiers PCAP avec editcap
Sommaire
I. Présentation d'editcap et mergecap
Lors de la manipulation et l'étude de paquets réseaux en tant qu'administrateur systèmes, administrateur réseaux ou même dans le domaine de la sécurité et du forensic, on peut vite être amené à manipuler des fichiers au format PCAP, par exemple pour effectuer des filtres dessus, en fusionner ou en couper en plusieurs petits fichiers. C'est ce que nous allons voir dans ce cours.
Pour rappel, un fichier PCAP est un fichier issu d'un sniffe de flux réseaux (par exemple avec Wireshark ou TCPDump), ce sniff réseaux ayant été traité avec la librairie libpcap qui produit justement un enregistrement au format PCAP (ou PCAPNG parfois). Ces fichiers peuvent alors être transportés, stockés et rouverts plus tard, on voit alors tout l'intérêt de savoir les manipuler avec précisions.
II. Installation d'editcap et de mergecap
Editcap fait partie de l'environnement des outils Wireshark, il permet de lire une grande partie des paquets capturés par Wireshark (ou d'autre application comme TCPDump) à partir d'un fichier, on pourra optionnellement les convertir et les trier selon divers critères et écrire le résultat dans un nouveau fichier au format PCAP. L'utilisation typique est le fait d'avoir un gros fichier PCAP dont on souhaite filtrer le contenu pour l'écrire dans un nouveau fichier à part.
Mergecap est un outil complémentaire d'Editcap qui n'interviendra que pour une utilisation particulière : la fusion de plusieurs fichiers au format PCAP.
Editcap et Mergecap seront donc présents sur votre système Linux dès que vous installerez Wireshark, si vous souhaitez tout de même n'installer que editcap et mergecap, ceux-ci sont contenus dans le paquet "Wireshark-common", pour Debian et Ubuntu :
apt-get install wireshark-common
Pour CentOS/RHEL, il faut passer par l'installer de Wireshark directement :
yum install wireshark
Editcap est un outil très complet, bien que nous ne verrons que quelques une de ses fonctionnalités dans ce cours.
III. Couper un fichier PCAP
Nous allons tout d'abord voir comment couper un fichier PCAP. On va simplement mettre en entrée un fichier PCAP puis obtenir un second fichier PCAP à partir de celui-ci en lui appliquant une règle spécifique qui peut, par exemple, être un certain nombre de paquets ou un temps défini. Il peut parfois être pratique de savoir comment couper un très gros fichier PCAP en plusieurs fichiers plus petits pour les faire analyser par plusieurs personnes par exemple. Voici la syntaxe générale d'editcap dans ce contexte :
editcap -c <paquets-par-fichiers> <fichier-pcap-entrée> <préfixe-fichier-pcap-sortie>
Plus clairement, voici comment utiliser editcap avec un fichier PCAP si on souhaite le couper en plusieurs fichiers de 10 000 paquets :
editcap -c 10000 capture.pcap capture-partie
Je mets donc avec l'option "-c" ("count") le nombre de paquets par fichier, ensuite le fichier à lire ("capture.pcap") puis le préfixe des fichiers en sortie, soit "capture-partie", la suite du nom des fichiers sera complétée automatiquement par editcap. En sortie, avec un fichier PCAP de 73 000 paquets, voici ce que j'aurai :
J'ai donc bien 7 fichiers de 10 000 paquets au format PCAP, quelle précision !
On peut aussi effectuer un découpage chronologique, c'est à dire en fonction de la durée de la capture initiale. Voici la syntaxe générale :
editcap -i <secondes-par-fichiers> <fichier-pcap-entrée> <préfixe-fichier-pcap-sortie>
Par exemple si l'on souhaite effectuer un découpage pour avoir des fichiers contenant 60 secondes de capture chacun, on utilisera la commande suivante :
editcap -i 60 capture.pcap capture-partie
Nous aurons donc en sortie un résultat similaire à celui précédent sauf que nous aurons cette fois-ci des fichiers correspondant à 60 secondes de capture chacun.
IV. Fusionner des fichiers PCAP
Nous allons maintenant voir comment fusionner des fichiers au format PCAP, on peut par exemple avoir besoin de cette manipulation si l'on dispose de plusieurs fichiers PCAP obtenus sur des écoutes procédées sur des machines différentes que l'on souhaite analyser en même temps. Supposons que l'on dispose d'un fichier capture1.pcap, d'un fichier capture2.pcap et d'un fichier capture3.pcap. On va vouloir fusionner les trois dans un fichier capture-123.pcap :
merge capture-123.pcap capture1.pcap capture2.pcap capture3.pcap
On se retrouvera donc avec le fichier capture-123.pcap contenant les paquets des trois autres.
V. Filtrer le contenu d'un fichier PCAP
Nous allons maintenant voir une utilisation un peu plus avancée de l’outil editcap. On va en effet chercher à ouvrir un fichier PCAP, filtrer son contenu, puis écrire ce qui est sorti du filtre dans un nouveau fichier.
On peut par exemple avec editcap effectuer un filtre sur une fenêtre de temps très précise. Si j'effectue un enregistrement du trafic réseau permanent que j'enregistre dans un fichier PCAP, puis que je souhaite récupérer ce qu'il s'est passé entre 21:14:00 et 21:15:00 le 3 février 2015, on pourra utiliser la ligne de commande suivante :
editcap -A '2015-03-02 21:14:00' -B '2015-03-02 21:15:00' capture-input.pcap capture-sortie.pcap
J'aurais donc dans le fichier "capture-sortie.pcap" les paquets reçus et émis dans la fenêtre de temps précisée grâce à l'option "-A" pour la date de début et "-B" pour la date de fin.
Note : Attention à bien utiliser le bon format de date, à savoir "AAAA-MM-DD HH:MM:SS"
Également, on pourra très facilement extraire un nombre précis de paquets dans une capture au format PCAP. Par exemple si l'on souhaite extraire les paquets du numéro 1500 au numéro 1700 :
editcap apture-input.pcap capture-sortie.pcap 1500-1700
Nous avons ici vu différents contextes d'utilisation des outils editcap et mergecap qui font partie de la suite Wireshark, ceux-ci peuvent être utilisés dans nombre d'autres contextes, mais la construction des syntaxes ressemblera à ce que l'on a vu ici.
Bonjour
Merci pour cette documentation très bien détaillée.
Je développe avec WinDev et dois récupérer des trames de pesées qu’une balance envoie sur un port éthernet. Existe-t-il un logiciel qui convertisse un fichier pcap en fichier txt (ou autre format ASCII) avec une ligne de commande ?
Merci pour votre aide.