June 8

Анализ IP-адресов и ASN: геолокация, владельцы, соседние сети, BGP

Анализ IP-адресов и ASN: геолокация, владельцы, соседние сети, BGP

IP-адреса — это «координаты» устройств в интернете. Зная IP-адрес сервера цели, можно определить его географическое положение, узнать, какому интернет-провайдеру или хостинговой компании он принадлежит, выявить другие сайты, находящиеся на том же сервере, и даже восстановить структуру сетевой инфраструктуры организации через BGP-маршрутизацию. Анализ IP и ASN (автономных систем) — важнейший этап технического OSINT, позволяющий перейти от доменных имен к физическим сетям и их владельцам.

Что такое ASN и зачем он нужен?

ASN (Autonomous System Number) — это уникальный номер, присваиваемый автономной системе (Autonomous System, AS). Автономная система — это совокупность IP-сетей (подсетей) под единым административным управлением (например, Ростелеком, МГТС, Amazon AWS, Google). Организации, имеющие собственные IP-диапазоны и публично объявляющие о них через BGP, получают ASN.

Ценность ASN для технического OSINT:

  • Зная ASN цели, можно получить все IP-диапазоны, которые принадлежат организации (полная картина её «цифровой земли»).
  • Можно обнаружить соседние подсети (соседние AS) — потенциальных партнёров или транзитных провайдеров.
  • Выявить изменения (появление новых подсетей, выбытие старых) через мониторинг BGP.

Этап 1: Базовый анализ IP-адреса

Самый простой способ начать анализ IP — использовать онлайн-сервисы или утилиты командной строки.

Что можно узнать по IP:

  • Геолокация (страна, регион, город, иногда координаты) — не всегда точная, основывается на базах данных организаций.
  • Провайдер / хостинг-компания (название, контакты).
  • ASN (номер автономной системы, которой принадлежит IP).
  • Тип IP (провайдерский, хостинговый, прокси, VPN, Tor exit node).
  • История IP (к каким доменам привязывался ранее).

Инструменты быстрого анализа IP:

Команды:

# whois по IP
whois 8.8.8.8

# curl к ipinfo.io
curl ipinfo.io/8.8.8.8
curl ipinfo.io/8.8.8.8/json

# dig для обратного DNS (PTR)
dig -x 8.8.8.8 +short

Пример ответа ipinfo.io:

{
  "ip": "8.8.8.8",
  "hostname": "dns.google",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.4056,-122.0775",
  "org": "AS15169 Google LLC",
  "postal": "94043",
  "timezone": "America/Los_Angeles"
}

Этап 2: ASN и BGP — что скрывается за номером AS?

Каждый IP принадлежит какой-то автономной системе (AS). Узнав ASN, можно запросить BGP-информацию: какие IP-диапазоны анонсирует эта AS (то есть какие адреса принадлежат организации), а также с кем эта AS граничит (пировые связи, транзитные провайдеры).

Инструменты для получения ASN по IP:

Пример через Team Cymru:

dig +short 8.8.8.8.origin.asn.cymru.com TXT
# результат: "15169 | 8.8.8.0/24 | US | arin | 1992-12-01"

Этап 3: Получение всех IP-диапазонов AS

Зная ASN, можно скачать все подсети (CIDR-блоки), которые эта AS объявляет в BGP. Это даст полную картину всех IP-адресов, находящихся под контролем организации (включая те, что не связаны напрямую с доменом).

Где взять данные:

  • BGP.he.net — по ASN отображает список подсетей.
  • RIPE Stat — API для получения маршрутов AS.
  • CAIDA — архив BGP.
  • Radb (whois.radb.net) — база маршрутов.

Пример через whois.radb.net:

whois -h whois.radb.net -- '-i origin AS15169' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]+'

BGP.he.net API (пример):

curl https://bgp.he.net/AS15169
# нужно парсить HTML, есть неофициальное API

Python-функция (через Team Cymru):

import requests

def get_ip_routes_by_asn(asn):
    url = f"https://api.cymon.io/bgp/routes/origin/{asn}"
    # можно использовать альтернативные сервисы
    # более простой: whois -h whois.radb.net -- '-i origin AS15169'

Этап 4: Поиск соседних доменов на том же IP (Reverse IP Lookup)

Один IP-адрес может хостить множество доменов (shared hosting, виртуальные серверы). Если цель использует невыделенный IP, то можно найти другие домены, связанные с той же инфраструктурой.

Инструменты Reverse IP:

SecurityTrails API пример:

curl -H "APIKEY: YOUR_KEY" https://api.securitytraits.com/v1/domain/8.8.8.8/domain

Ограничения: на shared-хостинге могут быть тысячи доменов, большинство не связано с целью. Используйте фильтрацию (похожие тематики, SSL-сертификаты, даты создания).

Этап 5: Анализ BGP-пиров (соседних AS)

Смотря на BGP-таблицы, можно увидеть, между какими AS существует прямое сетевое соединение (пиринг). Это может указывать на деловые отношения, транзитный трафик или использование CDN.

Инструменты:

  • BGP.he.net → страница AS, раздел “Peers” (соседние AS).
  • BGPView → альтернативный визуализатор.
  • CAIDA AS Rank — ранжирование AS по количеству пиров.

