Nmap - сканер для хакера
Автор: loantiatt 13.02.2017 18:09
Салют!
Поговорим сегодня о самом качественном сканере сетей и незаменимом инструменте для пентеста - Nmap. А точнее я немного расскажу как им пользоваться чтобы при его выводе не сказать: "ШОЗАНАХ!!11".
Первым делом определимся на что будем устанавливать нмап. Если на линухах, то его нам легко предоставит репазиторий командой:
sudo apt-get install nmap
или
sudo yum install nmap
Зависит от вашего дистрибутива.
Для продвинутых можно собрать его из исходников которые можно скачать с официального сайта Nmap - nmap.org. Там же кстати и описано как следует его собирать.
Для тех же кто сидит в винде и терпит психологическую атаку со стороны последнего, все выглядит как обычно: скачать nmap для windows все с того же официального сайта, только выбрать версию для винды и собственно установить ее. Найти папку куда установили и запустить zenmap.exe. Можно пользоваться и привычным консольным вариантом, zenmap это всего лишь графическая оболочка.
На линухах программа запускается просто командой nmap в консоле, она выведит краткий справочник по ключам. Ключи в нмапе играют главную роль. Их вариация и гибкость творят чудеса.
На винде придется открыть zenmap.exe и в строке "Команда" вводить все теже ключи. Все остальное можно даже не трогать.
Итак, посмотрим что мы можем...
Есть задача просканировать порты на одной машине и вывести открытые порты в выводе... Делается это очень просто:
nmap -sS site.ru
Это самый обычный стелс режим, об этом говорит ключ -sS, с таким ключем нмап посылает syn запросы, которые плохой файрвол с легкостью пропускает. Так же сканер имеет много других режимов: -sT, -sF, -sX, -sN, -sN, -sU, -sP. Которыми первое время голову лучше не забивать.
Отчет нмапа будет примерно следующий:
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
70/tcp closed gopher
80/tcp open http
113/tcp closed auth
443/tcp open https
31337/tcp closed Elite
Это порт, статус и сервис который берется из базы нмап. То есть, не обязательно на 22 порту будет висеть ssh, но чаще всего так и есть.
Чтобы nmap все таки узнал точно какие демоны висят на портах, следует указать другой ключ -sV. Выглядит это так:
nmap -sV site.ru
PORT STATE SERVICE VERSION
21/tcp open ftp?
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
70/tcp closed gopher
80/tcp open http Apache httpd 2.2.3 ((CentOS))
113/tcp closed auth
443/tcp open ssl/http Apache httpd 2.2.3 ((CentOS))
31337/tcp closed Elite
Тут мы уже видим точные версии демонов которые висят на портах. И уже точно знаем что на 22 находится OpenSSH 4.3 (protocol 2.0).
Чтобы узнать какая операционная система стоит на машине нужно указать -O.
nmap -sV -O site.ru
Отчет дополнится информацией о ОС. Чтобы не сканировать все возможные порты, мы может указать нмапу какие именно порты сканировать:
nmap -sV -p 22,80,443 site.ru
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
80/tcp open http Apache httpd 2.2.3 ((CentOS))
443/tcp open ssl/http Apache httpd 2.2.3 ((CentOS))
Так же можно указать диапозон портов которые тебя волнуют:
nmap -sS -p 22-80 site.ru
Еще один интересный режим это -sO. Он определяет с какими протоколами работает хост:
nmap -sO site.ru
PROTOCOL STATE SERVICE
1 open icmp
6 open tcp
17 open udp
Ну и самый интересный на мой вгляд режим это -sI. Это сканирование не на прямую, а через зомби машину. Объяснять долго, скажу лишь что на сканируемом хосте твой ip вообще никак светится не будет. Хорошо подойдет этот режим для хостов с доверительными ip:
nmap -sV -sI 64.148.88.31 -p 22 site.ru
Здесь сканирование проходит через зомби хост 64.148.88.31 и определяется демон который находится на 22 порту хоста site.ru. К слову сказать, зомби хост так же должен быть живой и пинговаться, idle у порта на зомби хосте не должен ровнятся нулю, но это уже можно определить только попробовав команду выше.
Отчеты
Отчетности в нмап уделили не последнее место, тут так же есть разные режимы вывода отчета. Мы использовали вывод по умолчанию, то есть прямо на экран. Но если задействовать ключ -oN [logfile], то весь отчет будет сохранятся в файл, например:
nmap -sS -p 22-80 site.ru -oN logfile.txt
Весь вывод будет в файле logfile.txt. Но будет в формате понятному для человека. Чтобы выводить отчеты в форме для дольнейшего использование в различных программах нужно указать -oG [logfile]. Этот формат хорошо подходит для дальнейшего парсинга grep, perl и т.д. Так же есть вывод отчета в
формате XML -oX [logfile]
Скрипты
В нмап включен скиптовый движок NSE. Вы может писать свои скрипты для нмап выучив не сложный язык. Но при установке уже имеется набор скриптов на все случаи жизни. Попробуем сделать нашу первую команду nmap -sS site.ru, но задействуем еще скрипты:
nmap -sS site.ru -sC
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey: 1024 ec:5e:1a:d6:a6:3b:07:41:27:4b:00:e1:f0:b1:30:fa (DSA)
|_2048 78:e0:af:65:a5:2f:54:e1:06:10:61:42:65:b5:47:3b (RSA)
Ключом -sC мы задействуем все скрипты которые есть в комплекте. Их можно так же применять по отдельности:
nmap -iR 100 -p 21 --script ftp-brute
Что делает эта команда?
Во-первых, она генерирует 100 случайных айпи командой -iR 100. Во-вторых, она сканирует эти айпи на наличие открытого 21 порта, который служит для фтп соеденения и если находит такой, то применяет скрипт перебора паролей к фтп доступу. Список паролей и логинов он берет из директории nmap/nselib/data/usernames.lst и nmap/nselib/data/passwords.lst. Эти файлы можно редактировать по своему вкусу и может быть вам повезет поиметь фтп доступ нахаляву ;) Для эффективного использования лучше выводит отчет в файл:
nmap -iR 100 -p 21 --script ftp-brute -oG ftpbrute.txt
а далее обработать этот файл перлом или грепом для отсортировки удачных результатов.
Так же можно искать доступы и брутить их по заданому диапозону айпи:
nmap 192.159.94.* -p 21 --script ftp-brute -oG ftpbrute.txt
или
nmap 192.159.94.0-255 -p 21 --script ftp-brute -oG ftpbrute.txt
192.159.94.0-255 например, это диапазон айпи которые пренадлежат канаде :)
На этом пока все. Играйтесь с ключами и параметрами и поймете много нового. Как вариант можно ввести команду man nmap и почитать, тоже интересно. Ожидайте продолжения...