
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 Requestも歓迎します!
このREADMEファイルはOmnibusとその機能の簡単な概要です。完全なドキュメントは、このリポジトリの「docs」フォルダにあります。
始める前に、Omnibusで使用されるいくつかの用語を説明します。
newコマンドを使用するか、モジュールの実行によって発見されるOmnibusを調査に使い始めるには、このGitHubリポジトリをクローンし、pip install -r requirements.txtでPythonの依存関係をインストールし、python omnibus-cli.pyを実行するだけです。
Omnibusシェル - メイン起動画面

CLIの視覚的な参考として、上記の画像は、新しいセッションが開始され、2つのアーティファクトがセッションに追加され、helpメニューが表示されているOmnibusコンソールです。
モジュール内で使用したいAPIキーは、omnibus/etc/apikeys.jsonファイルに設定する必要があります。
このファイルはJSON形式で、APIキーを必要とするすべてのサービスのプレースホルダーが含まれており、Omnibusはモジュールごとにこのファイルにアクセスして、実行に必要な正確なAPIキーを取得します。
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アドレス、ファイルハッシュ、メールアドレスなどの1つ以上の技術的指標から始まります。検索と分析を進めると、関係性が形成され、接続されたデータポイントをピボットできるようになります。これらのデータポイントは、Omnibus内ではアーティファクトと呼ばれ、調査したい任意のアイテムを表します。
アーティファクトは次のタイプのいずれかになります:
コマンド「new」の後にアーティファクトを指定すると、Omnibusセッション内にそのアーティファクトが作成され、MongoDBにレコードが保存されます。このレコードには、アーティファクト名、タイプ、サブタイプ、モジュール結果、ソース、メモ、タグ、子情報(必要に応じて)、作成時刻が含まれます。 作成または保存されたアーティファクトに対してモジュールを実行するたびに、データベースドキュメントが更新され、新たに発見された情報が反映されます。
新しいアーティファクトを作成してMongoDBに追加し追跡するには、new <アーティファクト名>コマンドを実行します。たとえば、ドメインinquest.netの調査を開始するには、new inquest.netを実行します。
Omnibusは自動的にアーティファクトのタイプを判別し、そのタイプのモジュールのみがアーティファクトに対して実行されるようにします。アーティファクトタイプをサポートできないモジュールに対してアーティファクトを実行しようとすると、受け入れ可能なタイプを記載した警告メッセージが表示されます。
モジュールが実行されると、発見プロセス中に新しいアーティファクトが見つかる場合があります。たとえば、「dnsresolve」コマンドを実行すると、Omnibusが以前に認識していなかった新しいIPv4アドレスが見つかる可能性があります。その場合、新たに見つかったアーティファクトは自動的にOmnibus内で新しいアーティファクトとして作成され、元のアーティファクトに「source」という追加フィールドでリンクされ、どのモジュールから発見されたかを識別します。この例では、新しく作成されたアーティファクトのソースは「dnsresolve」になります。
アーティファクトは「rm」コマンドを使用してデータベースから削除できます。アーティファクトが不要になった場合は、削除コマンドを実行し、アーティファクト名またはセッションID(ある場合)を指定するだけです。
Omnibusは「セッション」と呼ばれる機能を利用します。セッションは、CLIセッションを開始するたびにRedisを介して作成される一時的なキャッシュです。アーティファクトを作成するたびに、そのアーティファクト名と数値キーがセッションに追加され、関連するアーティファクトの簡単な取得、検索、アクションが可能になります。
たとえば、セッションに「inquest.net」という1つのアイテムがある場合、virustotal inquest.netと実行する代わりに、virustotal 1と実行しても同じ結果が得られます。実際、これは最初の引数としてアーティファクト名を使用する任意のモジュールまたはコマンドに対して機能します。
アーティファクト名の代わりにセッションIDを使用する

セッションはアーティファクトへの簡単なアクセスのためのものであり、コマンドラインセッションを終了するたびにクリアされます。 セッションを早期にクリアしたい場合は、「wipe」コマンドを実行すると白紙の状態になります。
Omnibusは現在、以下のモジュールリストをサポートしています。モジュールに関する提案がある場合、または独自のモジュールを作成したい場合は、プルリクエストを作成してください。
また、Omnibusコンソール内でモジュール名を入力すると、そのモジュールに関連するヘルプ情報が表示されます。
モジュール
マシンは、特定のアーティファクトに対して、そのアーティファクトタイプで利用可能なすべてのモジュールを実行する簡単な方法です。これは、1つのコマンドでターゲットに関するできるだけ多くの情報を収集したい場合の高速な方法です。
これを行うには、machine <アーティファクト名|セッションID>コマンドを実行し、モジュールの実行が終了するまで数分待つだけです。
唯一の注意点は、アーティファクトタイプとモジュールごとの結果によっては、大量のデータと子アーティファクトが返される可能性があることです。これを改善するために、保存されたデータベースドキュメントから特定のアーティファクトフィールドを削除する方法を調査しており、ユーザーが不要なデータを簡単に刈り込めるようにする予定です。
覚えておくべきいくつかのクイックコマンド:
session - 新しいアーティファクトキャッシュを開始cat <アーティファクト名>|apikeys - アーティファクトのドキュメントを整形表示、または保存されているAPIキーを表示open <ファイルパス> - アーティファクトのテキストファイルリストを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形式の出力がそこに保存されます。