Antworten:
Wie viel wissen Sie über das betreffende LAN? Ich gehe davon aus, dass Sie nichts wissen, was nur in das Kabel eingesteckt oder mit WLAN verbunden ist.
-sP
wenn einige Hosts nicht auf Ping antworten (siehe Dokumentation ). Es ist wichtig, dass nmap nur funktioniert, wenn Ihre Netzwerkeinstellungen und Routen korrekt sind.Einige (die meisten?) Systemadministratoren mögen einige der oben genannten Methoden nicht. Stellen Sie daher sicher, dass sie zulässig sind (z. B. Ihr Netzwerk). Beachten Sie auch, dass Ihre eigene Firewall einige dieser Methoden verhindern kann (sogar das Abrufen einer IP mit DHCP). Überprüfen Sie daher zuerst Ihre Regeln.
Nmap
Hier erfahren Sie, wie Sie mit nmap grundlegende Hostermittlungen durchführen . Wie ich bereits sagte, sollte Ihre Netzwerkkonfiguration korrekt sein, wenn Sie dies versuchen. Angenommen, Sie sind 192.168.0.50 und befinden sich in einem / 24-Subnetz. Ihre MAC-Adresse darf eine Verbindung herstellen usw. Ich möchte, dass wireshark ausgeführt wird, um zu sehen, was ich tue.
Zuerst möchte ich den Listenscan ausprobieren, bei dem nur versucht wird, die PTR-Einträge im DNS für die angegebenen IP-Adressen aufzulösen. Es wird nichts an die Hosts gesendet, daher kann nicht garantiert werden, dass das Gerät wirklich verbunden oder eingeschaltet ist, aber es besteht eine gute Chance. Dieser Modus benötigt natürlich einen DNS-Server, der bereit ist, mit Ihnen zu sprechen.
nmap -vvv -sn -sL 192.168.1.0/16
Dies kann nichts finden oder es kann Ihnen sagen, dass jede einzelne IP aktiv ist.
Dann gehe ich normalerweise zum ARP-Scan. Es sendet ARP-Anfragen (Sie sehen sie wie "Who has <target IP>? Tell <your IP>"
in Wireshark). Dies ist ziemlich zuverlässig, da niemand ARP filtert oder fälscht. Der Hauptnachteil ist, dass es nur in Ihrem Subnetz funktioniert.
nmap -vvv -sn -PR 192.168.1.0/24
Wenn Sie etwas hinter Routern oder Firewalls scannen möchten, verwenden Sie SYN- und ACK-Scans. SYN baut eine TCP-Verbindung auf und Sie erhalten entweder eine RST- oder eine SYNACK-Antwort. In beiden Fällen ist der Host aktiv. Möglicherweise wird die ICMP-Kommunikation gesperrt oder ähnliches, wenn eine Firewall vorhanden ist. Die meiste Zeit, wenn eine Firewall Ihre Pakete gefiltert hat, erhalten Sie nichts. Einige Arten von Firewalls filtern nur die TCP-SYN-Pakete und lassen jedes andere TCP-Paket durch. Aus diesem Grund ist der ACK-Scan hilfreich. Sie erhalten eine RST-Antwort, wenn der Host aktiv ist. Da Sie nicht wissen, welche Firewall installiert ist, versuchen Sie beides.
nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24
Dann können Sie natürlich die ICMP-basierten Scans mit -PE -PP -PM verwenden.
Eine andere interessante Methode ist -PO mit einer nicht vorhandenen Protokollnummer. Häufig werden auf Firewalls nur TCP und UDP berücksichtigt, und niemand testet, was passiert, wenn Sie ein unbekanntes Protokoll ausprobieren. Sie erhalten ein ICMP-Protokoll, das nicht erreichbar ist, wenn der Host aktiv ist.
nmap -vvv -sn -PO160 10.1.2.0/24
Sie können nmap auch anweisen, die Hosterkennung (-Pn) zu überspringen und auf jedem Host einen Portscan durchzuführen. Dies ist sehr langsam, aber möglicherweise finden Sie andere Hosts, die bei der Hostermittlung aus irgendeinem Grund übersehen wurden.
Ich mag den ip neigh
Befehl, der mit IpRoute2 kommt.
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
Ich denke jedoch, dass es nur mit arp
-able Knoten funktioniert.
man ip
zeigt, was der Nachbar macht.
Installieren Sie nmap und führen Sie es aus nmap -sP <mynetwork>
.
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds
.
nmap -sP 192.168.0.*
und es gab eine Liste der Ausgabe des Formulars: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).
.
Für beide Antworten: NO nmap erforderlich / NO sudo erforderlich .
$ arp
Aufbauend auf Xenoterraciden antworten Sie mit ip neigh
und 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))
Herunterladen über
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py