Сканирование портов веб-сайта может показаться простым, но прежде чем запускать команду Nmap на нашей цели, мы должны сначала немного покопаться. Мы собираемся сканировать правильную цель? В этой статье мы подробно рассмотрим, как правильно сканировать порты веб-сайта. Все приведенные ниже примеры были созданы на Kali Linux. В даной статье мы рассмотрим тему реализация сканирования портов веб-сайта.
Когда мы говорим о сканировании портов, мы должны думать на сетевом уровне с точки зрения IP-адресов, а не веб-сайтов или имен хостов.
С технической точки зрения, мы не можем сканировать порты веб-сайта или имени хоста — мы можем сканировать порты только IP-адреса, в который разрешается целевое имя хоста / полное доменное имя (например, www.example.com).
Итак, прояснив это, первое, что мы должны сделать, это выполнить поиск DNS для цели.
Правило № 1: преобразовать имя целевого хоста в IP-адрес(а)
Мы можем использовать любую из следующих команд для выполнения задания:
host www.example.com
dig www.example.com +short
getent ahosts www.example.com
Теперь, когда мы получили все IP-адреса, мы должны убедиться, что они действительно принадлежат нашей цели.
Правило № 2: убедитесь, что вы собираетесь сканировать правильный IP-адрес(а)
Дело в том, что целевой веб-сайт может использовать провайдера CDN (Content Delivery Network), фактически скрывая за ним свой реальный IP-адрес.
Или это может быть балансировка нагрузки между несколькими IP-адресами. Мы никогда не узнаем эти вещи, если немного не покопаемся. Мы обсудим это в следующем разделе.
Правило №3: Выберите правильную стратегию сканирования портов
В зависимости от характера теста (белый ящик, серый ящик, черный ящик, красная команда и т. д.) нам, возможно, придется использовать разные стратегии сканирования портов.
Мы подробно расскажем об этом в заключительном разделе этой статьи.
Если целевой веб-сайт использует CDN, это означает, что реальный IP-адрес веб-сайта скрыт за CDN. И IP-адреса, которые мы видим, когда делаем DNS-запросы, принадлежат провайдеру CDN, а не фактическому целевому веб-сайту!
Это, конечно, важная информация. Сканируя IP-адрес CDN, мы, очевидно, сканируем что-то совершенно отличное от того, что мы хотим сканировать.
Существует несколько способов идентификации CDN. Мы можем разделить их на следующие две категории:
Давайте разберем их.
Существует ряд онлайн-инструментов, которые могут помочь нам определить, использует ли конкретный веб-сайт CDN или нет. Вот некоторые из бесплатных:
Но, как мы указали выше, иногда эти сторонние инструменты могут давать неточную информацию. Поэтому всегда полезно проверить все вручную, чтобы быть уверенным на 100%. Это также легко сделать, так почему бы не привыкнуть к этому и делать это всегда вручную.
Сначала мы должны преобразовать имя хоста веб-сайта в IP-адрес(а).
host -t A www.example.com
Затем мы должны найти, кому принадлежат эти IP-адреса в базе данных WHOIS. Это даст нам 100% уверенности.
whois <IP-ADDRESS>
Если мы повсюду видим признаки CDN (такие имена, как Amazon, Cloudflare, Azure и т. д.), то нет никаких сомнений — веб-сайт использует CDN. Вот пример:
В подходе тестирования белого ящика или в типичном сценарии VAPT клиент предоставляет имена хостов и IP-адреса всех активов в области как часть информации об области, поскольку цель обычно состоит в том, чтобы протестировать фактические активы в области.
При большем подходе «черного ящика» или в упражнении красной команды нам пришлось бы выяснять это самостоятельно. Клиент не дал нам эту информацию. Поэтому нам пришлось бы каким-то образом раскрывать реальный IP-адрес сайта.
Хорошая новость заключается в том, что это почти всегда возможно. С другой стороны, может потребоваться более глубокое копание и использование сторонних сервисов, которые не всегда бесплатны. Раскрытие реального IP-адреса за CDN — это тема, выходящая за рамки этой статьи, но давайте кратко упомянем некоторые приемы и методы, которые можно использовать для этого:
Подробную информацию об этих методах можно найти по следующим ссылкам:
Иногда целевой веб-сайт использует несколько IP-адресов и некоторую форму балансировки нагрузки. Например, на следующем снимке экрана показан веб-сайт, использующий балансировку нагрузки с помощью циклического перебора DNS. Обратите внимание, как порядок IP-адресов меняется каждый раз, когда мы выполняем поиск DNS:
В подобных случаях важно сканировать порты всех IP-адресов, чтобы обеспечить полное покрытие. Некоторые из этих систем могут быть настроены иначе, чем другие, и, просканировав их все, мы можем обнаружить что-то важное.
Итак, к этому моменту мы должны были собрать все IP-адреса, принадлежащие целевому веб-сайту. Теперь давайте приступим к фактическому сканированию портов.
Когда дело доходит до сканирования портов, нам, возможно, придется рассмотреть различные стратегии в зависимости от характера теста.
Во время тестирования white-box или в типичном сценарии VAPT цель обычно состоит в том, чтобы найти как можно больше уязвимостей.
Поэтому мы всегда сканируем все порты на удаленных хостах, что гарантирует полное покрытие и отсутствие пропуска служб, работающих на целевых хостах.
Следующая команда является типичным способом сканирования портов веб-сайта во время упражнения VAPT:
nmap -n -Pn -sS -p0-65535 -oA output <IP-ADDRESS>
С точки зрения времени мы оставляем его по умолчанию, что означает, что мы используем «обычный» шаблон времени (-T3). Это определенно не скрыто, и поэтому очень вероятно, что его обнаружат.
Мы делаем это только тогда, когда знаем, что нас не заблокируют. Обычно мы заранее просим клиента внести наш исходный IP-адрес в белый список, чтобы нас не заблокировали.
Это также полезно для клиента и его команды SOC (Security Operations Center), чтобы различать наши действия по тестированию и потенциальную реальную атаку.
Теперь, в подходе «black box» или в учениях красной команды, мы бы поступили иначе. Цель здесь больше не в том, чтобы найти как можно больше уязвимостей, но, конечно, нам бы этого хотелось. Мы все равно хотели бы добиться полного охвата.
В этих сценариях мы также должны быть скрытными, чтобы не быть заблокированными. Если нас заблокируют, то наши результаты будут неточными и неполными. Мы также «сожжем» наш исходный IP-адрес, и нам, возможно, придется получить новый (например, арендовать новый экземпляр VPS).
Итак, для того, чтобы наше сканирование портов было скрытым, самым важным аспектом является скорость. Мы просто должны делать это достаточно медленно, чтобы оставаться незамеченными. Вот наши варианты с Nmap:
Nmap option | Timing template name | Speed |
-T2 | polite | 1 packet every 0.4 seconds |
-T1 | sneaky | 1 packet every 15 seconds |
-T0 | paranoid | 1 packet every 5 minutes |
Для получения более подробной информации о шаблонах таймингов см. официальную документацию Nmap (ссылка).
Таким образом, если мы хотим провести полное сканирование портов в разумные сроки, мы должны использовать как минимум «вежливый» шаблон (-T2). Это может закончить работу за 7,2 часа. Команда будет:
nmap -T2 -n -Pn -sS -p0-65535 -oA output <IP-ADDRESS>
Но это, вероятно, все равно будет обнаружено! В качестве альтернативы можно использовать «подлый» шаблон (-T1), для выполнения которого потребуется 11 дней. У вас есть 11 дней, чтобы выполнить полное сканирование портов? Это все еще выполнимо, но если у нас этого нет, то мы должны компенсировать. Мы должны найти баланс между охватом и необходимым временем.
Нахождение правильного баланса..
Следующие 5 примеров — это то, что мы обычно используем в упражнениях «черный ящик» или «красная команда». Обычно мы используем эти команды, когда клиент не вносит нас в белый список. В зависимости от проекта и выделенных временных рамок нам нужно выбрать наиболее подходящую стратегию сканирования.
Следующие команды используют «скрытый» временной шаблон (-T1), чтобы избежать обнаружения, но при этом предоставить результаты в разумные сроки. Обратите внимание, что мы сканируем только порты TCP.
Не стесняйтесь использовать любую из этих команд в соответствии с вашей текущей ситуацией и потребностями:
Сканировать порты веб-сервера (56 портов)
nmap -T1 -n -Pn -sS -p80-90,443,4443,8000-8009,8080-8099,8181,8443,9000,9090-9099 -oA output <IP-ADDRESS>
Необходимое время: 14 минут.
Сканировать порты веб-сервера и другие интересные порты (93 порта)
nmap -T1 -n -Pn -sS -p21-23,25,53,80-90,111,139,389,443,445,873,1099,1433,1521,1723,2049,2100,2121,3299,3306,3389,3632,4369,4443,5038,5060,5432,5555,5900-5902,5985,6000-6002,6379,6667,8000-8009,8080-8099,8181,8443,9000,9090-9099,9200,27017 -oA output <IP-ADDRESS>
Необходимое время: 24 минуты.
Сканировать 200 самых популярных портов
nmap -T1 -n -Pn -sS --top-ports 200 -oA output <IP-ADDRESS>
Необходимое время: 50 минут.
Сканировать 1000 самых популярных портов
nmap -T1 -n -Pn -sS --top-ports 1000 -oA вывод <IP-АДРЕС>
Необходимое время: 4 часа 10 минут.
Сканировать 4790 самых популярных портов (аналогично сканеру Nessus)
nmap -T1 -n -Pn -sS --top-ports 4790 -oA output <IP-ADDRESS>
Необходимое время: 20 часов.
Запускайте их безопасно
Если вы используете выделенный Linux VPS для своей деятельности, убедитесь, что вы запускаете сканирование портов в терминальном мультиплексоре, таком как GNU Screen или tmux.
Это предотвратит случайное прерывание сканирования в случае нарушения соединения между вами и вашим VPS.
Обнаружение блокировки
Во время сканирования портов рекомендуется время от времени проверять, не обнаруживаются ли ваши сканирования и не блокируетесь ли вы.
Для этого мы можем просто проверить, можем ли мы по-прежнему подключаться к порту веб-сервера, который, как мы знаем, открыт (например, порт tcp/80).
Мы можем легко сделать это с помощью утилиты Netcat следующим образом:
nc -nvz <IP-ADDRESS> 80
Если вы хотите, чтобы эта проверка порта выполнялась автоматически, скажем, каждый час, вы можете просто создать еще одно окно терминала screen/tmux на своем VPS и выполнить там однострочник:
while true; do date; nc -nvz <IP-ADDRESS> 80; sleep $((60*60)); done
Теперь у вас будет хороший отчет о ситуационной осведомленности каждый час:
Кстати..
Знаете ли вы, как Nmap использует опцию «-top-ports» и какие это самые популярные (наиболее популярные) порты? Просто запустите следующую однострочную команду, чтобы узнать 100 лучших портов TCP:
sort -k3 -nr /usr/share/nmap/nmap-services | grep '/tcp' | head -100
Мы искренне надеемся, что эта статья предоставила все необходимые сведения о том, как правильно сканировать порты веб-сайта. Следуя 3 правилам, упомянутым выше, сканирование портов веб-сайта может быть очень простым и понятным.
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…