samedi 3 octobre 2015

Capture sur réseau filaire

Comment capturer des flux sur un réseau filaire ?

Tôt ou tard, lors de pentest ou reverse engineering de boite noire, il est nécessaire de capturer des flux sur un réseau filaire. Depuis un système informatique, il suffit de faire la capture tout simplement.

Quand il s’agit de capturer le flux, sur un réseau filaire, d’un périphérique matériel comme un routeur ou switch, ou un dispositif multimédia comme une Set-Top-Box ou une SmartTV ou encore de systèmes plus particuliers comme une box domotique ou une Femtocell, il faut disposer d’un équipement spécifique. 


Les équipements sur le marché

Traditionnellement, il faut utiliser un TAP réseau, spécifiquement dédié à l’interception, mais ces appareils sont coûteux.. Un TAP économique ne permet de rediriger qu’un simplex (un sens de trafic) sur un autre port ce qui s’avère inexploitable dans la pratique.J'en possède un qui ne me sert à rien...

Autrefois, un simple hub, donc la caractéristique est d’être un répéteur multi-port, était utilisé pour écouter tout le trafic, simplement en se connectant sur un port. J'ai deux vieux hub FastEthernet que j'utilise fréquemment et que j'ai gardé précieusement. Mais aujourd'hui, je dois de plus en plus souvent capturer des flux sur des interfaces GigaEthernet

Le marché ne propose plus que des commutateurs (switch), parfois improprement appelés Hub par le service Marketing du fabricant ou du vendeur. Malheureusement, le fonctionnement d’un switch est basé sur une matrice qui commute les trames d’un port à l’autre, améliorant la bande passante disponible pour chaque port, mais en isolant les différents trafics. Ce principe est donc incompatible avec l’interception. 

Pour résoudre ce problème de capture, il faut disposer d’un swicht professionnel, qui offre des fonctions de port mirroring. Le port mirroring permet de dupliquer un trafic d’un port vers un port dédié à la capture.

Sur Internet, il y a de vieux Hubs d’occasion, mais ceux-ci ne supporte généralement pas de GigaEthernet, et sont parfois des équipements avec 8 ou 16 ports plutôt encombrant. Quoi qu'il en soit, ils restent difficiles à trouver aujourd'hui. J'en ai acquis deux en 2007 et déjà ils étaient rares.

Les modèles entrée de gamme de switch 5 ports GigaEthernet (RJ45) chez Cisco ou HP, qui disposent de port mirroring sont dans des gammes de prix allant de 200 à 300 €. Dualcomm propose quelques produits 5 ports GigaEthernet supportant du port mirroring dans une gamme de prix de 150 à 170 $, mais ils sont difficiles à acheter. CyberData a des dispositifs avec juste 3 ports pour du mirroring aux environs de 120 à 130 $. Je n'en ai jamais eu entre les mains.

Dans la gamme professionnel, chez Netgear, il y a la gamme ProSafe, dont le switch 5 ports GigaEthernet GS105Ev2 supporte le port mirroring. Il est disponible à la vente chez quelques enseignes pour ~30 € hors frais de port.


Capturer le flux avec Linux

Enfin, par souci d’exhaustivité, il est possible d’utiliser un PC sous Linux et de capturer le trafic en activant le forwarding IP. Le PC est alors un routeur. Sinon, avec du ARP poisoning, il est possible d'acheminer le trafic vers la station d'écoute en usurpant la passerelle par défaut. Une autre méthode au niveau de la couche 2 est de faire du du bridging avec deux interfaces réseaux pour intercepter le trafic sur le système hôte Linux. Dans tous ces cas de figure, le trafic est intercepté mais peut aussi être altéré en espace utilisateur. 

Il m’est arrivé aussi de positionner une règle iptable sur un routeur OpenWRT pour dupliquer le trafic d'une IP source vers l'IP de la station d’écoute. Un petit routeur OpenWRT ou DD-WRT économique et peu encombrant fait l’affaire. Cela a été quelque fois un mode opératoire en l'absence de switch pro.


Le switch Netgear ProSafe GS105Ev2


J’ai déjà évoqué ce switch Netgear ProSafe économique. J’en ai acquis un pour disposer d’un équipement dédié, à faible encombrement, pour m’accompagner lors de pentests.

L'inconvénient de ce switch est qu’il n’est manageable que depuis Windows. En effet, il faut installer l’utilitaire Netgear, qui s’appuie sur Adobe Air et requiert aussi l’installation de WinPCAP.

Cet outil Netgear procède à une découverte des switchs sur le LAN et les affiche dans son interface graphique. Ensuite, il suffit de choisir le switch à manager parmi ceux découverts. Il est possible d’assigner un nom à l’équipement, de changer son mot de passe (password par défaut) et de définir sa configuration IP (DHCP ou statique). Il supporte la gestion de QoS et de VLAN mais surtout, un onglet permet de définir le port mirroring en cochant le(s) port(s) source(s) à écouter et le port de destination (celui auquel se connecte l’ordinateur d’interception).  


Interface de découverte de switch
L’avantage est que lorsque la configuration est faite, elle est stockée en mémoire non volatile et permet de se passer de Windows et du soft propriétaire. Un accès SSH, telnet ou même HTTP aurait été plus judicieux que d'installer un outil exotique… 

Port mirroring du port 5 vers 1

