
Python、Redis、S3をベースとした分散型マルウェア処理フレームワーク。
Python、Redis、S3 をベースとした分散マルウェア処理フレームワーク。
Karton は、柔軟で軽量なマルウェア分析バックエンドを作成するための堅牢なフレームワークです。 マルウェア* 分析システムを、最小限の労力で堅牢なパイプラインに接続するために使用できます。
私たちは長い間、自動化ビジネスに携わってきました。日々増加する脅威に対処するため、インシデントに追いつくにはすべてを自動化する必要があります。その結果、多くの場合、ガムテープ ダクトテープと WD-40 でつなぎ合わせた多数のスクリプトができあがります。これらのスクリプトは、アナリストがその場の勢いで作成したもので、脆弱で見苦しいですが、動作し、保存、さらに処理、他のシステムへの送信、他の組織との共有が必要なインテリジェンスを生成します。
私たちは、PoC スクリプトを簡単に分析パイプラインに組み込む方法を必要としていました。また、実行の監視、ログの集中管理、堅牢性の向上、開発の慣性の低減なども望んでいました。この目的のために、Karton を作成しました。
* Karton はマルウェア分析を念頭に置いて設計されていますが、マイクロサービス指向のプロジェクトでも適切に機能します。
インストールは pip install コマンド 1 つで簡単です。
pip3 install karton-core
バックエンド環境全体をセットアップするには、S3 互換ストレージと Redis も必要です。詳細は ドキュメント を参照してください。
Karton を使用するには、Karton を継承するクラスを提供する必要があります。
from karton.core import Karton, Task, Resource
class GenericUnpacker(Karton):
"""
サンプルのアンパックを実行します
"""
identity = "karton.generic-unpacker"
filters = [
{
"type": "sample",
"kind": "runnable",
"platform": "win32"
}
]
def process(self, task: Task) -> None:
# サンプルオブジェクトを取得
packed_sample = task.get_resource('sample')
# self.log でログ出力
self.log.info(f"こんにちは {packed_sample.name}、分析させてください!")
...
# さらなる処理やレポートのために結果を送信
task = Task(
{
"type": "sample",
"kind": "raw"
}, payload = {
"parent": packed_sample,
"sample": Resource(filename, unpacked)
})
self.send_task(task)
if __name__ == "__main__":
GenericUnpacker.main()
このパッケージには、「karton」というコマンドラインユーティリティも含まれています。簡単な管理タスクに使用できます(ただし、完全な管理ツールとして設計されているわけではありません)。
$ karton configure # 新しい設定ファイルを作成
$ karton list -s # 現在のバインドを一覧表示
karton name version karton
------------------------------------------------------------------------
karton.yaramatcher 1.2.0 5.3.0
karton.autoit-ripper 1.2.1 5.3.3
karton.mwdb-reporter 1.3.0 5.3.2
$ karton logs # すべてのシステムログのストリーミングを開始
$ karton delete karton.something # 未使用のバインドを削除(次回操作時にシステムによってガベージコレクションされます)
一部の Karton システムは汎用的で、誰にとっても便利です。これらをコミュニティと共有することにしました。
このリポジトリです。システム内でタスクをディスパッチする主要サービスである karton.system サービスが含まれています。また、他のシステムでライブラリとして使用される karton.core モジュールも含まれています。
タスクとキューの管理および監視のための小さな Flask ダッシュボードです。
「ルーター」です。サンプル/ファイルを認識し、ファイル形式に応じてさまざまなタスクタイプを生成します。これにより、他のシステムは特定の形式(例:zip アーカイブのみ)のタスクのみをリッスンできます。
汎用アーカイブアンパッカーです。システムにアップロードされたアーカイブは抽出され、各ファイルが個別に処理されます。
マルウェア抽出器です。Yara ルールと Python モジュールを使用して、マルウェアサンプルから静的設定を抽出し分析します。これは釣り竿であり、魚そのものではありません。モジュール自体は共有しません。ただし、独自のモジュールを簡単に作成できます!
パイプラインの非常に重要な部分です。分析中に生成されたすべてのファイル、タグ、コメント、その他のインテリジェンスを MWDB に送信します。まだ MWDB を使用していない場合、または他のバックエンドを好む場合は、独自のレポーターを簡単に作成できます。
パイプライン内のすべてのファイルに対して Yara ルールを自動的に実行し、サンプルに適切にタグを付けます。ルールは含まれていません ;)。
hex、base64 など、一般的な方法でエンコードされたファイルをデコードする Karton システムです。(これがどれほど一般的か信じられないでしょう。)
AutoIt-Ripper の小さなラッパーで、コンパイルされた AutoIt 実行可能ファイルから埋め込まれた AutoIt スクリプトとリソースを抽出します。
DRAKVUF エンジンを搭載した自動ブラックボックスマルウェア分析システムで、ゲスト OS にエージェントを必要としません。
これらのシステムを組み合わせて、基本的なマルウェア分析パイプラインを形成する方法は次のとおりです。
Qiling Framework を使用して、UPX などの一般的なパッカーをアンパックするモジュール式の Karton Framework サービス。
MalDuck 向けの機能豊富なモジュール式マルウェア設定抽出ユーティリティ。
Karton フレームワーク向けの Detect-It-Easy 分類器。
Karton フレームワーク向けの RetDec アンパッカーモジュール。
モジュール性を重視したマルウェア類似性プラットフォーム。
スケーラブルな Windows ドライバー脆弱性分析パイプライン。
