Отключение DNS-запросов для ускорения сканирования в Nikto

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

Введение

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

По умолчанию Nikto выполняет обратный поиск DNS для IP-адресов, найденных в контенте веб-сервера. Хотя это может быть полезно для обнаружения связанных имен хостов, это также может значительно замедлить сканирование, особенно при сканировании больших сетей или не отвечающих целей.

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

Понимание назначения опции -nolookup

На этом шаге вы узнаете об опции -nolookup в Nikto.

Когда Nikto сканирует веб-сервер, он может находить IP-адреса в конфигурационных файлах сервера, журналах или веб-страницах. По умолчанию Nikto пытается выполнить обратный поиск DNS для каждого из этих IP-адресов, чтобы найти связанные с ними имена хостов. Этот процесс может быть трудоемким.

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

Вы можете увидеть эту опцию и другие, просмотрев меню справки Nikto. Давайте сделаем это сейчас.

Выполните следующую команду в терминале:

nikto -Help

Прокрутите вывод и найдите опцию -nolookup. Она будет указана с кратким описанием.

...
-nolookup           Skip name lookups
...

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

Выполнение базового сканирования цели с использованием ее IP-адреса

На этом шаге вы выполните стандартное сканирование Nikto против локального веб-сервера. Мы будем использовать команду time для измерения продолжительности сканирования. Это послужит нашей базой для сравнения.

В лабораторной среде уже запущен простой веб-сервер Nginx, работающий на 127.0.0.1. Мы будем использовать его в качестве цели.

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

time nikto -h 127.0.0.1

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

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m15.543s
user    0m14.987s
sys     0m0.312s

Обратите пристальное внимание на последние три строки, которые являются выводом команды time. Время real — это общее прошедшее время. Запишите это значение для следующего шага.

Повторное выполнение того же сканирования с флагом -nolookup

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

Выполните следующую команду в терминале:

time nikto -h 127.0.0.1 -nolookup

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

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        80
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

real    0m8.123s
user    0m7.890s
sys     0m0.201s

Обратите внимание, что Target Hostname в выводе теперь 127.0.0.1 вместо localhost. Это связано с тем, что Nikto не выполнил обратный поиск для разрешения IP-адреса в имя хоста. Также обратите внимание на новое время real.

Сравнение времени выполнения обоих сканирований

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

Давайте посмотрим на время real из обеих команд.

Сканирование 1 (Базовое): real 0m15.543s (Ваше время может незначительно отличаться)

Сканирование 2 (с -nolookup): real 0m8.123s (Ваше время может незначительно отличаться)

Как вы можете видеть, сканирование с флагом -nolookup завершилось значительно быстрее. В этом примере оно было почти в два раза быстрее. Увеличение производительности может быть еще более драматичным при сканировании нескольких хостов или целей в медленных или неправильно настроенных сетях, где поиск DNS может привести к истечению времени ожидания.

Это простое сравнение демонстрирует прямое преимущество в производительности от отключения поиска DNS в ваших сканированиях Nikto.

Анализ случаев использования этой оптимизации производительности

На этом заключительном шаге мы обсудим компромиссы и определим, когда целесообразно использовать опцию -nolookup.

Хотя -nolookup обеспечивает явное повышение производительности, это происходит за счет потенциальной потери информации. Обратные поиски DNS могут помочь вам обнаружить другие имена хостов и виртуальные хосты, связанные с IP-адресом, что может быть критически важно для всесторонней оценки безопасности.

Итак, когда следует использовать -nolookup?

  • Первоначальные сканирования и сортировка: Когда вы сканируете большое количество хостов и хотите получить быстрое представление о потенциальных уязвимостях. На этом этапе скорость важнее исчерпывающих деталей.
  • Сканирование по IP-адресу: Если ваш список целей состоит исключительно из IP-адресов, и вас не беспокоит обнаружение связанных доменных имен, использование -nolookup является логичным выбором.
  • Ненадежные сети: При сканировании через медленное или ненадежное сетевое соединение, где DNS-запросы могут завершиться неудачей или истечь по времени, -nolookup может предотвратить зависание сканирования.
  • Когда скорость критична: В ситуациях, требующих срочности, таких как соревнования по тестированию на проникновение или быстрое реагирование на инциденты, прирост скорости от этой опции может быть бесценным.

Когда следует избегать -nolookup?

  • Комплексная оценка: При проведении полного, углубленного аудита безопасности конкретной цели вы хотите получить как можно больше информации. Имена хостов, обнаруженные с помощью DNS-запросов, могут выявить дополнительные поверхности атаки.
  • Обнаружение виртуальных хостов: Если вы подозреваете, что целевой IP-адрес размещает несколько веб-сайтов (виртуальный хостинг), вам следует разрешить Nikto выполнять поиски, чтобы помочь их идентифицировать.

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

Резюме

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

Затем вы выполнили два сканирования: базовое сканирование и второе сканирование с использованием опции -nolookup. Сравнивая время выполнения с помощью команды time, вы наблюдали значительное улучшение производительности.

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