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
fwknop — Autorizzazione a singolo pacchetto > Port Knocking | Kitploit
Strumenti/GitHubGitHub/mrash/fwknop
Autenticazione e AutorizzazioneStrumenti DifensiviStrumenti di Crittografia/DecrittografiaSicurezza di ReteCrittografiaAutenticazione
GitHubmrash/fwknop

fwknop

Autorizzazione a singolo pacchetto > Port Knocking

Vedi Repository
1.4k2532 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
Sito web

fwknop - Autorizzazione a Pacchetto Singolo

Introduzione

fwknop implementa uno schema di autorizzazione noto come Single Packet Authorization (SPA) per un forte occultamento dei servizi. SPA richiede un singolo pacchetto crittografato, non riproducibile e autenticato tramite un HMAC per comunicare l'accesso desiderato a un servizio nascosto dietro un firewall in una politica di default-drop. L'applicazione principale di SPA è quella di utilizzare un firewall per bloccare tutti i tentativi di connessione a servizi come SSH, rendendo più difficile lo sfruttamento di vulnerabilità (sia 0-day che codice non aggiornato). Poiché non ci sono porte aperte, qualsiasi servizio occultato da SPA non può essere scansionato con Nmap. Il progetto fwknop supporta quattro diversi firewall: iptables, firewalld, PF e ipfw su Linux, OpenBSD, FreeBSD e Mac OS X. È inoltre disponibile il supporto per script personalizzati in modo che fwknop possa essere adattato per supportare altre infrastrutture come ipset o nftables.

SPA è essenzialmente la successiva generazione del Port Knocking (PK), ma risolve molte delle limitazioni mostrate dal PK mantenendone i vantaggi principali. Le limitazioni del PK includono una generale difficoltà nella protezione dagli attacchi di replay, i cifrari asimmetrici e gli schemi HMAC non sono solitamente supportabili in modo affidabile, ed è banalmente facile effettuare un attacco DoS contro un server PK semplicemente spoofando un pacchetto aggiuntivo in una sequenza PK mentre attraversa la rete (convincendo così il server PK che il client non conosca la sequenza corretta). Tutte queste carenze sono risolte da SPA. Allo stesso tempo, SPA nasconde i servizi dietro una politica firewall di default-drop, acquisisce i dati SPA passivamente (di solito tramite libpcap o altri mezzi) e implementa operazioni crittografiche standard per l'autenticazione e la crittografia/decifratura dei pacchetti SPA.

I pacchetti SPA generati da fwknop sfruttano HMAC per la crittografia autenticata nel modello encrypt-then-authenticate. Sebbene l'uso di un HMAC sia attualmente opzionale (abilitato tramite l'opzione da riga di comando --use-hmac), è fortemente raccomandato per tre motivi:

  1. Senza un HMAC, non è possibile un'autenticazione crittograficamente forte con fwknop a meno che non venga utilizzato GnuPG, ma anche in tal caso dovrebbe comunque essere applicato un HMAC.
  2. Un HMAC applicato dopo la crittografia protegge dagli attacchi crittanalitici di tipo padding oracle in modalità CBC, come l'attacco Vaudenay e simili (come il più recente attacco "Lucky 13" contro SSL).
  3. Il codice richiesto dal demone fwknopd per verificare un HMAC è molto più semplice del codice necessario per decifrare un pacchetto SPA, quindi un pacchetto SPA senza un HMAC corretto non viene nemmeno inviato attraverso le routine di decifratura.

L'ultimo motivo sopra è il motivo per cui un HMAC dovrebbe essere utilizzato anche quando i pacchetti SPA sono crittografati con GnuPG, poiché i dati SPA non vengono inviati attraverso le funzioni libgpgme a meno che l'HMAC non venga prima verificato. GnuPG e libgpgme sono corpi di codice relativamente complessi, quindi limitare la capacità di un potenziale aggressore di interagire con questo codice tramite un'operazione HMAC aiuta a mantenere una posizione di sicurezza più forte. La generazione di un HMAC per le comunicazioni SPA richiede una chiave dedicata in aggiunta alla normale chiave di crittografia, ed entrambe possono essere generate con l'opzione --key-gen.

