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.

Модули

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 файлы с этих страниц:

Как установить 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 — возможно, это тоже сыграло роль в недополучении результатов.

Но пока самые полные результаты у меня получается собрать именно в «ручном» режиме, при использовании сервисов:

Примеры удачных случаев поиска связанных сайтов (в том числе когда предпринимались меры для сокрытия информации):

ИМХО, если бы автор программы в основу её работы заложил 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 — это скриптовый язык.

Вы уже знаете о факультете информационной безопасности от GeekBrains? Комплексная годовая программа практического обучения с охватом всех основных тем, а также с дополнительными курсами в подарок. По итогам обучения выдаётся свидетельство установленного образца и сертификат. По этой ссылке специальная скидка на любые факультеты и курсы!

Рекомендуется Вам:

Добавить комментарий

Ваш e-mail не будет опубликован.