Подделка строки User-Agent в Nikto

Kali LinuxBeginner
Практиковаться сейчас

Введение

Nikto — популярный сканер веб-серверов с открытым исходным кодом, который выполняет комплексные тесты веб-серверов на наличие множества элементов, включая более 6700 потенциально опасных файлов/программ, проверяет устаревшие версии более чем 1250 серверов и проблемы, специфичные для версий, на более чем 270 серверах.

Когда Nikto отправляет запросы целевому серверу, он идентифицирует себя с помощью строки "User-Agent" по умолчанию. Эта строка может быть легко обнаружена межсетевыми экранами (firewalls) или системами обнаружения вторжений (intrusion detection systems), которые могут заблокировать сканирование. Для выполнения более скрытого сканирования вы можете "подделать" (spoof) или изменить User-Agent, чтобы имитировать обычный веб-браузер.

В этой лабораторной работе вы научитесь определять User-Agent по умолчанию Nikto, а затем изменять его с помощью опции -useragent, чтобы сделать ваши сканирования менее заметными.

Определение стандартного User-Agent Nikto по результатам тестового сканирования

На этом шаге вы выполните базовое сканирование Nikto против локального веб-сервера, чтобы увидеть его стандартную строку User-Agent. Простой веб-сервер на Python был запущен для вас в фоновом режиме, который записывает все входящие запросы в файл с именем access.log.

Сначала выполните стандартное сканирование Nikto, нацеленное на локальный сервер, работающий на порту 8000. Откройте терминал и выполните следующую команду:

nikto -h http://localhost:8000

Nikto выполнит серию тестов. Нас интересуют не сами результаты сканирования, а запись в журнале, которую он создает.

После завершения сканирования просмотрите содержимое файла журнала, чтобы увидеть, как сервер зарегистрировал запрос Nikto. Используйте команду cat:

cat ~/project/access.log

Вы увидите записи журнала, которые включают стандартный User-Agent Nikto. Он будет выглядеть примерно так, четко идентифицируя сканер.

127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
... (другие записи журнала) ...

Обратите внимание на часть строки Nikto/2.5.0. Это сигнатура, которую мы хотим скрыть на следующих шагах.

Выбор строки User-Agent распространенного браузера для имитации

На этом шаге мы выберем строку User-Agent от распространенного веб-браузера. Цель состоит в том, чтобы наш трафик сканирования выглядел так, как будто он исходит от обычного пользователя, а не от автоматизированного инструмента. Это помогает обойти простые правила обнаружения, которые блокируют трафик на основе известных User-Agent сканеров.

Существует множество онлайн-ресурсов для поиска актуальных строк User-Agent. Для этой лабораторной работы мы будем использовать типичный User-Agent для браузера Firefox на машине с Windows.

Вот строка, которую мы будем использовать: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0

Этот шаг носит исключительно информационный характер. Вам не нужно выполнять никаких команд. Просто ознакомьтесь с приведенной выше строкой, так как вы будете использовать ее на следующих шагах.

Использование опции -useragent для установки новой строки

На этом шаге вы узнаете, как построить команду Nikto для использования нового, поддельного User-Agent. Nikto предоставляет специальную опцию командной строки для этой цели: -useragent.

Синтаксис этой опции прост. Вы добавляете -useragent к своей команде, за которым следует новая строка, которую вы хотите использовать. Поскольку строки User-Agent содержат пробелы и специальные символы, крайне важно заключить всю строку в двойные кавычки (").

Вот как вы построите команду для сканирования нашего локального сервера с использованием User-Agent Firefox, который мы выбрали на предыдущем шаге:

nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

На этом шаге вам нужно только понять, как строится команда. Вы выполните ее на следующем шаге.

Запуск сканирования с поддельным User-Agent

На этом шаге вы выполните сканирование Nikto с использованием пользовательского User-Agent. Чтобы убедиться, что мы видим только результаты нашего нового сканирования, хорошей практикой является предварительная очистка старого файла журнала.

Очистите файл access.log следующей командой:

> ~/project/access.log

Эта команда перезаписывает файл, оставляя его пустым. Теперь запустите сканирование Nikto с опцией -useragent и строкой Firefox.

nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

Nikto теперь выполнит то же сканирование, что и раньше, но каждый отправляемый им запрос будет содержать строку User-Agent Firefox вместо стандартной строки Nikto. Дайте сканированию завершиться.

Проверка нового User-Agent в логах сервера или прокси

На этом заключительном шаге вы проверите, было ли успешно выполнено подделывание User-Agent. Мы снова проверим файл журнала сервера, чтобы увидеть, какой User-Agent был записан во время последнего сканирования.

Используйте команду cat для отображения содержимого файла access.log:

cat ~/project/access.log

На этот раз вывод должен выглядеть иначе. Вместо "Nikto" в логах вы увидите строку User-Agent Firefox, которую вы указали.

127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
... (другие записи журнала) ...

Как вы можете видеть, журнал теперь показывает стандартный User-Agent Firefox. Слово "Nikto" исчезло, успешно скрыв идентификатор нашего сканера из основных логов сервера.

Резюме

В этой лабораторной работе вы освоили фундаментальный метод повышения скрытности сканирований безопасности. Вы успешно подделали строку User-Agent в Nikto, чтобы имитировать обычный веб-браузер.

Вы научились:

  • Запускать стандартное сканирование Nikto для установления базового уровня.
  • Проверять логи сервера для идентификации стандартного User-Agent Nikto.
  • Использовать опцию командной строки -useragent для указания пользовательской строки.
  • Запускать новое сканирование с поддельным User-Agent.
  • Проверять изменения, повторно просматривая логи сервера.

Этот навык является неотъемлемым для пентестеров и специалистов по безопасности, которым необходимо проводить оценку уязвимостей, не будучи немедленно заблокированными или обнаруженными системами безопасности.