Admin
Администратор
Разведка с geo2ip и reverse-whois
Разведка сетевых ресурсов компании главным образом заключается в брутфорсе поддоменов с последующим ресолвом найденных сетевых блоков. Далее могут быть найдены новые домены 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. Поэтому было решено написать собственный инструмент, более того что реализуется это не так уж и сложно.Инструмент был написан достаточно давно, так что использован python2.
Данный пакет содержит два инструмента:
- geoip — выполнение различных запросов ip → geo, city → ip, country → ip, lat:long → ip и т.п.;
- rwhois — выполнение различных запросов к whois базе (об этом во второй части статьи).
К сожалению, начиная с 2020 года, база geoip больше не обновляется для публичного использования. Точнее, обновляется, но они закрыли скачивание за авторизацией (оттуда еще можно взять лиц-ключ для скачивания/обновления в скрипте). Так что пришлось захардкодить ссылку на последний публичный снапшот.
Инструмент geoip имеет удобный синтаксис, который позволяет выполнять гибкие запросы к базе. Все запросы указываются через ключи, а то, что требуется вывести, в аргументах. Мы так же можем использовать подстановку с помощью символа «%» (SQL-синтаксис).
Например, для поиска информации по городу и диапазону IP-адресов, с выводом результата о блоках адресов, странах и городах:
Поиск сетей по CIDR и городу
Инструмент geoip имеет встроенную визуализацию, например, можно посмотреть расположение сетей какой-либо страны на карте:
Получение всех сетей какой-либо страны
Просмотр расположения сетей на карте
Для поиска сетей мы так же можем указать произвольный регион (регионы) в виде круга или квадрата с указанием радиуса в км. Например:
Поиск всех сетей по географическим координатам
Визуализация с использованием Google Earth
При работе с инструментом мы так же можем использовать пайпы для взаимодействия со сторонними утилитами.
Посмотрим geoip-информацию о результатах выборки из shodan:
Использование geoip вместе с shodan
Ниже еще несколько примеров, не связанных напрямую с разведкой.
Распарсив логи apache, посмотрим, какие страны посещали сайт:
Анализ логов Apache с geoip
Или из каких городов был ресолв собственной dns-зоны:
Анализ bind-логов с помощью geoip
Вернемся к разведке. Сканирование целого города – найдем все незащищенные mongo сервера в некотором городе:
Сканирование какого-либо города с помощью geoip
Или даже сканирование целой страны – найдем незащищенные memcached сервера в некоторой стране:
Сканирование всей страны с помощью geoip
Reverse whois
Whois это протокол прикладного уровня, работающий на 43/tcp порту. Его главная цель – получение информации о блоках IP-адресов. Эта информация запрашивается с серверов регистраторов. Всего существует 5 регистраторов, расположенных на 5 соответствующих континентах:- Европа (RIPE);
- Азия и Океания (APNIC);
- Африка (AFRINIC);
- Северная Америка (ARIN);
- Южная Америка (LACNIC).
Код:
whois 8.8.8.8
Код:
telnet whois.ripe.net 43
1.2.3.4
Код:
whois -h whois.ripe.net -T person [email protected]
Код:
whois -h whois.ripe.net -- '-i mnt-by RIPE-NCC-MNT'
- as-set;
- aut-num;
- domain;
- inetnum;
- organisation;
- person;
- role;
- route.
Существует несколько 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
И тут в игру вступает второй инструмент – rwhois, который работает с данными файлами и имеет идентичный синтаксис как у geoip.
Аналогично, сперва нужно обновить базы:
Обновление whois-баз
Обновление информации по всем 5 континентам может занять длительное время. После можем посмотреть сколько IP-адресов в наших базах:
Количество IP-адресов по базам регистраторов
Можно так же обновить информацию только по указанному континенту:
Обновление whois-базы только для Европы
Попробуем найти что-нибудь. Найдем IP-адреса по имени сети:
Поиск блоков IP-адресов по имени сети
Так же не забываем искать по полю «descr»:
Поиск IP-адресов по полю описания сети и одновременно по стране
Или посмотрим, какие имена сетей есть в отдельно взятой стране:
Сети в отдельно взятой стране
Мы можем искать и по CIDR-диапазону:
Поиск сетей по CIDR
geo2ip + reverse whois
Наконец мы можем использовать geoip и rwhois вместе через пайп.Попробуем найти все сети в некотором географическом регионе, где имена сетей содержат «telecom»:
Поиск telecom-сетей в некотором географическом сегменте
И последний пример — показать на карте, где находятся сети с определенным именем:
Поиск сетей на карте по имени
Просмотр сетей, найденных по имени на карте
Заключение
Мы использовали ещё два инструмента, которые можно добавить к RECON арсеналу. Эти инструменты так же могут быть полезны и в других областях, не связанных с разведкой - для анализа и визуализации логов, дампов трафика и т. д.pip2 install georipe