• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Разведка с geo2ip и reverse-whois

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Разведка сетевых ресурсов компании главным образом заключается в брутфорсе поддоменов с последующим ресолвом найденных сетевых блоков. Далее могут быть найдены новые домены 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. Установка


Инструмент был написан достаточно давно, так что использован python2.

Данный пакет содержит два инструмента:
  1. geoip — выполнение различных запросов ip → geo, city → ip, country → ip, lat:long → ip и т.п.;
  2. rwhois — выполнение различных запросов к whois базе (об этом во второй части статьи).
Итак, сперва нужно скачать geoip-базу:

Рисунок 2. Обновление geoip-базы и просмотр количества сетевых блоков в ней


К сожалению, начиная с 2020 года, база geoip больше не обновляется для публичного использования. Точнее, обновляется, но они закрыли скачивание за авторизацией (оттуда еще можно взять лиц-ключ для скачивания/обновления в скрипте). Так что пришлось захардкодить ссылку на последний публичный снапшот.

Инструмент geoip имеет удобный синтаксис, который позволяет выполнять гибкие запросы к базе. Все запросы указываются через ключи, а то, что требуется вывести, в аргументах. Мы так же можем использовать подстановку с помощью символа «%» (SQL-синтаксис).

Например, для поиска информации по городу и диапазону IP-адресов, с выводом результата о блоках адресов, странах и городах:

Рисунок 3. Поиск сетей по CIDR и городу

Поиск сетей по CIDR и городу

Инструмент geoip имеет встроенную визуализацию, например, можно посмотреть расположение сетей какой-либо страны на карте:

Рисунок 4. Получение всех сетей какой-либо страны

Получение всех сетей какой-либо страны

Рисунок 5. Просмотр расположения сетей на карте

Просмотр расположения сетей на карте

Для поиска сетей мы так же можем указать произвольный регион (регионы) в виде круга или квадрата с указанием радиуса в км. Например:

Рисунок 6. Поиск всех сетей по географическим координатам

Поиск всех сетей по географическим координатам

Рисунок 7. Визуализация с использованием Google Earth

Визуализация с использованием Google Earth

При работе с инструментом мы так же можем использовать пайпы для взаимодействия со сторонними утилитами.

Посмотрим geoip-информацию о результатах выборки из shodan:

Рисунок 8. Использование geoip вместе с shodan

Использование geoip вместе с shodan

Ниже еще несколько примеров, не связанных напрямую с разведкой.

Распарсив логи apache, посмотрим, какие страны посещали сайт:

Рисунок 9. Анализ логов Apache с geoip

Анализ логов Apache с geoip

Или из каких городов был ресолв собственной dns-зоны:

Рисунок 10. Анализ bind-логов с помощью geoip

Анализ bind-логов с помощью geoip

Вернемся к разведке. Сканирование целого города – найдем все незащищенные mongo сервера в некотором городе:

Рисунок 11. Сканирование какого-либо города с помощью geoip

Сканирование какого-либо города с помощью geoip

Или даже сканирование целой страны – найдем незащищенные memcached сервера в некоторой стране:

Рисунок 12. Сканирование всей страны с помощью geoip

Сканирование всей страны с помощью geoip

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-баз

Обновление whois-баз

Обновление информации по всем 5 континентам может занять длительное время. После можем посмотреть сколько IP-адресов в наших базах:

Рисунок 14. Количество IP-адресов по базам регистраторов

Количество IP-адресов по базам регистраторов

Можно так же обновить информацию только по указанному континенту:

Рисунок 15. Обновление whois-базы только для Европы

Обновление whois-базы только для Европы

Попробуем найти что-нибудь. Найдем IP-адреса по имени сети:
Рисунок 16. Поиск блоков IP-адресов по имени сети

Поиск блоков IP-адресов по имени сети

Так же не забываем искать по полю «descr»:

Рисунок 17. Поиск IP-адресов по полю описания сети и одновременно по стране

Поиск IP-адресов по полю описания сети и одновременно по стране

Или посмотрим, какие имена сетей есть в отдельно взятой стране:

Рисунок 18. Сети в отдельно взятой стране

Сети в отдельно взятой стране

Мы можем искать и по CIDR-диапазону:

Рисунок 19. Поиск сетей по CIDR

Поиск сетей по CIDR

geo2ip + reverse whois​

Наконец мы можем использовать geoip и rwhois вместе через пайп.

Попробуем найти все сети в некотором географическом регионе, где имена сетей содержат «telecom»:

Рисунок 20. Поиск telecom-сетей в некотором географическом сегменте

Поиск telecom-сетей в некотором географическом сегменте

И последний пример — показать на карте, где находятся сети с определенным именем:

Рисунок 21. Поиск сетей на карте по имени

Поиск сетей на карте по имени

Рисунок 22. Просмотр сетей, найденных по имени на карте

Просмотр сетей, найденных по имени на карте

Заключение​

Мы использовали ещё два инструмента, которые можно добавить к RECON арсеналу. Эти инструменты так же могут быть полезны и в других областях, не связанных с разведкой - для анализа и визуализации логов, дампов трафика и т. д.

pip2 install georipe

Автор: Специалист Уральского центра систем безопасности
 
Эх, может и мне пиздить статьи с хабра- реакций набью, стану уважаемым человеком)))
это было бы точно полезнее, чем данный пост ;) реакциями могу поделиться, они мне не нужны ) а вот интересные статейки бы почитать не отказался, а если еще и сам переведешь интересный оригинал, как иногда делаю я, - так вааще )
 
Не качало у меня базы с web.archive.org питоном. Положил у себя на серваке. Кому надо - берите.

Смотрим geoip.py строки 76, 77, 78
меняем на

Еще напрягает что это под вторую ветку питона. Скрипты крайне полезные. Можно было бы и универсально написать их.
 
Не качало у меня базы с web.archive.org питоном. Положил у себя на серваке. Кому надо - берите.

Смотрим geoip.py строки 76, 77, 78

меняем на


Еще напрягает что это под вторую ветку питона. Скрипты крайне полезные. Можно было бы и универсально написать их.
Качаем базы поновее (2021-04-27):




Если кому не хватает сообщений или реакций, меня прошу не беспокоить!
 
Качаем базы поновее (2021-04-27):
Перезалил на свой хост. Положил в те же архивы, в те же папки. Проверил у себя - обновляет нормально
 
это было бы точно полезнее, чем данный пост ;) реакциями могу поделиться, они мне не нужны ) а вот интересные статейки бы почитать не отказался, а если еще и сам переведешь интересный оригинал, как иногда делаю я, - так вааще )
Тогда можете со-мной поделиться, хочется хайды некоторые посмотреть.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх