Blue Flower

Tshark permet de :

  • réaliser des captures réseau en ligne de commande
  • lire un fichier de capture réseau

sudo tshark -D permet de lister les interfaces que l'on peut écouter

sudo tshark affiche à l'écran les paquets capturés sur l'interface numéro 1

sudo tshark -T fields -e frame.number -e ip.src -e ip.dst -e ip.len affiche à l'écran le numéro de trame, l'ip src, l'ip destination et la longueur du paquet IP

Capturer dans un fichier pcap

touch maCapture.pcap
chmod o=rw maCapture.pcap # cette ligne et la ligne qui précède sont nécessaires, sinon, pour une raison inconnu, on aura une erreur "could not be opened: Permission denied" pour créer le fichier maCapture.pcap
sudo tshark -T fields -e frame.number -e ip.src -e ip.dst -w maCapture.pcap # la capture ira dans le fichier maCapture.pcap.

!! Attention, ce fichier ne contiendra pas seulement les colonnes affichées (frame.number, ip.src, ip.dst).

 

Capture sélective

L'option -f (capture filter) permet de sélectionner les données à capturer.

sudo tshark -f "ip or arp" => permet de ne capturer que les paquets de type IP ou ARP 

 

Affichage sélectif

sudo tshark -f "ip or arp" -Y "ip.src == 192.168.1.6"

 

Affichage formatté

tsudo tshark -f "ip or arp" -T fields -E separator=, -E quote=d -e ip.src -e ip.dst

 

"172.217.18.194","192.168.1.6"

"172.217.18.194","192.168.1.6"

"192.168.1.6","172.217.18.194"

"172.217.18.194","192.168.1.6"

 

 

Lire depuis un fichier pcap

Lire un pcap

tshark -r maCapture.pcap # affiche le fichier pcap, uniquement les colonnes principales


1 12:54:58,838325659 2001:861:3a02:dff0:a433:c73d:ae9f:672e → 2a00:1450:4007:812::2003 TLSv1.2 125 2 12:54:58,857405445 2a00:1450:4007:812::2003 → 2001:861:3a02:dff0:a433:c73d:ae9f:672e TCP 86 3 12:54:58,858259678 2a00:1450:4007:812::2003 → 2001:861:3a02:dff0:a433:c73d:ae9f:672e TLSv1.2 126 4 12:54:58,901022717 2001:861:3a02:dff0:a433:c73d:ae9f:672e → 2a00:1450:4007:812::2003 TCP 86 5 12:54:59,169301812 Netgear_cc:e9:e6 → Broadcast HomePlug AV 60

Lire une ligne spécifique du pcap

tshark -r maCapture.pcap -Y frame.number==61 # lit le fichier maCapture.pcap et affiche seulement la frame 61 

 

Filltrer le pcap et mettre le résultat dans un nouveau pcap

Dans l'exemple, on s'intéresse à tous les paquets dont l'IP source est 192.168.1.6

 tshark -r maCapture.pcap -w maCaptureSrcSpecifique.pcap ip.src == 192.168.1.6

 

Analyser un fichier pcap avec Python via Pyshark

 

import pyshark

cap = pyshark.FileCapture('maCapture.pcap')

i=0
for pkt in cap:
    print("==================%d=========================" % i)
    print(pkt)
    i+=1
pkt=cap[58]
print(pkt)
print(f"IP.src:{pkt['ip'].src}, IP.dst:{pkt['ip'].dst}")

....

==================65=========================

Packet (Length: 60)

Layer ETH:

Destination: ff:ff:ff:ff:ff:ff

Address: ff:ff:ff:ff:ff:ff

....

IP.src:54.149.19.17, IP.dst:192.168.1.6

 

 

 

La MIB présente de façon hiérarchique des grandeurs associées à un équipements (date de démarrage, nombre de paquets reçus, ...). Les grandeurs sont référencées via un numéro nommé OID.

Certains fabricants tel CISCO fournissent leur propre MIB.

Le protocole SNMP permet d'accéder à la MIB d'un équipement.

 

Installation

# installs SNMP package:
sudo apt-get install snmp

# downloads common SNMP MIBs:
sudo apt-get install snmp-mibs-downloader

