Установка пользовательского User-Agent для сканирования в Gobuster

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

Введение

В веб-безопасности разведка является критически важным первым шагом. Такие инструменты, как Gobuster, широко используются для перечисления каталогов и файлов. Однако многие веб-серверы и межсетевые экраны веб-приложений (WAF) используют простые механизмы обнаружения, такие как блокировка запросов с подозрительными строками User-Agent. По умолчанию Gobuster использует строку User-Agent, которую легко идентифицировать.

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

Понимание назначения строки User-Agent

На этом шаге вы узнаете, что такое строка User-Agent и почему она важна в веб-запросах.

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

Для инструментов безопасности, таких как Gobuster, строка User-Agent по умолчанию часто раскрывает идентификатор инструмента, что может вызвать срабатывание WAF или систем обнаружения вторжений (IDS). Например, строка User-Agent по умолчанию для Gobuster может выглядеть примерно так: gobuster/3.1.0.

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

Сначала убедитесь, что веб-сервер запущен, проверив его процесс:

ps aux | grep "python3 -m http.server 8080" | grep -v grep

Вы должны увидеть вывод, похожий на этот, указывающий, что сервер запущен:

labex      1234  0.0  0.1  12345  6789 ?        Sl   HH:MM   0:00 python3 -m http.server 8080 --directory /tmp/web_root

Теперь выполните простое сканирование Gobuster против локального сервера на порту 8080. Для демонстрации мы будем использовать небольшой список слов.

gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -q -x html,txt -t 10
  • -u http://127.0.0.1:8080: Указывает целевой URL.
  • -w /usr/share/wordlists/dirb/common.txt: Указывает используемый список слов.
  • -q: Тихий режим, выводит только результаты.
  • -x html,txt: Указывает расширения для поиска.
  • -t 10: Устанавливает количество одновременных потоков равным 10.

Вы увидите вывод, похожий на этот, показывающий обнаруженные каталоги и файлы:

/admin                (Status: 200)
/secret               (Status: 200)
/backup               (Status: 200)

Хотя это сканирование работает, User-Agent, используемый Gobuster, является его стандартным, который может быть легко заблокирован WAF.

Поиск распространенной строки User-Agent браузера

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

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

  1. Проверка сетевых запросов в инструментах разработчика вашего браузера: Когда вы просматриваете веб-сайт, откройте инструменты разработчика вашего браузера (обычно F12), перейдите на вкладку "Сеть" (Network) и проверьте заголовки любого запроса.
  2. Поиск в Интернете: Многие веб-сайты составляют списки распространенных строк User-Agent.

Для этой лаборатории давайте используем распространенную строку User-Agent для последней версии Chrome в Windows. Типичная строка User-Agent для Chrome может выглядеть так:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Эта строка указывает:

  • Mozilla/5.0: Общий токен, который многие браузеры включают по историческим причинам.
  • (Windows NT 10.0; Win64; x64): Информация об операционной системе (Windows 10, 64-разрядная).
  • AppleWebKit/537.36 (KHTML, like Gecko): Информация о движке рендеринга (WebKit, с совместимостью KHTML).
  • Chrome/120.0.0.0: Название и версия браузера.
  • Safari/537.36: Еще один исторический токен, часто включаемый браузерами на основе WebKit.

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

Использование флага -a для установки пользовательского User-Agent

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

Gobuster предоставляет флаг -a (или --agent) специально для этой цели. Вы просто передаете желаемую строку User-Agent в качестве аргумента этому флагу.

Подготовим команду Gobuster с пользовательской строкой User-Agent, которую мы определили на предыдущем шаге. Мы будем использовать ту же цель и список слов.

CUSTOM_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
echo "Using custom User-Agent: $CUSTOM_USER_AGENT"

Теперь составим команду Gobuster. Обратите внимание, как используется флаг -a:

gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -a "$CUSTOM_USER_AGENT" -q -x html,txt -t 10
  • -a "$CUSTOM_USER_AGENT": Это новая часть, где мы передаем нашу пользовательскую строку User-Agent. Кавычки вокруг $CUSTOM_USER_AGENT имеют решающее значение, поскольку строка содержит пробелы.

Перед выполнением подумайте о разнице, которую это вносит. Без флага -a веб-сервер увидит запрос от "gobuster". С флагом -a он увидит запрос от "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", что выглядит как запрос от легитимного браузера.

Выполнение сканирования с новым User-Agent

На этом шаге вы выполните сканирование Gobuster с использованием пользовательской строки User-Agent и проанализируете результаты.

Теперь запустите команду Gobuster с пользовательским User-Agent. Вывод самого сканирования будет похож на предыдущий, поскольку User-Agent влияет только на то, как запрос воспринимается сервером, а не на сами результаты сканирования (если только сервер не блокирует стандартный User-Agent).

Выполните команду:

CUSTOM_USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
gobuster dir -u http://127.0.0.1:8080 -w /usr/share/wordlists/dirb/common.txt -a "$CUSTOM_USER_AGENT" -q -x html,txt -t 10

Вы должны увидеть те же обнаруженные каталоги и файлы:

/admin                (Status: 200)
/secret               (Status: 200)
/backup               (Status: 200)

Хотя вывод тот же, ключевое отличие заключается в том, что в реальном сценарии с WAF (Web Application Firewall) или IDS (Intrusion Detection System) это сканирование с меньшей вероятностью будет помечено как подозрительное по сравнению со сканированием, использующим стандартный User-Agent Gobuster. Это фундаментальный метод в этичном хакинге и тестировании на проникновение для избежания обнаружения.

Обсуждение причин, по которым это может помочь обойти простые фильтры

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

Многие межсетевые экраны веб-приложений (WAF), системы обнаружения вторжений (IDS) и даже базовые конфигурации серверов используют правила для идентификации и блокировки подозрительного трафика. Одним из самых простых и распространенных правил является анализ строки User-Agent.

Вот почему установка пользовательского User-Agent помогает:

  • Обход блокировки на основе User-Agent: Если WAF имеет правило для блокировки запросов с User-Agent, таких как "gobuster", "nmap", "sqlmap" или других известных инструментов безопасности, использование User-Agent обычного браузера позволит вашим запросам пройти незамеченными этим конкретным правилом.
  • Снижение подозрительности: Администратор сервера, просматривающий журналы, может заметить большое количество запросов от необычного User-Agent (например, gobuster/3.1.0). Имитируя обычный браузер, ваши запросы смешиваются с легитимным пользовательским трафиком, что делает их менее вероятными для ручного расследования или автоматической пометки.
  • Обход ограничения скорости (в некоторых случаях): Хотя это напрямую не связано с User-Agent, некоторые системы могут применять более строгие ограничения скорости к User-Agent, не являющимся браузерами. Выдавая себя за браузер, вы можете избежать этих более строгих ограничений, что позволит вашему сканированию проходить быстрее или полнее.

Важно отметить, что этот метод эффективен против простых фильтров. Более сложные WAF и IDS используют комбинацию факторов (например, шаблоны запросов, репутацию IP-адреса, поведенческий анализ) для обнаружения вредоносной активности, поэтому одного пользовательского User-Agent может быть недостаточно для обхода продвинутых средств защиты. Тем не менее, это фундаментальный и часто необходимый первый шаг в скрытой разведке.

Чтобы очистить среду, вы можете остановить веб-сервер Python:

pkill -f "python3 -m http.server 8080"

Эта команда находит и завершает процесс, выполняющий веб-сервер Python.

Резюме

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