
インシデントレスポンスフォレンジックフレームワーク

Elasticsearchバックエンド上での非同期フォレンジックデータ表示のために構築されたカスタムアプリケーション。
このアプリケーションは、Mandiant Redlineの"collections"ファイルを取り込み、検索/スタックおよびタグ付けにおいて柔軟性を提供するように設計されています。
このアプリケーションは、複数の調査(または数百のエンドポイント)を単一のペインで制御できないことから生まれました。
redline監査を取り込むために、このフレームワークに付属するように設計された本格的なGoアプリケーション、nightHawkResponseを作成しました。アプリケーションのソースコードはこのリポジトリで利用可能であり、バイナリはISO内にコンパイルされており、最初の起動から取り込める状態で動作しています。
現在、新しいメジャーバージョンを開発中であり、2020年3月までにリリースする予定です。新しいバージョンでは以下のことを達成することを目指しています。
リポジトリ全体を効果的に運用し、エンティティを簡単に管理し、すべてを最新の状態に保つには、可動部分が多すぎることに気付きました。また、Elasticに存在するコアデータはKibanaによってより効果的に使用されるべきだと信じており、Kibanaの素晴らしいワークフローと並行してこれを実現するプラグインを開発することを決定しました。
インストール
APIドキュメントはWikiで公開予定
01/09/2016: Version 1.0.3
機能:
ビデオデモンストレーション: nightHawk Response Platform
nightHawkのユーザーにとって使いやすいように、すべてがセットアップされたISOを構築しました。つまり、以下のものが得られます。
/opt/nighthawk/etc/nightHawk.jsonファイルにあります。 システムの起動:
提供されたISOでVMを構築する前に、以下を考慮してください。
保留中: Elasticサービスをデュアルノードに設定し、各ノードに割り当てられたシステムメモリの1/4を割り当てます。つまり、2GBのRAMを割り当てた場合、各ESノードは512MBになり、システムは運用に1GBを残します。
これを別の方法で設定したい場合は、SSHでボックスにログインし、希望する方法で設定してください。
最低20GBを検討すべきです。監査ファイルは大きくなる可能性があるため、多くのコレクションを取り込むために大量のストレージを割り当てることをお勧めします。
保留中: 大規模インスタンス向けのユーザーベースのストレージ設定。追加のパーティションを設定したい場合は自分で行うことができ、ESデータストレージを新しいパーティションにポイントするためのいくつかの変更が可能です。
インストール:
ISOをダウンロード: nightHawk v1.0.3
ハードウェアを構成し、ISOをVMにマウントし、インストールスクリプトを起動します。
完了したら、ブラウザ(Chrome/FireFox)でhttps://192.168.42.173にアクセスしてください。
'nighthawk/nighthawk'でシステムにログイン - "goto site"をクリックしてアプリケーションに入る
Kibanaにアクセスする必要がある場合は、https://192.168.42.173:8443にアクセスしてください。
SSHでボックスにアクセスする必要がある場合、ログイン情報はadmin/nightHawkです。
IPアドレスを変更する場合(アプリケーション全体に反映); /opt/nighthawk/bin/nighthawkctl set-ip <new_ipaddress>
Redline監査収集スクリプトはこのリポジトリのルートにあります。スタンドアロンのRedlineコレクターを使用する際にこれを使用してください。これはnightHawkを正しく生成するために必要なドキュメントを返します。
アップロード:
重要:
アップロードする監査zipファイルの作成(Redlineスタンドアロンコレクター):
step_1: Sessions\AnalysisSessionX\Audits<ComputerName> に移動します。ここでXは分析番号で、ほとんどの場合1です。
step_2: 監査ファイルを含むフォルダのzipを作成します。例: 20160708085733
step_3: 20160708085733.zipをアップロードします。
重要: 既存のHX監査ファイルを使用する(HXコレクター): FireEye HX監査の拡張子は.mansです。HXからの監査は、返される.mansが実際にはzipファイルである点でRedlineコレクターと異なります。そのため、上記の手順に従う必要があるRedline監査とは異なり、直接アップロードできます。
ナビゲーションバーの"Upload"アイコンに移動し、監査.zip(または複数)を選択し、ケース名(指定しない場合はシステムが自動的に付与します)を入力して送信します。Redline監査スクリプトを使用してコレクションを作成した場合は、すぐ上の"Redline Collector"の指示に従ってください。
処理が完了すると、エンドポイントが"Current Investigations"ツリーノードに表示されます。エンドポイントの下には、そのエンドポイントで利用可能なすべての監査タイプが表示されます。このWebアプリのアップロード機能は、GOアプリケーションを呼び出してRedline監査を解析し、データをElasticsearchにプッシュするpOpenサブプロセスを起動します。アップロードには2つのオプションがあり、1つは順次、もう1つは同時実行です。
注意: 同時アップロードは同時に5つまでに制限されており、リソースを消費する可能性があります。マシンの性能が低い場合は、この機能の使用を2〜3に制限してください。
タグ付け:
レスポンスビューの任意のテーブルの任意の行をクリックして、そのデータをタグ付けできます。タグ付けすると、コメントビューでコメントを表示できます。
Elasticsearch:
カスタムマッピング(gitルートで提供)と以下のアドバイザリーコメントがあります。
ドキュメントはGOアプリを介して親/子関係としてインデックス化されます。これはドキュメントを表示するための比較的論理的なパスを提供できるため選択されました。つまり、親はエンドポイント名、子は監査タイプです。大規模な親/子関係ドキュメントで集計を実行することも理にかなっているようです。スタッキングフレームワークは、親を配列に構築し、特定の監査タイプのすべての子ドキュメント集計を取得することに依存しています。
Elasticsearchのセットアップにはチューニングと適切な設計認識が必要です。親/子ドキュメントをリンクする方法のため、シャーディングを理解することが重要です。子は常に親にルーティングされ、単独で存在することはできません。これは、インデックス上にいくつのシャードが存在するかを考慮する必要があることを意味します。私たちの理解では、単一シャードを持つ多くのノードを組み込んだセットアップを選択するのが賢明かもしれません。この種のセットアップからパフォーマンスを得るために、シャードルーティング検索に取り組んでいます。
現在、高速検索のための最善の構成を設計中です。
このアプリケーションは非常にスケーラブルになるように設計されています。初期設計コンセプトから、シングルCPU 2GBのUbuntu VM(Macbook Pro)上で3つのESノード、約400万以上のドキュメント(または50エンドポイントの取り込み)でスムーズに動作できました。本番環境に移行する場合、64/128GB RAMとSASストレージを備えたセットアップを実行すれば、多くのアナリストが同時にアプリケーションで作業しながら、ドキュメント検索で電光石火の応答時間を維持できるでしょう。
考慮事項:
DataTables混合処理:
取り込まれる監査タイプの中には、すべてのドキュメントをテーブルに返すには大きすぎるものがあります。例えば、URL履歴やレジストリは15kのドキュメントをDOMに返す可能性があり、これをレンダリングするとクライアントブラウザに負荷がかかります。これに対処するため、特定の監査タイプの結果をページングするためにServerSide処理を使用しています。これは、バックエンドでElasticsearchを使用して監査タイプ内のドキュメントを検索できることも意味します。
タグ付け:
現在、ドキュメントにタグを付け、そのコメントを表示できます。それらを更新または変更できます。アナリストはドキュメントに日付/アナリスト名/コメントなどのコンテキストを与えることができます。
依存関係(すべてプレインストール済み):
elasticsearch-dsl.py
django 1.8
python requests
やること:
プロセスハンドル(進行中)。
時間ベースのジェネレータ用の時間選択スライダー(進行中)。
現在/過去の調査のコンテキストメニュー。
タグ付けコンテキスト。タグ付けシステムは、アナリストパネル間でのライブコメントのためにWebSocketループに統合されます(進行中)。
アプリケーションコンテキスト。
エンドポイントをどちらかのコンテキスト間で移動する機能。
ノードツリーを調査日駆動型に再設計する可能性。
選択的スタッキング、現在はルートノードセレクタが有効。
シャードルーティング検索。
Redline監査スクリプトテンプレート。
AngularJSとのより広範な統合(進行中)。
レスポンシブデザイン(進行中)。
コア設定の構成用管理コントロールページ(進行中)。
著者と注意事項:
私たちは常にこのプロジェクトに貢献したい志を同じくする人々を探しています。決してウェブデザインの達人ではありません。何かより良い方法があると思ったら、プルリクエストを送ってください。気に入ればマージします。
Daniel Eden & Roshan Maskey
クレジット:
Mandiant Redline devs, AngularJS, Django devs, Angular-DataTables/DataTables, D3 (Bostock), Elasticsearch/ES-dsl.py, jsTree, qTip, GOlang, Python, Fahad Abdulaal (Logo/Video).