fwknop crittografa i pacchetti SPA o con il cifrario a blocchi Rijndael o tramite GnuPG e il relativo cifrario asimmetrico. Se viene scelto il metodo di crittografia simmetrica, come di consueto la chiave di crittografia è condivisa tra client e server (vedere il file /etc/fwknop/access.conf per i dettagli). La chiave di crittografia effettiva utilizzata per la crittografia Rijndael viene generata tramite il derivatore di chiave standard PBKDF1 e viene impostata la modalità CBC. Se viene scelto il metodo GnuPG, le chiavi di crittografia derivano dai portachiavi GnuPG.

Casi d'uso

Le persone che utilizzano Single Packet Authorization (SPA) o il suo cugino meno sicuro Port Knocking (PK) di solito accedono a SSHD in esecuzione sullo stesso sistema in cui è distribuito il software SPA/PK. Cioè, un firewall in esecuzione su un host ha una politica di default-drop contro tutte le connessioni SSH in arrivo, in modo che SSHD non possa essere scansionato, ma un demone SPA riconfigura il firewall per concedere temporaneamente l'accesso a un client SPA autenticato passivamente:

SPA-basic-access-SSHD "Utilizzo base di SPA per accedere a SSHD"

fwknop supporta quanto sopra, ma va anche molto oltre e fa un uso robusto del NAT (per firewall iptables/firewalld). Dopo tutto, i firewall importanti sono solitamente gateway tra reti, piuttosto che essere distribuiti solo su host autonomi. Il NAT è comunemente utilizzato su tali firewall (almeno per comunicazioni IPv4) per fornire accesso a Internet a reti interne che si trovano nello spazio di indirizzi RFC 1918, e anche per consentire a host esterni di accedere a servizi ospitati su sistemi interni.

Poiché fwknop si integra con il NAT, SPA può essere sfruttato per accedere a servizi interni attraverso il firewall da parte di utenti su Internet esterno. Sebbene ciò abbia molte applicazioni nelle reti tradizionali moderne, consente anche a fwknop di supportare ambienti di cloud computing come Amazon AWS:

SPA-Amazon-AWS-cloud "Utilizzo di SPA in ambienti cloud Amazon AWS"

Interfaccia utente

L'interfaccia utente ufficiale del client fwknop multipiattaforma fwknop-gui (download, github) è sviluppata da Jonathan Bennett. Sono supportate la maggior parte delle modalità SPA lato client, incluse richieste NAT, chiavi HMAC e Rijndael (GnuPG non è ancora supportato), salvataggio di stanze fwknoprc e altro. Attualmente fwknop-gui funziona su Linux, Mac OS X e Windows - ecco uno screenshot da OS X: fwknop-gui-OS-X-screenshot "fwknop-gui su Mac OS X" Allo stesso modo, è disponibile anche un client Android aggiornato.

Tutorial

Un tutorial completo su fwknop può essere trovato qui:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

Caratteristiche

