Réponses:
Que savez-vous du LAN en question? Je suppose que vous ne savez rien du tout branché sur le câble ou connecté au wifi.
-sP
si certains hôtes ne répondent pas au ping (consultez la documentation ). Il est important que nmap ne fonctionne que si vos paramètres et itinéraires réseau sont corrects.Certains administrateurs système (la plupart?) N'aiment pas certaines des méthodes ci-dessus, alors assurez-vous que cela est autorisé (par exemple, c'est votre réseau). Notez également que votre propre pare-feu peut empêcher certaines de ces méthodes (même d'obtenir une adresse IP avec DHCP), vérifiez d'abord vos règles.
Nmap
Voici comment effectuer une découverte d'hôte de base avec nmap . Comme je l'ai dit, votre configuration réseau doit être correcte lorsque vous essayez cela. Disons que vous êtes 192.168.0.50 vous êtes sur un sous-réseau / 24. Votre adresse MAC est quelque chose qui est autorisé à se connecter, etc. J'aime faire tourner Wharkhark pour voir ce que je fais.
D'abord, j'aime essayer l'analyse de la liste, qui essaie uniquement de résoudre les enregistrements PTR dans DNS pour les adresses IP spécifiées. Il n'envoie rien aux hôtes donc il n'y a aucune garantie qu'il est vraiment connecté ou allumé mais il y a de bonnes chances. Ce mode a évidemment besoin d'un serveur DNS prêt à vous parler.
nmap -vvv -sn -sL 192.168.1.0/16
Cela peut ne rien trouver ou vous indiquer que chaque IP est en hausse.
Ensuite, je vais généralement pour l'analyse ARP. Il envoie des requêtes ARP (vous les voyez comme "Who has <target IP>? Tell <your IP>"
dans wirehark). C'est assez fiable car personne ne filtre ou ne simule ARP. Le principal inconvénient est qu'il ne fonctionne que sur votre sous-réseau.
nmap -vvv -sn -PR 192.168.1.0/24
Si vous souhaitez analyser quelque chose derrière des routeurs ou des pare-feu, utilisez les analyses SYN et ACK. SYN démarre une connexion TCP et vous obtenez un RST ou un SYNACK en réponse. Quoi qu'il en soit, l'hôte est en place. Vous pouvez faire interdire la communication ICMP ou quelque chose comme ça s'il y a un pare-feu. La plupart du temps, si un pare-feu a filtré vos paquets, vous n'obtiendrez rien. Certains types de pare-feu filtrent uniquement les paquets TCP SYN et laissent passer tous les autres paquets TCP. C'est pourquoi l'analyse ACK est utile. Vous obtiendrez RST en réponse si l'hôte est actif. Puisque vous ne savez pas quel pare-feu est en place, essayez les deux.
nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24
Ensuite, bien sûr, vous pouvez utiliser les analyses basées sur ICMP avec -PE -PP -PM.
Une autre méthode intéressante est -PO avec un numéro de protocole inexistant. Souvent, seuls TCP et UDP sont pris en compte sur les pare-feu et personne ne teste ce qui se passe lorsque vous essayez un protocole inconnu. Vous obtenez un protocole ICMP inaccessible si l'hôte est actif.
nmap -vvv -sn -PO160 10.1.2.0/24
Vous pouvez également demander à nmap d'ignorer la découverte d'hôte (-Pn) et d'effectuer une analyse de port sur chaque hôte. C'est très lent, mais vous pourriez trouver d'autres hôtes que la découverte d'hôte a ratés pour une raison quelconque.
J'aime la ip neigh
commande fournie avec IpRoute2.
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
Cependant, je pense que cela ne fonctionne qu'avec des arp
nœuds -able.
man ip
montre ce que fait le voisin ou le voisin.
Installez nmap et exécutez nmap -sP <mynetwork>
.
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds
.
nmap -sP 192.168.0.*
et il a renvoyé une liste de sortie du formulaire:Nmap scan report for justin-desktop2 (192.168.0.61)
Host is up (0.00056s latency).
Host 192.168.2.23 is up (0.0088s latency).
.
Pour les deux réponses: AUCUN nmap requis / AUCUN sudo requis .
$ arp
S'appuyant sur les xénoterracides, répondez avec ip neigh
et hosts
:
#!/usr/bin/env python
"""List all hosts with their IP adress of the current network."""
import os
out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
ip = line.split(' ')[0]
h = os.popen('host {}'.format(ip)).read()
hostname = h.split(' ')[-1]
print("{:>3}: {} ({})".format(i, hostname.strip(), ip))
Télécharger via
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py