Как использовать сканер безопасности NMAP на Linux
Life-HackNmap — это бесплатная, с открытым исходным кодом утилита исследования сети и проведения аудита безопасности. Она широко используется в сообществе пользователей Linux, поскольку является простой в применении, но в то же время очень мощной. Принцип работы Nmap, говоря простым языком, заключается в отправке пакетов данных на заданную цель (по IP) и в интерпретировании возвращаемых пакетов для определения, какие порты открыты/закрыты, какие службы запущены на сканируемой системе, установлены и включены ли файерволы или фильтры и, наконец, какая операционная система запущена. Эти возможности позволяют собрать много ценной информации. Давайте рассмотрим некоторые из этих возможностей. Кроме типичных для подобных статей примеров команд, будут даны рекомендации о том, как использовать собранные во время сканирования данные.
Установка Nmap
Для начала, нам нужно заполучить пакет “nmap” на нашу систему.
Установка Nmap в Kali Linux
Nmap уже установлен.
Установка Nmap в CentOS
yum install nmap
Установка Nmap в Debian
apt-get install nmap
Установка Nmap в Ubuntu
sudo apt-get install nmap
Использование сканера безопасности Nmap
Теперь программу можно запускать набрав в терминале “nmap”. Список опций можно посмотреть по команде
nmap --help
Чтобы показать некоторые возможности nmap, подготовлены несколько примеров. Главная цель — чтобы вы уловили суть и возможности программы. После этого вы сможете модифицировать команды под свои собственные нужды.
Обратите внимание, что программе nmap требуются привилегии суперпользователя для некоторых её функций. В Kali Linux этого не нужно, но на всех других системах запускайте команду с sudo. В примерах я буду использовать sudo, в Kali команды выглядят также, но отбрасывайте sudo.
Собираем информацию об открытых на сервере портах, запущенных службах и версиях программного обеспечения
Это простая команда может использоваться для проверки доступен ли сайт (в данном случае я использовал сайт codeby.net). Обращаем внимание на открытые порты.
sudo nmap -sS [IP адрес] или [адрес веб-сайта]
Эта опция даст команду nmap попробовать предположить, какая операционная система запущена на целевой системе. Если все порты фильтруются, эта команда будет лучшим вариантом, но результаты нельзя расценивать как гарантировано надёжные. Обратите внимание на проценты — они говорят о вероятности угадывания.
sudo nmap -O --osscan-guess [IP адрес] или [адрес веб-сайта]
Эта команда позволяет пользователю проверить службы, запущенные на цели. Обратите внимание, что появился столбик VERSION — в нём указана версия программного обеспечения.
sudo nmap -sV [IP адрес] или [адрес веб-сайта]
Ищем веб-сервера, роутеры, веб-камеры, SSH, FTP и прочее
О том, как задавать цели для Nmap, сказано в книге на которую в конце дана ссылка. В следующих примерах я использую строку 193.106.148-153.1-255. Она означает просканировать подсети с 193.106.148.* по 193.106.153.*, причём в каждой из этих подсетей будут просканированы адреса с *.*.*1 по *.*.*255, т.е. это 193.106.148.1-255, 193.106.149.1-255, 193.106.150.1-255 и т.д.
Поиск роутеров, веб-серверов, веб-камер
У роутеров, веб-серверов, веб-камер обычно открыты порты 80, 8080 и 1080. Просканировать эти порты и вывести только те адреса, на которых что-то открыто, можно этой командой.
nmap -sS -sV -vv -n -Pn -T5 193.106.148-153.1-255 -p80,8080,1080 -oG - | grep 'open'
В моём случае вывод получился сумбурным, но это хорошо, что данных много — есть с чем поработать.
Поиск FTP
Обычно FTP «висит» на 21 порту, поэтому используем предыдущую команду, только меняем сканируемый порт.
nmap -sS -sV -vv -n -Pn -T5 193.106.148-153.1-255 -p21 -oG - | grep 'open'
Хороший результат, есть на что посомтреть.
Поиск SSH
Порт по умолчанию для SSH — 22, там и ищем.
nmap -sS -sV -vv -n -Pn -T5 193.106.148-153.1-255 -p22 -oG - | grep 'open'
Есть контакт:
Помните, что на дефолтных портах оставляют либо от недостатка опыта (начинающие системные администраторы), либо от безысходности (например, хостеры — если они поменяют порт FTP со стандартного на другой, то служба технической поддержки будет завалена жалобами клиентов о том, что «FTP совсем не работает»). Все остальные системные администраторы «подвешивают» SSH и прочие сервисы на высокие порты. Если сделать так, то в логах ошибок наступает тишь и благодать, разница очень заметна по сравнению со стандартными портами, на которые вечно шлют разную фигню и пытаются брутфорсить. А вменяемые люди вообще не используют FTP, а используют сервисы с шифрованием, хотя бы тот же SFTP (вариантов FTP с шифрованием масса). Но хостеры не могут себе этого позволить по уже озвученной причине — есть опасность потерять клиентов от того, что им слишком сложно разобраться.
Т.е. если вы тестируете на проникновение конкретный компьютер/сервер, то проверяйте все порты — с первого до последнего (65535). Если диапазон тестируемой сети небольшой, то можно задать тестирование всех портов с фильтрацией по словам ftp ( | grep 'ftp'), ssh ( | grep 'ssh') и т. д. Например так:
nmap -sS -sV -vv -n -Pn -T5 193.106.148.1-255 -p1-65535 -oG - | grep 'ftp'
Нужно быть готовым к большим затратам времени.
Zenmap — Графический интерфейс (GUI) для Nmap
У команды nmap огромное количество опций. Если вы запутались в этих опциях и хотите чего-то более дружеского и привычного, то обратите своё внимание на Zenmap. Это графический интерфейс для Nmap.
По большому счёту, нужно только ввести адрес цели. Уже установлен профиль сканирования по умолчанию, который вы всегда можете поменять на другой. Вам не нужно помнить и вводить ключи, как это необходимо для приложения командной строки. Всё просто, вывод раскрашен разными цветами, что облегчает восприятие. Есть несколько вкладок, в которых визуализирована и обобщена полученная информация.
Что делать с полученной в Nmap информацией
Собственно, а что нам дают все эти открытые порты, все эти службы, все эти компьютеры с FTP и прочим?
Если вы умеете пользоваться только Nmap, то полученная в ней информация вряд ли пригодится. Это только начало пути. Варианты использования полученной информации:
- если нашли веб-сервер, то для начала можно просто открыть и посмотреть что там. Варианты бывают разные — бывают обычные сайты, которые видны в Интернете по доменному имени, бывают сайты в разной степени готовности начинающих системных администраторов и веб-мастеров. Бывает, можно просто пройтись по каталогам, посмотреть приготовленные файлы, попробовать стандартные пароли для phpMyAdmin и т. д.
- FTP, SSH и многое прочее можно брутфорсить. Если удастся подобрать пароль, то можно получить доступ к частному FTP или вообще завладеть всем компьютером, если удастся подобрать учётную запись SSH. Ссылки на инструкции по брутфорсу даны в конце статьи.
- особенно легко, практически голыми руками, можно брать веб-камеры — очень часто там стандартные пароли, которые можно нагуглить по модели камеры.
- также интересны роутреры. Довольно часто в них стандартные (заводские) пароли. Получив доступ в роутер можно: выполнить атаку человек-по-середине, сниффинг трафика, перенаправить на подложные сайты, на сайты-вымогатели и т. д.
- зная версии запущенных программ можно попробовать поискать эксплойты для них. Ссылки на материал по эксплойтам также дан в конце статьи.
- если вы совсем новичок, то рекомендую программу Armitage. Она может: автоматически искать и применять эксплойты, брутфорсить различные службы. У программы графический интерфейс — вообще она довольно простая. Материал по Armitage:
Где брать адреса для сканирования?
Типичными лёгкими целями являются VPS, которые настроили начинающие системные администраторы. Если вас интересует сканирование адресов в конкретном городе или по конкретному провайдеру, то можно воспользоваться этим сервисом.