Di seguito è riportato un elenco completo delle funzionalità supportate dal progetto fwknop:

  • Implementa Single Packet Authorization attorno ai firewall iptables e firewalld su Linux, ipfw su *BSD e Mac OS X, e PF su OpenBSD.
  • Il client fwknop funziona su Linux, Mac OS X, *BSD e Windows sotto Cygwin. Inoltre, è disponibile un'app Android per generare pacchetti SPA.
  • Supporta sia il metodo Rijndael che GnuPG per la crittografia/decifratura dei pacchetti SPA.
  • Supporta la crittografia autenticata HMAC sia per Rijndael che per GnuPG. L'ordine di operazione è encrypt-then-authenticate per evitare vari problemi crittanalitici.
  • Gli attacchi di replay vengono rilevati e sventati tramite confronto di digest SHA-256 di pacchetti SPA validi in arrivo. Sono supportati anche altri algoritmi digest, ma SHA-256 è l'impostazione predefinita.
  • I pacchetti SPA vengono sniffati passivamente dal cavo tramite libpcap. Il server fwknopd può anche acquisire dati dei pacchetti da un file scritto da un altro sniffer Ethernet (ad esempio con tcpdump -w <file>), dal writer pcap iptables ULOG, o direttamente tramite un socket UDP in modalità --udp-server.
  • Per i firewall iptables, le regole ACCEPT aggiunte da fwknop vengono aggiunte e rimosse (dopo un timeout configurabile) da catene iptables personalizzate in modo che fwknop non interferisca con alcuna politica iptables esistente già caricata sul sistema.
  • Supporta connessioni NAT in entrata per comunicazioni SPA autenticate (solo firewall iptables per ora). Ciò significa che fwknop può essere configurato per creare regole DNAT in modo da poter raggiungere un servizio (come SSH) in esecuzione su un sistema interno su un indirizzo IP RFC 1918 da Internet aperto. Sono supportate anche le regole SNAT che trasformano essenzialmente fwknopd in un gateway SPA-autenticante per accedere a Internet da una rete interna.
  • Il server fwknop supporta più utenti e a ciascun utente può essere assegnata la propria chiave di crittografia simmetrica o asimmetrica tramite il file /etc/fwknop/access.conf.
  • Risoluzione automatica dell'indirizzo IP esterno tramite https://www.cipherdyne.org/cgi-bin/myip (utile quando il client fwknop viene eseguito dietro un dispositivo NAT). Poiché l'indirizzo IP esterno è crittografato all'interno di ciascun pacchetto SPA in questa modalità, gli attacchi Man-in-the-Middle (MITM) in cui un dispositivo intermedio intercetta un pacchetto SPA e lo inoltra solo da un IP diverso nel tentativo di ottenere l'accesso vengono sventati.

Licenza

Il progetto fwknop è rilasciato come software open source secondo i termini della GNU General Public License (GPL v2) o (a tua scelta) qualsiasi versione successiva. L'ultima release può essere trovata su http://www.cipherdyne.org/fwknop/

Stato Attuale

Questo file README descrive lo stato attuale del progetto fwknop a partire dalla release 2.5 effettuata a luglio 2013. Attualmente, abbiamo un'implementazione della libreria Firewall Knock Operator; libfko, così come le applicazioni client e server fwknop. La libreria fornisce l'API e la funzionalità di back-end per la gestione dei dati di Single Packet Authorization (SPA) impiegati dagli altri componenti fwknop. Può anche essere utilizzata da altri programmi che necessitano di funzionalità SPA (vedere la directory perl per il modulo perl FKO come esempio, e ci sono anche bindings Python nella directory python).

Aggiornamento

Se stai eseguendo l'aggiornamento da una versione precedente di fwknop (e questo include anche l'implementazione perl originale), ti consigliamo di leggere il seguente link per garantire una transizione fluida a fwknop-2.5 o successivo:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html#backwards-compatibility

Varie

  • Le domande o i commenti su fwknop verranno gestiti sulla mailing list fwknop.
  • Per l'analisi statica, fwknop utilizza l'analizzatore statico CLANG e anche il potente strumento Coverity Scan:

Compilazione di fwknop

Questa distribuzione utilizza GNU autoconf per impostare la compilazione. Consultare il file INSTALL per le nozioni di base generali sull'uso di autoconf.

Ci sono alcune opzioni "configure" specifiche per fwknop. Sono (estratte da ./configure --help):

root@kitploit:~
  --disable-client        Non compilare il componente client fwknop. L'impostazione
                          predefinita è compilare il client.
  --disable-server        Non compilare il componente server fwknop. L'impostazione
                          predefinita è compilare il server.
  --with-gpgme            supporto per la crittografia gpg tramite libgpgme
                          [default=check]
  --with-gpgme-prefix=PFX prefisso in cui è installato GPGME (opzionale)
  --with-gpg=/path/to/gpg Specifica il percorso dell'eseguibile gpg che gpgme userà
                          [default=check path]
  --with-firewalld=/path/to/firewalld
                          Specifica il percorso dell'eseguibile firewalld
                          [default=check path]
  --with-iptables=/path/to/iptables
                          Specifica il percorso dell'eseguibile iptables
                          [default=check path]
  --with-ipfw=/path/to/ipfw
                          Specifica il percorso dell'eseguibile ipfw [default=check
                          path]
  --with-pf=/path/to/pfctl
                          Specifica il percorso dell'eseguibile pf [default=check
                          path]
  --with-ipf=/path/to/ipf Specifica il percorso dell'eseguibile ipf [default=check
                          path]

