
"Security Incidents In A Box!" モジュール式、メニュー駆動型、クロスプラットフォームのツールで、カスタマイズされた遅延分散型セキュリティイベントを構築できます。ブルーチームおよびレッドチームの訓練、センサー/アラートマッピングのために、カスタムイベントチェーンを簡単に作成できます。レッドチームは、デコイインシデント、気晴らし、おとりを作成して、作戦を支援・拡大できます。イベントシーケンス(「ナラティブ」)を構築して、現実的なシナリオをシミュレートし、対応するネットワークおよびファイルシステムのアーティファクトを生成します。
DumpsterFire Toolset - 「箱の中のセキュリティインシデント!」
(2020年5月27日更新:はい、2020年夏の間にすべてのGithubプロジェクトをPython3に移行します。)
DumpsterFire Toolsetは、モジュール式でメニュー駆動型のクロスプラットフォームツールであり、再現可能で時間遅延のある分散型セキュリティイベントを構築するためのものです。ブルーチームの訓練やセンサー/アラートマッピングのためのカスタムイベントチェーンを簡単に作成できます。レッドチームは、おとりのインシデント、撹乱、および誘引を作成して、作戦を支援し拡大することができます。机上のテーブルトップ演習を、制御された「実弾射撃」レンジイベントに変えます。現実的なシナリオをシミュレートし、対応するネットワークおよびファイルシステムのアーティファクトを生成するイベントシーケンス(「ナラティブ」)を構築します。
このツールセットは動的に拡張可能に設計されており、ツールセットに含まれるFire(イベントモジュール)のコレクションに独自のFireを追加できます。独自のFireモジュールを作成してFireModulesディレクトリに配置するだけです。DumpsterFireツールセットは起動時にカスタムFireを自動検出し、使用可能にします。
Joe Gervais (TryCatchHCF)
レッドチームとブルーチームは通常、過剰に負荷がかかっています。欠けているのは、各チームの能力を拡大し、より効果的なレッドチーム活動と、より現実的で役立つブルーチーム/パープルチームの演習を提供する方法です。自動化が救世主です!DumpsterFire Toolsetは、モジュール式でチェーン化されたイベントを一貫したナラティブに組み合わせることで、カスタムセキュリティインシデントを簡単に作成できるクロスプラットフォームのメニュー駆動型ソリューションです。それらのイベントのコレクション(DumpsterFire)は、時間遅延のある自動プロセスとして実行できます。(もちろん即座にトリガーすることもできます。)
結果は?あなたが会議中や生活を楽しんでいる間に、DumpsterFireは日付時刻のトリガーを待って起動します。レッドチームのエンゲージメントで、忘れられたB2Bサーバーの露出したサービスを悪用している間に、クローンされ時間同期されたDumpsterFireが遠くのサブネット上でターゲット組織のSIEMを活発に照らし、その対応チームを混乱させます。ブルーチーマーは、机の上の紙の演習を「実弾射撃」レンジイベントに変え、制御された承認済みのDumpsterFireイベントチェーンを使用してセンサーとアラートをトリガーし、実際の運用環境でアナリストを訓練できます。パープルチームの運用では、方法論的で再現可能なイベントチェーンを実行して、センサーとアラートの状態を一貫してマッピングできるようになりました。チームをテストおよび訓練するための新しいシナリオを生成し、脅威スペースに先んじてセキュリティの不測の事態に備えることができます。
内部ネットワークでのMiraiボットの活動にブルーチームがどのように対応するか疑問に思ったことはありませんか?今すぐ確認できます!(心配しないでください。MiraiボットFireモジュールはピボットしませんが、ターゲットネットワーク全体でtelnetセッションをブルートフォースするために同じユーザー名とパスワードを使用します。)
レッドチームはないけれど、SOCの全シフトチームに対して制御された再現可能なカスタム訓練を簡単に実行したいと思いませんか?できました!
7つのタイムゾーン離れたリモートチームに対するレッドチームのエンゲージメントを、午前3時に起きずにサポートしたいですか?スヌーズボタンを押しましょう!
毎年のサイバー戦闘演習中に、すべての対戦相手のシステムを同時にrickrollしたいと思ったことはありませんか?「Never gonna let you down!」
サンプルのDumpsterFireは以下を参照してください。そしてもちろん、いたずらセクションも。
CactusCon 2017のスライド(プロジェクトに含まれています)を参照してください。スライドは単独で完結するように書かれており、背景、アプローチ、具体的なユースケースなどを提供します。すべてを文脈に位置付け、眠くならないようにもしています。もし眠くなってしまったとしても、おそらく休息が必要だったということなので、結局は全員が得をします。
DumpsterFireは日付時刻スタンプ付きのイベントログを作成し、レッドチームとブルーチームがイベントを調整・追跡し、センサーで検出された(または検出されなかった)ものや、どのアラートがトリガーされたかなどを関連付けることができます。また、チームはどのイベントが作戦/演習の一部であったかを確認でき、トラブルを回避できます。すべての日付時刻追跡はUTCで行われるため、タイムゾーンや国際日付変更線の変換を気にせずにグローバルな作戦を簡単に関連付けることができます。
自動生成された日付時刻スタンプ付きのイベントログは、エンゲージメントに手間のかからない付加価値を提供します。クライアントの攻撃面に合わせたDumpsterFireのコレクションを作成します。作戦終了時に、クライアントにポストエンゲージメント分析用のボーナスパープルチーム成果物としてログを引き渡すことができます。
DumpsterFireツールセットのワークフローは、ユーザーフレンドリーで堅牢になるように設計されています。すべてはメニュー駆動のdumpsterFireFactory.pyスクリプト内で行うことができます。スクリプトを起動すると、ツールが進行に合わせてガイドします。まずは既存のFireモジュールと保存済みのDumpsterFireを閲覧することから始められます。独自のDumpsterFireを作成する準備ができたら、ツールがワークフローを案内し、作業を完了させます。最後にDumpsterFireに点火します。選択したDumpsterFireを選んだ後、そのDumpsterFireのFireモジュールと設定を確認します。すべて問題なければ、点火します!
DumpsterFireを構築する際、含めたいすべてのFireモジュールを選択した後、ツールはFireのリストをループします。Fireにカスタム設定のオプションがある場合、ツールはそのFireのConfigure()メソッドを呼び出して、設定のプロンプト(例:ターゲットネットワークのIPアドレス)を表示します。
すべてのFireが設定されたら、各Fireに個別の時間遅延を割り当てるオプションが与えられます。これにより、DumpsterFireがイベントチェーンを実行する際に、実際の作戦をよりよく模倣できます。例えば、最初のFireがさまざまなハッキングWebサイトを訪れ、次のFireがいくつかの一般的なハッキングツールをダウンロードし、その後に3番目のFireがローカルネットワークのスキャンを開始する場合、これらが数秒以内にすべて発生したら、SOCアナリストは人間によるものとは信じないでしょう。これらのイベント間に数分または数時間の遅延を追加することで、より現実的なイベントチェーンを作成できます。
すべてのFireが設定され、オプションの個別Fire遅延が割り当てられたら、DumpsterFireに名前を付けるよう求められます。スペースや特殊文字は使用せず、英数字、アンダースコア、ハイフンだけを使用してください。
できました!これで最初のDumpsterFireが作成されました。点火の時です!
DumpsterFireに点火する準備ができたら、ツールは最初にDumpsterFireの設定を表示します。すべて問題なければ、点火前に日付時刻の遅延を割り当てるかどうかを尋ねられます。すべての日付時刻処理はUTCで行われ、DumpsterFireの実行場所に関係なく一貫した実行が保証されます。そうでなければ、日付時刻の遅延を拒否し、最終確認後にすぐに実行が開始されます。
DumpsterFireが実行されると、各Fireのステータスと重要なイベントに関する定期的な日付時刻スタンプ付きフィードバックが提供されます。これは進捗を追跡するのに役立つだけでなく、DumpsterFireの活動の時系列記録を提供します。これは、すべてのSOCを溢れる一般的な背景ノイズからイベントを調整し、切り離すために重要です。また、作戦完了後に外部クライアントに時系列記録を引き渡すことができ、クライアントがセンサーとアラート設定をレビューするために使用できる付加価値のある活動記録として活用できます。あなたの側で追加の作業は一切必要ありません。
4月1日はやってきます!サイバー戦争ゲームや親友の誕生日もそうです。いくつかの状況では、もう少し特別な何かが必要です。ついにネットウォーズの大会で相手の防御線を突破しましたか?勝利を確定させながらShenanigansで祝いましょう!親友がゲームナイトに画面ロックを解除したままにしましたか?共有は思いやりです!DumpsterFireのShenanigansは、作戦に風味を加えることができます。
システムのデフォルトブラウザを開いて、あのRick Astleyの素晴らしさをすべてストリーミングしたいですか?システムの音量を最大に設定した後に?任意のURLを開くのはどうですか?または、システムのシェルエイリアスを設定して、ファイルシステムが破損しているふりをするのは?
dumpsterFireFactory.py - DumpsterFireの作成、構成、スケジュール、実行のためのメニュー駆動ツール
FireModules/ - Fireのサブディレクトリを含むディレクトリ。各サブディレクトリは特定のカテゴリのFireであり、Fireモジュールを整理します。FireはDumpsterFireに追加されて、イベントとアクションのチェーンを作成します。
DumpsterFires/ - DumpsterFireのコレクションを含むディレクトリ
igniteDumpsterFire.py - ヘッドレススクリプト。実行したいDumpsterFireのファイル名をコマンドラインで指定して呼び出します。分散DumpsterFireの点火に便利です。
testFireModule.py - カスタムFireモジュールのクラスメソッドを単体テストするためのユーティリティスクリプト。DumpsterFire Factoryプロセス全体を実行してデバッグする手間が省けます。また、単一のFireを実行して設定を確認するのにも便利です。testFireModule.pyは該当する場合、構成設定を求めるプロンプトを表示します。
__init__.py ファイル - PythonがディレクトリをPythonパッケージとして扱うために必要であり、DumpsterFireツールセットがFireモジュールを見つけて読み込むことを可能にします。
Python 2.7.x
$ ./dumpsterFireFactory.py
メニュー駆動のDumpsterFire Factoryスクリプトは、各ステップをガイドし、文脈に応じたヘルプを提供します。
最初の例では、SOC訓練またはレッドチームの撹乱のいずれかになる可能性のあるDumpsterFireがあります。このDumpsterFireは最初にハッキングツールをGoogle検索します。次のFireはさまざまなハッキングWebサイトへのWebセッションを開きます。次に、後続のFireがいくつかの一般的なハッキングツールをダウンロードします。その後、サブネットワークを対象にポートスキャンが行われ、続いてTelnet経由で単一ホストに対するブルートフォースログイン試行が行われます。最後のFireは一連のLinuxコマンドを実行します。各Fireの間に、このDumpsterFireの作成者が時間遅延を挿入していることに注意してください。これにより、イベントの流れがより現実的に見えます。
次の例では、パープルチームメンバーがセンサーとアラートの構成を分析および検証するためのDumpsterFireを作成しました。このDumpsterFireは、異なるポートとサービスのコレクションをそれぞれ対象とし、プローブレートも異なる、振り付けされた一連のポートスキャンを実行します。各スキャンFireの間には5分の遅延が挿入されており、各スキャンFireに関連するトラフィックの分離を容易にしています。このDumpsterFireを実行すると、各Fireの開始時に日付タイムスタンプが表示され、Fireのネットワーク活動と他のネットワークイベントとの切り離しに役立ちます。
DumpsterFireのモジュール設計により、任意の数のイベントチェーンナラティブを作成する柔軟性が得られます。構成可能な設定を持つFireモジュールを使用すると、ターゲットネットワークやシステムなどを設定できます。しかし、DumpsterFireのイベントシーケンスを大幅に拡張する即時の柔軟性を提供するいくつかのFireモジュールがあります。
新しいFireModuleクラスを作成せずに、これらの既存の「カスタム」Fireモジュールを使用してDumpsterFireを活用・拡張できます:
これらはいくつでもDumpsterFireに追加でき、それぞれが独自のカスタムアクションを持ちます。例えば、12個の'custom_url.py' Fireモジュールをチェーンして、完全でカスタマイズされたブラウジングナラティブを構築できます。その後、さまざまな'OSCommand/' Fireインスタンスを使用してシステムコマンドを実行し、目的のイベントナラティブをさらに強化できます。特に'OSCommand/' Fireは信じられないほどの柔軟性を提供します。DumpsterFireのイベントチェーン内の個々のFireは、ホストのOSに適した任意のシェルコマンドを受け入れます:
例:Linux/Unix(& OSXターミナル)
find /home -name '*.bash_history' -exec cat {} ; ; echo "Never gonna give you up" > rickroll.txt ; wall rickroll.txt
DumpsterFireは箱から出してすぐに使えますが、その真の価値は、独自のカスタムFireモジュールを作成することでDumpsterFireのシナリオツールチェストを簡単に拡張できることにあります。特定のニーズに合わせてFireモジュールを作成および調整することで、構築および実行できるDumpsterFireシナリオの種類を迅速に拡大できます。新しいFireモジュールを作成し、FireModules/の既存のディレクトリに配置するだけで、DumpsterFireツールセットが実行時に自動的にロードして使用可能にします。
カスタムFireモジュールを独自のカテゴリに完全に分離したいですか?簡単です!FireModules/の下に新しいディレクトリを作成するだけで、DumpsterFireツールセットが自動検出し、新しいFireカテゴリとして使用可能にします。
注:新しいディレクトリに空のファイル __init__.py があることを確認してください。そうしないと、Pythonパッケージマネージャーがそれを見つけられず、DumpsterFireも認識しません。
FireモジュールはFireModuleというクラスから継承します。出発点として、既存のFireモジュールをコピーできます。ファイル名とファイル内のすべてのクラス名参照を新しいFireに合わせて変更してください。(必要に応じて、クラスのコンストラクタメソッド内のカテゴリパス参照も更新してください。)
必須クラスメソッド:
Configure() - ユーザーに入力を促し、FireModuleのパラメータを設定します
Description() - FireModuleの説明を含む文字列を返します
GetParameters() - Fireのパラメータの単一文字列を返します
SetParameters( string ) - 単一の文字列を受け取り、Fireのメンバーを設定します
ActivateLogging( boolean ) - Fireがその活動のログを生成するフラグを設定します(レビューに最適)注:初期リリースでは、stdoutへのログ出力は常に有効です。
Ignite() - Fireのアクションを実行します
Pythonクラスのテストは面倒です。特に、各クラスのメソッドを単体テストしたい場合、アプリケーションのすべてのユースケースをくぐり抜けて、各クラスメソッドが適切な順序で実行されることを確認する必要があります。げんなりしますね。そこで、新しいFireModule派生クラスの各メソッドを適切に呼び出すスクリプトを作成して含めました。これにより、デバッグを迅速に進めることができます。どういたしまして。:-) また、Fireを単独で実行して設定をテストしたり、動作を確認したりするのにも最適です。
コマンドラインで、testFireModule.pyスクリプトにカスタムFireモジュールへの相対ファイルパスを指定します。テストスクリプトは、必要なFireModuleメソッドを適切な順序で(保存前に設定を取得するなど)呼び出します。テストスクリプトは例外処理を使用しません。Pythonはクラッシュしたときだけ有用なエラー(例えば、欠落した二重引用符を指摘するなど)を表示するからです。クラッシュ&バーンを通じて、成功するカスタムFireを目指しましょう!
現在、開発とデバッグのさまざまな段階にある約30の追加Fireモジュールがあります。これらは10月から11月にかけて展開する予定です。1つ作成するたびに、さらに2つ作成したくなるので、今後のアップデートにご注目ください。