где лежат скрипты nmap
Где лежат скрипты nmap
Кролики — это не только ценный мех, но и три — четыре килограмма диетического, легкоусвояемого мяса.
Сегодня мы рассмотрим один из наиболее универсальных инструментов пентестера — Nmap — культовый кроссплатформенный сканер, который расшифровывается как «Network Mapper». Инструмент сам по себе довольно мощный, но его чаще всего используют в связке с другими утилитами, не предполагая, что, помимо способности сканировать сеть, Nmap имеет массу других возможностей. Основная из них — это использование скриптов с помощью NSE (Nmap Scripting Engine) — компонента Nmap, в основе которого лежит скриптовый язык Lua, напоминающий JavaScript. Именно NSE делает Nmap таким универсальным.
Допустим, мы просканировали хост и увидели открытые порты:
Сбор информации
Сбор информации
Но это еще не все. В стандартном наборе Nmap имеется почти 600 скриптов, а если нет нужного – можно написать свой.
Поищем на сайте страницы с авторизацией, если они есть. И в этом нам поможет скрипт http-auth-finder :
Авторизация
Brute-force
Весьма неплохо для “сканера портов”. Применяя различные скрипты и используя при этом лишь «сканер портов», мы получили довольно много информации. Но здесь стоит отметить, что, в отличие от Nmap, WPScan выводит не только названия компонентов, но и указывает на их возможные уязвимости.
Далее мы видим открытый 22 порт SSH и пробуем подобрать пароль от сервиса, используя скрипт ssh-brute :
Также мы видим открытый 21 порт, который, предположительно, указывает на наличие FTP-сервера. Мы можем получить некоторую информацию о сервере при помощи скрипта ftp-syst :
Далее произведем перебор пользователей FTP-сервера:
brute-force FTP
Еще у нас есть MySQL и его открытый порт 3306.
MySQL
Скрипт подключается к серверу MySQL и выводит информацию, такую как номер протокола и версии, идентификатор потока, состояние, возможности и соль пароля.
Помимо этого, мы можем перечислить «валидных» пользователей MySQL:
Еще MySQL
Если необходимо произвести перечисление нестандартных пользователей, то в аргументах указывается путь к файлу с необходимыми именами. Получив список, можно производить подбор пароля к учетным записям.
Оставить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Руководство по работе со скриптами Nmap Scripting Engine
Для многих из нас, чьи рабочие задачи хотя бы некоторое время были тесно связаны с информационной безопасностью, Nmap давно стал привычным и полезным инструментом. Он также незаменим, как теплое одеяло холодной зимней ночью. За тем лишь исключением, что Nmap — это чертовски эффективное одеяло.
Nmap — это популярный и мощный кроссплатформенный сканер сетевой безопасности, запускаемый из командной строки, с помощью которого вы можете чрезвычайно эффективно провести исследование любой сети. Он также может помочь вам получить обзор систем, которые подключились к вашей сети; вы можете использовать его, чтобы узнать IP-адреса всех «живых» хостов, сканировать открытые порты и сервисы, запущенные на этих хостах, а также многое-многое другое.
Без сомнения, Nmap является самым универсальным сканером портов из существующих ныне. Да, вы можете найти более быстрые сканнеры, но нет ни одного настолько полезного и попросту незаменимого для решения многих-многих ваших задач. И подавляющее большинство профессионалов в области информационной безопасности безапелляционно согласятся с этим утверждением.
Однако гораздо меньше людей знает, что одной из самых интересных особенностей Nmap является возможность использовать скрипты NSE, которые обеспечат вашему любимому инструменту сетевой безопасности еще большую гибкость и эффективность. С их помощью вы сможете делать то, чего даже от такого очень продвинутого сканера портов, как Nmap, вы никак не ожидали получить.
Давайте более детально посмотрим на скрипты NSE, и, возможно, их потенциал сможет приятно вас удивить.
Что такое скрипты NSE?
NSE расшифровывается как Nmap Scripting Engine (Скриптовый движок Nmap), и его возможности позволяют вам (да, именно вам) написать на программном языке Lua собственную дополнительную функциональность для сканера портов Nmap, а также, при желании, поделиться этими скриптами с другим пользователям Nmap. Таким образом, у вас есть возможность использовать разнообразный и постоянно расширяющийся набор скриптов, которые поставляются вместе с Nmap, либо самостоятельно написать свои скрипты под свои собственные нужды.
Другими словами, помимо стандартной проверки открытых портов сканером Nmap, вы, задействовав NSE, имеете возможность получить также расширенную информацию о сервисах, запущенных на нем. Так, например, с помощью скриптов NSE вы можете провести более глубокий анализ ваших сетевых сервисов и увидеть, насколько правильно они сконфигурированы, какая информация доступна, не используются ли слабые учетные данные и т. д. Фактически, скрипты NSE превращают Nmap в гибкую платформу для взаимодействия с сетевыми сервисами.
Возможности скриптов Nmap Scripting Engine
Команда разработчиков сканера портов Nmap задумывала и создавала скриптовый движок прежде всего для решения таких задач, как:
1. Исследование сети
Это область основного практического применения Nmap. Некоторые скрипты призваны облегчить, оптимизировать и ускорить работу вашего любимого сканера портов. Некоторые примеры их использования включают в себя выполнение таких задач, как:
2. Более изощренный вариант определения версий
Система Nmap для определения версий сервисов и приложений способна распознать тысячи различных сервисов с помощью зондов и сопоставления сигнатур регулярных выражений, но и она не всемогуща. К примеру, идентификация сервиса Skype v2 требует два независимо работающих друг от друга зонда, чьи возможности по определению версий не отличаются высокой гибкостью. Также Nmap способен распознать часть SNMP-сервисов, если попытается перебрать несколько сотен community имен методом грубой силы. Для решения обеих вышеприведенных задач не слишком удобно использовать стандартные методы определения версий Nmap, но обе они легко выполняются с помощью NSE. По этой причине система определения версий сейчас вызывает по умолчанию NSE для решения задачи определения версии при обработки некоторых сложных сервисов.
3. Поиск уязвимостей
Когда обнаруживается новая уязвимость, она становится общеизвестной, и специалистам по сетевой безопасности нужно срочно просканировать свои сети, чтобы быстро идентифицировать уязвимые системы, до того, как это сделают за них плохие парни. Хотя Nmap и не является полноценным сканером уязвимостей, мощный потенциал NSE позволяет ему осуществлять проверки уязвимостей даже с учетом очень жестких требований. К примеру, когда ошибка Heartbleed в криптографическом программном обеспечении OpenSSL поставила под угрозу сотни тысяч систем по всему миру, разработчики Nmap отреагировали написанием скрипта ssl-heartbleed detection в течение двух дней.
4. Обнаружение бэкдоров
Многие киберзлоумышленники, а также некоторые автоматические черви оставляют бэкдоры, чтобы на будущее обеспечить себе лазейку для осуществления более легкого проникновения в вашу систему. Часть из этих бэкдоров можно обнаружить с помощью стандартной процедуры определения версий Nmap на основе сопоставления сигнатур регулярных выражений, но для надежного обнаружения многих более сложных червей и бэкдоров требуются расширенные возможности NSE. В частности, NSE применяется для обнаружения бэкдора DoublePulsar, использующего уязвимость в реализации протокола SMB, бэкдор-версий для IRC-сервера UnrealIRCd, а также FTP-серверов vsftpd и ProFTPd.
5. Обнаружение уязвимостей
Реализованный на основе скриптового языка общего назначения, NSE может быть даже использован для создания эксплойтов, которые помогут вам обнаружить уязвимости еще до того, как информация об их существовании станет общедоступной. Такая возможность добавления пользовательских скриптовых эксплойтов может быть чрезвычайна полезна некоторым людям (прежде всего тестерам проникновения). Однако, полноценной платформой для создания сигнатур и эксплойтов, наподобие Metasploit, NSE все же не является.
Какие категории скриптов NSE существуют?
В настоящее время существует 598 скриптов NSE, которые вы можете найти в папке «scripts» — поддиректории основного каталога Nmap. Для большей производительности все скрипты проиндексированы в базе данных «scripts/script.db», где указано, к какой категории или категориям принадлежит каждый скрипт.
В зависимости от целевого применения, а также для упрощения их использования, скрипты NSE сгруппированы по разным категориям. В настоящее время определены следующие категории скриптов NSE: auth, broadcast, brute, default. discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version и vuln (имена категорий не чувствительны к регистру). Ниже приведено более детальное представление каждой категории:
Правила использования скриптов NSE
Скрипты, в зависимости от их функциональной направленности, а также фазы сканирования, в ходе которой они выполняются, разделены на четыре типа (некоторые скрипты могут поддерживать сразу несколько типов операций):
Примечание: многие скрипты могут запускаться как prerule script, так и как postrule script. В этих случаях рекомендуется использовать функциональность prerule во избежание несогласованности.
Подписывайтесь на рассылку, делитесь статьями в соцсетях и задавайте вопросы в комментариях!
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Уроки по Nmap. Урок 2: Примеры сбора информации скриптами NSE
Если вы используете Nmap, то весьма вероятно, что скрипты NSE работали для вас даже если вы их явно не запускали. Скрипты NSE используются, например, когда вы с помощью Nmap определяете версию удалённой службы или ОС.
Данная заметка не является исчерпывающим руководством по использованию скриптов Nmap или по сбору информации. Она содержит несколько примеров сбора информации, которые позволят вам не только узнать открытые порты и запущенные на них службы, но и, например, выявить в подсети FTP-серверы, позволяющие анонимный вход, серверы MySQL, позволяющие вход с пустым паролем для рута или анонима и автоматизировать сбор других сведений.
Эти NSE скрипты включены в стандартную установку Nmap. Используйте их для сбора дополнительной информации по целям, которые вы сканируете. Эта информация может добавить контекст к хостам, которые вы сканируете, и расширить направление атак на системы, которые вы оцениваете.
Небольшое предупреждение, здесь я писал про «Анонимные сканирования с Nmap, sqlmap и WPScan через Tor». Информация из той статьи не распространяется на скрипты NSE. Т.е. использовать эти (и другие) скрипты NSE нужно в отношении тестовых сетей, по разрешению, либо с предварительной тщательной проверкой рисков деанонимизации.
0. Составление диапазонов IP для сканирования
Есть целая статья по этому вопросу «Как узнать все IP провайдера, города, региона (области, республики) или страны», а также онлайн реализация всех описанных в той статье методов: https://suip.biz/ru/. Поэтому предположим, что диапазоны IP вы уже составили, и переходим к делу.
1. Поиск FTP серверов с анонимным входом
FTP с анонимным входом позволяют читать, а иногда и даже записывать данные на этих серверах без авторизации. Для автоматизации поиска можно воспользоваться скриптом ftp-anon. Получим информацию об этом скрипте:
Портом FTP по умолчанию является 21. Мы не будем сканировать другие диапазоны в целях поиска FTP на нестандартных портах. Я исхожу из следующей логики — если администратор догадался перенести FTP на другой порт, то он точно не оставил анонимный вход. Сканирование только одного порта позволит нам сильно сэкономить время.
Поэтому к нашей команде мы добавляем -p 21. Добавим ключ -n — запрет DNS преобразований, это должно также помочь сэкономить время. По умолчанию скрипт ftp-anon не применяется при сканировании, нам нужно указать его явно, это мы делаем с —script «ftp-anon». И, наконец, нам нужно указать файл с IP. Это делается опцией -iL, в моём случае файл называется ftp.ip2. Итак, полная команда приобретает вид:
Примеры вывода для удачных находок:
Т.е. нам не только открыт доступ на этот сервер, но даже предоставлено право на запись. Также мы видим, что на сервере присутствуют каталоги FILMS, Qmultimedia, home, homes.
Ещё один (без прав на запись):
И ещё один с правами на запись:
В целом, вывод выглядит примерно так:
Чтобы ускорить процесс, можно составить список IP с помощью сканирования программой Masscan.
Например, я хочу просканировать все IP из файла с названием australia.ip, меня интересует только 21 порт, я ставлю ограничение на скорость сканирования —rate=500 и хочу сохранить результаты в файл ftp.ip, тогда моя команда приобретает вид:
В файле ftp.ip Masscan сохраняет результаты с открытыми портами в таком формате:
Чтобы выбрать их них только IP, можно использовать программу Awk:
Отлично, сохраняем очищенные IP в файл ftp.ip2:
А теперь запускаем ту команду, с которой начили:
Кстати, функциональность скрипта ftp-anon довольно легко эмулировать в программах для онлайн брутфорса. Например, в patator это делается примерно так так:
Если вам нужны только подходящие данные, т. е. чтобы выводились только те FTP сервера, где разрешён анонимный вход, то в patator можно намного более гибко настроить вывод результатов как по возвращаемому коду, так и разнообразным другим параметрам.
Скрипт необязательно применять на диапазоны сетей, можно точечно сканировать отдельные хосты:
2. Поиск MySQL серверов, позволяющий вход root без пароля или анонимный вход
Для этого имеется скрипт mysql-empty-password:
Работа с ним в точности аналогична работе с ftp-anon, но нужно использовать другой порт.
Я не могу навскидку вспомнить порт MySQL сервера, поэтому воспользуюсь утилиткой Whatportis:
Т.е. интересующий меня порт, на котором по умолчанию работают сервера MySQL, это 3306.
Далее всё аналогично (я выполняю предварительное сканирование с Masscan):
3. Брутфорс DNS
Скрипт dns-brute пытается перечислить DNS имён хостов, делая запросы по распространённым поддоменам. Обнаружение поддоменов, связанных с доменом организации, во время оценки безопасности может раскрыть новые цели. Обнаруженные хосты могут быть виртуальными веб-хостами на одном веб-сервере или могут являться отдельными хостами на своих собственных IP адресах, разбросанными в мире по различным датацентрам.
Скрипт dns-brute найдёт действительные DNS (A) записи, перебирая список распространённых поддоменов и находя те, которые успешно преобразовываются.
4. Поиск хостов на одном IP
Другая тактика по расширению площади атаки — это поиск виртуальных хостов на одном IP адресе, который вы пытаетесь скомпрометировать (или оценить). Это может быть сделано с использованием скриптов hostmap-*. На данный момент в NSE коллекции таких скриптов три: hostmap-bfk, hostmap-ip2hosts, hostmap-robtex. Они различаются источниками получаемых данных, следовательно, и точностью результатов. Хотя скрипт hostmap-bfk оценивался некоторыми исследователями по качеству результатов выше других, у меня он не работает. Примеры с двумя другими скриптами,
hostmap-ip2hosts:
hostmap-robtex:
Как можно убедиться, результаты действительно несколько разняться, но имеется достаточно много пересекающихся записей.
5. Traceroute с геолокацией
Выполняет traceroute на ваш целевой IP адрес и на протяжении всего пути показывает геолокационные данные для каждого прыжка. Упрощает корреляцию обратных DNS имён роутеров на вашем пути с географическими расположениями. В качестве опции, сохраняет результаты в файл KML, по которому в Google Earth и Maps можно прочертить маршрут.
6. Поиск интересных файлов на веб-сервере (веб-сайте)
Это более агрессивный тест. Он пытается найти интересные файлы и каталоги на веб-сервере. Поскольку это осуществляется обычным перебором популярных названий, то он оставляет много следов в веб-логах сервера. Они выглядят как сообщения об ошибках при попытке доступа к несуществующим файлам и каталогам (HTTP 404 not found).
Ещё один пример, в нём видны как интересные результаты (директория с phpmyadmin, директории с листингами upload и news), так и ложные срабатывания (net является частью ЧПУ, а не реальной директорией):
Скрипт имеет дополнительные опции:
7. Сбор названий (title) веб-страниц
Не составит большого труда узнать названия веб-страницы с веб-сервера, скрипт http-title просто облегчает задачу по сбору имён в один набор с диапазона IP адресов.
Имея в результатах сканирования Nmap заголовок страницы, можно лучше понять контекст хоста, это может помочь идентифицировать главную цель веб-сервера и определить, является ли сервер потенциальной целью для атак.
Вот пример сканирования по подсети с VPS:
Результатов очень много, к сожалению, не-латинские символы выводятся в формате \xXX, т. е. мы видим что-то вроде:
Это не является серьёзной проблемой. Вариантов постобработки достаточно, например, можно сделать так:
8. Запуск всех скриптов для сбора информации о веб-сервере и веб-сайте
Вместо указания конкретного скрипта, можно указывать группы. В зависимости от хостов (персональный компьютер, сервер, хост в корпоративной сети), а также в зависимости от целей (поиск скомпрометированных машин, поиск заражённых вирусами машин, проверка надёжности паролей, анализ состояния хоста, анализ репутации, разведка и т. д.) выбор групп может быть различным. Например, для веб-сайта можно использовать группы auth, discovery, version (аутентификация, обнаружение, определение версий). Пример команды:
С исправлением надписей на русском:
Выводимые данные будут содержать информацию о заголовках, содержимом веб-страницы, используемых технологиях, участия в партнёрских программах, числится ли сайт в базах заражённых, комментарии в HTML коде, whois информация, информация о репутации, версии ПО, сертификатах и др.
9. Получение информации о системах от SMB
Скрипт smb-os-discovery пытается определить операционную систему, имя компьютера, домен, рабочую группу и текущее время по протоколу SMB (порты 445 или 139). Это выполняется запуском сессии с анонимным аккаунтом (или с реальным пользовательским аккаунтом, если дан; это не имеет особой разницы); в ответе начала сессии, сервер отправит всю эту информацию.
Таким образом можно находить в больших сетях компьютеры с Windows XP. Находятся даже системы, которые не прикреплены к домену.
Заключение
В данной заметке показаны азы использования и только некоторые из возможных функций скриптов Nmap. Специально подобраны «разносортные» примеры, чтобы показать широту разнообразия задач, которые можно решить с помощью скриптов NSE. Хотя вряд ли это возможно в заметке такого размера, поскольку одних только поставляемых с Nmap скриптов более полутысячи, плюс пользовательские скрипты.
Кстати, какие ваши любимые скрипты Nmap? Напишите о них в комментариях.
nmap скрипты
Привет, хабровчане. Делимся с вами авторской статьей, которую подготовил Александр Колесников.
Сетевое взаимодействие — достаточно сложный процесс и порой, чтобы разобраться в том, как он работает, приходится пользоваться абстракциями и дополнительными инструментами, которые позволяют получить информацию об этом взаимодействии. Статья расскажет о том, как писать скрипты для инструмента nmap, и из чего они состоят.
Скриптовый язык и основные фичи
Официальный репозиторий хостится в системе svn, но мы для удобства будем использовать зеркало на github. Даже если не вникать в код проекта, легко можно увидеть, что проект пользуется языком Lua. Это язык программирования, который, как заверяют авторы, очень гибко может работать со структурами данных. Также он поддерживает большое количество парадигм программирования. С основными конструкциями синтаксиса можно познакомиться здесь.
Инструмент nmap использует язык Lua из-за его простоты и легковесности. Изначально этот язык был добавлен для того, чтобы можно было быстро и легко наращивать функционал nmap. Сетевых протоколов существует большое количество, поэтому стандартного взаимодействия по протоколам IP, UDP, TCP и ICMP может быть недостаточно.
Итак, nmap содержит интерпретатор Lua. Интерпретатор языка программирования интегрирован в nmap и взаимодействует с ним за счет фреймворка, который называется Nmap Scripting Engine. NSE умеет запускать скрипты параллельно и работать с интерфейсами ввода/вывода, а так же предоставляет систему обработки ошибок. Все скрипты, которые могут быть написаны для расширения работы nmap, поделены на отдельные задачи. Всего их 14, самые интересные по мнению автора можно найти ниже:
auth — скрипты, которые направлены на сбор аутентификационных данных;
discovery — скрипты, которые собирают информацию из корневых сущностей;
external — скрипты, которые могут использовать сторонние сервисы для предоставления информации;
vuln — скрипты, которые проверяют сервис на известную уязвимость, используются только для проверки;
intrusive — скрипты, которые могут нанести вред исследуемой системе.
В рамках нашей статьи будем создавать скрипт категории discovery.
Пишем скрипт
Каким бы простым не был язык программирования, но чтобы действительно быстро и эффективно писать на нем, нужно использовать IDE. Особенно если это язык программирования, в котором есть API, за счет которых он может связываться с внешним миром. Для написания скриптов NSE будем использовать Halcyon IDE. IDE требует установленной JRE, в запущенном виде выглядит так:
IDE позволяет изучать уже готовые скрипты, просматривать библиотеки, которые доступны для написания новых скриптов, а так же функционал по отладке и запуску скриптов в nmap.
Чтобы начать написание скрипта, нам необходимо понять, как именно скрипт вызывается и какие параметры он может использовать для разбора данных из сети. Базово скрипт может пользоваться той информацией, которую nmap получил по результатам сканирования хоста:
host — объект, который содержит большое количество информации о хосте (ip, OS version);
port — объект, который содержит информацию по порту (протокол, номер, версия).
Помимо перечисленных данных, из скрипта можно взаимодействовать с сетевой подсистемой так, как будто просто пишем приложения для работы по сети. То есть можно создать сокет и использовать его для передачи и получения информации. Помимо этого скрипты могут использовать дополнительные параметры, которые перечисляются для скрипта в командной строке.
Шаблон любого скрипта имеет следующий вид:
portrule — правило, которое используется для определения, должен ли быть запущен скрипт. Позволяет проставить конкретный порт для сканирования. Также можно ограничить по значению хоста: для этого нужно изменить portrule на hostrule. Функция возвращает значение true или false в зависимости от того, совпадает порт или хост или нет.
action — main функция скрипта, срабатывает только в том случае, если rule часть возвратила true. Может возвращать строку или значение nil (пустое значение).
Протестируем скрипт вне IDE, запустим слушателя на порту 7878:
Проведем запуск сприпта:
Результат работы скрипта:
На снимке представлен пример запуска на любом порту, который отличается от того, что мы указывали в разделе portrule. И наоборот — тот самый порт, который должен быть обработан.
Результат
Скрипт, который может писать нотификации для заданного порта — достаточно простой пример, но именно он демонстрирует основные элементы скрипта для nmap. Читателю предлагается самостоятельно реализовать функционал для работы с http протоколом и получением информации о сервере.