Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sinter — Swiftで書かれたMacOS用のユーザーモードアプリケーション認可システム | Kitploit
ツール/GitHubGitHub/trailofbits/sinter
防御ツール構成監査インシデントレスポンスArchived
GitHubtrailofbits/sinter

sinter

Swiftで書かれたMacOS用のユーザーモードアプリケーション認可システム

リポジトリを見るウェブサイト
299155年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Sinter

Build Status

Sinterは、macOS 10.15以降向けの100%ユーザーモードのエンドポイントセキュリティエージェントで、Swiftで記述されています。

Sinterは、ユーザーモードのEndpointSecurity APIを使用して、セキュリティ関連のイベントタイプセットについて、macOSカーネルからの認可コールバックを購読および受信します。現在のバージョンでは、プロセス実行の許可/拒否をサポートしています。将来のバージョンでは、ファイル、ソケット、カーネルイベントなどの他のタイプのイベントもサポートする予定です。

Sinterは開発中です。 フィードバックをお待ちしています。貢献したい、または開発を支援するためにスポンサーになりたい場合は、ご連絡ください。

特徴

  • コードディレクトリハッシュ(CDハッシュ)によるプロセス実行の許可/拒否
    • すべての不明なプログラム(明示的に許可されていないプログラム)を拒否するオプション
    • すべての未署名プログラムを拒否するオプション
    • 無効な署名のあるプログラムをすべて拒否するオプション
  • すべてのプロセス実行イベントを追跡しログに記録する(ただし許可する)「モニター」モード
  • Santa同期サーバーからの許可/拒否ルールの受け入れ
  • JSON形式で拒否ルールを設定(ローカルまたは同期サーバーから提供)
  • 構造化JSON形式でローカルファイルシステムにログ出力

今後の予定機能:

  • 実行ファイルのパスによるプロセス実行の拒否
  • 証明書のチームIDによるプロセス実行の拒否

アンチ機能

  • カーネル拡張機能を使用しない(macOS 11 Big Surで正式に非推奨予定)
  • レガシーなmacOS(10.14以下)はサポートしない
  • メモリ安全でないコードは使用しない
  • サードパーティのライブラリ依存関係を制限
  • マルウェア対策やウイルス対策ではない。シグネチャデータベースはなし。ルールを使用して、指定したものだけを拒否する。

背景

プロセスの許可/拒否を実現する最初のオープンソースmacOSソリューションはGoogle Santaでした。私たちはSantaのファンであり、過去にそのコードベースに貢献したことがあります。しかし、長い間、macOSコミュニティの多くは、プロセスイベントだけでなく、より多くの イベントを追跡および管理するためのオープンソースソリューションを求めてきました。

macOS 10.15のEndpointSecurity APIは、そのような機能を構築するための理想的なプラットフォームであると考えました。厳密にユーザーモードAPIを基盤としてゼロから始めることで、よりシンプルな設計を試み、より安全なメモリ処理と優れたパフォーマンスを備えた最新のプログラミング言語を使用することができました。そこで、Sinter(サンタクロースの別名である「Sinter Klausen」の略)の開発を開始しました。

はじめに

Releasesページからpkgインストーラリンクを使用して、Sinterの最新バージョンをダウンロードしてインストールしてください。

Sinterをインストールした後、Sinter.appに対して「フルディスクアクセス」の権限を有効にする必要があります。これを行うには、システム環境設定を開き、セキュリティとプライバシー、プライバシータブ、フルディスクアクセスの順に進み、Sinter.appの項目をチェックします。MDMを使用している場合は、エンドポイントでこの権限を自動的に有効にでき、ユーザーの操作は不要です。

設定

Sinterでは、設定ファイルを/etc/sinter/config.jsonに配置する必要があります。ソースツリーに./config/config.jsonとしてサンプルが提供されています。

