Ipdecap: supprimer l'encapsulation de paquets pcap

[English version] (/ipdecap) us flag

Présentation

Ipdcap est un outil permettant de “désencapsuler” les paquets encapsulés par les protocoles GRE, IPIP, 6in4 ou ESP (Ipsec), et peut également supprimer les entêtes IEEE 802.1Q (virtual lan)

Les paquets sont lus depuis un fichier pcap, éventuellement déchiffrées (ESP), puis écrits dans un autre fichier pcap.

Les buts recherchés sont:

  • Extraire les flux réseaux encapsulés pour les soumettre à des outils tcp conventionnels (tcptrace, tcpflow, …)
  • Réduire la taille d’un fichier pcap en supprimant le protocole d’encapsulation

A l’origine ipdecap a été écrit pour étudier un flux tcp traversant un tunnel IPSec, sans intervenir sur les équipements d’entrée et de sortie du tunnel.

Téléchargement

Dévelopement

  • Projet GitHub pour les patchs, bugs, …
  • Si possible, fournissez le fichier pcap ou la configuration ESP utilisé

Illustrations

GRE packet
+----------------+
| IP header |
+----------------+
| GRE header |
+----------------+
|+--------------+| +--------------+
|| IP header || | IP header |
|+--------------+| +-------ipdecap--------> +--------------+
|| Payload || | Payload |
|+--------------+| +--------------+
+----------------+


IPSec packet (tunnel mode)
+----------------+
| IP header |
+----------------+
| ESP header |
+----------------+
|+--------------+| +--------------+
|| IP header || | IP header |
|+--------------+| +-------ipdecap--------> +--------------+
|| Payload || | Payload |
|+--------------+| +--------------+
+----------------+
| ESP trailer |
+----------------+
| ESP auth |
+----------------+

Vu par Wireshark, avant et après traitement par ipdecap: [id_wireshark_thumb]: /images/wireshark_thumb.png [id_wireshark]: /images/wireshark.png [![wireshark][id_wireshark_thumb]][id_wireshark]

  • bleu Métadonnées pcap + entête ethernet: copiés vers le paquet final
  • rouge Protocole d’encapsulation (ici ESP): supprimé
  • vert Charge utile (ici paquet tcp), déchiffré (clés nécessaires) puis copié vers le paquet final

Utilisation

En ligne de commande:

  • Un fichier pcap en entrée
  • Un fichier pcap de sortie
  • Un fichier de configuration, contenant les informations nécessaires au déchiffrement de protocoles d’encapsulation comme ESP
  • Eventuellement un filtre au format bpf limitant les paquets à traiter.
