Odpowiedzi:
Ile wiesz o danej sieci LAN? Zakładam, że nic nie wiesz, wystarczy podłączyć kabel lub Wi-Fi.
-sP
w przypadku, gdy niektóre hosty nie odpowiedzą na ping (sprawdź dokumentację ). Ważne jest, aby nmap działał tylko wtedy, gdy ustawienia sieciowe i trasy są prawidłowe.Niektórym (większości?) Administratorom systemu nie podoba się kilka z powyższych metod, więc upewnij się, że jest dozwolony (na przykład jest to Twoja sieć). Pamiętaj również, że twoja zapora ogniowa może zapobiec niektórym z tych metod (nawet uzyskanie adresu IP za pomocą DHCP), więc najpierw sprawdź swoje reguły.
Nmap
Oto jak wykonać podstawowe wykrywanie hosta za pomocą nmap . Jak powiedziałem, konfiguracja sieci powinna być poprawna, gdy spróbujesz tego. Załóżmy, że jesteś 192.168.0.50, jesteś w podsieci / 24. Twój adres MAC jest czymś, co może się łączyć itp. Lubię mieć wireshark, aby zobaczyć, co robię.
Najpierw chcę wypróbować skanowanie listy, które próbuje rozwiązać tylko rekordy PTR w DNS dla określonych adresów IP. Nic nie wysyła do hostów, więc nie ma gwarancji, że jest naprawdę podłączony lub włączony, ale istnieje spora szansa. Ten tryb oczywiście wymaga serwera DNS, który chętnie z tobą porozmawia.
nmap -vvv -sn -sL 192.168.1.0/16
To może nic nie znaleźć lub może powiedzieć, że każde pojedyncze IP jest aktywne.
Następnie zwykle wybieram skanowanie ARP. Wysyła żądania ARP (widzisz je jak "Who has <target IP>? Tell <your IP>"
w wireshark). Jest to dość niezawodne, ponieważ nikt nie filtruje ani nie fałszuje ARP. Główną wadą jest to, że działa tylko w podsieci.
nmap -vvv -sn -PR 192.168.1.0/24
Jeśli chcesz przeskanować coś za routerami lub zaporami ogniowymi, użyj skanowania SYN i ACK. SYN uruchamia połączenie TCP i w odpowiedzi dostajesz RST lub SYNACK. Tak czy inaczej host jest włączony. Możesz mieć zakaz komunikacji ICMP lub coś takiego, jeśli jest zapora ogniowa. W większości przypadków, jeśli zapora filtruje pakiety, nic nie otrzymasz. Niektóre typy zapór filtrują tylko pakiety TCP SYN i przepuszczają każdy inny pakiet TCP. Dlatego przydatne jest skanowanie ACK. Otrzymasz RST w odpowiedzi, jeśli host jest uruchomiony. Ponieważ nie wiesz, co to jest zapora ogniowa, wypróbuj jedno i drugie.
nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24
Oczywiście możesz używać skanów opartych na ICMP z opcją -PE -PP -PM.
Inną interesującą metodą jest -PO z nieistniejącym numerem protokołu. Często w zaporach ogniowych bierze się pod uwagę tylko TCP i UDP i nikt nie sprawdza, co się stanie, gdy spróbujesz nieznanego protokołu. Otrzymasz protokół ICMP nieosiągalny, jeśli host jest uruchomiony.
nmap -vvv -sn -PO160 10.1.2.0/24
Możesz także powiedzieć nmap, aby pomijał wykrywanie hosta (-Pn) i wykonywał skanowanie portów na każdym hoście. Jest to bardzo powolne, ale możesz znaleźć inne hosty, które z jakiegoś powodu przeoczyły wykrywanie hostów.
Podoba mi się ip neigh
polecenie, które pochodzi z IpRoute2.
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
Myślę jednak, że działa tylko z arp
-able węzłów.
man ip
pokazuje, co robi sąsiad lub sąsiad.
Zainstaluj nmap i uruchom nmap -sP <mynetwork>
.
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds
.
nmap -sP 192.168.0.*
i zwrócił listę danych wyjściowych formularza: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).
.
W przypadku obu odpowiedzi: NIE wymaga nmap / NIE wymaga sudo .
$ arp
Opierając się na xenoterracides odpowiedzieć ip neigh
i 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))
Pobierz przez
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py