root@kitploit:~
{
  "Sinter": {
    "decision_manager": "local",
    "logger": "filesystem",

    "allow_unsigned_programs": "true",
    "allow_invalid_programs": "true",
    "allow_unknown_programs": "true",
    "allow_expired_auth_requests": "true",
    "allow_misplaced_applications": "true",

    "config_update_interval": 600,

    "allowed_application_directories": [
      "/bin",
      "/usr/bin",
      "/usr/local/bin",
      "/Applications",
      "/System",
      "/usr/sbin",
      "/usr/libexec",
    ],
  },
  
  "FilesystemLogger": {
    "log_file_path": "/var/log/sinter.log",
  },

  "RemoteDecisionManager": {
    "server_url": "https://server_address:port",
    "machine_identifier": "identifier",
  },

  "LocalDecisionManager": {
    "rule_database_path": "/etc/sinter/rules.json",
  }
}

決定マネージャプラグインは、decision_managerの値を変更することで選択できます。localプラグインを使用すると、LocalDecisionManager設定セクションが有効になり、Sinterは指定されたパスにあるローカルのルールデータベースを使用するようになります。代わりにsync-serverプラグインを使用すると、Santa互換の同期サーバーを使用することができ、RemoteDecisionManager設定セクションが有効になり、サーバーURLとマシン識別子を設定できます。

現在、2つのロガープラグインが実装されています。

  1. filesystem: メッセージは、FilesystemLogger.log_file_pathで指定されたパスのファイルに書き込まれます。
  2. unifiedlogging: ログは、Unified Loggingを使用して、サブシステムとしてcom.trailofbits.sinterを使用して出力されます。

許可されたアプリケーションディレクトリ

許可されたフォルダから起動されなかったアプリケーションをログに記録し、必要に応じて拒否するようにSinterを設定できます。

  • allow_misplaced_applications: trueに設定すると、誤った場所にあるアプリケーションは警告のみを生成します。falseに設定すると、有効なパスから起動されない実行はすべて拒否されます。
  • allowed_application_directories: 空でない場合、アプリケーションが誤ったフォルダに配置されているかどうかを判断するために使用されます。

UI通知の有効化

  1. 通知サーバーをインストールします(PKGインストーラが自動的に行います): sudo /Applications/Sinter.app/Contents/MacOS/Sinter --install-notification-server
  2. エージェントを起動します: /Applications/Sinter.app/Contents/MacOS/Sinter --start-notification-server

モニターモードでのSinterの設定

Sinterではモードは実装されておらず、すべてルールベースです。次の設定を調整することで、監視機能を実装できます。

  • allow_unsigned_programs: 署名されていないアプリケーションを許可する
  • allow_invalid_programs: 署名チェックに失敗したアプリケーションを許可する
  • allow_unknown_programs: アクティブなルールデータベースでカバーされていないアプリケーションを自動的に許可する
  • allow_expired_auth_requests: EndpointSecurity APIでは、Sinterは指定されていない時間枠(通常1分未満)内に認可リクエストに応答する必要があります。Xcodeなどの大規模なアプリケーションは、検証にかなりの時間がかかります。これらの実行はデフォルトで拒否され、アプリケーションが検証されたらユーザーは再試行する必要があります。この設定をtrueにすると、これらのリクエストが常に許可されるように動作が変わります。

ルール形式

ルールデータベースはJSON形式で記述します。以下は、cmake.orgのCMakeアプリケーションバンドルを許可するデータベースの例です。

root@kitploit:~
{
  "rules": [
    {
      "rule_type": "BINARY",
      "policy": "ALLOWLIST",
      "sha256": "BDD0AF132D89EA4810566B3E1E0D1E48BAC6CF18D0C787054BB62A4938683039",
      "custom_msg": "CMake"
    }
  ]
}

Sinterは現在、BINARYルールのみをサポートしており、ALLOWLISTまたはDENYLISTポリシーを使用します。コードディレクトリハッシュ値は、codesignツールの出力から取得できます(例:codesign -dvvv /Applications/CMake.app)。CLIツールは完全なSHA256ハッシュを取得できますが、カーネル/EndpointSecurity APIは最初の20バイトに制限されていることに注意してください。

ソースからのビルド

Sinterのビルドには、Appleが組織に付与する必要がある特定のコード署名証明書と権限が必要です。ただし、SIPを無効にしたテストシステム上でローカルに実行するために、ソースからビルドすることは可能です。手順については、Sinter wikiを参照してください。

ライセンス

SinterはAGPLv3ライセンスの下でライセンスされ、配布されています。条件の例外をお求めの場合は、お問い合わせください。

ツールをダウンロード