
macnoise v0.2.0
拡張可能なMacOSシステムテレメトリジェネレーター。
MacNoise
MacNoise は実際の macOS テレメトリを生成します。ネットワーク接続、ファイル書き込み、プロセス生成、plist 変更、TCC プローブなどです。EDR、SIEM、ファイアウォールスタックを実行中のマシンに向けて実行すると、実際に何が発火するかを確認できます。ベンダーのデータシートが発火すると主張する内容ではなく、実際の挙動を見ることができます。
動機と設計の背景については、リリースブログ記事 を参照してください。
クイックスタート
# Build (add build-amd64 / build-arm64 to cross-compile for Darwin, or release for both)
make build
# List available modules
./macnoise list
# Run a single module
./macnoise run net_connect --param target=127.0.0.1 --param port=8080
# Preview without executing
./macnoise run svc_launch_agent --dry-run
# Run all network modules
./macnoise run --category network
# Run a scenario
./macnoise scenario configs/scenarios/edr_validation.yaml
# Emit structured JSONL output
./macnoise run --category file --format jsonl --output /tmp/events.jsonl
テレメトリカテゴリ
| Category | Description | Modules |
|---|---|---|
network | 外部接続、DNS、ビーコン、リスナー、リバースシェル、データ流出 | net_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil |
process | プロセス生成、シグナル送信、dylib インジェクション、ディスカバリ、Gatekeeper バイパス、osascript | proc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript |
file | ファイル作成、変更、ブラウザ資格情報の読み取り、アーカイブ、隠蔽 | file_create, file_modify, file_browser_creds, file_archive, file_hide |
tcc | TCC 権限プローブ(FDA、連絡先、キーチェーン) | tcc_fda, tcc_contacts, tcc_keychain |
endpoint_security | ES フレームワークのイベントトリガー | es_file, es_process |
service | LaunchAgent/Daemon の永続化、cron、シェルプロファイル | svc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile |
plist | Plist の作成と変更 | plist_create, plist_modify |
xpc | XPC サービスの列挙 | xpc_connect |
コマンド
macnoise run <module> [--param key=val ...] Run a specific module
macnoise run --category <cat> Run all modules in a category
macnoise run --all Run all modules
macnoise list [--category <cat>] List modules
macnoise info <module> Show module details, params, MITRE
macnoise scenario <file.yaml> Run a YAML scenario
macnoise categories List categories with counts
macnoise version Print version
グローバルフラグ
| Flag | Default | Description |
|---|---|---|
--format | human | 出力形式: human または jsonl |
--output | (なし) | 出力をファイルに書き込む(stdout に加えて) |
--verbose | false | クリーンアップエラーを含む詳細出力 |
--dry-run | false | 実行せずにアクションをプレビュー |
--timeout | 30 | モジュールごとのタイムアウト(秒) |
--audit-log | (なし) | OCSF 1.7.0 監査レコードを JSONL ファイルに書き込む |
--config | (なし) | YAML 設定ファイルからデフォルトを読み込む |
監査ログ
MacNoise は 2 つの独立したストリームを書き込みます。テレメトリイベント(EDR/SIEM が実際に確認するもの)は stdout または --output に出力されます。2 つ目はオプションのストリームで、MacNoise 自身が行ったこと(実行されたモジュール、前提条件/クリーンアップの結果、MITRE マッピング)を OCSF 1.7.0 JSONL で記録します。
./macnoise scenario configs/scenarios/amos_atomic_stealer.yaml --audit-log /tmp/audit.jsonl
監査ログは追記モードで開かれるため、複数回の実行によるレコードが 1 つのファイルに蓄積され、バッチ分析に使用できます。新しいイベントタイプが OCSF でどのように分類されるかを知りたい場合(モジュールを追加する場合)は、CONTRIBUTING.md を参照してください。
モジュールリファレンス
モジュールのドキュメントは各カテゴリの隣にあります:
| Category | README |
|---|---|
network | modules/network/README.md |
process | modules/process/README.md |
file | modules/file/README.md |
tcc | modules/tcc/README.md |
endpoint_security | modules/endpoint_security/README.md |
service | modules/service/README.md |
plist | modules/plist/README.md |
xpc | modules/xpc/README.md |
シナリオ
シナリオはモジュールを順序付けられたシーケンスに連結します。単一の YAML ファイルで、多段階の侵入パターンを検出システムに対して再生します。
| File | Description |
|---|---|
network_only.yaml | すべてのネットワークモジュール |
edr_validation.yaml | 包括的な EDR 検出カバレッジ |
full_sweep.yaml | すべてのカテゴリ |
lazarus_group.yaml | Lazarus Group: dylib インジェクション、サービスディスカバリ、リバースシェル、plist 永続化 |
amos_atomic_stealer.yaml | AMOS / Atomic Stealer: MaaS インフォスティーラー、Gatekeeper バイパス、キーチェーンダンプ、ZIP 流出、バックドア永続化 |
2 つの APT シナリオは、実際に文書化された侵入シーケンスをテクニックごとに追跡しています。各 YAML ファイルは、構築元となった実際の脅威インテリジェンスを引用し、各ステップで実行される MITRE テクニックに注釈を付けています。詳細な内訳はここで説明するよりも、そちらを参照してください。
最初にドライラン:
./macnoise scenario configs/scenarios/<scenario>.yaml --dry-run
SIEM/EDR との相互参照: 各ステップのコメントには、トリガーされるべきテクニックが記載されています。実際の実行後に一致するアラートがない場合は、カバレッジにギャップがあることを意味します。
独自のシナリオを作成する:
name: My Custom Scenario
steps:
- module: net_connect
params:
target: "192.168.1.1"
port: "443"
- category: file
params:
base_dir: "/tmp/test"
貢献
新しいモジュールの追加、コードスタイル、PR プロセスの詳細については、CONTRIBUTING.md を参照してください。
リリースは自動化されています。release-please が Conventional Commit の PR タイトルから直接新しいバージョンを生成します。したがって、feat: add net_tls module や fix: correct beacon jitter は PR タイトルであり、そのままチェンジログエントリになります。
免責事項
MacNoise は、許可されたセキュリティテスト、EDR 検証、および所有しているか明示的な書面によるテスト許可を得たシステム上での検出エンジニアリングを目的としています。作者は誤用に対する責任を負いません。
AI コードポリシー
AI コードの貢献は歓迎しますが、コードレビューは現在人間主導のプロセスであるため、レビューできるコード量には限りがあることに留意してください。PR は特定の修正または新しいテレメトリモジュールに限定してください。大規模な変更を含む PR は閉じられる可能性があります。