Сегодня, в рамках цикла статьей «Использование Python в OSINT», мы разберем основы работы с WHOIS и DNS в Python. Рассмотрим пакеты Python, которые могут быть полезны для получения информации о домене.
Еще по теме: Создание бэкдора на Python
Работа с WHOIS в Python
WHOIS — это протокол запросов и ответов, который предоставляет информацию о доменных именах. Существует множество бесплатных онлайн-сервисов, для получения данных Whois определенного домена. Подобные сервисы позволяют узнать дату регистрации домена, дату истечения домена, контактные данные компании или лица, которому в данный момент принадлежит домен.
Существуют сервисы, которые позволяют найти домены, связанные с определенной электронной почтой (например, https://www.whoxy.com/) и посмотреть историю whois-данных домена (https://research.domaintools.com/research/whois-history/).
Для Python создано множество пакетов, которые помогают автоматизировать получение данных WHOIS. Давайте попробуем пакет Python-Whois (https://pypi.org/project/python-whois/).
Чтобы установить Python-Whois, выполните команду:
1 |
pip install python-whois |
Пусть вас не пугает мой терминал, я использую GitPod.
Запустите whois_info.py:
1 2 3 4 5 6 7 8 9 10 |
# Импорт пакета python-whois: import whois # Создать переменную с именем целевого домена: whois_info = whois.whois('sector035.nl') # Вывести всю информацию whois этого домена: print (whois_info) # Вывести строку «Дата создания»:: print("Creation date") # Печать даты создания целевого домена: print(whois_info["creation_date"]) |
Работа с DNS в Python
DNS (система доменных имен) — это база данных, которая сопоставляет каждый IP-адрес с соответствующим доменным именем.
Посмотреть, как выглядят DNS-данные домена, можно с помощью одного из бесплатных онлайн-сервисов, например, https://mxtoolbox.com/.
Для автоматизации получения DNS данныx можно использовать пакет DNSPython:
1 |
pip install dnspython |
Запустите dns_info.py:
1 2 3 4 5 6 7 8 |
# Импортируем пакет pythondns и dns.resolver: import dns import dns.resolver # Получить записи A для доменов osintme.com: result = dns.resolver.resolve('osintme.com', 'A') # Просмотрите результаты и распечатайте каждый из них: for ipval in result: print('IP', ipval.to_text()) |
При сборе данных о сайте может быть полезно найти его поддомены, чтобы использовать их как дополнительный источник информации.
Давайте посмотрим, как работает инструмент Discosub (https://pypi.org/project/discosub/).
Установите пакет Discosub из pip:
1 |
pip install discosub |
Запустите Discosub для домена nytimes.com:
1 |
discosub run nytimes.com |
Существует также возможность запустить Discosub с сохранением результатов в файл .txt:
1 |
discosub run nytimes.com >nytimes_subdomains.txt |
Стоит уточнить, что Discosub хорош своей простотой и поэтому выбран в качестве примера. Но по качеству получаемых результатов отстает от аналогичных инструментов (находит меньше поддоменов).
Если ваша задача найти максимальное количество поддоменов для определенного домена (а лучше всех), то рекомендую использовать несколько инструментов одновременно. Например:
- Sublist3r
- SubDomainizer
- Subscraper
- Subfinder (написан на языке Go, очень хороший инструмент от Projectdiscovery)
- и многие другие.
Также не забывайте, что существует множество API для сбора информации о домене, на основе которых вы можете создавать свои собственные скрипты, идеально подходящие для целей вашего расследования. Мы о них поговорим в следующей статье.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Использование Nuclei в OSINT
- Лучшие бесплатные OSINT инструменты
- Решение OSINT задачи CTF VulnMachines