• Приглашаем на KubanCTF

    Старт соревнований 14 сентября в 10:00 по москве

    Ссылка на регистрацию в соревнованиях Kuban CTF: kubanctf.ru

    Кодебай является технологическим партнером мероприятия

Статья Жёстко сканируем и хакаем облачные сервисы Amazon

Благодаря этой статьи вы будете уметь сканировать облачные среды с помощью Masscan. Определив несколько уникальных хостов в целевой среде, вы можете перечислите серверы TLS с помощью TLS-сканирования и определите принадлежность системы с помощью данных сертификата. Наконец, вы выполните сканирование EyeWitness для создания отчета.

Начало
Хацкеры часто используют OSINT для идентификации провайдера облачных услуг, используемого целевой организацией, используя информацию DNS, связанную информацию на страницах веб-сайта(ссылки на сеть доставки контента/CDN, поставщики распределенных отказов в обслуживании/DDoS и т.д.) и публичные веб-сайты, которые могут автоматически идентифицировать провайдера хостинга.
Одной из предпосылок сканирования является то, что у хакера будет диапазон IP-адресов для сканирования или даже имя хоста, которое может быть преобразовано в IP-адрес. Та же концепция применима к сканированию облака: Как только хакер идентифицирует поставщика облачных услуг, ему необходимо идентифицировать IP-адреса, связанные с облачными сервисами, чтобы провести подробное сканирование.
К счастью, поставщики облачных услуг публикуют списки своих IP-адресов в легко анализируемом формате JSON. Эта информация необходима многим кампаниям в рамках процесса построения непрерывной интеграции (CI) для обеспечения безопасности сети, а также для реагирования на атаки, наблюдаемые со стороны разных поставщиков облачных услуг

