アップデート一覧に戻る
New releaseJul 31, 2026

macnoise v0.2.0

拡張可能なMacOSシステムテレメトリジェネレーター。

共有
Description of image

CI Release

MacNoise

MacNoiseは、実際のmacOSテレメトリ(ネットワーク接続、ファイル書き込み、プロセス生成、plist変更、TCCプローブなど)を生成します。EDR、SIEM、ファイアウォールスタックが動作しているマシンに向けて実行すると、ベンダーのデータシートが主張するものではなく、実際に何が発火するかを確認できます。

動機と設計の背景については、リリースブログ記事を参照してください。

クイックスタート

# ビルド(Darwin向けクロスコンパイルには build-amd64 / build-arm64 を、両方の場合は release を追加)
make build

# 利用可能なモジュールを一覧表示
./macnoise list

# 単一モジュールを実行
./macnoise run net_connect --param target=127.0.0.1 --param port=8080

# 実行せずにプレビュー
./macnoise run svc_launch_agent --dry-run

# すべてのネットワークモジュールを実行
./macnoise run --category network

# シナリオを実行
./macnoise scenario configs/scenarios/edr_validation.yaml

# 構造化JSONL出力を生成
./macnoise run --category file --format jsonl --output /tmp/events.jsonl

テレメトリカテゴリ

カテゴリ説明モジュール
network外向き接続、DNS、ビーコン、リスナー、リバースシェル、データ流出net_connect, net_listen, net_beacon, net_revshell, net_dns, net_exfil
processプロセス生成、シグナル送信、dylibインジェクション、探索、Gatekeeperバイパス、osascriptproc_spawn, proc_signal, proc_inject, proc_discovery, proc_gatekeeper, proc_osascript
fileファイル作成、変更、資格情報ファイルとキーチェーン読み取り、アーカイブ、隠蔽file_create, file_modify, file_browser_creds, file_cred_files, file_keychain_copy, file_archive, file_hide
tccTCC権限プローブ(FDA、連絡先、キーチェーン、アクセシビリティ、画面収録)tcc_fda, tcc_contacts, tcc_keychain, tcc_accessibility, tcc_screen_recording
endpoint_securityESフレームワークイベントトリガー(.dmgマウントとペイロード実行を含む)es_file, es_process, es_mount
serviceLaunchAgent/Daemon永続化、cron、シェルプロファイル、ログイン項目svc_launch_agent, svc_launch_daemon, svc_cron, svc_shell_profile, svc_login_item
plistPlistの作成と変更plist_create, plist_modify
xpcXPCサービス列挙xpc_enumerate

コマンド

macnoise run <module> [--param key=val ...]   特定のモジュールを実行
macnoise run --category <cat>                 カテゴリ内のすべてのモジュールを実行
macnoise run --all                            すべてのモジュールを実行
macnoise list [--category <cat>]              モジュールを一覧表示
macnoise info <module>                        モジュールの詳細、パラメータ、MITREを表示
macnoise scenario <file.yaml>                 YAMLシナリオを実行
macnoise categories                           カテゴリを件数付きで一覧表示
macnoise version                              バージョンを表示

グローバルフラグ

フラグデフォルト説明
--formathuman出力形式: human または jsonl
--output(なし)出力をファイルに書き込む(stdoutに加えて)
--verbosefalseクリーンアップエラーを含む詳細出力
--dry-runfalse実行せずにアクションをプレビュー
--no-cleanupfalseモジュールのアーティファクトを残す(下記参照)
--timeout30モジュールごとのタイムアウト(秒)
--audit-log(なし)OCSF 1.7.0監査レコードをJSONLファイルに書き込む
--config(なし)YAML設定ファイルからデフォルトを読み込む

アーティファクトを残す

デフォルトでは、すべてのモジュールは終了時に自身を元に戻します。これは通常望ましい動作ですが、検出がインストールイベントしか見ないことを意味します。永続化自体(~/Library/LaunchAgentsにあるLaunchAgent、cronエントリ、変更されたシェルプロファイル)をスタックが検出することを検証するには、スキャン実行時にアーティファクトがまだ存在している必要があります:

./macnoise run svc_launch_agent --no-cleanup

クリーンアップをスキップする各モジュールは、自身の名前を出力し、監査ログにはokではなくcleanup_result: skippedが記録されるため、永続化を残した実行が後片付けをした実行と誤認されることはありません。特定のモジュールが何を作成するかは、macnoise info <module>で確認できます。

これらは自分で削除する責任があります。 同じモジュールをフラグなしで再実行すると、その実行で作成されたものだけがクリーンアップされ、以前の--no-cleanup実行で残されたものはクリーンアップされません。

監査ログ

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

すべてのテレメトリイベントは、success(スキーマ1.1)とともにoutcomeを保持します。successはMacNoiseが機能したかどうかを示し、outcomeは試行したアクションに何が起こったかを示します:

outcome意味人間向けマーカー
executedアクションが実行され、モジュールが主張することを行った[+]
deniedアクションが実行されたが、環境が拒否した[-]
indeterminateアクションが実行されたが、結論を導き出せない[?]
errorMacNoise自体がアクションを実行できなかった[!]

拒否されたTCCプローブや死んだC2へのビーコンは、このツールが生成するために存在するテレメトリであるため、これらはsuccess: trueのままで、outcomeで区別されます。success: falseを設定するのはerrorのみです。監査ログでは、OCSFのstatusが拒否されたアクションと壊れたツールを同一に記録するため、同じ値がunmapped.outcomeに表示されます。

監査ログは追記モードで開かれるため、複数回の実行のレコードが1つのファイルに蓄積され、バッチ分析に使用できます。モジュールを追加していて、新しいイベントタイプがOCSFにどのように分類されるかを知りたい場合は、CONTRIBUTING.mdを参照してください。

モジュールリファレンス

モジュールのドキュメントは各カテゴリとともに配置されています:

シナリオ

シナリオはモジュールを順序付きシーケンスに連結します。単一のYAMLファイルで、多段階の侵入パターンを検出に対して再生します。

ファイル説明
network_only.yamlすべてのネットワークモジュール
edr_validation.yaml包括的なEDR検出カバレッジ
full_sweep.yamlすべてのカテゴリ
lazarus_group.yamlLazarus Group: dylibインジェクション、サービス探索、リバースシェル、plist永続化
amos_atomic_stealer.yamlAMOS / 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-pleaseConventional CommitのPRタイトルから直接新しいバージョンを生成するため、feat: add net_tls modulefix: correct beacon jitterはPRタイトルであり、そのままチェンジログエントリになります。

免責事項

MacNoiseは、所有している、または明示的な書面によるテスト許可を得たシステムに対する認可されたセキュリティテスト、EDR検証、検出エンジニアリングを目的としています。著者は誤用に対する責任を負いません。

AIコードポリシー

AIコードによるコントリビューションは歓迎しますが、コードレビューは現在人間主導のプロセスであり、レビューできるコード量には限りがあることにご注意ください。PRは特定の修正または新しいテレメトリモジュールに限定してください。大規模な変更を含むPRはクローズされる可能性が高いです。

カテゴリ