Come trovare quali altre macchine sono connesse alla rete locale


27

Come posso vedere un elenco di tutte le macchine disponibili sulla LAN di cui faccio parte.

Risposte:


28

Quanto sai della LAN in questione? Suppongo che tu non sappia niente solo collegato al cavo o connesso al wifi.

  1. Prova a richiedere un indirizzo IP con DHCP. Ne prendi uno? Quindi sai già alcune cose: l'IP del gateway, l'IP del server DHCP, la maschera di sottorete e forse i server DNS.
  2. Se non ne ottieni uno, non esiste un server DHCP o la rete è filtrata MAC.
  3. In ogni caso, inizia a catturare i pacchetti con WireShark . Se si è in modalità wireless o connessi a un hub, è facile. Se sei connesso a uno switch, puoi provare il flooding MAC per riportarlo in "modalità hub", ma uno switch più intelligente disabiliterà semplicemente la tua porta. Se vuoi provarlo comunque ettercap può farlo per te. (O macchanger e uno script di shell :))
  4. Osservando i pacchetti è possibile trovare gli indirizzi IP, ma soprattutto è possibile indovinare i parametri di rete. Se sospetti che il filtro MAC cambi il tuo indirizzo MAC in uno di quelli osservati dopo che è uscito (non invia nulla per un po ').
  5. Quando hai una buona idea della configurazione di rete (maschera di rete, gateway, ecc.) Usa nmap per scansionare. Nmap può fare molto di più che -sPnel caso in cui alcuni host non rispondano al ping (consulta la documentazione ). È importante che nmap funzioni solo se le impostazioni e i percorsi di rete sono corretti.
  6. Probabilmente puoi trovare ancora più host con la scansione inattiva di nmap .

Ad alcuni (la maggior parte?) Amministratori di sistema non piacciono alcuni dei metodi sopra indicati, quindi assicurati che sia consentito (ad esempio è la tua rete). Si noti inoltre che il proprio firewall può impedire alcuni di questi metodi (anche ottenere un IP con DHCP), quindi controllare prima le regole.

Nmap

Ecco come eseguire il rilevamento dell'host di base con nmap . Come ho detto, la tua configurazione di rete dovrebbe essere corretta quando provi questo. Supponiamo che tu sia 192.168.0.50 in una sottorete / 24. Il tuo indirizzo MAC è qualcosa a cui è consentito connettersi, ecc. Mi piace avere WireShark in esecuzione per vedere cosa sto facendo.

Innanzitutto mi piace provare la scansione dell'elenco, che tenta solo di risolvere i record PTR in DNS per gli indirizzi IP specificati. Non invia nulla agli host, quindi non vi è alcuna garanzia che sia realmente connesso o acceso, ma ci sono buone possibilità. Questa modalità ha ovviamente bisogno di un server DNS che sia disposto a parlare con te.

nmap -vvv -sn -sL 192.168.1.0/16

Questo potrebbe non trovare nulla o potrebbe dirti che ogni singolo IP è attivo.

Quindi di solito vado per la scansione ARP. Invia richieste ARP (le vedi come "Who has <target IP>? Tell <your IP>"in WireShark). Ciò è abbastanza affidabile poiché nessuno filtra o falsifica l'ARP. Lo svantaggio principale è che funziona solo sulla tua sottorete.

nmap -vvv -sn -PR 192.168.1.0/24

Se si desidera eseguire la scansione di qualcosa dietro router o firewall, utilizzare le scansioni SYN e ACK. SYN avvia una connessione TCP e si ottiene un RST o un SYNACK in risposta. Ad ogni modo l'host è attivo. È possibile che la comunicazione ICMP sia vietata o qualcosa del genere se è presente un firewall. Il più delle volte se un firewall ha filtrato i tuoi pacchetti non otterrai nulla. Alcuni tipi di firewall filtrano solo i pacchetti TCP SYN e lasciano passare tutti gli altri pacchetti TCP. Ecco perché la scansione ACK è utile. Riceverai RST in risposta se l'host è attivo. Dato che non sai quale firewall è attivo, prova entrambi.

nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24

Quindi ovviamente puoi usare le scansioni basate su ICMP con -PE -PP -PM.

Un altro metodo interessante è -PO con un numero di protocollo inesistente. Spesso solo i protocolli TCP e UDP vengono considerati sui firewall e nessuno verifica cosa succede quando si prova un protocollo sconosciuto. Ottieni un protocollo ICMP irraggiungibile se l'host è attivo.

nmap -vvv -sn -PO160 10.1.2.0/24

Puoi anche dire a nmap di saltare il rilevamento dell'host (-Pn) ed eseguire un portcan su ogni host. Questo è molto lento ma potresti trovare altri host che il rilevamento degli host ha perso per qualche motivo.


Sembra un'ottima risposta, e ora dovrò chiederti di nutrirmi con il cucchiaio includendo quali comandi eseguire per ogni attività. Sono specificamente interessato a come utilizzare Nmap per rispondere alla mia domanda (non farmi leggere i documenti :)
tshepang,

5
@Tshepang: ho aggiunto alcuni esempi di nmap ma spero che tu prenda in considerazione la lettura dei documenti. Nmap è uno dei più grandi strumenti di rete e la documentazione è ben scritta e ne vale davvero la pena.
stribika,

9

Mi piace il ip neighcomando fornito con IpRoute2.

ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE

Tuttavia, penso che funzioni solo con arpnodi -able.


Che cosa fa esattamente? Per me, elenca solo alcune voci.
Tshepang,

Penso che invii semplicemente un arp all'IP di trasmissione ed elenca ciò che risponde. Onestamente non so come funziona.
xenoterracide,

1
man ipmostra cosa fa il vicino di casa.
slm

9

Installa nmap ed esegui nmap -sP <mynetwork>.


Ho capito Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds.
Tshepang,

1
@Tshepang - L'ho fatto nmap -sP 192.168.0.*e ha restituito un elenco di output del modulo:Nmap scan report for justin-desktop2 (192.168.0.61) Host is up (0.00056s latency).
Justin Ethier,

@justin Sto usando la versione 5.00 e ora mostra un numero di macchine sulla mia rete, con il modulo Host 192.168.2.23 is up (0.0088s latency)..
Tshepang,

3
Con cosa dovrei sostituire <mynetwork>?
Tshepang

@tshepang Il numero di rete, con la parte host azzerata e una maschera CIDR. In questo modo: 192.169.1.0/24
Keith

0

Per entrambe le risposte: NESSUN nmap richiesto / NESSUN sudo richiesto .

risposta 1

$ arp

Risposta 2

Basandosi sugli xenoterracidi rispondete con ip neighe 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))

Scarica tramite

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.