# tells Ubuntu to load SNMP MIB files:
sudo sed -i 's/mibs :/# mibs :/g' /etc/snmp/snmp.conf

Récupération d'un élément  avec snmpget

Exemple avec la version 2 de SNMP.

Ici, on récupère le nom du PC

snmpget -c public -v 2c -On 127.0.0.1 .1.3.6.1.2.1.1.5.0
.1.3.6.1.2.1.1.5.0 = STRING: PC-thierry

Récupération d'un ensemble d'élément avec snmpwalk

Récupération en fournissant l'OID via sa valeur numérique

snmpwalk -v 2c -c public -On localhost .1.3.6.1.2.1.1 (noeud qui contient la feuille représentant le nom du PC)

.1.3.6.1.2.1.1.1.0 = STRING: Linux PC-thierry 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10
.1.3.6.1.2.1.1.3.0 = Timeticks: (1109970) 3:04:59.70
.1.3.6.1.2.1.1.4.0 = STRING: Me <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
.1.3.6.1.2.1.1.5.0 = STRING: PC-thierry
.1.3.6.1.2.1.1.6.0 = STRING: Sitting on the Dock of the Bay
.1.3.6.1.2.1.1.7.0 = INTEGER: 72
.1.3.6.1.2.1.1.8.0 = Timeticks: (80) 0:00:00.80
.1.3.6.1.2.1.1.9.1.2.1 = OID: .1.3.6.1.6.3.11.3.1.1
.1.3.6.1.2.1.1.9.1.2.2 = OID: .1.3.6.1.6.3.15.2.1.1
...

 

Récupération en fournissant l'OID via son nom

snmpwalk -v 2c -c public -On localhost system 
.1.3.6.1.2.1.1.1.0 = STRING: Linux PC-thierry 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10
.1.3.6.1.2.1.1.3.0 = Timeticks: (3942135) 10:57:01.35
.1.3.6.1.2.1.1.4.0 = STRING: Me <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.>
.1.3.6.1.2.1.1.5.0 = STRING: PC-thierry 
...

Connaître le nom d'un OID

 Exemple pour savoir la signification de l'OID .1.3.6.1.2.1.1.1.0 qui vaut PC-thierry

snmptranslate .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0

 

 snmptranslate -Of SNMPv2-MIB::sysUpTime.0
.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance 

 

snmptranslate -On -Td SNMPv2-MIB::sysUpTime
.1.3.6.1.2.1.1.3
sysUpTime OBJECT-TYPE
  -- FROM SNMPv2-MIB
  SYNTAX TimeTicks
  MAX-ACCESS read-only
  STATUS current
  DESCRIPTION "The time (in hundredths of a second) since the

            network management portion of the system was last
            re-initialized."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 3 } 

Les filtres de base

ip.addr == a.b.c.d => filtre les IPv4 dont la source ou la destination est a.b.c.d

ip.addr == a.0.0.0/8 => filtre les IPv4 dont la source ou la destination est a pour le premier octet de l'adresse

tcp.srcport == 21 => filtre les paquets dont le port source est 21 (ftp)

tcp.dstport == 21 => paquets les paquets dont le port destination est 21 (ftp)

!stp => pour ne pas voir les messages de type Spanning Tree

 

Attention

Pour rappel, certains filtres peuvent être trompeurs. Ainsi si on veut tous le trafic concernant par exemple l'IP 192.168.0.254, le filtre est :

ip.addr==192.168.0.254

Ceci est équivalent à

ip.src==192.168.0.254 || ip.dst==192.168.0.254 (ip source égale à 192.168.0.254 ou ip destination égale à 192.168.0.254

ATTENTION, si par contre on souhaite le trafic ne concernant pas 192.168.0.254, le filtre n'est pas

ip.addr!=192.168.0.254 car équivalent à ip.src!=192.168.0.254 || ip.dst!=192.168.0.254

mais

!ip.addr==192.168.0.254 car équivalent à !(ip.src==192.168.0.254 || ip.dst==192.168.0.254)

Cet article présente IPv6 et les problématiques d'intégration d'IPv6 dans IPv4.

Dans cet article, vous trouverez une brève description d'IPSec :

  • IPSec en mode transport
  • IPSec en mode tunnel.

Sous-catégories