
OSINT Omnibus (бета-версия)
Omnibus определяется как «сборник, содержащий несколько романов или других произведений, ранее опубликованных по отдельности» – именно таким и должен быть проект InQuest Omnibus для сбора разведданных из открытых источников, исследований и управления артефактами.
Предоставляя простое в использовании интерактивное консольное приложение, пользователи могут создавать сессии для исследования различных артефактов, таких как IP-адреса, доменные имена, адреса электронной почты, имена пользователей, хеши файлов, биткойн-адреса и другие (список постоянно расширяется).
Этот проект черпал вдохновение из замечательных инструментов, созданных ранее: SpiderFoot, Harpoon и DataSploit. Большое спасибо авторам этих проектов за их вклад в мир открытого кода.
Приложение написано на Python 2.7 и успешно протестировано в средах OSX и Ubuntu 16.04.
Это бета-версия финального приложения, поэтому возможны некоторые ошибки или неожиданное поведение при использовании. В целом Omnibus полностью функционален и может быть немедленно использован для проведения OSINT-расследований.
Omnibus построен модульным образом, что позволяет легко добавлять модули источников OSINT-данных и модули импорта/экспорта. Каждый модуль определённой категории помещается в отдельный каталог, и, добавив несколько строк кода, ваш модуль может стать следующим!
По мере расширения Wiki будут появляться полные примеры написания собственных плагинов.
Если вы заметили какие-либо ошибки или другие проблемы, пожалуйста, создайте Issue и/или Pull Request. Мы также будем рады помощи сообщества в создании новых модулей и расширении вариантов использования Omnibus. Форки и Pull Requests для новых функций приветствуются!
Этот README-файл служит кратким обзором Omnibus и его возможностей. Полная документация находится в папке docs этого репозитория.
Прежде чем мы начнём, необходимо разобраться с некоторыми терминами, используемыми Omnibus.
new или обнаружены в ходе выполнения модуля.Запуск Omnibus для исследования так же прост, как клонирование этого GitHub-репозитория, установка Python-зависимостей с помощью pip install -r requirements.txt и выполнение python omnibus-cli.py.
Оболочка Omnibus – главный экран запуска

Для визуального ознакомления с CLI на изображении выше показана консоль Omnibus после запуска новой сессии, добавления 2 артефактов в сессию и отображения меню help.
Вы должны указать все ключи API, которые планируете использовать в модулях, в файле omnibus/etc/apikeys.json.
Этот файл представляет собой JSON-документ с заполнителями для всех сервисов, требующих ключи API. Omnibus обращается к нему для каждого модуля, чтобы получить конкретный ключ API, необходимый модулю для выполнения.
Следует отметить, что большинство сервисов, требующих ключи API, предоставляют бесплатные аккаунты и ключи. Бесплатные аккаунты могут иметь низкие лимиты ресурсов, но это не было проблемой при небольших ежедневных исследованиях или тестировании приложения.
Полезный совет: Используйте команду cat apikeys, чтобы просмотреть, какие ключи у вас сохранены.
Если модули не работают или не возвращают результаты, сначала проверьте здесь, чтобы убедиться, что ваш API-ключ правильно сохранён.
При первом запуске CLI вас встретит меню помощи с базовой информацией.
Omnibus старается использовать команды, напоминающие распространённые команды Linux, для удобства и простоты. Например, команда cat для отображения информации об артефакте, rm для удаления артефакта из базы данных, ls для просмотра текущих артефактов сессии, а также поддержка перенаправления вывода для любой команды с помощью символа >.
В качестве примера перенаправления вывода: если вы хотите получить подробную информацию об артефакте с именем "inquest.net" и сохранить её в JSON-файл на локальном диске, просто выполните команду:
cat inquest.net > inquest-report.json – и готово!
Эта функция также работает с полными путями к файлам вместо относительных.
Наиболее часто используемые команды высокого уровня в Omnibus:
session
new <имя артефакта>
modules
open <путь к файлу>
ls
rm
wipe
cat <имя артефакта | ID сессии>
<имя модуля> <имя артефакта | ID сессии>
<имя машины> <имя артефакта | ID сессии>
Если вам когда-либо понадобится быстрая справка по различным командам для разных областей приложения, существуют подменю помощи именно для этой цели. Использование этих команд покажет только те команды, которые доступны для конкретной области:
general
artifacts
sessions
modules
Большинство киберрасследований начинаются с одного или нескольких технических индикаторов, таких как IP-адрес, хеш файла или адрес электронной почты. После поиска и анализа начинают формироваться взаимосвязи, и вы можете переключаться между связанными точками данных. Эти точки данных называются артефактами в Omnibus и представляют собой любой элемент, который вы хотите исследовать.
Артефакты могут быть одного из следующих типов:
Команда "new", за которой следует артефакт, создаёт этот артефакт в вашей сессии Omnibus и сохраняет запись об артефакте в MongoDB. Эта запись содержит имя артефакта, тип, подтип, результаты модулей, источник, заметки, теги, информацию о дочерних элементах (по необходимости) и время создания. Каждый раз, когда вы запускаете модуль для созданного или сохранённого артефакта, документ в базе данных обновляется, отражая вновь обнаруженную информацию.
Чтобы создать новый артефакт и добавить его в MongoDB для отслеживания, выполните команду new <имя артефакта>. Например, чтобы начать исследование домена inquest.net, выполните new inquest.net.
Omnibus автоматически определяет тип артефакта и гарантирует, что для этого артефакта будут выполняться только модули соответствующего типа. Если вы попытаетесь запустить артефакт для модуля, который не поддерживает его тип, появится предупреждающее сообщение с перечислением допустимых типов.
Когда модуль выполняется, могут быть обнаружены новые артефакты. Например, выполнение команды "dnsresolve" может найти новые IPv4-адреса, ранее не известные Omnibus. В этом случае вновь найденные артефакты автоматически создаются как новые артефакты в Omnibus и связываются с родительским артефактом дополнительным полем "source", указывающим, из какого модуля они были изначально найдены. В данном примере источником вновь созданных артефактов будет "dnsresolve".
Артефакты могут быть удалены из базы данных с помощью команды "rm". Если артефакт больше не нужен, просто выполните команду удаления, указав имя артефакта или ID сессии, если он есть.
Omnibus использует функцию под названием "сессии". Сессии – это временные кэши, создаваемые через Redis каждый раз при запуске сессии CLI. Каждый раз, когда вы создаёте артефакт, его имя добавляется в сессию вместе с числовым ключом, который позволяет легко получать, искать и выполнять действия с соответствующим артефактом.
Например, если в вашей сессии есть один элемент "inquest.net", вместо выполнения virustotal inquest.net вы можете выполнить virustotal 1 и получить те же результаты. Этот подход работает для любого модуля или команды, использующей имя артефакта в качестве первого аргумента.
Взаимодействие с ID сессий вместо имён артефактов

