Использование техник уклонения в Nikto

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

Введение

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

При выполнении проверок безопасности часто желательно избегать обнаружения системами безопасности, такими как системы обнаружения вторжений (IDS), системы предотвращения вторжений (IPS) или межсетевые экраны веб-приложений (WAF). Эти системы отслеживают сетевой трафик на наличие вредоносных шаблонов. Nikto включает встроенные методы уклонения, чтобы помочь маскировать свои сканирования и сделать их менее заметными для таких систем.

В этой лаборатории вы научитесь использовать опцию -evasion в Nikto для выполнения более скрытных сканирований.

Понимание доступных техник уклонения с помощью -evasion

На этом шаге вы научитесь перечислять и понимать различные техники уклонения, доступные в Nikto. Опция -evasion (или -e) используется для указания техники уклонения. Чтобы увидеть все доступные техники, вы можете запустить Nikto только с опцией -evasion и без указания конкретного номера техники.

Давайте перечислим доступные техники. Откройте терминал и выполните следующую команду:

nikto -evasion

Вы увидите список доступных техник с номером и кратким описанием для каждой.

- Evasion options:
      1   Random URI encoding (non-UTF8)
      2   Directory self-reference (/./)
      3   Premature URL ending
      4   Prepend long random string to request
      5   Fake parameter
      6   GET instead of HEAD
      7   Use a random User-Agent
      8   Random case sensitivity
      A   Use a random IP for the Source-IP
      B   Obfuscate with TABs
      C   Use a carriage return (CR) as a line-ending
      D   Use a binary value as a line-ending
      E   Use a long false request to mis-direct an IDS
      F   Use Windows-style directory separators (\)

Этот вывод показывает различные методы, которые Nikto может использовать для изменения своих запросов, чтобы избежать обнаружения. На следующих шагах мы попрактикуемся в использовании некоторых из этих техник.

Запуск сканирования с использованием -evasion 1 для случайного кодирования URI

На этом шаге вы будете использовать первую технику уклонения, "Случайное кодирование URI" (Random URI encoding). Эта техника кодирует части URI запроса нестандартным способом. Хотя веб-серверы обычно понимают эти кодировки, простые IDS, основанные на сигнатурах, могут не распознать шаблоны, позволяя запросу пройти незамеченным.

Мы выполним сканирование простого веб-сервера, который был запущен для вас в рамках настройки лаборатории. Он работает по адресу http://127.0.0.1:8000.

Чтобы использовать технику 1, добавьте номер к опции -evasion. Выполните следующую команду в вашем терминале:

nikto -h http://127.0.0.1:8000 -evasion 1

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

Вот пример вывода, который вы можете увидеть:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Server leaks a possible file system path: /home/labex/project/test-site/. This may suggest the server is running on a Unix-like system.
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Обратите внимание, что сканирование завершается и предоставляет результаты, но базовые запросы были изменены для повышения скрытности.

Попробуйте сканирование с использованием -evasion 2 для самоссылки на каталог

Теперь давайте попробуем другую технику. Техника уклонения 2 использует "самоссылку на каталог" (Directory self-reference). Этот метод вставляет /./ в URL запроса (например, /cgi-bin/ становится /./cgi-bin/). Большинство веб-серверов нормализуют этот путь и обрабатывают его как обычный запрос, но это может сбить с толку некоторые фильтры безопасности, которые ищут точные совпадения путей.

Запустите сканирование Nikto с использованием техники уклонения 2 против той же цели:

nikto -h http://127.0.0.1:8000 -evasion 2

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

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

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

Использование -evasion 4 для добавления длинных случайных строк в начало

На этом шаге мы рассмотрим технику уклонения 4, которая добавляет длинную случайную строку в начало запроса. Идея этой техники заключается в том, чтобы сместить фактическую вредоносную или интересную часть запроса за пределы буфера некоторых простых устройств IDS/IPS. Если IDS проверяет только первую часть запроса, она может пропустить фактический полезный груз.

Выполним сканирование с использованием этой техники.

nikto -h http://127.0.0.1:8000 -evasion 4

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

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

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Комбинирование нескольких техник уклонения в одном сканировании

Одной из самых мощных возможностей уклонения Nikto является способность комбинировать несколько техник в одном сканировании. Это создает более сложные и разнообразные запросы, что еще больше затрудняет обнаружение сканирования системой IDS.

Для комбинирования техник просто перечислите номера техник, которые вы хотите использовать, одну за другой. Например, чтобы скомбинировать случайное кодирование URI (Random URI encoding, 1), самоссылку на каталог (Directory self-reference, 2) и добавление длинных случайных строк в начало (Prepending long random strings, 4), вы бы использовали -evasion 124.

Выполним сканирование, комбинирующее эти три техники:

nikto -h http://127.0.0.1:8000 -evasion 124

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

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

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Комбинируя техники, вы можете создать гораздо более надежную и скрытную стратегию сканирования, адаптированную к конкретным мерам защиты, которые вы ожидаете.

Резюме

В этой лабораторной работе вы научились использовать мощные функции уклонения Nikto для проведения более скрытных сканирований уязвимостей веб-приложений. Вы начали с перечисления доступных техник с помощью опции -evasion. Затем вы отработали применение отдельных техник, включая случайное кодирование URI (Random URI encoding, 1), самоссылку на каталог (Directory self-reference, 2) и добавление длинных случайных строк в начало (Prepending long random strings, 4).

Наконец, вы узнали, как комбинировать эти техники для создания многоуровневой стратегии уклонения, что значительно усложняет для систем обнаружения вторжений (Intrusion Detection Systems) идентификацию вашей сканирующей активности. Эти навыки необходимы для проведения эффективных и незаметных оценок безопасности в средах с активным мониторингом.