Відповіді:
Скільки ви знаєте про відповідну локальну мережу? Я припускаю, що ви нічого не знаєте, просто підключений до кабелю або підключений до wifi.
-sP
у випадку, якщо деякі хости не відповідають на ping (ознайомтеся з документацією ). Важливо, щоб nmap працював лише в тому випадку, якщо ваші мережеві налаштування та маршрути правильні.Деяким (більшість?) Системним адміністраторам не подобається кілька перерахованих вище методів, тому переконайтеся, що це дозволено (наприклад, це ваша мережа). Також зауважте, що ваш власний брандмауер може запобігти деяким із цих методів (навіть отримання IP-адреси за допомогою DHCP), тому спочатку перевірте свої правила.
Nmap
Ось як зробити базове відкриття хоста за допомогою nmap . Як я вже сказав, ваша мережна конфігурація повинна бути правильною при спробі цього. Скажімо, ви 192.168.0.50 ви перебуваєте в підмережі / 24. Ваша MAC-адреса - це те, що дозволено підключати і т. Д. Мені подобається проводити проводку, щоб побачити, що я роблю.
Спочатку мені подобається спробувати сканування списку, який намагається вирішити лише запити PTR у DNS для вказаних IP-адрес. Він нічого не надсилає господарям, тому немає гарантії, що він дійсно підключений чи увімкнений, але є хороший шанс. Цей режим очевидно потребує сервера DNS, який готовий поговорити з вами.
nmap -vvv -sn -sL 192.168.1.0/16
Це може не знайти нічого, або це може сказати вам, що кожен IP-адрес працює.
Тоді я зазвичай йду на сканування ARP. Він надсилає ARP-запити (ви бачите їх як "Who has <target IP>? Tell <your IP>"
у wireshark). Це досить надійно, оскільки ніхто не фільтрує та не підробляє ARP. Основним недоліком є те, що він працює лише у вашій підмережі.
nmap -vvv -sn -PR 192.168.1.0/24
Якщо ви хочете щось сканувати за маршрутизаторами або брандмауерами, тоді використовуйте сканування SYN та ACK. SYN запускає TCP-з'єднання, і ви отримуєте у відповідь RST або SYNACK. У будь-якому випадку господаря. Ви можете заборонити зв'язок ICMP або щось подібне, якщо є брандмауер. Більшість випадків, якщо брандмауер фільтрував ваші пакети, ви нічого не отримаєте. Деякі типи брандмауерів фільтрують лише пакети TCP SYN і пропускають всі інші TCP-пакети. Ось чому сканування ACK є корисним. Ви отримаєте RST у відповідь, якщо хост працює. Оскільки ви не знаєте, що є брандмауером, спробуйте обидва.
nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24
Тоді, звичайно, ви можете використовувати сканування на основі ICMP з -PE -PP -PM.
Інший цікавий метод - -PO з неіснуючим номером протоколу. Часто на брандмауерах розглядаються лише TCP та UDP, і ніхто не перевіряє, що відбувається при спробі якогось невідомого протоколу. Ви отримуєте протокол ICMP недоступним, якщо хост працює.
nmap -vvv -sn -PO160 10.1.2.0/24
Ви також можете сказати nmap, щоб пропустити відкриття хоста (-Pn) і зробити портикант на кожному хості. Це дуже повільно, але ви можете знайти інших хостів, яких хост-відкриття чомусь пропустило.
Мені подобається ip neigh
команда, яка поставляється з IpRoute2.
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
Однак я думаю, що це працює лише з arp
-able-вузлами.
man ip
показує, що робить сусід чи сусід.
Встановіть nmap та запустіть nmap -sP <mynetwork>
.
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds
.
nmap -sP 192.168.0.*
і він повернув список результатів форми: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).
.
Для обох відповідей: НІ nmap не потрібно / НЕ потрібно судо .
$ arp
Спираючись на ксенотеррациди, відповідь ip neigh
і 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))
Завантажити через
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py