День 42. Nmap Live Host Discovery
Узнайте, как использовать Nmap для обнаружения активных хостов с помощью сканирования ARP, сканирования ICMP и сканирования TCP/UDP с помощью команды ping.
Task 1. Introduction
Nmap , сокращение от Network Mapper, — это бесплатное программное обеспечение с открытым исходным кодом, распространяемое под лицензией GPL, созданное Гордоном Лайоном (Фёдором), экспертом по сетевой безопасности и программистом, работающим с открытым исходным кодом. Nmap — это стандартный инструмент для построения карт сетей, идентификации активных хостов и обнаружения запущенных служб.
Скриптовый движок Nmap позволяет расширить его функциональность, от идентификации служб до эксплуатации уязвимостей. Сканирование с помощью Nmap обычно проходит этапы, показанные на рисунке ниже, хотя многие из них являются необязательными и зависят от аргументов командной строки.
Цели обучения
Когда мы хотим нацелиться на определенную сеть, нам нужен эффективный инструмент, который поможет нам справляться с повторяющимися задачами и ответит на следующие вопросы:
В этой комнате дается ответ на первый вопрос о поиске работающих компьютеров. Эта комната — первая из четырех комнат Nmap . Ответ на второй вопрос об обнаружении запущенных служб дается в следующих комнатах Nmap , посвященных сканированию портов.
В этом разделе объясняется, какие шаги предпринимает Nmap для обнаружения работающих систем перед сканированием портов. Этот этап имеет решающее значение, поскольку попытка сканирования портов офлайн-систем приведет лишь к пустой трате времени и созданию ненужного сетевого шума.
Мы представляем различные подходы, которые Nmap использует для обнаружения активных хостов. В частности, мы рассматриваем:
- ARP- сканирование : это сканирование использует ARP- запросы для обнаружения активных хостов.
- ICMP-сканирование : это сканирование использует ICMP-запросы для идентификации активных хостов.
- Сканирование TCP / UDP с помощью команды ping : это сканирование отправляет пакеты на TCP- и UDP- порты для определения активных хостов.
Мы также представляем два сканера, arp-scanи masscan, и объясняем, как они пересекаются с частью механизма обнаружения хостов Nmap .
Предварительные условия обучения
В следующем задании давайте углубимся в изучение некоторых важных концепций, прежде чем приступать к поиску работающих хостов.
Task 2. Subnetworks
Прежде чем перейти к основным задачам, давайте повторим несколько терминов. Сетевой сегмент — это группа компьютеров, соединенных с помощью общей среды передачи данных. Например, средой передачи может быть коммутатор Ethernet или точка доступа Wi-Fi. В IP-сети подсеть обычно представляет собой один или несколько сетевых сегментов, соединенных вместе и настроенных на использование одного и того же маршрутизатора. Сетевой сегмент обозначает физическое соединение, а подсеть — логическое соединение.
На приведенной ниже сетевой схеме представлены четыре сетевых сегмента или подсети. В общем, ваша система будет подключена к одному из этих сетевых сегментов/подсетей. Подсеть, или просто подсеть, имеет свой собственный диапазон IP-адресов и подключается к более обширной сети через маршрутизатор. В зависимости от сети может быть установлен брандмауэр, обеспечивающий соблюдение политик безопасности.
На рисунке выше показаны два типа подсетей:
- Подсети с маской подсети
/16, что означает, что маска подсети может быть записана как255.255.0.0. Эта подсеть может вместить около 65 000 хостов. - Подсети с
/24, что указывает на возможность выражения маски подсети как255.255.255.0. Такая подсеть может содержать около 250 хостов.
Если вам нужно узнать больше о подсетях, вы можете обратиться к заданию 2 в комнате «Введение в локальные сети» .
В рамках активной разведки мы хотим получить больше информации о группе хостов или о подсети. Если вы находитесь в одной подсети, вы ожидаете, что ваш сканер будет использовать запросы ARP (Address Resolution Protocol ) для обнаружения активных хостов. Цель запроса ARP — получить аппаратный адрес (MAC-адрес), чтобы обеспечить связь на канальном уровне; однако мы можем предположить, что хост находится в сети. (Мы вернемся к канальному уровню в Задании 4.)
Если вы находитесь в сети A, вы можете использовать ARP только для обнаружения устройств в этой подсети (10.1.100.0/24). Предположим, вы подключены к подсети, отличной от подсети целевой системы (систем). В этом случае все пакеты, генерируемые вашим сканером, будут маршрутизироваться через шлюз по умолчанию (маршрутизатор) для достижения систем в другой подсети; однако ARP- запросы не будут маршрутизироваться и, следовательно, не смогут пройти через маршрутизатор подсети. ARP — это протокол канального уровня, и ARP- пакеты привязаны к своей подсети.
Нажмите кнопку «Просмотреть сайт», чтобы запустить сетевой симулятор. Мы будем использовать этот симулятор для ответа на вопросы заданий 2, 4 и 5.
Вопрос: Сколько устройств могут увидеть ARP-запрос?
Вопрос: Получил ли компьютер 6 ARP-запрос? (Да/Нет)
Вопрос: Отправьте пакет со следующим содержимым:
- С компьютера4
- Для компьютера 4 (чтобы указать, что это трансляция)
- Тип пакета: «ARP-запрос»
- Данные: computer6 (поскольку мы запрашиваем MAC-адрес компьютера computer6 с помощью ARP-запроса)
Сколько устройств могут увидеть ARP-запрос?
Task 3. Enumerating Targets
В задании 1 мы упомянули различные методы сканирования. Прежде чем подробно объяснить каждый из них и протестировать на реальном объекте, необходимо указать объекты, которые мы хотим сканировать. Как правило, можно указать список, диапазон или подсеть. Примеры указания объектов:
- список:
MACHINE_IP scanme.nmap.org example.comбудет просканировано 3 IP-адреса. - диапазон:
10.11.12.15-20будет просканировано 6 IP-адресов:10.11.12.15,10.11.12.16,… и10.11.12.20. - Подсеть:
MACHINE_IP/30будет просканировано 4 IP-адреса.
Вы также можете указать файл в качестве входных данных для списка целей nmap -iL list_of_hosts.txt.
Если вы хотите проверить список хостов, которые будет сканировать Nmap , вы можете использовать опцию ` nmap -sL TARGETS--`. Эта опция предоставляет подробный список хостов, которые будет сканировать Nmap, без фактического сканирования; однако Nmap попытается выполнить обратное разрешение DNS для всех целей, чтобы получить их имена. Имена могут раскрыть различную информацию для пентестера. (Если вы не хотите, чтобы Nmap обращался к DNS-серверу, вы можете добавить ` -n--`.)
Запустите AttackBox, используя Start AttackBoxкнопку ниже. После открытия в режиме разделенного экрана откройте окно Terminalи используйте его Nmapдля ответа на следующие вопросы.
Вопрос: Какой IP-адрес Nmap просканирует первым, если вы укажете 10.10.12.13/29 его в качестве целевого адреса?
Вопрос: Сколько IP-адресов просканирует Nmap, если вы укажете следующий диапазон 10.10.0-255.101-125?
Task 4. Discovering Live Hosts
Давайте вернемся к уровням TCP /IP, показанным на следующем рисунке. Мы будем использовать эти протоколы для обнаружения активных хостов. Начиная снизу вверх, мы можем использовать:
Прежде чем подробно обсуждать, как можно использовать каждый сканер, мы кратко рассмотрим эти четыре протокола. ARP имеет одну цель: отправить кадр на широковещательный адрес в сетевом сегменте и запросить у компьютера с определенным IP-адресом ответ, предоставив его MAC-адрес (аппаратный адрес).
ICMP имеет множество типов . ICMP-запрос ping использует тип 8 (эхо) и тип 0 (эхо-ответ).
Если вы хотите отправить ping-запрос системе, находящейся в той же подсети, перед ICMP-эхо-запросом следует выполнить ARP- запрос.
Хотя TCP и UDP являются протоколами транспортного уровня, для сканирования сети сканер может отправить специально сформированный пакет на распространенные порты TCP или UDP , чтобы проверить, отвечает ли целевой сервер. Этот метод эффективен, особенно когда блокируется ICMP Echo.
Если вы закрыли сетевой симулятор, нажмите View Siteкнопку « » Task 2для его повторного отображения.
Вопрос: Какой тип пакета отправил компьютер 1 перед пингом?
Вопрос: Какой тип пакета получил компьютер 1 , прежде чем смог отправить пинг?
Вопрос: Сколько компьютеров ответили на запрос ping?
Отправьте пакет со следующим содержимым:
Как называется первое устройство, ответившее на первый ARP-запрос?
Вопрос: Как называется первое устройство, ответившее на второй ARP-запрос?
Вопрос: Отправьте еще один запрос Ping. Потребовались ли новые запросы ARP? (да/нет)
Task 5. Nmap Host Discovery Using ARP
Как узнать, какие хосты работают? Крайне важно избегать траты времени на сканирование портов неактивных хостов или IP-адресов, которые не используются. Существуют различные способы обнаружения работающих хостов. Если параметры обнаружения хостов отсутствуют, Nmap использует следующие подходы для обнаружения активных хостов:
- Когда привилегированный пользователь пытается сканировать цели в локальной сети (Ethernet), Nmap использует ARP- запросы . Привилегированным пользователем считается
rootпользователь, принадлежащий к группеsudoersи имеющий право запускать соответствующие программыsudo. - Когда привилегированный пользователь пытается сканировать цели за пределами локальной сети, Nmap использует запросы эхо ICMP, подтверждение TCP ACK (Acknowledge) на порт 80, синхронизацию TCP SYN (Synchronize) на порт 443 и запрос метки времени ICMP.
- Когда непривилегированный пользователь пытается сканировать цели за пределами локальной сети, Nmap прибегает к трехстороннему TCP-рукопожатию, отправляя SYN-пакеты на порты 80 и 443.
По умолчанию Nmap использует сканирование с помощью команды ping для поиска активных хостов, а затем продолжает сканирование только активных хостов. Если вы хотите использовать Nmap для обнаружения онлайн-хостов без сканирования портов активных систем, вы можете выполнить команду nmap -sn TARGETS. Давайте разберемся подробнее, чтобы получить полное представление о различных используемых методах.
Сканирование ARP возможно только в том случае, если вы находитесь в той же подсети, что и целевые системы. В сетях Ethernet (802.3) и WiFi (802.11) необходимо знать MAC-адрес любой системы, прежде чем вы сможете с ней взаимодействовать. MAC-адрес необходим для заголовка канального уровня; он содержит MAC-адреса источника и назначения, а также другие поля. Чтобы получить MAC-адрес, операционная система отправляет ARP-запрос. Хост, отвечающий на ARP-запросы, считается активным. ARP-запрос работает только в том случае, если целевая система находится в той же подсети, что и вы, то есть в той же сети Ethernet/Wi-Fi. Во время сканирования локальной сети с помощью Nmap следует ожидать появления множества ARP-запросов. Если вы хотите, чтобы Nmap выполнял только сканирование ARP без сканирования портов, вы можете использовать команду `npm run src` nmap -PR -sn TARGETS, где ` -PRnpm run src` указывает, что вам нужно только сканирование ARP. В следующем примере показано, как Nmap использует ARP для обнаружения хостов без сканирования портов. Мы запускаем команду `npm run src` nmap -PR -sn MACHINE_IP/24для обнаружения всех активных систем в той же подсети, что и наша целевая машина.
pentester@TryHackMe$ sudo nmap -PR -sn 10.10.210.6/24 Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-02 07:12 BST Nmap scan report for ip-10-10-210-75.eu-west-1.compute.internal (10.10.210.75) Host is up (0.00013s latency). MAC Address: 02:83:75:3A:F2:89 (Unknown) Nmap scan report for ip-10-10-210-100.eu-west-1.compute.internal (10.10.210.100) Host is up (-0.100s latency). MAC Address: 02:63:D0:1B:2D:CD (Unknown) Nmap scan report for ip-10-10-210-165.eu-west-1.compute.internal (10.10.210.165) Host is up (0.00025s latency). MAC Address: 02:59:79:4F:17:B7 (Unknown) Nmap scan report for ip-10-10-210-6.eu-west-1.compute.internal (10.10.210.6) Host is up. Nmap done: 256 IP addresses (4 hosts up) scanned in 3.12 seconds
В данном случае, AttackBoxимея IP-адрес 10.10.210.6, Nmap использовал ARP-запросы для обнаружения активных хостов в той же подсети. ARP-сканирование работает, как показано на рисунке ниже. Nmap отправляет ARP-запросы всем целевым компьютерам, и те, которые находятся в сети, должны ответить ARP-ответом.
Если мы посмотрим на пакеты, сгенерированные с помощью таких инструментов, как tcpdump или Wireshark, мы увидим сетевой трафик, похожий на показанный ниже. На рисунке ниже Wireshark отображает MAC-адреса источника и назначения, протокол и запрос для каждого ARP-запроса. Адрес источника — это MAC-адрес нашего AttackBox, а адрес назначения — широковещательный адрес, поскольку MAC-адрес цели нам неизвестен. Однако IP-адрес цели можно увидеть в столбце Info. На рисунке видно, что мы запрашиваем MAC-адреса всех IP-адресов в подсети, начиная с 10.10.210.1. Хост с запрашиваемым IP-адресом отправит ARP- ответ со своим MAC-адресом, и именно так мы узнаем, что он находится в сети.
Говоря о сканировании ARP , следует упомянуть сканер, построенный на основе ARP- запросов: arp-scan; он предоставляет множество опций для настройки сканирования. Для получения подробной информации посетите вики-страницу arp -scan . Один из популярных вариантов — arp-scan --localnetили просто arp-scan -l. Эта команда отправит ARP- запросы на все действительные IP-адреса в вашей локальной сети. Более того, если ваша система имеет более одного интерфейса и вы заинтересованы в обнаружении активных хостов на одном из них, вы можете указать интерфейс с помощью -I. Например, sudo arp-scan -I eth0 -lотправит ARP- запросы на все действительные IP-адреса на этом eth0интерфейсе.
Обратите внимание, что arp-scanон не установлен на AttackBox; однако его можно установить с помощью apt install arp-scan.
В приведенном ниже примере мы просканировали подсеть AttackBox с помощью arp-scan ATTACKBOX_IP/24. Поскольку мы выполнили это сканирование в промежутке времени, близком к предыдущему nmap -PR -sn ATTACKBOX_IP/24, мы получили те же три активные цели.
pentester@TryHackMe$ sudo arp-scan 10.10.210.6/24 Interface: eth0, datalink type: EN10MB (Ethernet) WARNING: host part of 10.10.210.6/24 is non-zero Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/) 10.10.210.75 02:83:75:3a:f2:89 (Unknown) 10.10.210.100 02:63:d0:1b:2d:cd (Unknown) 10.10.210.165 02:59:79:4f:17:b7 (Unknown) 4 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9: 256 hosts scanned in 2.726 seconds (93.91 hosts/sec). 3 responded
Аналогичным образом, команда arp-scanсгенерирует множество ARP- запросов, которые мы можем просмотреть с помощью tcpdump, Wireshark или аналогичного инструмента. Мы можем заметить, что захват пакетов arp-scanпоказывает nmap -PR -snсхожие закономерности трафика. Ниже приведен вывод Wireshark.
Если вы закрыли сетевой симулятор, нажмите Visit Siteкнопку « » в задании 2, чтобы снова открыть его.
Мы будем отправлять широковещательные ARP-запросы со следующими параметрами:
- С компьютера1
- Компьютеру 1 (чтобы указать, что это трансляция)
- Тип пакета: «ARP-запрос»
- Данные: попробуйте все 8 устройств (кроме компьютера 1) в сети: компьютер 2 , компьютер 3 , компьютер 4 , компьютер 5 , компьютер 6 , коммутатор 1 , коммутатор 2 и маршрутизатор.
Task 6. Nmap Host Discovery Using ICMP
Мы можем отправить ping-запрос на каждый IP-адрес в целевой сети и посмотреть, кто ответит на наши pingзапросы (ICMP Type 8/Echo) ответным ping-запросом (ICMP Type 0). Просто, не правда ли? Хотя это был бы самый простой подход, он не всегда надежен. Многие брандмауэры блокируют ICMP-эхо-запросы; в новых версиях MS Windows настроен брандмауэр хоста, который по умолчанию блокирует запросы ICMP-эхо. Помните, что ARP-запрос предшествует ICMP-запросу, если ваша цель находится в той же подсети.
Чтобы использовать ICMP-запрос эхо-ответа для обнаружения активных хостов, добавьте опцию -PE. (Не забудьте добавить её, -snесли вы не хотите после этого выполнять сканирование портов.)
Как показано на следующем рисунке, сканирование ICMP echo отправляет запрос ICMP echo и ожидает, что целевой объект ответит ответом ICMP echo, если он находится в сети.
В приведенном ниже примере мы просканировали подсеть целевого объекта с помощью команды `npm run src` nmap -PE -sn MACHINE_IP/24. Это сканирование отправит эхо-пакеты ICMP на каждый IP-адрес в подсети. Мы ожидаем ответа от работающих хостов; однако следует помнить, что многие брандмауэры блокируют ICMP. В приведенном ниже выводе показан результат сканирования подсети класса C виртуальной машины с помощью команды `npm run src` sudo nmap -PE -sn MACHINE_IP/24из AttackBox.
pentester@TryHackMe$ sudo nmap -PE -sn 10.10.68.220/24 Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-02 10:16 BST Nmap scan report for ip-10-10-68-50.eu-west-1.compute.internal (10.10.68.50) Host is up (0.00017s latency). MAC Address: 02:95:36:71:5B:87 (Unknown) Nmap scan report for ip-10-10-68-52.eu-west-1.compute.internal (10.10.68.52) Host is up (0.00017s latency). MAC Address: 02:48:E8:BF:78:E7 (Unknown) Nmap scan report for ip-10-10-68-77.eu-west-1.compute.internal (10.10.68.77) Host is up (-0.100s latency). MAC Address: 02:0F:0A:1D:76:35 (Unknown) Nmap scan report for ip-10-10-68-110.eu-west-1.compute.internal (10.10.68.110) Host is up (-0.10s latency). MAC Address: 02:6B:50:E9:C2:91 (Unknown) Nmap scan report for ip-10-10-68-140.eu-west-1.compute.internal (10.10.68.140) Host is up (0.00021s latency). MAC Address: 02:58:59:63:0B:6B (Unknown) Nmap scan report for ip-10-10-68-142.eu-west-1.compute.internal (10.10.68.142) Host is up (0.00016s latency). MAC Address: 02:C6:41:51:0A:0F (Unknown) Nmap scan report for ip-10-10-68-220.eu-west-1.compute.internal (10.10.68.220) Host is up (0.00026s latency). MAC Address: 02:25:3F:DB:EE:0B (Unknown) Nmap scan report for ip-10-10-68-222.eu-west-1.compute.internal (10.10.68.222) Host is up (0.00025s latency). MAC Address: 02:28:B1:2E:B0:1B (Unknown) Nmap done: 256 IP addresses (8 hosts up) scanned in 2.11 seconds
Результаты сканирования показывают, что активны 8 хостов, а также их MAC-адреса. Как правило, мы не ожидаем узнать MAC-адреса целевых устройств, если они не находятся в той же подсети, что и наша система. Приведенные выше данные указывают на то, что Nmap не потребовалось отправлять ICMP-пакеты, поскольку он подтвердил активность этих хостов на основе полученных ARP-ответов.
Мы повторим описанное выше сканирование; однако на этот раз мы будем сканировать с системы, находящейся в другой подсети. Результаты будут аналогичными, но без MAC-адресов.
pentester@TryHackMe$ sudo nmap -PE -sn 10.10.68.220/24 Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 12:16 EEST Nmap scan report for 10.10.68.50 Host is up (0.12s latency). Nmap scan report for 10.10.68.52 Host is up (0.12s latency). Nmap scan report for 10.10.68.77 Host is up (0.11s latency). Nmap scan report for 10.10.68.110 Host is up (0.11s latency). Nmap scan report for 10.10.68.140 Host is up (0.11s latency). Nmap scan report for 10.10.68.142 Host is up (0.11s latency). Nmap scan report for 10.10.68.220 Host is up (0.11s latency). Nmap scan report for 10.10.68.222 Host is up (0.11s latency). Nmap done: 256 IP addresses (8 hosts up) scanned in 8.26 seconds
Если вы проанализируете сетевые пакеты с помощью такого инструмента, как Wireshark, вы увидите нечто похожее на изображение ниже. Вы можете заметить, что у нас есть один исходный IP-адрес в другой подсети, чем целевая подсеть, и мы отправляем запросы ICMP echo всем IP-адресам в целевой подсети, чтобы узнать, кто ответит.
Поскольку запросы ICMP echo обычно блокируются, вы также можете рассмотреть запросы ICMP Timestamp или ICMP Address Mask, чтобы определить, находится ли система в сети. Nmap использует запрос временной метки (ICMP Type 13) и проверяет, получит ли он ответ с временной меткой (ICMP Type 14). Добавление этой -PPопции указывает Nmap использовать запросы ICMP временной метки. Как показано на рисунке ниже, вы ожидаете ответа от активных хостов.
В следующем примере мы запускаем команду nmap -PP -sn MACHINE_IP/24для обнаружения компьютеров, находящихся в сети в целевой подсети.
pentester@TryHackMe$ sudo nmap -PP -sn 10.10.68.220/24 Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 12:06 EEST Nmap scan report for 10.10.68.50 Host is up (0.13s latency). Nmap scan report for 10.10.68.52 Host is up (0.25s latency). Nmap scan report for 10.10.68.77 Host is up (0.14s latency). Nmap scan report for 10.10.68.110 Host is up (0.14s latency). Nmap scan report for 10.10.68.140 Host is up (0.15s latency). Nmap scan report for 10.10.68.209 Host is up (0.14s latency). Nmap scan report for 10.10.68.220 Host is up (0.14s latency). Nmap scan report for 10.10.68.222 Host is up (0.14s latency). Nmap done: 256 IP addresses (8 hosts up) scanned in 10.93 seconds
Аналогично предыдущему сканированию ICMP, это сканирование отправит множество запросов ICMP с временной меткой на каждый действительный IP-адрес в целевой подсети. На скриншоте Wireshark ниже вы можете увидеть, как один исходный IP-адрес отправляет пакеты ICMP на каждый возможный IP-адрес для обнаружения работающих хостов.
Аналогично, Nmap использует запросы маски адреса (ICMP типа 17) и проверяет, получает ли он ответ с маской адреса (ICMP типа 18). Это сканирование можно включить с помощью опции -PM. Как показано на рисунке ниже, ожидается, что активные хосты будут отвечать на запросы ICMP с маской адреса.
В попытке обнаружить активные хосты с помощью запросов ICMP-адресной маски мы запускаем команду nmap -PM -sn MACHINE_IP/24. Хотя предыдущие сканирования показали, что активны как минимум 8 хостов, это сканирование не дало результатов. Причина в том, что целевая система или межсетевой экран на маршруте блокируют этот тип ICMP-пакетов. Поэтому важно изучить несколько подходов для достижения одного и того же результата. Если блокируется один тип пакетов, мы всегда можем выбрать другой для обнаружения целевой сети и служб.
pentester@TryHackMe$ sudo nmap -PM -sn 10.10.68.220/24 Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 12:13 EEST Nmap done: 256 IP addresses (0 hosts up) scanned in 52.17 seconds
Хотя мы не получили никакого ответа и не смогли определить, какие хосты были в сети, важно отметить, что в ходе сканирования были отправлены запросы ICMP с маской адреса на каждый действительный IP-адрес, и ожидался ответ. Каждый запрос ICMP был отправлен дважды, как показано на скриншоте ниже.
Вопрос: Какая опция необходима, чтобы указать Nmap использовать метку времени ICMP для обнаружения активных хостов?
Вопрос: Какая опция необходима, чтобы указать Nmap использовать маску ICMP-адреса для обнаружения активных хостов?
Вопрос: Какая опция необходима, чтобы указать Nmap использовать ICMP Echo для обнаружения активных хостов?
Task 7. Nmap Host Discovery Using TCP and UDP
Мы можем отправить пакет с установленным флагом SYN (синхронизация) на TCP- порт (по умолчанию 80) и дождаться ответа. Открытый порт должен ответить SYN/ACK (подтверждение); закрытый порт приведет к RST (сброс). В этом случае мы проверяем только наличие ответа, чтобы определить, активен ли хост. Конкретное состояние порта здесь не имеет значения. Рисунок ниже напоминает о том, как обычно работает трехстороннее рукопожатие TCP .
Если вы хотите, чтобы Nmap использовал TCP SYN ping, вы можете сделать это с помощью опции, -PSза которой следует номер порта, диапазон, список или их комбинация. Например, -PS21будет нацелен на порт 21, в то время как -PS21-25будет нацелен на порты 21, 22, 23, 24 и 25. Наконец, -PS80,443,8080будет нацелен на три порта: 80, 443 и 8080.
Привилегированные пользователи (root и sudo) могут отправлять пакеты TCP SYN и не обязаны завершать трехстороннее рукопожатие TCP, даже если порт открыт, как показано на рисунке ниже. Непривилегированные пользователи вынуждены завершать трехстороннее рукопожатие, если порт открыт.
Мы запустим nmap -PS -sn MACHINE_IP/24сканирование целевой подсети виртуальных машин. Как показано в приведенном ниже выводе, мы обнаружили пять хостов.
pentester@TryHackMe$ sudo nmap -PS -sn 10.10.68.220/24 Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 13:45 EEST Nmap scan report for 10.10.68.52 Host is up (0.10s latency). Nmap scan report for 10.10.68.121 Host is up (0.16s latency). Nmap scan report for 10.10.68.125 Host is up (0.089s latency). Nmap scan report for 10.10.68.134 Host is up (0.13s latency). Nmap scan report for 10.10.68.220 Host is up (0.11s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 17.38 seconds
Давайте подробнее рассмотрим, что происходило за кулисами, изучив сетевой трафик в Wireshark на рисунке ниже. Технически говоря, поскольку мы не указывали никаких TCP-портов для использования в сканировании TCP ping, Nmap использовал TCP-порт по умолчанию, 80. Ожидается, что любая служба, прослушивающая порт 80, ответит, косвенно указывая на то, что хост находится в сети.
Как вы уже догадались, это отправляет пакет с установленным флагом ACK. Для этого необходимо запускать Nmap от имени привилегированного пользователя. Если вы попытаетесь сделать это от имени непривилегированного пользователя, Nmap попытается выполнить трехстороннее рукопожатие.
По умолчанию используется порт 80. Синтаксис аналогичен TCP SYN ping. -PAдолжен сопровождаться номером порта, диапазоном номеров портов, списком или их комбинацией. Например, рассмотрим -PA21, -PA21-25и -PA80,443,8080. Если порт не указан, будет использоваться порт 80.
На следующем рисунке показано, что любой TCP-пакет с установленным флагом ACK должен получить ответ в виде TCP-пакета с RSTустановленным флагом. Целевой хост отвечает с RSTустановленным флагом, поскольку TCP-пакет с флагом ACK не является частью какого-либо текущего соединения. Ожидаемый ответ используется для определения того, активен ли целевой хост.
В этом примере мы запускаем sudo nmap -PA -sn MACHINE_IP/24проверку доступности хостов в подсети целевого объекта. Мы видим, что сканирование TCP ACK ping обнаружило пять хостов как активных.
pentester@TryHackMe$ sudo nmap -PA -sn 10.10.68.220/24 Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 13:46 EEST Nmap scan report for 10.10.68.52 Host is up (0.11s latency). Nmap scan report for 10.10.68.121 Host is up (0.12s latency). Nmap scan report for 10.10.68.125 Host is up (0.10s latency). Nmap scan report for 10.10.68.134 Host is up (0.10s latency). Nmap scan report for 10.10.68.220 Host is up (0.10s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 29.89 seconds
Если мы взглянем на сетевой трафик, как показано на рисунке ниже, мы обнаружим множество пакетов с установленным флагом ACK, отправленных на порт 80 целевых систем. Nmap отправляет каждый пакет дважды. Системы, которые не отвечают, находятся в автономном режиме или недоступны.
Наконец, мы можем использовать UDP для определения того, находится ли хост в сети. В отличие от TCP SYN ping, отправка UDP-пакета на открытый порт, как правило, не приводит к ответу. Однако, если мы отправим UDP-пакет на закрытый UDP-порт, мы ожидаем получить ICMP-пакет "порт недоступен"; это указывает на то, что целевая система активна и доступна.
На следующем рисунке показан UDP-пакет, отправленный на открытый UDP-порт, который не вызывает никакой реакции. Однако отправка UDP-пакета на любой закрытый UDP-порт может вызвать реакцию, косвенно указывающую на то, что целевой объект находится в сети.
Синтаксис для указания портов аналогичен синтаксису TCP SYN ping и TCP ACK ping; Nmap использует -PUдля UDP ping. В следующем примере мы выполняем сканирование UDP и обнаруживаем пять активных хостов.
pentester@TryHackMe$ sudo nmap -PU -sn 10.10.68.220/24 Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 13:45 EEST Nmap scan report for 10.10.68.52 Host is up (0.10s latency). Nmap scan report for 10.10.68.121 Host is up (0.10s latency). Nmap scan report for 10.10.68.125 Host is up (0.14s latency). Nmap scan report for 10.10.68.134 Host is up (0.096s latency). Nmap scan report for 10.10.68.220 Host is up (0.11s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 9.20 seconds
Давайте рассмотрим сгенерированные UDP-пакеты. На следующем скриншоте Wireshark мы видим, что Nmap отправляет UDP-пакеты на UDP-порты, которые, скорее всего, закрыты. На изображении ниже показано, что Nmap использует необычный UDP-порт для запуска ошибки ICMP «недоступен адрес назначения (порт недоступен)».
В качестве дополнительной информации следует отметить, что Masscan использует аналогичный подход для обнаружения доступных систем. Однако, чтобы быстро завершить сканирование сети, Masscan довольно агрессивно генерирует пакеты. Синтаксис довольно похож: -pза ним может следовать номер порта, список или диапазон. Рассмотрим следующие примеры:
masscan MACHINE_IP/24 -p443masscan MACHINE_IP/24 -p80,443masscan MACHINE_IP/24 -p22-25masscan MACHINE_IP/24 ‐‐top-ports 100
Masscan не установлен на устройстве AttackBox; однако его можно установить с помощью команды apt install masscan.
Вопрос: Для какого вида сканирования TCP ping не требуется привилегированная учетная запись?
Вопрос: Для какого вида сканирования TCP ping требуется привилегированная учетная запись?
Вопрос: Какую опцию нужно добавить в Nmap, чтобы запустить сканирование TCP/SYN ping на порту telnet?
Task 8. Using Reverse-DNS Lookup
По умолчанию Nmap использует обратные DNS-запросы к онлайн-хостам. Поскольку имена хостов могут многое рассказать, этот шаг может быть полезным. Однако, если вы не хотите отправлять такие DNS- запросы, вы можете -nпропустить этот шаг.
По умолчанию Nmap выполняет поиск работающих хостов; однако вы можете использовать опцию -Rдля запроса DNS-сервера даже для неработающих хостов. Если вы хотите использовать конкретный DNS-сервер, вы можете добавить соответствующую --dns-servers DNS_SERVER опцию.
Вопрос: Мы хотим, чтобы Nmap выполнил обратный DNS-запрос для всех возможных хостов в подсети, надеясь получить некоторую информацию из имен. Какую опцию нам следует добавить?
Task 9. Summary
Пройдя это задание, вы узнали, как ARP , ICMP, TCP и UDP могут обнаруживать активные хосты. Любой ответ от хоста указывает на то, что он находится в сети. Ниже приведено краткое описание параметров командной строки Nmap , которые мы рассмотрели.
Основная группа обучения ИБ
Lab-группу с полезным софтом / книгами / аудио.
Чат для обсуждений, задавай свои вопросы.
P.S. С вами был @Fnay_Offensive
До новой встречи, user_name!