Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dhcpoptinj — Injecteur d'options DHCP | Kitploit
Outils/GitHubGitHub/misje/dhcpoptinj
Sniffing et Analyse de PaquetsSécurité RéseauTests d'IntrusionRed Teaming
GitHubmisje/dhcpoptinj

dhcpoptinj

Injecteur d'options DHCP

Voir le dépôt
431466il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Injecteur d'options DHCP

Build Status Total alerts

Avez-vous déjà voulu intercepter des requêtes DHCP et y insérer quelques options DHCP supplémentaires, à l'insu de l'expéditeur ? Probablement pas. Cependant, si le besoin se présentait, dhcpoptinj vous aidera (espérons-le).

Pourquoi

Il peut y avoir de nombreuses raisons de modifier des requêtes DHCP, même s'il est probable que vous deviez chercher une méthode bien meilleure pour résoudre votre problème. Peut-être n'avez-vous pas accès au serveur/aux clients DHCP et devez-vous modifier leurs options DHCP, peut-être le logiciel DHCP est-il difficile à configurer (ou ne prend-il pas en charge ce que vous voulez faire), peut-être avez-vous une configuration très complexe et/ou particulière, ou peut-être voulez-vous simplement expérimenter l'envoi d'options exotiques ou malformées ? Il y a une petite chance que dhcoptinj puisse réellement être utile.

Comment

dhcpoptinj attend que des paquets arrivent dans une file d'attente netfilter. Il vérifie que le paquet est bien un paquet BOOTP/DHCP, et si c'est le cas, il procède à l'injection d'options. Il recalcule la somme de contrôle de l'en-tête IPv4, désactive la somme de contrôle UDP (pour une implémentation plus simple) puis rend le paquet à netfilter.

Vous avez besoin d'une règle iptables pour intercepter les paquets et les envoyer à dhcpoptinj. Supposons que vous ayez deux interfaces reliées par un pont, eth0 et eth1. Supposons que vous souhaitiez intercepter toutes les requêtes BOOTP provenant de eth0 et injecter l'option d'informations de l'agent relais (82/0x52). Inventons une charge utile idiote : une sous-option d'ID de circuit d'agent avec la valeur "Fjas".

Ajoutez une règle à la table mangle d'iptables :sudo iptables -t mangle -A PREROUTING -m physdev --physdev-in eth0 -p udp --dport 67 -j NFQUEUE --queue-num 42.

Exécutez ensuite dhcpoptinj (exécutons-le en premier plan avec une sortie de débogage supplémentaire) : sudo dhcpoptinj -d -f -q 42 -o'52 01 04 46 6A 61 73'. Notez que dhcpoptinj doit être exécuté par un utilisateur disposant de la capacité CAP_NET_ADMIN. Vous n'avez pas besoin d'exécuter dhcpoptinj en tant que root, et vous ne devriez vraiment pas le faire. Au lieu de cela, vous pouvez par exemple accorder la capacité CAP_NET_ADMIN au binaire (en utilisant setcap) et limiter les droits d'exécution à un utilisateur ou groupe spécifique. C'est une méthode utilisée pour exécuter wireshark sans être root, vous trouverez donc plusieurs guides pour vous aider à y parvenir.

Envoyez maintenant un paquet DHCP à l'interface eth0 et observez-le (à l'aide d'un outil comme wireshark) après avoir été modifié lorsqu'il atteint l'interface pontée. Il devrait avoir l'option injectée à la fin de la liste des options. Si vous capturez le paquet DHCP entrant avec Wireshark, il apparaîtra non modifié bien qu'il soit en réalité modifié.

Notez le format de l'argument de l'option -o : il doit s'agir d'une chaîne hexadécimale commençant par le code de l'option DHCP suivie de la charge utile de l'option. La longueur de l'option (l'octet qui suit normalement le code de l'option) est calculée automatiquement et ne doit pas être spécifiée. La chaîne hexadécimale peut être délimitée par des caractères non hexadécimaux pour plus de lisibilité. Toutes les options doivent avoir une charge utile, à l'exception de l'option de bourrage spéciale (code 0).

