![]() |
Nmap - это набор инструментов для сканирования сетевой инфраструктуры веб-сервиса. Он может быть использован для проверки безопасности, для идентификации запущенных серверных приложений.
Установка nmap В дистрибутивах Linux последняя версия nmap обычно установлена по умолчанию. Установка на Windows 10 Перейдите по ссылке загрузки nmap и загрузите последнюю стабильную версию. Дальше запустите nmap-7.80-setup.exe от имени администратора. Программа установки по умолчанию предложит установить все компоненты, галочки можно не снимать. Запуск nmap на Windows Запускать nmap можно как в режиме графического интерфейса, так и через командную строку. Для запуска графической оболочки введите в строку поиска nmap и в результатах выберите nmap - Zenmap GUI. Для дальнейшей работы вы можете вводить нужные команды в поле "Команда", а затем нажимать на кнопку Сканирование. Результаты сканирования в виде текстового отчета вы можете посмотреть в окне: Для запуска командной строки введите "cmd" в строку поиска на панели инструментов. Нажмите Enter и затем откроется командная строка. Дальше прямо в нее можно вводить nmap команды. Командная строка в Windows 10 c введенной командой nmap выглядит вот так: Mac OS X Нажмите "Command+Space" и введите "Терминал", после этого нажмите Enter. Дальше последнюю версию nmap можно установить через менеджер HomeBrew c помощью следующей команды, которую нужно ввести в терминале: code: brew install nmap Для запуска nmap просто начинайте команду с nmap: code: nmap localhost Устанавливаем скрипты Также нам надо установить скрипт nmap_vulners, который будет проводить проверку на то, содержатся ли уязвимости в ПО, которое мы используем. Для его установки нужно скачать файлы скрипта и перенести файлы http-vulners-regex.nse и vulners.nse в C:\Program Files (x86)\Nmap\scripts. Если у вас Mac OS, то перенести файлы скрипта нужно в папку /usr/local/Cellar/nmap//share/nmap/scripts/ Проверяем сетевую инфраструктуру при помощи nmap Для начала запускаем сканирование своего сервера командой ниже, чтобы выяснить какие порты используются и для чего. Команда выглядит так (подставьте свой ip или домен). Команду нужно вводить в окне консоли, либо если вы используете Zenmap GUI, то в поле "Команда": code: nmap -sV -Pn -p- -T5 161.35.92.161 Параметр T5 отвечает за скорость анализа сервера. Скорость можно менять от T0 до T5, где T0 - очень медленная скорость анализа, а T5 - очень быстрая. Если вы не хотите сильно нагружать сервер, то используйте T2. Параметр -p- означает, что мы будем проверять весь диапазон портов ('это займет около 10 минут) . Его можно убрать и тогда скрипт просканирует не все порты, а только 1000 первых (самые распространенные). Ответ будет выглядеть примерно так: Из отчета мы видим, что nmap отобразил нам порты (под колонкой PORT), которые активны. В данном случае у нас используются: Цитата: Порт 21 занят под FTP Порт 22 занят под SSH. Порт 80 прослушивается сервером Apache. Порт 3306 используется MySQL Теперь запускаем наш скрипт, который проверит уязвимости в нашем ПО на сервере. Для этого запускаем следующую команду с указанием портов, которые мы будем проверять. Вам нужно будет заменить список портов на свои. code: nmap -T5 -sV -Pn 161.35.92.161 --script=vulners.nse -p22,80,443,8080,8443,3306,20,21,23 Пример отчета. Ссылки на описание уязвимости идут после строки vulners (пример такой строки со ссылкой в отчете: CVE-2014-9278 4.0 https://vulners.com/cve/CVE-2014-9278): Также можно записать результат анализа в файл: code: nmap -T5 -sV -Pn 161.35.92.161 --script=vulners.nse -p22,80,443,8080,8443,3306,20,21,23 > result.txt Чтобы избавиться от подобных проблем, обычно достаточно обновить используемое ПО до последних версий, где уязвимости старых версий, как правило, уже исправлены. |
Проверяем устойчивость к перебору при помощи nmap
В нашем случае nmap определил, что на сервере есть ssh, ftp и mysql. Попробуем проверить, насколько устойчивые пароли используются. SSH Вводим следующую команду (напомню, что вводить нужно либо в консоль, либо в поле "Команда" программы Zenmap GUI. code: nmap --script ssh-brute -p22 161.35.92.161 --script-args userdb=users.lst,passdb=passwords.lst В случае успеха (процесс не быстрый) скрипт выведет подобранный пароль и логин . Подобранные пары логин\пароль будут выведены после строчки Accounts: Кроме того, можно расширить стандартные списки паролей и пользователей от nmap, заменив файлы users.lst и passwords.lst . Различные базы для брутфорса можно найти в этом gitbub репозитории. Файлы с базой паролей можно разместить в папке nmap/nselib/data FTP Теперь проверяем FTP порт следующей командой: code: nmap -d --script ftp-brute -p 21 161.35.92.161 Аналогично, nmap выведет подобранные пары логинов и паролей. MySQL Проверяем, доступен ли анонимный вход. code: nmap -sV --script=mysql-empty-password В случае успеха: Пытаемся подобрать пару логин\пароль для входа в базу данных mysql. code: nmap --script mysql-brute -p 3306 --script-args userdb=users.lst, passdb=passwords.lst Также если у вас используются какая-либо CMS (WordPress, Joomla, Drupal, Bitrix) и другие базы данных (Mongo, Postgres, Redis), то можно найти готовые скрипты для проверки устойчивости ваших паролей и форм. Ищите по ключевым словам brute force nmap |
Проверяем формы авторизации
Найти формы авторизации можно с помощью такой команды (вместо подставьте домен вашего сайта): code: nmap -p80 --script http-auth-finder После того, как нашли страницы с авторизацией, можно попробовать подобрать пароль и логин для входа в админку сайта. Параметры:
code: nmap -p-80 --script=http-form-brute --script-args=http-form-brute.path=/login Если скрипт успешно сработает, то выведет примерно такой результат: Подобранные данные для входа будут отображены после строчки Accounts. В нашем случае скрипт подобрал логин user с паролем secret. В реальном приложении подбор может также занять продолжительное время, зависит от того насколько стойкий пароль используется. Если ваша формы авторизации использует cookies параметры или csrf-token, то в этом случае выдаст ошибку. (И это хорошо, значит базовую защиту вы предусмотрели). В качестве защиты стоит использовать стойкие пароли, а также ограничивать количество запросов с одного IP-адреса (Rate limiting). |
Ищем скрытые папки и файлы при помощи nmap
Часто разработчики или системные администраторы довольно халатно относятся к правам доступа и забывают закрыть доступ к системным и другим важным папкам. Проверить, есть у нас на сервере такие папки можно также с помощью утилиты nmap. Команда будет выглядеть так (вместо нужно подставить IP-адрес сервера или домен сайта): code: nmap -sV -p 80 -T5 --script http-enum В результате в отчете нам покажут доступные для просмотра папки, файлы паролей, резервные копии базы данных и т.д. (Если такие существуют). Дальше уже вам необходимо самостоятельно решить, какие папки и файлы нужно закрыть от просмотра, а какие оставить как есть. Пример небольшого отчета: vc.ru |
| Время: 11:55 |