
🖖 Scanner réseau rapide, moderne et facile à utiliser.
sx est le scanner réseau en ligne de commande conçu pour suivre la philosophie UNIX.
L'objectif de ce projet est de créer le scanner réseau le plus rapide avec un code propre et simple.
Le moyen le plus simple est de télécharger depuis GitHub Releases et de placer le fichier exécutable dans votre PATH.
Prérequis :
Sur macOS, installez d'abord les Xcode Command Line Tools pour que CGO puisse lier la libpcap système :
xcode-select --install
Depuis la racine de l'arborescence des sources, exécutez :
go build
Voici quelques exemples rapides montrant comment scanner des réseaux avec sx.
Scannez votre réseau local et affichez l'adresse IP, l'adresse MAC et le fabricant matériel associé des périphériques connectés :
sx arp 192.168.0.1/24
exemple de sortie :
192.168.0.1 b0:be:76:40:05:8d TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.111 80:c5:f2:0b:02:e3 AzureWave Technology Inc.
192.168.0.171 88:53:95:2d:3c:af Apple, Inc.
avec sortie JSON :
sx arp --json 192.168.0.1/24
exemple de sortie :
{"ip":"192.168.0.1","mac":"b0:be:76:40:05:8d","vendor":"TP-LINK TECHNOLOGIES CO.,LTD."}
{"ip":"192.168.0.111","mac":"80:c5:f2:0b:02:e3","vendor":"AzureWave Technology Inc."}
{"ip":"192.168.0.171","mac":"88:53:95:2d:3c:af","vendor":"Apple, Inc."}
attendez 5 secondes avant de quitter pour recevoir les paquets de réponse retardés, par défaut sx attend 300 millisecondes :
sx arp --exit-delay 5s 192.168.0.1/24
Mode de scan en direct qui rescanner le réseau toutes les 10 secondes :
sx arp 192.168.0.1/24 --live 10s
Contrairement à nmap et autres scanners qui effectuent implicitement des requêtes ARP pour résoudre les adresses IP en adresses MAC avant le scan réel, sx utilise explicitement le concept de cache ARP. Un fichier de cache ARP est un fichier texte simple contenant une chaîne JSON par ligne (fichier JSONL), qui a les mêmes champs JSON que la sortie JSON du scan ARP décrite ci-dessus. Les scans de protocoles de plus haut niveau comme TCP et UDP lisent le fichier de cache ARP depuis l'entrée standard, puis démarrent le scan réel.
Cela simplifie non seulement la conception du programme, mais accélère également le processus de scan, car il n'est pas nécessaire d'effectuer un scan ARP à chaque fois.
Supposons que le cache ARP réel se trouve dans le fichier arp.cache. Nous pouvons le créer manuellement ou utiliser le scan ARP comme montré ci-dessous :
sx arp 192.168.0.1/24 --json | tee arp.cache
Une fois que nous avons le fichier de cache ARP, nous pouvons lancer des scans de protocoles de plus haut niveau comme le scan TCP SYN :
cat arp.cache | sx tcp -p 1-65535 192.168.0.171
exemple de sortie :
192.168.0.171 22
192.168.0.171 443
Dans ce cas, nous découvrons que les ports 22 et 443 sont ouverts.
Si vous voyez send: No buffer space available lors de scans volumineux, cela signifie généralement que l'expéditeur dépasse les tampons du noyau/des sockets raw. La première correction consiste à ajouter --rate et à réduire la rafale d'envoi, par exemple -r 100000/s ou moins si nécessaire. Sur certains systèmes, ajuster les limites des sockets/tampons du système d'exploitation peut également aider, mais la limitation de débit est la correction principale.
scan avec sortie JSON :
cat arp.cache | sx tcp --json -p 1-65535 192.168.0.171
exemple de sortie :
{"scan":"tcpsyn","ip":"192.168.0.171","port":22}
{"scan":"tcpsyn","ip":"192.168.0.171","port":443}
scan de plusieurs plages de ports :
cat arp.cache | sx tcp -p 1-23,25-443 192.168.0.171
ou ports individuels :
cat arp.cache | sx tcp -p 22,443 192.168.0.171
ou utilisez l'option --ports-file pour spécifier un fichier avec des ports ou plages de ports à scanner, un par ligne.
scan de paires ip/port depuis un fichier avec sortie JSON :
cat arp.cache | sx tcp --json -f ip_ports_file.jsonl
Chaque ligne du fichier d'entrée est une chaîne JSON, qui doit contenir les champs ip et port.
exemple de fichier d'entrée :
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}
Il est possible de spécifier le fichier de cache ARP à l'aide des options -a ou --arp-cache :
sx tcp -a arp.cache -p 22,443 192.168.0.171
ou redirection stdin :
sx tcp -p 22,443 192.168.0.171 < arp.cache
Vous pouvez également utiliser la sous-commande tcp syn au lieu de tcp :
cat arp.cache | sx tcp syn -p 22 192.168.0.171
tcp est simplement un raccourci pour la sous-commande tcp syn sauf si l'option --flags est passée, voir ci-dessous.
sx prend en charge le scan avec des interfaces réseau virtuelles (wireguard, openvpn, etc.) et dans ce cas, il n'est pas nécessaire d'utiliser le cache ARP, car ces interfaces nécessitent des paquets IP bruts plutôt que des trames Ethernet en entrée. Par exemple, scanner une adresse IP sur un réseau VPN :
sx tcp 10.1.27.1 -p 80 --json