Esempi:

./configure --disable-client --with-firewalld=/bin/firewall-cmd
./configure --disable-client --with-iptables=/sbin/iptables --with-firewalld=no

Note

Migrazione dalla versione Perl di fwknop

Per coloro che attualmente utilizzano la versione Perl e intendono migrare a questa versione, ci sono alcune cose da tenere presenti:

  • Non tutte le caratteristiche e funzionalità di fwknop basata su Perl sono state portate in questa implementazione. Abbiamo ritenuto importante mantenere la versione C il più snella e leggera possibile. La maggior parte delle funzionalità omesse (come gli avvisi email) possono essere realizzate con altri mezzi (ad esempio, utilizzare uno script esterno per monitorare i file di log e inviare avvisi in base a messaggi di log appropriati).

  • Ci sono alcune differenze nelle direttive e nei valori dei file di configurazione e di accesso di fwknop. Alcune di queste sono piuttosto sottili. È necessario prestare attenzione alla documentazione e ai commenti in quei file.

Per gli sviluppatori di fwknop

Se stai scaricando questa distribuzione da git, dovresti eseguire lo script autogen.sh per generare i file autoconf. Se ricevi errori riguardanti directory o file mancanti, prova a eseguire autogen.sh di nuovo. Successivamente puoi eseguire autoreconf -i quando desideri rigenerare la configurazione. Se, per qualche motivo, autoreconf non funziona per te, lo script autogen.sh dovrebbe essere sufficiente.

I sorgenti nroff delle pagine man di fwknop e fwknopd sono inclusi nelle rispettive directory (client e server). Questi file nroff derivano dai sorgenti asciidoc nella directory 'docs'. Consultare il README in docs per i dettagli.

Scarica lo strumento
  • La randomizzazione delle porte è supportata per la porta di destinazione dei pacchetti SPA così come per la porta su cui viene effettuata la connessione successiva tramite le capacità NAT di iptables. Quest'ultima si applica a connessioni inoltrate a servizi interni e all'accesso concesso a socket locali sul sistema che esegue fwknopd.
  • Integrazione con Tor (come descritto in questa presentazione DefCon 14). Si noti che poiché Tor utilizza TCP per il trasporto, l'invio di pacchetti SPA attraverso la rete Tor richiede che ciascun pacchetto SPA venga inviato su una connessione TCP stabilita, quindi tecnicamente ciò rompe l'aspetto "singolo" di "Single Packet Authorization". Tuttavia, Tor fornisce vantaggi in termini di anonimato che possono superare questa considerazione in alcune implementazioni.
  • Implementa un protocollo con versione per le comunicazioni SPA, quindi è facile estendere il protocollo per offrire nuovi tipi di messaggi SPA e mantenere contemporaneamente la compatibilità all'indietro con client fwknop più vecchi.
  • Supporta l'esecuzione di comandi shell per conto di pacchetti SPA validi.
  • Il server fwknop può essere configurato per imporre più restrizioni sui pacchetti SPA in entrata oltre a quelle imposte dalle chiavi di crittografia e dal rilevamento di attacchi di replay. Nello specifico, età del pacchetto, indirizzo IP di origine, utente remoto, accesso alle porte richieste e altro.
  • In bundle con fwknop è inclusa una suite di test completa che esegue una serie di test progettati per verificare che sia il client che il server di fwknop funzionino correttamente. Questi test implicano lo sniffing di pacchetti SPA sull'interfaccia di loopback locale, la creazione di regole firewall temporanee che vengono controllate per l'accesso appropriato in base alla configurazione di test e l'analisi dell'output sia del client fwknop che del server fwknopd per marcatori attesi per ogni test. L'output della suite di test può essere facilmente anonimizzato per la comunicazione a terze parti per l'analisi.
  • fwknop è stato il primo programma a integrare il port knocking con il fingerprinting passivo del sistema operativo. Tuttavia, Single Packet Authorization offre molti vantaggi di sicurezza oltre al port knocking, quindi la modalità operativa di port knocking è generalmente deprecata.