Nmap

Nmap

https://t.me/joinchat/AAAAAEum5yc-wzg24hy3Mg

Nmap - это лучший сканер портов и главный инструмент пинтестера.

https://t.me/joinchat/AAAAAEum5yc-wzg24hy3Mg


Nmap умеет сканировать диапазоны IP, подсети и отдельные хосты и может определить ОС, сервисы на портах и их версии. Функционал расширяется за счет сторонних скриптов, которые можно писать и самому. Итак первое с чего можно начать это

# nmap localhost

В манах часто пишут, что nmap сканирует только првые 1024 порта по умолчанию, ну во-первых: можно задать диапазон портов в ручную через опцию -p

# nmap localhost -p 1-65535

А во-вторых: список портов которые nmap будет сканировать по дефолту определен в файле "/usr/share/nmap/nmap-services". Nmap также может попытаться определить версию сервиса, для этого надо указать опцию -sV

# nmap localhost -sV

А опция -O попросит утилиту определить ОС хоста. Есть возможность более детального сканирования (агрессивного) с помощью опции -A. Ниже я приведу список примеров сканирований.

Настройка диапазонов портов

# nmap localhost -p 22,21,80,100-200

Сканируем подсеть

# nmap 192.168.0.0/24 -p 22

Сканирование списка хостов из файла

# nmap -p 22 -iL hosts.txt

TCP сканирование (будет использован системный вызов Connect())

# nmap -p22 -sT localhost

SYN, FIN, Xmas, TCP Null сканирования

# nmap -p22 -sS localhost

# nmap -p22 -sF localhost

# nmap -p22 -sX localhost

# nmap -p22 -sN localhost

Не определять доменные имена

# nmap -n -p22 localhost

Показывать причину, по которой определенный порт считается «открытым»:

# nmap -p22,80,100-200 --reason localhost

Пингануть хосты для проверки, онлайн ли они, но не сканировать порты:

# nmap -sn 192.168.0.0/24

Сканировать хосты, даже если они не отвечают на пинги:

# nmap -p22,80 -Pn localhost

Считать, что хост онлайн, если он отвечает на SYN, посланный на порт 443:

# nmap -p22,80,443 -PS 443 192.168.0.0/24

Сканирование UDP (работает медленнее обычного сканирования TCP):

# nmap -sU -p111 localhost

Ограничиваем время, которое можно потратить на один хост:

# nmap -p22 --host-timeout 1m localhost

Управление степенью параллелизма:

# nmap -p22 --max-parallelism 2 localhost

# nmap -p22 --min-parallelism 2 localhost

Делаем паузу прежде, чем перейти к следующему хосту:

# nmap -p22 --scan-delay 5s 192.168.0.0/24

Ограничение на число пакетов, посылаемых в секунду:

# nmap -p22 --min-rate 1 --max-rate 100 localhost

Обновить базу данных скриптов NSE (Nmap Scripting Engine)

# nmap --script-updatedb

Натравляем все скрипты из группы default:

# nmap --script default localhost

Все скрипты, название которых начинается на http

# nmap --script http-* localhost

 Не пинговать перед сканированием (при игнорировании ICMP)

# nmap -p22 -P0 localhost

Сохранить результат в файл

# nmap -p22 -o scan.log localhost

Указываем адреса по маске, диапазону, диапазонам, вся сеть по маске 255.255.0.0

# nmap 192.168.*.*

# nmap 192.168.0-255.0-255

# nmap 192.168.1-50,51-255.1,2,3,4,5-255

# nmap 192.168.0.0/16

Обход брэндмауеров

Разные методы сканирования необходимы для обхода IDS (это система обранужения вторжений) и брендмауеров. Для фильтрафии порта брендмауер отбрасывает пакеты ASK, которые отправляются при созднии нового соединения, а пакеты SYN, которые отправляются в рамках текущего соеинения, проходят свободно. А еще есть stateful-брандмауэры. Они более детальнее анализируют приходящие пакеты и могут определить пакеты nmap отправленные в рамках сканировани. Iptables такое умеет, например. А выяснить, какой тип брандмауэра используется, можно, выполнив SYN-сканирование и сразу за ним — ACK-сканирование. Если порты, отмеченные во время SYN-сканирования как filtered, стали unfiltered, значит, перед тобой не stateful-брандмауэр. Кроме того, можно попробовать обойти брандмауэр с помощью изменения номера исходящего порта:

# nmap --source-port 53 192.168.0.1