Ниже показаны три примера извлечения IP-адресов облачного провайдера с использованием размещенных списков с помощью инструментов wget и JQ (обратите внимание, что для Azure необходимо вручную загрузить список IP-адресов https://www.microsoft.com/en-us/download/details.aspx?id=56519, а затем проанализировать извлеченный файл с помощью ). JQ извлечёт только информацию об IP-адресе и маске бесклассовой междоменной маршрутизации ( )
Amazon AWS:
Bash:
$ wget -qO- https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[] | .ip_prefix' -r | head -3
3.4.12.4/32
3.5.140.0/22
15.230.15.29/32

Google Cloud Platform:
Bash:
$ wget -qO- https://www.gstatic.com/ipranges/cloud.json | jq '.prefixes[] | .ipv4Prefix' -r | head -3
34.1.208.0/20
34.35.0.0/16
34.152.86.0/23

Azure:
Bash:
$ jq < ~/Downloads/ServiceTags_Public_20240819.json '.values | .[] | .properties.addressPrefixes | .[]' -r | head -3
4.145.74.52/30
4.149.254.68/30
4.150.239.212/30

Возвращенные диапазоны IP-адресов представляют всё пространство IP-адресов, используемое провайдером. Хакеры могут ограничить свою оценку определенными регионами, которые, как им известно, используются с помощью разведывательного анализа, добавив условный оператор в программу JQ
Bash:
$ wget -qO- https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[] | if .region == "eu-central-1" then .ip_prefix else empty end' -r | head -3
15.230.15.29/32
15.230.15.76/31
52.93.244.0/24


Сканирование
После того, как злоумышленник определит диапазон IP-адресов для сканирования, он может выбрать инструмент для проведения сканирования. Nmap мощный, но он не подходит для сканирования большого количества IP-адресов.
Вместо этого будем использовать Masscan. Masscan не имеет и близкого к объему функциональности Nmap, вместо этого оптимизировали работу Masscan, для очень быстрой отправки TCP SYN пакетов
Bash:
$ wget -qO- https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[] | if .region == "eu-central-1" then .ip_prefix else empty end' -r | sort -u > eu-central-1-range.txt
В примере мы используем wget и JQ для получения списка IP-адресов AWS, связанных с регионом eu-central-1.

Затем мы сканируем диапазон хостов, считывая список сетей и масок CIDR с помощью -iL сохраняя результаты сканирования в новый файл с помощью -oL и ограничивая результаты сканирования только портом TCP 443 с помощью -p
Bash:
$ masscan -iL eu-central-1-range.txt -oL eu-central-1-range.masscan -p 443 --rate 100000
Starting masscan 1.3.2 (http://bit.ly/14GZzcT) at 2024-08-24 13:15:00 GMT
Initiating SYN Stealth Scan
Scanning 4362790 hosts [1 port/host]
Обратите внимание, что Masscan приведет к ложным результатам, если будет использоваться слишком быстро (например, скорость PPS превышает фактическую скорость хоста или сети)

После завершения сканирования выходной файл регистрирует открытые порты и связанный с ними IP-адрес, за которым следует время.
1724505628797.png


Мы можем использовать программу awk для извлечения информации об IP-адресе,перенаправляя вывод в новый файл для следующего шага в процессе сканирования
Bash:
awk '/open/ {print $4}' eu-central-1-range.masscan > eu-central-1-range.tlsopen
Результаты анализа Masscan показывают список IP-адресов, прослушивающих TCP-порт 443, но он не предоставляет никакой атрибуции для клиента, использующего облачный актив.
Атрибуция (attribute) в AWS — это характеристика или свойство, которое предоставляет информацию о конкретном ресурсе.

Атрибуция хостов
Чтобы определить владельца облачного актива, мы можем подключиться к открытому TCP-порту и получить информацию о сертификате с сервера. Поскольку TCP/443 является службой с шифрованием TLS, сервер раскроет сертификат сервера любому, кто подключается к серверу. В обычных сценариях просмотра веб-страниц этот сертификат используется для проверки личности организации, размещающей службу, как часть процесса установления проверки и шифрования. Хакеры могут аналогичным образом использовать эту информацию для атрибуции облачной виртуальной машины.

Bash:
openssl s_client -connect 3.67.245.243:443 2>/dev/null | openssl x509 -text | grep Subject:
Показывает атрибут общего имени сертификата (CN), часто идентифицирующий доменное имя целевой организации
1724505988991.png

s_client - команда для установления SSL/TLS соединения
-connect - опция, указывающая, к какому серверу подключаться
openssl x509 -text - выводит информацию о сертификате в текстовом формате
Утилита OpenSSL может подключаться только к одному серверу за раз. К счастью, я предоставляю еще один инструмент, который ускорит процесс сбора данных для нас.
TLS-Scan
  • Сканирует список серверов TLS и собирает данные сертификата и шифра
  • Быстрый, неблокируемый, производительный сканер
  • Сохраняет результаты в формате JSON
Сначала установил сам tls-scan и запустим
Bash:
pip3 install tls-scan
Bash:
cat eu-central-1-range.tlsopen | tls-scan --port=443 -o eu-central-1-range-tlsinfo.json
Отилчно идём дальше!

Интерпретация результатов
Мы используем программу JQ для доступа к результатам TLS-Scan в массиве, извлекая поле ip, поле commonName
Bash:
jq -r '{ip, commonName: .cert.subject.commonName} | [.ip, .commonName] | @csv' eu-central-1-range-tlsinfo.json > eu-central-1-range-tlsinfo.csv
1724508626360.png



EyeWitness
Используя комбинацию Masscan, TLS-Scan, JQ и grep, хацкер может сканировать диапазон облачной сети иидентифицировать список серверов, прослушивающих TCP/443, которые принадлежат целевой организации. Если организация большаяи имеет много серверов, это может быть большой список целей.
Хотя инструмент сканирования уязвимостей может быть полезен для сканирования и идентификации уязвимостей для большого количества систем, злоумышленник обычно захочет сузить список целей, чтобы определить системы, которые, вероятно, будут полезны для его атаки.
Этот инструмент сделает снимок каждого обнаруженного им веб-сервера, чтобы быстро определить цель нескольких веб-сайтов, просто просматривая изображения, включенные в HTML-отчет. EyeWitness быстро определит страницы по умолчанию, страницы управления и страницы, которые возвращают индексированные каталоги файлов одним взглядом.
Мы можем составить список IP-адресов и имен хостов веб-серверов для исследования с помощью EyeWitness.
В результатах TLS-Scan JSON злоумышленник может получить IP-адрес серверов, на которые отвечает TLS, а также поля Common Name (CN) и Subject Alt Name для идентификации имени хоста веб-сервера.
Используйте этот скрипт с cut для создания списка хостов, извлеченных из результатов TLS-Scan написанный кстати, хотелось бы сказать что я создал, но создал ИИ, но ПОРОДИЛ его я :)
Bash:
python3 extract.py eu-central-1-range-tlsinfo.json | cut -d: -f2 > urllist.txt
1724511372104.png


Bash:
python3 /opt/EyeWitness/Python/EyeWitness.py --web -f urllist.txt --prepend-https
тут я говорю EyeWitness сгененируй веб-отчёт используя этот список адресов и добавляй к любому url адресу https у кого его нет.
Я опустил множество адресов и чуть чуть оставил и вот какой отчёт получил, вы конечно можете оставить много адресов
1724511871511.png


вы же можете найти это
1724511897152.png

Уязвимый tomcat сервер
Наличие уязвимого Tomcat-сервера, развернутого в облачной инфраструктуре, представляет потенциальную угрозу безопасности.
Несмотря на то, что организация внедряет новые технологии, и, казалось бы, сервер "не нужен" (нет публичного адреса, с production-сайта на него не попасть), и они думаю кто его вообще найдёт? А доступ к нему всё же возможен и вы можете его найти


Поговорим о безопасности
С точки зрения защиты, сложно регистрировать и захватывать этот тип сканирования, поскольку полуоткрытые сканирования SYN (используемые Nmap и Masscan) не регистрируются большинством целевых систем, и многие веб-серверы не регистрируют доступ к TLS-сканированию (TLS-сканирование завершает соединение после получения сертификата и перед выдачей HTTP-запроса).
Хотя можно отслеживать поведение сканирования с помощью инструментов захвата пакетов, firewall или анализа сетевых потоков, сложно идентифицировать какие-либо вредоносные действия, связанные с поведением сканирования по сравнению с обычным взаимодействием с сервером.

Если вы используете облачный веб-сервер, должен ли веб-сервер быть общедоступным для всех или доступ можно ограничить с помощью клиентского firewall или firewall виртуального частного облака (VPC)
Во многих случаях API серверы и веб-серверы, которые предназначены для доступа только через WAF, недолжны быть общедоступными для других конечных точек, включая хакеров, и доступ может быть ограничен пулом исходных IP-адресов.

Спасибо, я очень старался, и у меня теперь болит спина
 
  • Нравится
Реакции: J3eyond, vov4ick и N1GGA
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!