Всем привет. Разбирался со всей мощью такого сканера, как nmap и решил написать несколько строк о нем.
Статья
https://nmap.org/book/man.html из разряда бесполезных и не очень, но в целом выйдет небольшой И НЕ ПОЛНЫЙ мануальчик.
Полный же мануальчик (которым и не только которым я пользовался при написании этой статьи) можно глянуть здесь.
EN
RU
Как читать?
Новичкам взглянуть по первому абзацу, а потом обращаться при практике.
Опытным можно пробежаться в скольз по интересующим разделам.
Совсем опытным сразу в конец.
Для начала рассмотрим
в каких форматах можно задавать цели.
nmap -iL
nmap -iR 4 - где номер означает количество РАНДОМНЫХ хостов, то есть два раза выполнив эту команду выполнится сканирование разных хостов.
Зачем? Можно поискать уязвимые хосты с помощью скриптов, или просто с открытым портом во всём интернете(Пример nmap -iR 100000 -PN -p 80). -PN опция очень удобная, когда сканируем два три порта у диапазона адресов. Отключает определение доступности хоста, т.е. мы не спрашиваем у хоста: «А доступен ли ты?» -, мы сразу спрашиваем: «А открыт ли у тебя такой порт?».
nmap 192.168.101.1,192.168.101.2
nmap 192.168.1-101.1 Просканирует 192.168.2.1,192.168.3.1....192.168.100.1,192.168.1 01.1
nmap 192.168.1.1/24 по 24 маске 0.0.0.255 (Другие маски можно глянуть тут
http://www.networkcenter.info/inform/netmask)
nmap 192.168.0.101,102,103
Определение Хостов
nmap -n -sL megahacker.ru - Быстрое определение хоста. Это штука ничего никуда не посылает, а просто выводит список всего того что ВЫ собирались сканировать.
-sP - Ping запрос, спрашиваем, а работает вообще наш хост (Обратное Pn)?
-PN - не определять хост на работоспособность (уменьшает время работы при сканировании 1 - 2 портов)
--dns-servers- если надо можно задать собственные сервера (например если у Вас свой dnsсервер)
Посмотрим на флаги
-sS/sT/sA/sW/sM
nmap -sSСТЕЛС - СКАНИРОВАНИЕ. Как видно из названия скрытое сканирование методом (TCP CYN). Отправляется SYN - пакет на нужный порт и анализируя пакет определяется его состояние. Наиболее быстрый и более незаметный поэтому на первом месте.
nmap -sT - Бывают ситуации, когда полномочия суперпользователя отсутствуют обычное сканирование с помощью вызова функции системной функции connect. Менее приоритетный режим, работает дольше, так как устанавливается полное соединение, и даже простенькая IDS сможет его словить.
nmap -sA Определение фильтрованныхине фильтрованных портов НО НЕ ОПРЕДЕЛЯЕТ НА ОТКРЫТЫЕ И ЗАКРЫТЫЕ.
nmap–unprivileges/ privileges– считаем по дефолту что у нас нет/есть права root.
nmap -sW – Windows сканирование. Тоже что и -sA, но в некоторых сборках может возвращать и открытые порты.
nmap -sN; -sF; -sX (TCP NULL, FIN и Xmas сканирования) - Еще больше стелс чем SYN. Суть этих трех методов заключается в установке некоторых (или ничего не устанавливать) флагов.
(с)Работает в режиме обнаружения портов, удобно использовать на UNIX системах, хотя есть и недостатки, неспособность разделять порты на открытые и фильтруемые. (с) И работать может не на всех системах. RFC 793 - наше всё
nmap -sM тоже что и (TCP NULL, FIN и Xmas), с той лишь разницей что RST пакет тупо отбрасывается если порт закрыт. Нам это дает обход некоторых уникальных IDS. И может работать там, где не работает способ выше.
Эти методы по сути проверяют
фаервол на уязвимости
nmap --scanflags URGACKPSHRSTSYNFIN – Устанавливать указанные флаги по стандарту RFC каждый из методов по-своему проверяет открытие закрытие порта. По сути это альтернатива некоторых других режимов, но так же и позволяет обойти IDS.
nmap -sI- ещё один стел режим. Запросы идут с Вашей зомби машины. Пример: nmap -Pn -p- -sI
www.proxy.ruwww.hack.com
nmap -b :@: - Сканирование портов, используя протокол FTP. Минусы: почти не осталось FTP серверов поддерживающих FTP bounce. Плюсы: Обход брандмауэра.
nmap --allports смотреть все порты (по умолчанию nmap пропускает некоторые порты, например, 9100)
nmap -sV - определение версий и служб на открытых портах. Сервисы хранятся в базе данных nmap .
nmap -A - Что описано выше, но плюс обнаружение версии ОС
nmap --version-intensityот 1 до 9 - всё просто, чем ниже уровень, тем быстрее, но тем меньше вероятность правильного обнаружения Пример: nmap --version-intensity 9
nmap --version-lightкак (nmap --version- intensity 2 )
nmap --version-all как (nmap --version-intensit 9 host)
nmap -O - определение ОС
Итак,
скрипты. Пожалуй, мы подошли к более-менее интересной части статьи.
Мало для кого секрет что nmap не был бы таким мощным инструментом без поддержки nse сркиптов.
Скрипты же эти разделяются на следующие категории:
auth, default, discovery, external, fuzzer, intrusive, malware, safe, version, vuln ….
Каждая категория определенный спектр.
Рассмотрим их с примерами. (полный список скриптов
здесь)
Напоминаю запустить скрипты определённой категории можно так nmap --scripts=auth,default
1)
auth сценарии для обнаружения учетных данных или обход авторизации
Перебор пользователей веб сервера с включенным модулем mod_userdir
nmap -sV --script=http-userdir-enum
2)
broadcast- здесь различные приемы обнаружения хостов.
Пример:
Обнаружение хостов с помощью DNS Service Discovery протокола
nmap --script=broadcast-dns-service-discovery
3)
brute- очевидно по названию
Пример:
nmap --script http-form-brute -p 80 Брутит форму по указанному адресу.
4)
default- здесь собранные различные скрипты
Попробуем прочекать наш хост на гит репозиторий
nmap --script=http-git
5)
discovery -различные скрипты для сбора информации
nmap --script dns-brute www.foo.com
Найдет домены и субдомены данного хоста
6)
dos- Очевидно проверка на dos уязвимости
nmap --script http-slowloris --max-parallelism 400
Тестирует сервер на Slowloris DoS
7)
exploit советую её поизучать по подробней , например как можно создать бэкдор в proftpd 1.3.3c
nmap --script ftp-proftpd-backdoor -p 21
8)
external- использует внешние ресурсы для сканирования.
Например посмотреть по хэшсумме какой то файл на вирус тотал (никогда не заливайте туда свои малвари)
nmap --script http-virustotal --script-args='http-virustotal.apikey="",http-virustotal.checksum="275a021bbfb6489e54d471899f7db 9d1663fc695ec2fe2a2c4538aabf651fd0f"'
9)
fuzzer- как видно из названия здесь краулеры и чекеры на различные клевые штуки
Пример. соберем php файлы и прочекаем их на XSS
nmap --script=http-phpself-xss -p80
10)
intrusive- здесь самые "шумящие" сценарии из всех категорий;
11)
malware- эти сценарии для нахождения вредносов или бэкдоров;
12)
safeпротивоположное intrusive - самые тихие сценарии
13)
vulnсценарии определяют некоторые уязвимости
Пример:
nmap --script ftp-vuln-cve2010-4221 -p 21
Вывод:
1/tcp open ftp
| ftp-vuln-cve2010-4221:
| VULNERABLE:
| ProFTPD server TELNET IAC stack overflow
| State: VULNERABLE
| IDs: CVE:CVE-2010-4221 BID:44562 OSVDB:68985
| Risk factor: High CVSSv2: 10.0 (HIGH) (AV:N/AC:L/Au:N/C:C/I:C/A:C)
| Description:
.....
Некоторые приколюшные опции не описанные ранее (ниже копипаст с nmap.org)
--traceroute: Отслеживать путь к хосту
--reason: Выводить причину нахождения порта в определенном состоянии
-S — использование чужого IP-адреса в посылаемых компьютеру пакетах. В этом случае сервер вернет ответ по указанному адресу;
-e — применение только определенного сетевого интерфейса, например, Nmap –e eth0;
-v; -d [level] — вывод текущего состояния сканирования в режиме онлайн. Директива -d включает режим debug, где показывается вся возможная информация о текущем состоянии работы, а также ошибки и их коды;
-g (альтернатива --source-port ) — позволяет выбрать порт-источник, с которого будут посылаться пакеты при сканировании;
-data-length — дает возможность задать размер пакета в байтах. По умолчанию используются значения 40 и 28 для TCP- и ICMP-запросов соответственно;
-ttl — позволяет задать время для IP-пакета в поле time-to-live;
-spoof-mac — позволяет задать другой MAC-адрес (физический) для фреймов. Пример применения: Dlink, 0, 01:02:03:04:05:06;
-badsum — посылает пакеты TCP и ICMP с искаженной проверочной суммой. Брандмауэры или системы безопасности, как правило, отвечают на такой пакет;
-6 — использование сканирования для IPv6-сетей. В этом случае следует задать IPv6-адрес или название хоста;
-log-errors — все ошибки записываются в лог-файл;
-oN - Вывести в нормальном виде в файл
-oX - Вывести в xml формате
-oS - Формат называется ScriptKidd - Типа хакерский язык
Пример: 139/Tcp F|LtEr3d NEtbIos-$$n
Никакой пользы от него я не увидел.
-oG - Grepable format как ясно из названия очень удобно искать утилитой grep
--append-outputДобавлять в конец, а не перезаписывать выходные файлы
--resume Продолжить прерванное сканирование одна из клевых штук по файлам
--stylesheet Устанавливает XSL таблицу стилей для преобразования XML вывода в HTML
--webxml Загружает таблицу стилей с Nmap.Org
Пожалуй, на этом всё. Постарался не тупо переписывать вкратце мануал, а дать оценку тем или иным методам, в каких ситуациях что было бы интереснее. Любая адекватная критика есть гуд. Всем спасибо.