Анализ пиров:

  • Если AS цели пирится с крупным облачным провайдером (AWS, Google Cloud), часть инфраструктуры может быть там.
  • Если пирится с AS, принадлежащим провайдеру DDoS-защиты (Cloudflare, Akamai), то сайт использует их услуги.

Этап 6: Геолокация IP — методы и ограничения

Геолокация по IP основана на базах данных (MaxMind, IP2Location), которые не всегда точны (особенно для мобильных сетей, VPN, облаков). Следует относиться к ней как к ориентиру, а не к истине.

Как повысить точность:

  • Сравнить несколько баз: ipinfo.io, MaxMind, IP2Location.
  • Использовать обратный DNS (PTR) — иногда содержит географические указатели (например, hosting-in-moscow.example.com).
  • Проверить сертификаты (в них может быть указан юридический адрес).
  • Запросить BGP-локацию (определённые AS имеют географическую привязку, но не точную).

Инструменты для сравнения геолокации:

  • IP2Location (разные версии).
  • DB-IP.
  • GeoIP Tool (geoiptool.com).

Этап 7: История IP (предыдущие домены, предыдущие владельцы)

IP-адреса переходят от одного сервера к другому, меняются владельцы блоков. История IP позволяет найти, какие домены ранее были привязаны к этому адресу, и восстановить старые конфигурации.

Источники истории IP:

  • SecurityTrails Historical IP (показывает домены, привязанные к IP в прошлом).
  • ViewDNS.info IP History (ограничен).
  • Censys — сохраняет снимки IP-сканирований (порты, сертификаты) за разные даты.
  • Wayback Machine для страниц, доступных по IP.

Этап 8: Выявление cloud-сервисов и CDN

Многие IP-адреса принадлежат облачным платформам. Идентификация облачного провайдера может помочь сузить географию или определить используемые сервисы.

Как определить облачный IP:

  • whois покажет организацию (например, "AWS", "Microsoft Corporation", "Google Cloud").
  • Сравнить ASN со списками облачных AS (например, AS15169 — Google, AS14618 — AWS, AS8075 — Microsoft).
  • Специальные списки: (например, https://raw.githubusercontent.com/cloudflare/ip-list/master/cloudflare.ipv4 для Cloudflare).

Практический пример: анализ инфраструктуры домена

Задача: проанализировать IP-адреса домена target.com.

  1. DNS-запрос Atarget.com -> 192.0.2.10.
  2. whois 192.0.2.10 → организация Example Hosting Ltd., страна US.
  3. ipinfo.io"org": "AS65535 Example Hosting", "city": "New York".
  4. Reverse IP (SecurityTrails) → на том же IP еще 50 доменов, в основном мелкие сайты. Shared-хостинг.
  5. ASNAS65535. Через BGP.he.net получаем все подсети этой AS: 192.0.2.0/24, 198.51.100.0/24, ...
  6. Поиск других IP в этих подсетях, которые могут принадлежать цели.
  7. BGP-пиры → ASN цели соединен с AS15169 (Google). Возможно, сайт использует Google Cloud CDN.
  8. История IP → 2 года назад IP был 203.0.113.55, который принадлежал другой AS (предыдущий хостинг).
  9. Вывод: цель использует shared-хостинг у Example Hosting; старый сервер больше не активен; через Google Cloud, вероятно, используется кэширование.

Автоматизация сбора данных по IP и ASN (Python)

import requests
import ipaddress

def ip_info(ip):
    resp = requests.get(f"https://ipinfo.io/{ip}/json")
    return resp.json() if resp.status_code == 200 else None

def get_asn(ip):
    info = ip_info(ip)
    org = info.get("org", "")
    if org.startswith("AS"):
        asn = org.split()[0][2:]  # "AS15169" -> "15169"
        return asn
    return None

def get_prefixes_by_asn(asn):
    # через whois.radb.net (упрощённо)
    import subprocess
    cmd = f"whois -h whois.radb.net -- '-i origin AS{asn}' | grep -Eo '([0-9]+\\.){3}[0-9]+/[0-9]+'"
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    return result.stdout.splitlines()

# Пример
ip = "8.8.8.8"
print(ip_info(ip))
asn = get_asn(ip)
print(f"ASN: {asn}")
prefixes = get_prefixes_by_asn(asn)
print(f"Prefixes: {prefixes[:5]}...")

  • WHOIS по IP, DNS-запросы, BGP-данные — это публичные данные. Их сбор безопасен и легален.
  • Массовый reverse DNS или перебор IP-диапазонов без разрешения может считаться активным сканированием, если выполняется в больших объёмах. Используйте осторожно и с уважением к чужой инфраструктуре.
  • Сервисы типа SecurityTrails имеют условия использования, запрещающие массовые автоматические запросы без оплаты.

Анализ IP и ASN позволяет преобразовать сетевую инфраструктуру организации в карту подсетей, обнаружить скрытые активы и соседние ресурсы, определить географическое расположение и используемые облачные провайдеры. Ключевые инструменты: whois, ipinfo.io, BGP.he.net, SecurityTrails. В сочетании с данными о поддоменах и DNS это даёт практически полную картину внешней поверхности атаки.

В следующей статье цикла мы рассмотрим сканирование портов и сервисов — активный этап, который требует особой осторожности, а также освоим инструменты Nmap, массовое сканирование и Shodan.