Ipdecap 0.5, decapsulate GRE, IPIP, 6in4, ESP packets, remove 802.1Q header - Loic Pefferkorn
Usage
ipdecap [-v] [-l] [-V] -i input.cap -o output.cap [-c esp.conf] [-f ]
Options:
-c, --conf configuration file for ESP parameters (IP addresses, algorithms, ... (see man ipdecap)
-h, --help this help message
-i, --input pcap file to process
-o, --output pcap file with decapsulated data
-f, --filter only process packets matching the bpf filter
-l, --list list availables ESP encryption and authentication algorithms
-V, --version print version
-v, --verbose verbose
  • Pour traiter les protocoles GRE, IPIP, 6in4 et 802.1Q, seuls les paramètres -i et -o sont obligatoires.

Exemples

  • Enlever l’encapsulation GRE des paquets lus depuis gre.cap, écrire les paquets dans sortie.cap

    $ ipdecap -i entree_gre.cap -o sortie.cap

  • Enlever l’encapsulation ESP, configuration dans le fichier esp.conf

    $ ipdecap -i esp.cap -o output.cap -c esp.conf

  • Enlever l’encapsulation IPIP, mais seulement pour le traffic entre 192.168.2.100 and 192.168.2.101

    $ ipdecap -i ipip.cap -o output.cap -f "src 192.168.2.100 and dst 192.168.2.101"

Fichier de configuration ESP

  • C’est un fichier texte contenant les informations nécessaires au déchiffrements du protocole ESP (IPs, algorithmes, clés, spi, hôtes)

Format

  • Une ligne par flux

    ip_a ip_b algorithme-chiffrement algorithme-auth-clé-hexadécimal spi-hexadécimal

  • Le séparateur est une espace ou une tabulation.

Exemples

  • Chiffrement avec 3des-cbc, authentification par hmac-sha1, entre 192.168.0.1 et 192.168.0.9, déchiffrement bi-directionnel
    192.168.0.1 192.168.0.9 3des-cbc hmac_sha1-96 0x621b2908eb34d1e99198dd889d3deca765311a0867baf785 0x0e021431
    192.168.0.9 192.168.0.1 3des-cbc hmac_sha1-96 0x1b88f80580e87106d776cb1bfe051509e690826480f72cef 0x066a6d95

Installation

Dépendances

Compilation

Il n’y a actuellement pas de paquets disponibles, il faut compiler ipdecap depuis les sources:

wget https://loicpefferkorn.net/ipdecap/ipdecap-0.7.tar.gz
tar xvzf ipdecap-0.7.tar.gz
cd ipdecap-0.7
sh autogen.sh
./configure
make
make install

Notes

Ipdecap a été testé sur un nombre limité de captures, je serai très content d’avoir vos retours !

Limitations

  • Pas de support de l’ESP en mode transport

Protocoles supportés

Encapsulation

  • GRE
  • IPIP
  • 6in4 (IPv6 encapsulé dans de l’IPv4)
  • ESP (ipsec, mode tunnel)

Algorithmes ESP

  • (crypt) des-cbc 3des-cbc aes128-cbc aes128-ctr null_enc
  • (auth) hmac_md5-96 hmac_sha1-96 aes_xcbc_mac-96 null_auth any96 any128 any160 any192 any256 any384 any512

Plate-formes testées

  • Linux i686/amd64
  • FreeBSD-9.2 - amd64

Récupération des paramètres ESP

Freebsd

$ setkey -Da
192.168.2.100 192.168.2.101 <---- 192.168.2.100 192.168.2.101
esp mode=tunnel spi=91789053(0x057896fd) reqid=0(0x00000000) <---- 0x057896fd
E: 3des-cbc 6ca63e7e 4473684e 93b4868e 0ff41562 ba06f7d1 86ef2922 <---- 3des-cbc 0x6ca63e7e4473684e...
A: hmac-sha1 0dc52bea 9666ac07 41014f3e 345ebd33 3d6ab85f <---- hmac-sha1
seq=0x000c06d3 replay=4 flags=0x00000000 state=mature
created: Apr 5 22:20:37 2012 current: Apr 5 22:43:29 2012
diff: 1372(s) hard: 36000(s) soft: 28800(s)
last: Apr 5 22:43:29 2012 hard: 0(s) soft: 0(s)
current: 87237648(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 788179 hard: 0 soft: 0
sadb_seq=1 pid=1246 refcnt=2
192.168.2.101 192.168.2.100
esp mode=tunnel spi=87014357(0x052fbbd5) reqid=0(0x00000000)
E: 3des-cbc 33e9b962 a6938efd 4c1dd1df 3f63482f ae254d18 9e329020
A: hmac-sha1 b243f963 df27ed30 a62682d0 8c2617e6 34f8a39f
seq=0x001235b0 replay=4 flags=0x00000000 state=mature
created: Apr 5 22:20:37 2012 current: Apr 5 22:43:29 2012
diff: 1372(s) hard: 36000(s) soft: 28800(s)
last: Apr 5 22:43:29 2012 hard: 0(s) soft: 0(s)
current: 1628123122(bytes) hard: 0(bytes) soft: 0(bytes)
allocated: 1193392 hard: 0 soft: 0
sadb_seq=0 pid=1246 refcnt=1

Le fichier de configuration ESP peut être généré depuis la sortie de setkey -Da avec le script fourni sadb2conf.awk.
  $ setkey -Da | ./sadb2conf.awk > configuration.file

Auteur

Loïc Pefferkorn loic-ipdecap@ at this site