Côté avantage du produit, j’ai défini un mirroring permanent du port 1 vers le port 5. Il suffit de connecter l’équipement à écouter sur le port 1, et la station d’écoute sur le port 5 pour capturer le trafic. La capture fonctionne bien et supporte Ethernet en 10/100/1000. Les diodes frontales indiquent la présence de trafic par clignotement et la configuration du port avec un code sur 2 diodes pour Ethernet / FastEthernet / GigaEthernet.

Projet ngadmin pour Linux

En capturant les échanges, on découvre des paquets qui comportent la chaîne “NSDP” (Netgear Switch Dicovery Protocol), il s'agit d'un protocole de gestion de périphérique réseau conçu par Netgear. Un projet Open Source pour Linux existe, il s'agit de ngadmin. Il est accessible via git. Voici les instructions pour le build manquantes sur le package du site :
$ git clone http://git.darkcoven.tk/c/ngadmin.git
$ cd ngadmin
$ autoreconf -i
$ ./configure
$ make
$ sudo make install

$ sudo ldconfig

Apparemment, le code a changé de place avec un script autogen.sh  :

git clone https://github.com/Alkorin/ngadmin
$ cd ngadmin
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

Les outils nécessaires pour construire le script configure et les makefiles sont :
$ sudo apt-get install automake m4 autoconf libtool libreadline-dev

Pour le manuel en ligne :
$ man ngcli

Si l'interface âr défaut n'est pas eth0 :
$ ngcli -i <dev>

L'utilisation est plutôt intuitive, il  faut d'abord scanner le réseau pour découvrir les switchs présents, puis configurer le mot de passe avant d'executer la commande login pour le switch avec lequel on souhaite interagir. Après, la commande mirror [disable|set|show] permet de gérer le port mirroring de façon conviviale:
$ ngcli 
> help
Available commands:
bitrate cabletest defaults firmware help igmp list login loop mirror name netconf password ports qos quit restart scan stormfilter tree vlan
> scan
Num Mac               Product  Name       IP           Ports Firmware
0   c0:ff:d4:b7:ab:2f GS105Ev2 gigaswitch 192.168.1.97 5     V1.4.0.2
found 1 switch(es)

> list 
Num Mac               Product  Name       IP           Ports Firmware
0   c0:ff:d4:b7:ab:2f GS105Ev2 gigaswitch 192.168.1.97 5     V1.4.0.2
found 1 switch(es)

> password set password
> login 0 

> mirror show
destination: 5
ports: 1
> mirror set
usage: mirror set <destination port> clone <port1> [<port2> ...]
> mirror set 2 clone 3
> mirror show
destination: 2
ports: 3
> quit


Netgear a publié de nouveaux outils et firmware disponible là : https://www.netgear.com/support/product/GS105Ev2.aspx#ProSAFE%20Plus%20Configuration%20Utility%20v2.7.8
Il y a notamment un outil de découverte NSDP disponible pour Mac OS, Windows et Linux (en mode graphique). L'utilitairer de configuration reste uniquement sous Windows.

La doucmentation est disponible là : https://www.netgear.com/support/product/GS105Ev2.aspx#docs

Mode batch

La commande en ligne permet d'interprèter un fichier batch contenant une liste de commande. le script shell suivant montre un exemple.

$ cat ng-config-ls.sh
#!/bin/bash

BATCH=cmds.txt

MAC="c0:ff:d4:b7:ab:2f"
PASS="password"
DEV=$(ifconfig | grep -B1 192.168.1 | grep UP | cut -f1 -d':')

# -- Create a batch file containing commands

cat << EOF > $BATCH
name show
firmware show
netconf show
list
ports state
ports statistics show
mirror show
quit
EOF

echo "[*] Display config of Netgear Prosafe switch GS105Ev2 (on dev: $DEV)"
ngcli -i $DEV -m $MAC -p $PASS < $BATCH


Execution:

$ ./ng-config-ls.sh 
[*] Display config of Netgear Prosafe switch GS105Ev2 (on dev: fibre0)
scan... done
login... done
gigaswitch
V1.4.0.2
DHCP : no
IP : 192.168.1.97
Netmask : 255.255.255.0
Gateway : 192.168.1.1
Num Mac Product Name IP Ports Firmware
  0 c0:ff:d4:b7:ab:2f GS105Ev2        gigaswitch                      192.168.1.97        5 V1.4.0.2

found 1 switch(es)
port 1: down
port 2: 1000M full-duplex
port 3: 1000M full-duplex
port 4: 1000M full-duplex
port 5: down
Port             Received                 Sent           CRC errors
   1            862532791          35475805793                    0
   2          19220858434         338862320567                    0
   3         107140899658         272389080547                    0
   4         623058922101         127056668540                    0
   5                    0                    0                    0
port mirroring is disabled



Conclusion

Tout black box hacker doit disposer d’un équipement de capture pour réseau filaire. Ce switch est économique (~30 €) et gigaEthernet, il supporte le port mirroring et possède un faible encombrement permettant de l’emmener partout.

L’inconvénient d'un utilitaire disponible uniquement sous Windows n’est pas un vrai problème car une alternative open source en ligne de commande existe. A défaut, une configurartion statique permet de se sortir de ces contraintes, mais on aurait aimé un accès ssh, telnet ou encore http pour fonctionner avec tout type de station de travail sans devoir installer des logiciels.