Сессии предназначены для быстрого доступа к артефактам и очищаются каждый раз при завершении сессии командной строки. Если вы хотите очистить сессию досрочно, выполните команду "wipe", и вы получите чистый лист.
Omnibus в настоящее время поддерживает следующий список модулей. Если у вас есть предложения по модулям или вы хотите написать собственный модуль, пожалуйста, создайте pull request.
Кроме того, в консоли Omnibus при вводе имени модуля отображается справка, связанная с этим модулем.
Модули
Машины – это простой способ запустить все доступные модули для типа артефакта для заданного артефакта. Это быстрый способ собрать как можно больше информации о цели с помощью одной команды.
Чтобы сделать это, просто выполните команду machine <имя артефакта|ID сессии> и подождите несколько минут, пока модули не завершат выполнение.
Единственное предостережение: в зависимости от типа артефакта и результатов каждого модуля может быть возвращён большой объём данных и дочерних артефактов. Чтобы исправить это, мы исследуем способ удаления определённых полей артефактов из сохраняемого документа базы данных, чтобы пользователям было проще удалять ненужные данные.
Несколько быстрых команд, которые стоит запомнить:
session – запустить новый кэш артефактовcat <имя артефакта>|apikeys – красиво вывести документ артефакта или просмотреть сохранённые ключи APIopen <путь к файлу> – загрузить текстовый файл со списком артефактов в Omnibus для исследованияnew <имя артефакта> – создать новый артефакт и добавить его в MongoDB и вашу сессиюfind <имя артефакта> – проверить, существует ли артефакт в базе данных, и показать результатыОтчёты – это JSON-вывод документа артефакта из базы данных, по сути текстовая версия вывода команды "cat". Но, используя команду report, вы можете указать артефакт и путь к файлу, в который хотите сохранить вывод:
omnibus >> report inquest.net /home/adam/intel/osint/reports/inq_report.jsonЭта команда переопределяет стандартный каталог отчётов omnibus/reports. По умолчанию, если вы не укажете путь к отчёту, все отчёты будут сохраняться в этот каталог. Также, если вы не укажете имя файла, отчёт будет сохранён в следующем формате:
[имя_артефакта]_[временная_метка].jsonВывод команд также можно сохранять в произвольные текстовые файлы с помощью стандартного символа Linux >.
Например, если вы хотите сохранить результат поиска VirusTotal для хоста в файл "vt-lookup.json", просто выполните:
virustotal inquest.net > vt-lookup.jsonПо умолчанию перенаправленные выходные файлы сохраняются в текущем рабочем каталоге, то есть "omnibus/", но если вы укажете полный путь, например virustotal inquest.net > /home/adam/intel/cases/001/vt-lookup.json, вывод в формате JSON будет сохранён туда.