Это эксплуатация старой как мир ошибки настройки брандмауэра, которая заключается в том, что админ открывает доступ всему входящему трафику (включая протокол TCP) с порта 53, чтобы позволить приложениям беспрепятственно выполнять DNS-запросы. Сегодня такое встречается редко, но, как показывает практика, некомпетентность со временем не исчезает. Кроме всего прочего, в Nmap есть средства для скрытия факта сканирования от глаз брандмауэров и IDS:

# nmap -f 192.168.0.1

В этом случае Nmap будет разбивать пакеты на крохотные фрагменты размером 8 байт. Делает он это в надежде на то, что брандмауэр или IDS не сможет собрать пакет из фрагментов и проанализировать его заголовок (по причине плохой реализации или в угоду производительности) и просто пропустит пакет или отбросит.

# nmap --mtu 16 192.168.0.1

Та же история, только с возможностью контролировать размер пакета (в данном случае 16). Можно использовать против брандмауэров и IDS, которые умеют ловить факты сканирования с помощью Nmap, анализируя размер фрагмента.

# nmap --data-length 25 192.168.0.1

Добавляет в конец пакета указанное количество рандомных байтов. Цель та же, что и в предыдущем случае: обмануть IDS, которая может быть способна обнаружить сканирование, анализируя размер пакета (Nmap всегда посылает пакеты длиной 40 байт при использовании протокола TCP).

Расширение функционала с помощью скриптов.

Nmap поставляется с более чем 500 скриптами, которые могут относиться к одной или нескольким из четырнадцати категорий.

  • auth — проверка возможности логина. Например, скрипт ftp-anon пробует выполнить анонимный логин на FTP-сервер.
  • broadcast — различные виды обнаружения хостов в сети. Пример: broadcast-upnp-info — скрипт для поиска UPnP-сервисов.
  • brute — реализация техник брутфорса паролей. Пример: http-brute — брутфорс паролей от веб-сервера.
  • default — скрипты, запускаемые автоматически при указании опции -A или -sC. Обычно это простые быстрые скрипты, собирающие дополнительную информацию о машине, вроде уже приведенного выше ftp-anon.
  • discovery — практически аналог broadcast. Пример: smb-enum-shares — поиск расшаренных с помощью протокола SMB дисков.
  • dos — скрипты для организации DoS-атак. Пример: smb-vuln-regsvc-dos — выводит из строя Windows 2000 путем эксплуатации уязвимости MSRC8742.
  • exploit — эксплуатация или проверка на уязвимость. Пример: smb-vuln-ms06-025 — проверка машин Windows на уязвимость MS06-025.
  • external — скрипты, использующие внешние ресурсы для получения дополнительной информации о машине. Пример: whois.
  • fuzzer — скрипты, посылающие удаленной стороне неожиданные и неправильно сформированные данные с целью поиска уязвимостей или попытки выполнить DoS. Пример: dns-fuzz.
  • intrusive — скрипты, выполняющие активные действия в отношении машины. Пример: snmp-brute — брутфорс SNMP-сервера.
  • malware — проверка на зараженность машины вирусами и бэкдорами. Пример: smtp-strangeport — поиск SMTP-сервера на нестандартном порте, что может быть свидетельством заражения машины трояном, рассылающим спам.
  • safe — «безопасные» скрипты, которые не совершают активных действий в отношении машины, не забивают канал пакетами и не эксплуатируют уязвимости. Пример: ssh-hostkey — получает публичные ключи SSH-сервера.
  • version — получение версий работающих служб. Пример: pptp-version — выводит на экран дополнительную информацию о PPTP-сервере.
  • vuln — проверка служб на уязвимости.

Если указать опции -A или -sC, скрипты категории default будут запускаться автоматически. Все скрипты расположены по пути:  /usr/share/nmap/scripts и ты можешь сам писать себе скрипты, ну если надумаешь выучить язык Lua.

Шесть состояний порта Nmap

  • open — порт открыт.
  • closed — порт закрыт.
  • filtered — порт фильтруется, неизвестно, закрыт или открыт.
  • unfiltered — порт не фильтруется, неизвестно, закрыт или открыт (такой результат может дать только ACK-сканирование).
  • open|filtered — порт либо открыт, либо фильтруется.
  • closed|filtered — порт либо закрыт, либо фильтруется (такой результат может дать только Idle-сканирование).

Также рекомендую добавить плагин vulners, который при сканировании с флагом -sV соберет известные уязвимости для сервиса, работающим на этом порту.

Report Page