Вслед за первая часть из этой серии пришло время взглянуть на некоторые более продвинутые функции nmap
. Начиная с базового сканирования портов, можно получить дополнительную информацию о сканировании, добавив флаг -vv
:
nmap -vv 192.168.1.101
Вывод будет выглядеть примерно так:
В первой части мы рассмотрели, как сканировать диапазон адресов. Есть еще один способ выполнить сканирование, но на этот раз с указанием количества бит маски подсети:
nmap 192.168.1.1/24
Приведенная выше команда просканирует все хосты от 192.168.1.0 до 192.168.1.255 в сети с маской подсети 255.255.255.0. Хотя возможны и более крупные маски подсети (например, 255.255.0.0 – /16), это приведет к тому, что nmap
будет сканировать большое количество хостов, и этого, скорее всего, следует избегать.
Чтобы nmap
создал список хостов, которые он будет сканировать, используйте флаг -sL
:
nmap -sL 192.168.1.1/24
В этом случае вывод будет списком адресов (по одному в строке), начиная с 192.168.1.0 и заканчивая 192.168.1.255.
Если в вашей сети есть узлы, которые возражают против сканирования (например, серверы с установленными системами обнаружения вторжений или определенными типами брандмауэров), вы можете указать nmap
пропустить определенный адрес, используя команду Флаг -exclude
. В следующем примере будут сканироваться все хосты от.0 до.255, но не 192.168.1.4:
nmap 192.168.1.1/24 -exclude 192.168.1.4
Скрытность
При поиске открытых портов nmap
может использовать несколько различных методов сканирования. Сетевые соединения устанавливаются по протоколу TCP. Он определяет, какие пакеты данных отправлять и каким должен быть ответ. Чтобы установить соединение, пакет SYN сначала отправляется хосту. Если порт открыт и хост готов принимать соединения, он отвечает отправкой обратно пакета SYN-ACK. Затем клиент отправит пакет ACK для завершения соединения. Это соединение затем используется программным обеспечением более высокого уровня, таким как веб-браузеры и программы электронной почты. При вызове из обычной учетной записи пользователя это именно то, что nmap
делает для каждого сканируемого порта. Если соединение установлено, порт сообщается как открытый.
Но если nmap
вызывается из учетной записи root или с использованием sudo
, по умолчанию используется другой тип сканирования, известный как полуоткрытое сканирование. В этом сценарии nmap
сам создает TCP-пакеты низкого уровня (вместо того, чтобы использовать базовую операционную систему для этого от своего имени), и когда он получает SYN-ACK, он не отвечает сообщением ACK и так полноценное соединение не устанавливается. Но поскольку хост ответил SYN-ACK, это означает, что порт открыт и доступен для полного соединения. Преимущество полуоткрытого сканирования заключается в том, что оно выполняется быстрее и не заставляет серверное программное обеспечение, прослушивающее порт, регистрировать соединение.
Вы можете гарантировать, что используется полуоткрытое сканирование, используя флаг -sS
. В сочетании с -vv
вы увидите, что nmap
сообщает об использовании «SYN Stealth Scan» для проверки хоста. Вот полная команда:
sudo nmap -sS -vv 192.168.1.101
Также обратите внимание, что nmap
теперь предоставляет отчет о количестве сгенерированных необработанных пакетов, чтобы можно было выполнить полуоткрытое сканирование.
Все сверкало, как рождественская елка
Есть еще один тип сканирования, о котором стоит упомянуть, — это сканирование NULL и его друзья — сканирование FIN и сканирование Xmas. В стандарте TCP есть небольшой раздел, который сообщает реализации TCP, что делать, если она получает пакет с неправильными флагами. Практический результат этой «петли» заключается в том, что любые пакеты, не содержащие биты SYN, RST или ACK, приведут к возврату пакета RST, если порт закрыт, и к полному отсутствию ответа, если порт открыт. nmap
может использовать это в своих целях, отправляя неверные пакеты и ожидая ответа.
Сканирование NULL, которое вызывается с помощью -sN
, не устанавливает никаких битов в заголовке пакета. Сканирование FIN, -sF
, устанавливает бит TCP FIN, а сканирование Xmas, -sX
, устанавливает флаги FIN, PSH и URG. Это называется Рождественским сканированием, поскольку теперь пакет сверкает, как рождественская елка!
Если хост отвечает пакетом RST, то порт закрыт, ничего и порт открыт.
Заключение
Как мы видим, nmap
— мощный инструмент, предназначенный как для скрытого, так и для открытого сканирования. В качестве последнего эксперимента попробуйте следующую команду, чтобы узнать, какие хосты активны в вашей локальной сети, не сканируя их, а просто запросив их MAC-адреса:
sudo nmap -PR -vv 192.168.1.1/24
Флаг -PR
заставит nmap
запросить MAC-адрес хоста (с использованием ARP) и пометит хост как живой, если он получит ответ.п>