
Scanner di porte IPv6 progettato per essere veloce, orientato alla scansione e scoperta su Internet.
fi6s è uno scanner di porte IPv6 progettato per essere veloce, mirato alla scansione e scoperta su Internet. Questo viene ottenuto inviando ed elaborando pacchetti grezzi in modo asincrono.
Il design e l'obiettivo sono molto simili a Masscan, anche se non è altrettanto completo.
Si prega di prendere nota della licenza.
Infine: Questo è uno strumento di ricerca sulla sicurezza e tu (l'utente) sei pienamente responsabile del rispetto delle normative locali e dell'ottenimento delle autorizzazioni necessarie quando lo utilizzi.
Compilare fi6s è piuttosto semplice su qualsiasi sistema Linux recente, ad esempio su Ubuntu:
# apt install gcc make git libpcap-dev
$ git clone https://github.com/sfan5/fi6s.git
$ cd fi6s
$ make BUILD_TYPE=release
L'eseguibile sarà pronto in ./fi6s.
Nota che fi6s è sviluppato e testato esclusivamente su Linux. Altre piattaforme simili a UNIX dovrebbero funzionare, Windows no.
fi6s rileverà automaticamente i dettagli di rete sporchi (sorgente, MAC e IP del router) per te, così puoi iniziare subito a scansionare:
# ./fi6s -p 80,8000-8100 --max-rate 170 2001:db8::/120
Questo esempio:
list" (predefinito implicito)Ci sono molti altri modi per specificare un intervallo di indirizzi da scansionare.
Se non sei sicuro di cosa stia per succedere, usa --print-summary per ottenere una rapida panoramica della scansione o --print-hosts per stampare tutti gli IP target potenziali.
Per funzionalità più avanzate e spiegazioni aggiuntive, consulta l'output di fi6s --help.
I dati che un host remoto invia in risposta a una nuova connessione o richiesta di sonda sono chiamati "banner". fi6s rende facile raccoglierli.
Tutto ciò che devi fare è passare l'opzione --banners:
# ./fi6s -p 22 --banners 2001:db8::xx
Aggiungi il flag --udp alla tua riga di comando:
# ./fi6s -p 53 --banners --udp 2001:db8:xx::1
Nota che, a differenza di TCP, otterrai risultati utili (o qualsiasi risultato) solo se scansionerai una porta il cui protocollo è supportato per il probing da fi6s.
Usa fi6s --list-protocols per visualizzare un elenco.
Poiché fi6s ha il proprio stack TCP/IP minimale, è necessario impedire al sistema operativo di tentare di comunicare TCP sulla stessa porta che fi6s sta utilizzando, altrimenti interromperebbe il processo di scansione.
Per impostazione predefinita, fi6s chiederà al sistema operativo di riservare una porta effimera e di usarla per tutta la durata della scansione. Questo funziona solo su Linux.
Se questo fallisce o sei su una piattaforma diversa (fi6s te lo dirà!) devi decidere una porta sorgente e configurare il firewall per eliminare tutto il traffico su questa porta, ad esempio:
# ipfw add 1000 deny tcp from any to any 12345 in ip6
or:
# ip6tables -A INPUT -p tcp -m tcp --dport 12345 -j DROP
and then:
# ./fi6s -p 22 --banners --source-port 12345 2001:db8::xx
Poiché UDP è senza connessione, non è necessario farlo, ma è comunque una buona idea impedire l'invio di risposte ICMPv6 non necessarie. Anche fi6s lo farà per impostazione predefinita.
Un grande vantaggio di IPv6 è il vasto spazio di indirizzi, e un altro modo per evitare il problema descritto sopra è semplicemente usare un IP sorgente diverso.
Questo IP non dovrebbe essere assegnato alla tua macchina locale, ma deve essere instradato staticamente verso la tua macchina, perché fi6s non risponderà alle query NDP.
Per verificare se la tua configurazione funziona correttamente, puoi semplicemente eseguire il ping di un IP pubblico noto, ad esempio:
# ./fi6s --icmp --source-ip ${chosen_src_ip} 2001:4860:4860::8888
Usa --icmp per eseguire una scansione ICMPv6 Ping:
# ./fi6s --icmp 2001:xxx0::1
Il tempo di andata e ritorno non verrà misurato.
Per consentire la progettazione di fi6s, sono state fatte alcune ipotesi sull'ambiente di rete. Queste non influiscono affatto sull'uso tipico, ma sono elencate qui per completezza.
Ciò significa che fi6s potrebbe non funzionare come previsto o non funzionare affatto se:
Per la raccolta dei banner, nota che fi6s non viene fornito con nulla di simile a un vero stack TCP. Supporta solo l'invio di una query e la lettura dei dati di risposta che seguono. I reinvii o la logica delle finestre non sono implementati.
Mentre fi6s utilizza numeri di porta e sequenza per garantire che i risultati ottenuti siano relativi alla specifica scansione in esecuzione, non ha un controllo per confrontare l'IP a cui è stata inviata una sonda con l'IP che sta effettivamente rispondendo.
Ciò significa che eseguire, ad esempio, qualsiasi tipo di traceroute durante una scansione non interferirà con i risultati della scansione.
Tuttavia, è possibile che un IP appaia nei risultati della scansione che non faceva parte dell'elenco di input, se un target scansionato risponde su un IP diverso. Questa proprietà può essere utile nella pratica, poiché alcuni router accettano query SNMP o DNS sull'indirizzo di rete zero, ma rispondono con il loro IPv6 primario.
Esempio: scansione di 3fff:1234:1234:44xx:: -> risposta da 3fff:1234:1234:44a3:e2a:86ff:fe12:3456
Il modo in cui fi6s randomizza gli IP scansionati (--randomize-hosts 1, che è l'impostazione predefinita) è tutt'altro che perfetto.
Farà:
Ad esempio, se scansiona 3fff::/108, l'ordine di 3fff::1, 3fff::20 e 3fff::300 sarà casuale. Ma tutti gli indirizzi in 3fff::0:* verranno scansionati prima di 3fff::1:*, prima di 3fff::2:* e così via.