
Whois для облака: Инструмент разведки для определения принадлежности к облачным провайдерам. Поддерживает AWS, Azure, Google, Cloudflare и Digital Ocean.
Проверьте IP, чтобы определить облачного провайдера и другие детали на основе опубликованных провайдером данных в форматах JSON, CSV или текстовых файлов
Cloud edge — это инструмент разведки, ориентированный на исследование облачных провайдеров. Он может использоваться для атрибуции и криминалистики в облаке, пентестов, охоты за багами, red teaming или общего исследования и разработки облачных провайдеров. Edge автоматически загружает опубликованные файлы диапазонов IP-адресов облачных провайдеров (AWS, Azure, GCP, Cloudflare, Digital Ocean) и выполняет поиск по префиксу на основе введённого IP-адреса. Может быть интегрирован с другими инструментами разведки. При пентесте сети в условиях чёрного ящика edge быстро определяет, у какого облачного провайдера размещён заказчик, или просто перепроверяет границы по правилам взаимодействия. Каждый из этих провайдеров публикует список всех своих IP-префиксов и/или сетевых блоков. Для Azure и AWS добавляется регион/центр обработки данных и название сервиса. Это отличное обогащение для threat intelligence, позволяющее сопоставлять IP-адреса с физическими дата-центрами и облачными сервисами. Cloud Edge может быть полезен в рабочих процессах разведки, чтобы быстро понять, «с чем вы имеете дело» — он быстро парсит и выполняет поиск на основе IP-префикса.

Несколько заметок о том, как инструмент работает с вводом и выводом.
Запустите Cloud Edge, и он автоматически загрузит все поддерживаемые файлы облачных провайдеров. Если файлы не существуют в рабочем каталоге, они будут загружены:
% ./edge
[INF] Starting Cloud Edge version 0.2.4
[INF] File cloud.json has been downloaded and created
[INF] File aws.json has been downloaded and created
[INF] File cloudflare-ipv4.txt has been downloaded and created
[INF] File cloudflare-ipv6.txt has been downloaded and created
[INF] File digitalocean.csv has been downloaded and created
[INF] File azure.json has been downloaded and created
Если вы офлайн и их невозможно загрузить, проверьте каталог csp-files в этом репозитории. Скопируйте их в рабочий каталог.
При первом запуске инструмент автоматически пытается загрузить и загрузить в память шесть файлов диапазонов IP-адресов облачных провайдеров в форматах JSON, текстовых и CSV в рабочий каталог. Вот как это работает:
По умолчанию он пытается загрузить шесть файлов с указанных ниже URL, если файлы уже не находятся в рабочем каталоге.
| Провайдер | Локальный файл | Удаленный URL |
|---|---|---|
| AWS | aws.json | https://ip-ranges.amazonaws.com/ip-ranges.json |
| Azure | azure.json | https://azservicetags.azurewebsites.net/ |
| GCP | cloud.json | https://www.gstatic.com/ipranges/cloud.json |
| Cloudflare | cloudflare-ipv4.txt | https://www.cloudflare.com/ips-v4/# |
| Cloudflare | cloudflare-ipv6.txt | https://www.cloudflare.com/ips-v6/# |
| Digital Ocean | digitalocean.csv | https://digitalocean.com/geo/google.csv |
Cloud Edge проверяет каждый файл перед загрузкой. Поэтому если файл уже существует, он, очевидно, не будет загружаться повторно, если только вы его не удалите.
Эти шесть файлов включены в данный репозиторий GitHub в каталоге csp-files. Поскольку облачные провайдеры часто обновляют свои списки, убедитесь, что у вас самые последние файлы, удалив файлы в рабочем каталоге: aws.json, azure.json, cloud.json, cloudflare-ipv4.txt, cloudflare-ipv6.txt, digitalocean.csv.
Если файлы найдены в рабочем каталоге, все IP-префиксы загружаются в память. Файлы диапазонов IP облачных провайдеров всегда пытаются загрузиться из рабочего каталога. Фактический поиск включается с помощью флага -prefix.
Когда включён режим -dns, DNS-запросы как для A, так и для CNAME записей буферизируются без отображения до завершения всех DNS-запросов. После завершения запросов вывод отображается.
По умолчанию вывод показывает информационные сообщения, начинающиеся с [INF]. Это можно отключить с помощью флага -silent. Вывод будет выглядеть так:
./edge -single 140.179.144.130
[INF] Single IP prefix lookup of 140.179.144.130
[INF] Matched IP [140.179.144.130] to Cloud Provider via prefix [AWS:140.179.144.128/25]
[INF] Matched IP [140.179.144.130] to Cloud Service [API_GATEWAY] and Region [cn-north-1]
140.179.144.130,Provider:AWS;Prefix:140.179.144.128/25;Region:cn-north-1;Service:API_GATEWAY
Информационные сообщения сообщат, найдена ли запись через DNS-запись 'A', DNS-запись 'CNAME', сертификат (crt.sh) или найдено совпадение по префиксу. Совпадения по префиксу укажут обнаруженного облачного провайдера с соответствующим префиксом, а также облачный сервис и регион, если применимо. Регионы Azure в настоящее время не определяются, а AWS — да.
В режиме -dns или crt вывод по умолчанию отправляется в консоль в виде результатов, разделённых запятыми. Это упрощает использование других инструментов для разбора этих результатов.
FQDN,IP,SOURCE,CNAME,DESCRIPTION
-prefix.В режиме -prefix с -ip или -nmap вывод по умолчанию отправляется в консоль в виде результатов, разделённых запятыми:
IP,DESCRIPTION
IP — это IP-адрес, а DESCRIPTION — результаты поиска по диапазонам IP-адресов в файлах JSON облачных провайдеров, если применимо.
В режиме -ptr с ip или nmap вывод по умолчанию отправляется в консоль в виде результатов, разделённых запятыми:
IP,PTR
IP — это IP-адрес, а PTR — результаты DNS-запроса PTR, если он найден.
Флаг -ip указывает на необходимость итерации по списку IP-адресов и может использоваться в режиме prefix или ptr. Когда вы запускаете инструмент с -ip <hosts.txt>, он ожидает, что каждый IP-адрес находится на отдельной строке, и будет перебирать список, выполняя поиск. Вот пример содержимого файла:
user@host:~/demo$ cat ip.txt
3.133.110.237
18.117.232.92
18.221.247.211
3.137.199.52
Флаг -nmap указывает на необходимость разбора файла nmap XML. Он будет искать любой хост в файле сканирования nmap, помеченный как "Up". Например, -nmap scan1.xml укажет инструменту разобрать файл scan1.xml и найти все хосты, помеченные nmap как Up. Затем вы запускаете его с -ptr или -prefix для поиска IP.
Инструмент выполняет классическое перечисление поддоменов, перебирая словарь, содержащий имена хостов, по одному на строку. Это используется в режиме -dns с -wordlist <hosts.txt>. Пример того, как это выглядит для файла hosts.txt:
user@host:~/demo$ more subdomains-5k.txt
www
blog
news
blogs
en
online