アップデート一覧に戻る
New releaseAug 2, 2026

macnoise v0.2.1

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

共有
画像の説明

CI Release

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 scenario configs/scenarios/file_flow.yaml --format jsonl --output /tmp/events.jsonl

テレメトリカテゴリ

カテゴリ説明
networkTCP接続、HTTP、リスナー、リバースシェル、DNS、TLS
process正確な実行、シグナル配信、dylibインジェクション、Gatekeeperバイパス、osascript
file範囲を限定した探索、リテラルな読み取り/コピー、作成、変更、アーカイブ、隠蔽、デコイ暗号化
tcc正確なフルディスクアクセス、連絡先、アクセシビリティ、画面収録の要件を伴うTCC権限プローブ
credentialネイティブの認証情報ストアへのアクセス
volumeディスクイメージの作成とマウントされたボリュームのライフサイクル
serviceLaunchdの列挙、LaunchAgent/Daemonの永続化、cron、シェルプロファイル、ログイン項目
plistPlistの作成と変更
evasionログの消去、タイムストンピング、履歴の削除、なりすまし

すべてのモジュール、パラメータ、出力、イベントタイプ、権限、ATT&CKマッピングについては、生成されたモジュールカタログを参照してください。

コマンド

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> [--input key=val] [--report report.json]
                                                Run a YAML scenario
macnoise categories                           List categories with counts
macnoise version                              Print version

グローバルフラグ

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

シナリオのデータフロー

シナリオファイルは version: 1 を使用します。入力とモジュール出力は型付けされており、 後続のステップは文字列補間ではなく明示的なマッピングでそれらを参照します:

version: 1
name: Archive one generated artifact
on_error: stop
inputs:
  content:
    type: string
    required: true
steps:
  # Custom modules declare these outputs through OutputSpecs.
  - id: create
    module: custom_create
    params:
      content:
        input: content
  - id: archive
    module: custom_archive
    params:
      source:
        output: create.path
outputs:
  archive:
    output: archive.path

モジュールが宣言した出力のみが参照できます。ローカルシナリオは include ステップで再利用でき、インクルードは相対パスで、ルートシナリオディレクトリより上へは移動できず、循環チェックが行われ、最大8レベルに制限されます。MacNoise は実行前に完全なグラフを検証し、実行に1つのプライベートワークスペースを割り当て、呼び出されたモジュールを逆順でクリーンアップします。入力の指定には --input content=value を、バージョン管理された実行レポートには --report report.json を使用します。

アーティファクトをそのまま残す

デフォルトでは、各モジュールは終了時に自身を元に戻します。これは通常望ましい動作ですが、その結果、検出はインストールイベントしか見ることができません。永続化自体をあなたのスタックが検出できることを検証するには - ~/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

すべてのテレメトリイベントは、1つの権威ある outcome と1つの型付き subject を持ちます(スキーマ 2.0)。outcome は MacNoise が試みたアクションに何が起きたかを示し、subject は関与したファイル、プロセス、ネットワークエンドポイント、サービス、またはリソースを識別します:

outcome意味ヒューマンマーカー
executedアクションが実行され、モジュールが主張する通りの結果になった[+]
deniedアクションは実行されたが、環境がそれを拒否した[-]
indeterminateアクションは実行されたが、何も結論付けられない[?]
errorMacNoise 自体がアクションの実行に失敗した[!]

拒否された TCC プローブや、死んだ C2 へのビーコンは、このツールが生成するために存在するテレメトリであるため、MacNoise 自体の失敗を意味する error とは区別されます。監査ログは同じ値を unmapped.outcome に記録します。機密として宣言されたパラメータは、管理された監査レコードおよびコマンドライン識別情報において [REDACTED] に置き換えられます。

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

モジュールリファレンス

生成されたモジュールカタログは、名前、パラメータ、出力、イベントタイプ、権限、および ATT&CK マッピングに関する権威あるリファレンスです。カテゴリ別の注記では、プラットフォームの動作と運用上の境界について説明しています:

カテゴリREADME
networkmodules/network/README.md
processmodules/process/README.md
filemodules/file/README.md
tccmodules/tcc/README.md
credentialmodules/credential/README.md
volumemodules/volume/README.md
servicemodules/service/README.md
plistmodules/plist/README.md
evasionmodules/evasion/README.md

シナリオ

シナリオはモジュールを順序付けられたシーケンスに連鎖させます - 単一の YAML ファイルで、多段階の侵入パターンをあなたの検知に対して再生します。

カテゴリ