guest@6admin.io:~$

Nemesis : forgeur de paquets réseau

Si vous avez lu l’article sur les raw sockets , vous savez forger un SYN à la main en C: remplir les champs, calculer le checksum, envoyer. C’est éducatif et c’est aussi ce que fait Nemesis depuis la ligne de commande en une invocation. Nemesis est un forgeur de paquets générique: TCP, UDP, ICMP, RIP, OSPF, ARP, DNS. Chaque protocole a sa sous-commande, chaque champ de l’en-tête a son option.

L’idée

Un forgeur de paquets, c’est l’inverse de tcpdump: tcpdump lit ce qui passe, Nemesis fabrique ce qui passe. La combinaison des deux est le protocole de test réseau complet: Nemesis forge, tcpdump vérifie ce qui arrive réellement et vous savez ce que votre firewall, votre switch ou votre IDS comprend de ce que vous avez envoyé.

Les exemples qui servent

# Un TCP SYN depuis une IP source arbitraire (spoofed)
nemesis tcp -S 10.0.0.99 -D 192.168.1.100 -y 80 -x 12345 -fS

# Un ICMP echo request de type 8, code 0
nemesis icmp -S 192.168.1.100 -D 10.0.0.1 -i 8

# Un paquet UDP vers le port DNS
nemesis udp -S 192.168.1.100 -D 10.0.0.1 -x 53 -P payload.txt

# Un paquet ARP gratuit (annonce d'adresse MAC)
nemesis arp -S 192.168.1.100 -D 192.168.1.1 -a -d

Chaque sous-commande expose les champs de l’en-tête du protocole en options (-x port source, -y port destination, -fS flag SYN, etc.) et l’option -P injecte un payload depuis un fichier. Le résultat est un paquet exactement conforme à ce que vous avez demandé, pas à ce que votre kernel aurait décidé de faire.

Ce que ça sert en vrai

  • Tester un firewall: un SYN spoofé depuis une IP qui ne devrait pas être autorisée et on voit si le firewall filtre l’IP source ou le port destination.
  • Tester un IDS: un paquet qui matche une signature connue, envoyé à la main et on voit si l’alerte se déclenche.
  • Faire passer un payload dans un réseau qui filtre: le firewall bloque le port 80 TCP? Un paquet UDP vers le port 53 avec un payload DNS custom et on teste la politique de filtrage réelle.

Nemesis ne remplace pas tcpdump et ne remplace pas les raw sockets en C: il occupe le créneau entre les deux. Quand vous savez ce que vous voulez envoyer mais pas encore comment l’écrire en C, Nemesis est l’outil de prototypage. Quand vous savez ce que vous voulez lire mais pas encore ce qui arrive, tcpdump est l’outil de confirmation.