OSINT инструмент для визуализации отношений между доменами, IP и email адресами
В этой заметке мы познакомимся с программой Danger zone. Сам я о ней узнал из статьи «OSINT tool for visualizing relationships between domains, IPs and email addresses», в которой в качестве результатов работы программы показаны такие скриншоты:
И ещё:
Эта программа ищет корреляции между доменами, IP и email адресами, изображает связи между ними на графе и сохраняет все найденные результаты в Elasticsearch, а также в файлы JSON.
Случаи применения:
- На основе заданного email проверить ассоциированные домены и затем проверить эти домены на другие email и IP.
- Для доменов проверить IP и Email и затем найти ассоциированные домены
- Найти домены на IP, проверить домен на других IP и email.
Модули
- Email:
- Trumail — Проверка email адреса на действительность (https://trumail.io/)
- Whoxy — Обратный сервис Whois (https://whoxy.com/) НУЖЕН КЛЮЧ
- haveIbeenPwned — Дампы (https://haveibeenpwned.com/)
- Username check — По различным сайтам социальных сетей проверяет имя пользователя, основываясь на email адресе (https://username-availability.herokuapp.com/)
- Google — Запрос к Google
- IP:
- Geolocation - Геолокация IP (https://extreme-ip-lookup.com/)
- Threatcrowd — Информация об IP (https://github.com/AlienVault-OTX/ApiV2)
- VirusTotal — Информация об IP (https://www.virustotal.com/) НУЖЕН КЛЮЧ
- Домен:
- TLD - Получает спонсора конкретного домена верхнего уровня (https://raw.githubusercontent.com/mikewesthad/tld-data/master/data/tlds.json)
- Threatcrowd — Информация о домене (https://github.com/AlienVault-OTX/ApiV2)
- Whoxy — Whois служба (https://whoxy.com/)
- Whois history — Исторические данные о домене (https://whoxy.com/)
- Wayback Machine — Архивная версия веб-сайта (http://archive.org/)
- VirusTotal — Информация о домене (https://www.virustotal.com/)
Elasticsearch и Kibana
Прежде чем преступить к установке, пара слов о таких зависимостях программы как Elasticsearch и Kibana. Обе эти зависимости являются опциональными и вы можете пропустить их установку, тем более, что в Kali Linux для установки добавляется сторонний источник приложений (что не рекомендуется).
Чтобы решить, нужны они вам или не нужны, ниже небольшое описание (взято с официального сайта — я тоже узнал об этих программах только при подготовке данной статьи):
- Elasticsearch — распределённый движок поиска и анализа, подходит для разных случаев использования. Ссылка: https://www.elastic.co/products/elasticsearch
- Kibana — это «ваше окно в Elastic Stack». Kibana позволяет вам визуализировать ваши данные Elasticsearch и перемещаться по Elastic Stack. Ссылка: https://www.elastic.co/products/kibana
Обе эти программы можно установить без добавления нового репозитория — достаточно просто скачать .DEB файлы с этих страниц:
- https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html
- https://www.elastic.co/guide/en/kibana/current/deb.html
Как установить Danger-zone в Kali Linux
Скачиваем саму программу и устанавливаем зависимости:
git clone https://github.com/woj-ciech/Danger-zone cd Danger-zone/ sudo pip2 install -r requirements.txt sudo pip2 install unidecode selenium fake_useragent sudo pip2 install Google-search-api
Устанавливаем tk:
sudo apt install tk
Открываем файл settings.json и вводим туда API virustotal.com и whoxy.com
gedit settings.json
Устанавливаем Elasticsearch и Kibana (опционально):
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list sudo apt update && sudo apt install elasticsearch kibana sudo systemctl start elasticsearch.service sudo systemctl status elasticsearch.service sudo systemctl start kibana.service sudo systemctl status kibana.service
Как установить Danger-zone в ArchLinux/BlackArch
Скачиваем саму программу и устанавливаем зависимости:
git clone https://github.com/woj-ciech/Danger-zone cd Danger-zone/ sudo pip2 install -r requirements.txt sudo pip2 install unidecode selenium fake_useragent sudo pip2 install Google-search-api
Устанавливаем Elasticsearch, Kibana и tk:
sudo pacman -S elasticsearch kibana tk
Запускаем службы Elasticsearch и Kibana и проверяем их статус:
sudo systemctl start elasticsearch.service sudo systemctl status elasticsearch.service sudo systemctl start kibana.service sudo systemctl status kibana.service
Открываем файл settings.json и вводим туда API virustotal.com и whoxy.com:
gedit settings.json
Инструкция по Danger-zone
Использование:
danger-zone.py [-h] [--email EMAIL] [--address ADDRESS] [--domain DOMAIN] [--elasticsearch]
Опции:
-h, --help показать справку и выйти --email EMAIL Email адрес --address ADDRESS IP адрес --domain DOMAIN Доменное имя --elasticsearch Сохранить данные в Elasticsearch
То есть программу нужно запускать с одной из опций --email, --address или --domain. Если вы установили Elasticsearch, то каждую из этих опций можно комбинировать с --elasticsearch, в этом случае собранная информация будет записана в базу данных Elasticsearch.
Пример запуска для сбора информации о домене:
python2 danger-zone.py --domain suip.biz --elastic
Примеры результатов:
Пример запуска для сбора информации об адресе электронной почты:
python2 danger-zone.py --email proghoster@gmail.com --elastic
Пример запуска для сбора информации об IP адресе:
python2 danger-zone.py --address 185.117.153.79 --elastic
Примеры результатов:
Анализ данных в Elasticsearch и Kibana
Данные Elasticsearch доступны по адресу http://127.0.0.1:9200 и запрос можно сделать примерно так: http://127.0.0.1:9200/virustotal/_search. Результат будет выведен в формате JSON — что удобно для обработки в программах, но плохо для восприятия человеком.
По этой причине мы и установили Kibana, которая доступна по адресу http://localhost:5601
При открытии выберите «Explore on my own»:
На домашней странице выберите «Connect to your Elasticsearch index».
Там для создания шаблона индекса будут доступны варианты:
- coordinates
- threatcrowd
- threatcrowd_ip
- virustotal
- whois
Выберите один из них (можно сделать со всеми поочереди).
И нажмите кнопку «Create index pattern».
Я не умею пользоваться Kibana — я там маленькой потыкал, но что-то у меня получилось только на вкладке «Discover». Там можно выбирать различные поля и добавлять их на таблицу.
Вот скриншоты от автора:
Также собранные данные сохранены в структуре папок в каталоге программы:
Пример информации из файла:
Заключение
В целом задумка очень интересная, но по какой-то причине автор сделал так, что «скрипт проходит только 2-3 уровня в глубину и показывает 3 самых новых результата». Из-за этого получаемые результаты являются куцыми. Хотя, вроде бы, в Elasticsearch сохраняется больше результатов — по крайней мере, субдоменов я точно видел там больше, чем на графике.
Возможно, более глубокое знакомство с Danger-zone и с Kibana позволит достичь лучших результатов. Также у меня всегда был нулевой баланс Whoxy — возможно, это тоже сыграло роль в недополучении результатов.
Но пока самые полные результаты у меня получается собрать именно в «ручном» режиме, при использовании сервисов:
- Сайты на одном IP
- История IP адресов сайта
- История DNS записей из securitytrails
Примеры удачных случаев поиска связанных сайтов (в том числе когда предпринимались меры для сокрытия информации):
- Препарирование скамерского сайта (КЕЙС)
- Поиск сетки вредоносных сайтов (кейс)
- Поиск человека по IP (кейс)
- Сбор информации о владельце сайта. Поиск сайтов одного лица
- Исследование на основе открытых источников с OSRFramework (поиск по почте, нику, домену)
ИМХО, если бы автор программы в основу её работы заложил securitytrails (этот сервис, кстати, вообще не используется) и снял бы ограничение по количество получаемых результатов (например, чтобы опцией можно было бы устанавливать глубину анализа и количество доменов), то программа получилась бы намного эффективней и интересней.
Решение проблем
Ошибка «ImportError: libtk8.6.so: cannot open shared object file: No such file or directory»
При возникновении ошибки:
File "danger-zone.py", line 5, in <module> import utils File "/home/mial/bin/Danger-zone/utils.py", line 1, in <module> import domains File "/home/mial/bin/Danger-zone/domains.py", line 7, in <module> import tools File "/home/mial/bin/Danger-zone/tools.py", line 5, in <module> import matplotlib.pyplot as plt File "/usr/lib/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module> _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup() File "/usr/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup globals(),locals(),[backend_name],0) File "/usr/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 6, in <module> from six.moves import tkinter as Tk File "/usr/lib/python2.7/site-packages/six.py", line 203, in load_module mod = mod._resolve() File "/usr/lib/python2.7/site-packages/six.py", line 115, in _resolve return _import_module(self.mod) File "/usr/lib/python2.7/site-packages/six.py", line 82, in _import_module __import__(name) File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module> import _tkinter # If this fails your Python may not be configured for Tk ImportError: libtk8.6.so: cannot open shared object file: No such file or directory
Вам нужно установить пакет tk.
В Debian, Kali Linux, Ubuntu, Linux Mint и их производных:
sudo apt install tk
В Arch Linux, BlackArch и их производных:
sudo pacman -S elasticsearch kibana tk
tk — это оконный инструментарий для использования с tcl. А Tcl — это скриптовый язык.
Связанные статьи:
- Исследование на основе открытых источников с OSRFramework (поиск по почте, нику, домену) (70.5%)
- Исследование периметра партнёрки по установке Adware (КЕЙС) (64.4%)
- Как узнать имена хостов для большого количества IP адресов (60.4%)
- Построение интерактивных карт камер, принтеров, твитов и фотографий (59.9%)
- Поиск информации по номеру телефона (59.9%)
- Как НЕ надо делать фишинговые атаки (часть 2) (RANDOM - 4.6%)