La disposition de l'option absurde utilisée dans cet exemple (d'abord la disposition des options DHCP, puis la disposition de la sous-option d'informations de l'agent relais) est la suivante :

CodeLongueurDonnées
52(auto)01 04 46 6A 61 73 ("Fjas")
Sous-opt.LongueurDonnées
01446 6A 61 73 ("Fjas")

Notez que dhcpoptinj ne se soucie pas de ce que vous écrivez dans les charges utiles des options, ni ne vérifie si votre code d'option existe. Il vous interdit cependant d'utiliser le code d'option 255 (l'option de fin de terminaison). dhcpoptinj insère cette option comme dernière option automatiquement.

Capture d'écran

dhcpoptinj -f -d -q42 -r -o'0C 66 6A 61 73 65 68 6F 73 74' -o'52 01 04 46 6A 61 73' -o 320A141E28
3 DHCP option(s) to inject (with a total of 25 bytes): 12 (0x0C) (Hostname), 82 (0x52) (Relay Agent Information), 50 (0x32) (Address Request)
Existing options will be removed
Initialising netfilter queue
Initialising signal handler
Initialisation completed. Waiting for packets to mangle on queue 42
Received 416 bytes
Inspecting 328-byte DHCP packet from B6:40:FE:41:30:DC to 255.255.255.255:67
Mangling packet
Found option  53 (0x35) (DHCP message type)        DHCPREQUEST (copying)
Found option  54 (0x36) (DHCP Server Id)           with   4-byte payload 0A 14 1E 01 (copying)
Found option  50 (0x32) (Address Request)          with   4-byte payload 0A 14 1E 28 (removing)
Found option  12 (0x0C) (Hostname)                 with  12-byte payload 33 31 36 64 65 39 31 34 64 61 62 34 (removing)
Found option  55 (0x37) (Parameter List)           with  13-byte payload 01 1C 02 03 0F 06 77 0C 2C 2F 1A 79 2A (copying)
Found END option (removing)
Injecting option  12 (0x0C) (Hostname)                 with   9-byte payload 66 6A 61 73 65 68 6F 73 74
Injecting option  82 (0x52) (Relay Agent Information)  with   6-byte payload 01 04 46 6A 61 73
Injecting option  50 (0x32) (Address Request)          with   4-byte payload 0A 14 1E 28
Inserting END option
Padding with 10 byte(s) to meet minimal BOOTP payload size
Sending mangled packet

Installation

Packaging status

dhcpoptinj est dans Debian/Ubuntu. Le paquet deb est sous contrôle de version sur salsa. L'installation de dhcpoptinj à partir du paquet deb est recommandée par rapport à la procédure d'installation manuelle suivante, car elle inclut également une page de manuel, des règles de complétion bash, des fichiers d'exemple, etc.

Prérequis

Vous avez besoin de cmake et de libnetfilter_queue (ainsi que d'un compilateur C supportant C99). Espérons que vous utilisez un système de type Debian, auquel cas vous pouvez exécuter la commande suivante pour les installer : sudo apt-get install cmake libnetfilter-queue-dev.

Compilation

  1. Téléchargez ou clonez la source : git clone git://github.com/misje/dhcpoptinj
  2. Entrez dans le répertoire : cd dhcpoptinj
  3. Créez un répertoire de construction et entrez-y (optionnel mais recommandé) : mkdir build && cd build
  4. Exécutez cmake : cmake .. (ou cmake -DCMAKE_BUILD_TYPE=Debug .. si vous voulez une compilation de débogage)
  5. Exécutez make : make -j4
  6. Installez (optionnel, mais vous bénéficierez d'avoir dhcpoptinj dans votre PATH) : sudo make install

Désinstallation

  1. Exécutez sudo make uninstall depuis votre répertoire de construction
Télécharger l’outil