Разведка сетевых ресурсов компании главным образом заключается в брутфорсе поддоменов с последующим ресолвом найденных сетевых блоков. Далее могут быть найдены новые домены 2 уровня и процедура повторяется снова. Это позволяет найти новые IP-адреса на каждой итерации.
Этот метод, пожалуй, самый эффективный. Однако встречались такие ситуации, когда целая подсеть /24 оставалась не найденной.
В наши дни появилось еще одно мощное средство — passive dns, которое позволяет сделать то же самое что и классический DNS-ресолв, но используя специальный API. Это может быть, к примеру, «virustotal» или «passive-total». Эти сервисы записывают DNS запросы и ответы, которые собираются с популярных DNS-серверов. Преимущество этого подхода в том, что нам не нужен брутфорс. Мы просто указываем IP-адрес и получаем все известные DNS записи. Или, наоборот, указывая DNS мы получаем все IP-адреса, которые ассоциированы с данным именем. У данного подхода есть неоспоримое преимущество — мы можем найти старые сервера сайтов, которые ресолвились раньше. Ведь в конце концов старые сайты наиболее вероятно будут содержать уязвимости.
Несмотря на описанные выше техники существует еще несколько чуть менее популярных, но всё же дающих результаты. В данной статье мы рассмотрим ещё две методики разведки — поиск IP-адресов по географическим данным (geo2ip) и нахождение IP-адресов по имени компании (reverse-whois).
Geo2ip
Что такое geoip, думаю, знают многие из нас. Он используется достаточно часто как разработчиками, так и администраторами. Однако geoip используется главным образом в направлении ip > geo. В нашем же случае это не так интересно. Забавно, но перед тем, как разработать собственное решение, не было найдено ни одной библиотеки, позволяющей делать запросы в обратном направлении geo > ip. Поэтому было решено написать собственный инструмент, более того что реализуется это не так уж и сложно.
![Рисунок 1. Установка Рисунок 1. Установка](https://habrastorage.org/getpro/habr/upload_files/949/cf4/2e9/949cf42e9ea298a87986d2776ae2ca08.png)
Инструмент был написан достаточно давно, так что использован python2.
Данный пакет содержит два инструмента:
geoip — выполнение различных запросов ip > geo, city > ip, country > ip, lat:long > ip и т.п.;
rwhois — выполнение различных запросов к whois базе (об этом во второй части статьи).
Итак, сперва нужно скачать geoip-базу:
![Рисунок 2. Обновление geoip-базы и просмотр количества сетевых блоков в ней Рисунок 2. Обновление geoip-базы и просмотр количества сетевых блоков в ней](https://habrastorage.org/getpro/habr/upload_files/9d9/715/8ea/9d97158eabf0c39fb341046aa3dabd8d.png)
К сожалению, начиная с 2020 года, база geoip больше не обновляется для публичного использования. Так что пришлось захардкодить ссылку на последний публичный снапшот.
Инструмент geoip имеет удобный синтаксис, который позволяет выполнять гибкие запросы к базе. Все запросы указываются через ключи, а то, что требуется вывести, в аргументах. Мы так же можем использовать подстановку с помощью символа «%» (SQL-синтаксис).
Например, для поиска информации по городу и диапазону IP-адресов, с выводом результата о блоках адресов, странах и городах:
![Рисунок 3. Поиск сетей по CIDR и городу Рисунок 3. Поиск сетей по CIDR и городу](https://habrastorage.org/getpro/habr/upload_files/201/5ea/0e9/2015ea0e90af1f840c77a77ab5726074.png)
Инструмент geoip имеет встроенную визуализацию, например, можно посмотреть расположение сетей какой-либо страны на карте:
![Рисунок 4. Получение всех сетей какой-либо страны Рисунок 4. Получение всех сетей какой-либо страны](https://habrastorage.org/getpro/habr/upload_files/f1d/507/11c/f1d50711c7895619217ccc7ae1b9aff2.png)
![Рисунок 5. Просмотр расположения сетей на карте Рисунок 5. Просмотр расположения сетей на карте](https://habrastorage.org/getpro/habr/upload_files/910/c6e/a8d/910c6ea8d7ee2c6cab378d911e24625d.png)
Для поиска сетей мы так же можем указать произвольный регион (регионы) в виде круга или квадрата с указанием радиуса в км. Например:
![Рисунок 6. Поиск всех сетей по географическим координатам Рисунок 6. Поиск всех сетей по географическим координатам](https://habrastorage.org/getpro/habr/upload_files/452/816/2d1/4528162d1627771834dee60ccac6e6cd.png)
![Рисунок 7. Визуализация с использованием Google Earth Рисунок 7. Визуализация с использованием Google Earth](https://habrastorage.org/getpro/habr/upload_files/b85/604/e0e/b85604e0e9f5ea6852ac705909a82ece.png)
При работе с инструментом мы так же можем использовать пайпы для взаимодействия со сторонними утилитами.
Посмотрим geoip-информацию о результатах выборки из shodan:
![Рисунок 8. Использование geoip вместе с shodan Рисунок 8. Использование geoip вместе с shodan](https://habrastorage.org/getpro/habr/upload_files/f71/34b/477/f7134b4773b3bd6af8f8a8a041b26341.png)
Ниже еще несколько примеров, не связанных напрямую с разведкой.
Распарсив логи apache, посмотрим, какие страны посещали сайт:
![Рисунок 9. Анализ логов Apache с geoip Рисунок 9. Анализ логов Apache с geoip](https://habrastorage.org/getpro/habr/upload_files/1fe/f18/51a/1fef1851a448bef84bed58e014ec9ff3.png)
Или из каких городов был ресолв собственной dns-зоны:
![Рисунок 10. Анализ bind-логов с помощью geoip Рисунок 10. Анализ bind-логов с помощью geoip](https://habrastorage.org/getpro/habr/upload_files/7e1/b65/e23/7e1b65e2311ce700cfb2587873d2e1e0.png)
Вернемся к разведке. Сканирование целого города – найдем все незащищенные mongo сервера в некотором городе:
![Рисунок 11. Сканирование какого-либо города с помощью geoip Рисунок 11. Сканирование какого-либо города с помощью geoip](https://habrastorage.org/getpro/habr/upload_files/239/066/aac/239066aac0ff442495270f585a0f72ae.png)
Или даже сканирование целой страны – найдем незащищенные memcached сервера в некоторой стране:
![Рисунок 12. Сканирование всей страны с помощью geoip Рисунок 12. Сканирование всей страны с помощью geoip](https://habrastorage.org/getpro/habr/upload_files/6d5/101/7b4/6d51017b4742e95bc04b1ad66e499e83.png)
Reverse whois
Whois это протокол прикладного уровня, работающий на 43/tcp порту. Его главная цель – получение информации о блоках IP-адресов. Эта информация запрашивается с серверов регистраторов. Всего существует 5 регистраторов, расположенных на 5 соответствующих континентах:
Европа (RIPE);
Азия и Океания (APNIC);
Африка (AFRINIC);
Северная Америка (ARIN);
Южная Америка (LACNIC).
Доступ к whois производится с помощью одноименного инструмента:
whois 8.8.8.8
Или вручную, через telnet:
telnet whois.ripe.net 43
1.2.3.4
Тут мы снова опираемся главным образом на IP-адреса. Однако все же мы можем искать информацию по некоторым полям:
whois -h whois.ripe.net -T person admin@somecompany.com
или
whois -h whois.ripe.net -- '-i mnt-by RIPE-NCC-MNT'
Например, для RIPE возможно искать по следующим полям:
as-set;
aut-num;
domain;
inetnum;
organisation;
person;
role;
route.
К сожалению, мы не можем искать по самым интересным полям - «netname» и «descr», которые содержат название сети. Так же при таком поиске требуется полное совпадение. Иными словами, мы не можем искать с подстановкой «-T person *@somecompany.com».
Существует несколько web-сервисов, предоставляющих более гибкий поиск, например https://apps.db.ripe.net/db-web-ui/#/fulltextsearch. Это позволяет использовать полнотекстовый поиск к RIPE базе.
Ещё существуют ежедневные дампы whois-баз всех регистраторов:
RIPE: ftp://ftp.ripe.net/ripe/dbase/ripe.db.gz
APNIC: https://ftp.apnic.net/apnic/whois/apnic.db.inetnum.gz
AFRINIC: https://ftp.afrinic.net/dbase/afrinic.db.gz
LACNIC: https://ftp.lacnic.net/lacnic/dbase/lacnic.db.gz
ARIN: https://ftp.arin.net/pub/rr/arin.db.gz
Это текстовые файлы, а значит мы можем применить к ним всю мощь grep:
grep netname: *company* ripe.db
Однако размер базы ripe.db (Европа) более чем 5 GB. Это делает поиск по этому файлу не таким быстрым как хотелось бы. Более того, если я хочу найти все имена сетей по CIDR (например, 77.77.0.0/16), то grep тут уже не поможет.
И тут в игру вступает второй инструмент – rwhois, который работает с данными файлами и имеет идентичный синтаксис как у geoip.
Аналогично, сперва нужно обновить базы:
![Рисунок 13. Обновление whois-баз Рисунок 13. Обновление whois-баз](https://habrastorage.org/getpro/habr/upload_files/431/249/4d6/4312494d6156c42df24a87cd42c26b72.png)
Обновление информации по всем 5 континентам может занять длительное время. После можем посмотреть сколько IP-адресов в наших базах:
![Рисунок 14. Количество IP-адресов по базам регистраторов Рисунок 14. Количество IP-адресов по базам регистраторов](https://habrastorage.org/getpro/habr/upload_files/801/92d/891/80192d891088ef604bfca1d06ae6ea1a.png)
Можно так же обновить информацию только по указанному континенту:
![Рисунок 15. Обновление whois-базы только для Европы Рисунок 15. Обновление whois-базы только для Европы](https://habrastorage.org/getpro/habr/upload_files/e3b/853/b70/e3b853b70335364292423150f0b9b6ea.png)
Попробуем найти что-нибудь. Найдем IP-адреса по имени сети:
![Рисунок 16. Поиск блоков IP-адресов по имени сети Рисунок 16. Поиск блоков IP-адресов по имени сети](https://habrastorage.org/getpro/habr/upload_files/400/bc6/6e3/400bc66e3082e738b1232b69af0d5980.png)
Так же не забываем искать по полю «descr»:
![Рисунок 17. Поиск IP-адресов по полю описания сети и одновременно по стране Рисунок 17. Поиск IP-адресов по полю описания сети и одновременно по стране](https://habrastorage.org/getpro/habr/upload_files/5a8/a83/873/5a8a838730122b0a12e40841f89b3974.png)
Или посмотрим, какие имена сетей есть в отдельно взятой стране:
![Рисунок 18. Сети в отдельно взятой стране Рисунок 18. Сети в отдельно взятой стране](https://habrastorage.org/getpro/habr/upload_files/270/e81/1f9/270e811f9b7501c1d7bf0b1a6679c724.png)
Мы можем искать и по CIDR-диапазону:
![Рисунок 19. Поиск сетей по CIDR Рисунок 19. Поиск сетей по CIDR](https://habrastorage.org/getpro/habr/upload_files/451/02c/4ee/45102c4ee53d80c674d13121fd878735.png)
geo2ip + reverse whois
Наконец мы можем использовать geoip и rwhois вместе через пайп.
Попробуем найти все сети в некотором географическом регионе, где имена сетей содержат «telecom»:
![Рисунок 20. Поиск telecom-сетей в некотором географическом сегменте Рисунок 20. Поиск telecom-сетей в некотором географическом сегменте](https://habrastorage.org/getpro/habr/upload_files/7b8/2d7/f48/7b82d7f48947955f604b9cc94b4019ae.png)
И последний пример — показать на карте, где находятся сети с определенным именем:
![Рисунок 21. Поиск сетей на карте по имени Рисунок 21. Поиск сетей на карте по имени](https://habrastorage.org/getpro/habr/upload_files/829/690/92b/82969092b08eb638febca39be4c5efcc.png)
![Рисунок 22. Просмотр сетей, найденных по имени на карте Рисунок 22. Просмотр сетей, найденных по имени на карте](https://habrastorage.org/getpro/habr/upload_files/e6e/6a2/df2/e6e6a2df2ba82f4daffda177a0caf843.png)
Заключение
Мы использовали ещё два инструмента, которые можно добавить к RECON арсеналу. Эти инструменты так же могут быть полезны и в других областях, не связанных с разведкой - для анализа и визуализации логов, дампов трафика и т. д.
Автор: Специалист Уральского центра систем безопасности
ColdPhoenix
Посмотрел, все обновляется, единственное они закрыли скачивание за авторизацией(оттуда еще можно взять лиц-ключ для скачивания/обновления в скрипте)