
Scanneur de ports IPv6 conçu pour être rapide, destiné à la découverte et au scan d'Internet.
fi6s est un scanner de ports IPv6 conçu pour être rapide, destiné au balayage et à la découverte sur Internet. Ceci est réalisé en envoyant et traitant des paquets bruts de manière asynchrone.
La conception et l'objectif sont assez similaires à Masscan, bien qu'il ne soit pas aussi complet.
Veuillez prendre note de la licence.
Enfin : Cet outil est un outil de recherche en sécurité et vous (l'utilisateur) êtes entièrement responsable de suivre les réglementations locales et d'obtenir les autorisations nécessaires lors de son utilisation.
Compiler fi6s est assez facile sur tout système Linux récent, par exemple sur Ubuntu :
# apt install gcc make git libpcap-dev
$ git clone https://github.com/sfan5/fi6s.git
$ cd fi6s
$ make BUILD_TYPE=release
L'exécutable sera prêt dans ./fi6s.
Notez que fi6s est développé et testé uniquement sous Linux. Les autres plateformes de type UNIX devraient fonctionner, Windows ne fonctionnera pas.
fi6s détectera automatiquement les détails du réseau (source, MAC et IP du routeur) pour vous, vous pouvez donc commencer à scanner directement :
# ./fi6s -p 80,8000-8100 --max-rate 170 2001:db8::/120
Cet exemple va :
list' (par défaut implicite)Il existe différentes façons de spécifier une plage d'adresses à scanner. Si vous n'êtes pas sûr de ce qui va se passer, utilisez --print-summary pour obtenir un aperçu rapide du scan ou --print-hosts pour afficher toutes les IP cibles potentielles.
Pour des fonctionnalités plus avancées et des explications supplémentaires, veuillez consulter la sortie de fi6s --help.
Les données qu'un hôte distant envoie en réponse à une nouvelle connexion ou à une demande de sondage sont appelées 'bannière'. fi6s facilite leur collecte.
Tout ce que vous avez à faire est de passer l'option --banners :
# ./fi6s -p 22 --banners 2001:db8::xx
Ajoutez le drapeau --udp à votre ligne de commande :
# ./fi6s -p 53 --banners --udp 2001:db8:xx::1
Notez que contrairement au TCP, vous n'obtiendrez des résultats utiles (ou quelconques) que si vous scannez un port dont le protocole est pris en charge pour le sondage par fi6s. Utilisez fi6s --list-protocols pour voir la liste.
Étant donné que fi6s apporte sa propre pile TCP/IP minimale, le système d'exploitation doit être empêché d'essayer de parler TCP sur le même port que celui utilisé par fi6s, sinon cela perturberait le processus de scan.
Par défaut, fi6s demandera au système d'exploitation de réserver un port éphémère et de l'utiliser pendant la durée du scan. Cela ne fonctionne que sous Linux.
Si cela échoue ou si vous êtes sur une plateforme différente (fi6s vous le dira !), vous devez choisir un port source et configurer votre pare-feu pour rejeter tout le trafic sur ce port, par exemple :
# 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
Comme l'UDP est sans connexion, il n'est pas nécessaire de faire cela, mais c'est quand même une bonne idée d'empêcher l'envoi de réponses ICMPv6 inutiles. fi6s le fera également par défaut.
Un grand avantage de l'IPv6 est le vaste espace d'adressage, et une autre façon d'éviter le problème décrit ci-dessus est d'utiliser simplement une IP source différente.
Cette IP ne doit pas être attribuée à votre machine locale, mais elle doit être routée statiquement vers votre machine, car fi6s ne répondra pas aux requêtes NDP.
Pour vérifier si votre configuration fonctionne correctement, vous pouvez simplement pinguer une IP publique connue, par exemple :
# ./fi6s --icmp --source-ip ${chosen_src_ip} 2001:4860:4860::8888
Utilisez --icmp pour effectuer un scan Ping ICMPv6 :
# ./fi6s --icmp 2001:xxx0::1
Le temps aller-retour ne sera pas mesuré.
Afin de permettre la conception de fi6s, certaines hypothèses ont dû être faites sur l'environnement réseau. Celles-ci n'affectent en rien l'utilisation typique mais sont listées ici pour être complètes.
Cela signifie que fi6s peut ne pas fonctionner comme prévu ou ne pas fonctionner du tout si :
Pour la collecte de bannières, notez que fi6s ne possède rien ressemblant à une véritable pile TCP. Il prend seulement en charge l'envoi d'une requête et la lecture des données de réponse qui suivent. Les renvois ou la logique de fenêtre ne sont pas implémentés.
Bien que fi6s utilise les numéros de port et de séquence pour garantir que les résultats obtenus sont liés au scan en cours, il n'a pas de vérification pour comparer l'IP à laquelle une sonde a été envoyée avec l'IP qui répond réellement.
Cela signifie que l'exécution, par exemple, d'un traceroutage pendant un scan n'interférera pas avec les résultats du scan.
Cependant, il est possible qu'une IP apparaisse dans les résultats du scan qui ne faisait pas partie de la liste d'entrée, si une cible scannée répond sur une IP différente. Cette propriété peut être utile en pratique, car certains routeurs accepteront des requêtes SNMP ou DNS sur l'adresse réseau zéro, mais répondront avec leur IPv6 principale.
Exemple : scan 3fff:1234:1234:44xx:: -> réponse de 3fff:1234:1234:44a3:e2a:86ff:fe12:3456
La façon dont fi6s randomise les IP scannées (--randomize-hosts 1, qui est la valeur par défaut) est loin d'être parfaite.
Il va :
Par exemple, si vous scannez 3fff::/108, l'ordre de 3fff::1, 3fff::20 et 3fff::300 sera aléatoire. Mais toutes les adresses dans 3fff::0:* seront scannées avant 3fff::1:*, avant 3fff::2:* et ainsi de suite.