Jamf Protect のリリースノートを振り返る (2022)

Jamf のエンドポイントセキュリティ製品 (≒ EDR) である Jamf Protect, 2022 年は大きな機能追加がありました。リリースノートを振り返りながら、いくつかピックアップして紹介したいと思います。


番外編として紹介しているツール群は、Jamf Protect ユーザでなくても活用シーンがありそうです。「Jamf Pro は使っているけど EDR は別ベンダ」な Mac Admin の方々は一見の価値アリかと思います。



リムーバブルストレージコントロールの導入

USB メモリや SD カードといったリムーバブルストレージの利用をコントロールできようようになりました。

Jamf Protect 管理者は、リムーバブルストレージデバイスの使用を禁止して、偶発的なデータ損失や不正アクセスから保護できるようになりました。リムーバブルストレージコントロールでは、オーガニゼーションのリムーバブルストレージの安全な使用方法を構成できます。たとえば、ベンダー ID、製品 ID、デバイスのシリアル番号、暗号化のステータスに基づいて、USB デバイスを制限したり許可したりすることができます。

https://docs.jamf.com/ja/jamf-protect/documentation/2022_Release_History.html
  • Read Only (読み取り専用)

  • Read and Write (読み取りと書き込みを許可)

  • Prevent (禁止)

の 3 つの権限ポリシーが用意されています。

オーバーライドルールを設定して「特定のリムーバブルストレージは Write も許可するが、他は一律で Read Only」といった運用も可能です。

Serial Number Override Details



ネットワーク脅威防御機能 (Jamf Protect Network Threat Prevention)

ネットワークレイヤの保護機能である Network Threat Prevention (NTP) が追加されました。

ネットワーク脅威防御は、Jamf Protect のすべての商用のお客様が利用できます (教育のお客様は利用できません)。ネットワーク脅威防御は、Jamf Protect Web App ではなく、Jamf Security RADAR ポータル内から構成されます。

https://docs.jamf.com/ja/jamf-protect/documentation/2022_Release_History.html

Jamf Protect のネットワーク脅威防御機能は、脅威がデバイスに達するのを防ぐことで、macOS エンドポイントをさらに保護するのに役立ちます。ネットワーク脅威防御は、次の脅威のタイプをブロックすることにより追加の保護を提供します:
- フィッシング行為
- マルウェア
- コマンド & コントロール (C2) サーバ
- 不正な App Store

https://docs.jamf.com/ja/jamf-protect/documentation/Configuring_Network_Threat_Prevention.html#concept-342


Mac 上での名前解決時に Jamf が提供する DNS サーバへ問い合わせるよう強制することで、Jamf (機械学習エンジン Mi:RIAM) による接続先ドメインのリスク評価・高リスクと判断した場合に接続をブロックする機能が利用できます。HTTP, HTTPS だけではなく、バックグラウンドで実行されるものを含めて全ての通信の名前解決に同処理が適用されます。

システム管理者による以下のコントロールも可能です。

  • Web コンテンツのフィルタリング (コンテンツのカテゴリを指定)

  • 任意のドメインを明示的に指定して、接続をブロック

  • 任意のドメインを明示的に指定して、接続を許可 or NTP の処理から除外

block policy


NTP は買収した旧 Wandera 社のサービスの一部で、現状では管理コンソールが Jamf Protect とは分かれており、また Jamf Protect 側では NTP によるブロックが識別できません。これからの統合に期待しています。



Telemetry with Jamf Protect

年末に転がり込んできた Telemetry. 2022/12/12 に GA されたばかりで、まだ日本語のドキュメントも用意されていないようです。

Telemetry log data sends device activity feeds to a security information and event management (SIEM) solution and security teams. This helps you and your information security team proactively monitor and detect threats on macOS computers.

https://docs.jamf.com/jamf-protect/documentation/2022_Release_History.html

Telemetry は macOS の監査ログをフィルタして SIEM (Microsoft Sentinel) や クラウドストレージ (Amazon S3) に転送する機能です。

「ログの転送」という観点では、Data Fowarding や Unified Logging という類似の既存機能があります。Data Fowarding  は「Jamf Protect が生成したアラート(≒ 脅威の情報)」の転送機能、Unified Logging は 任意の OS ログ・アプリケーションログの転送機能です。

これらと比較して、Telemetry は

  • ソースが macOS の監査ログ

  • ログの取得設定が簡単

が特徴です。

Unified Logging は取得したいログを個別に指定する (フィルタの構文を書く) 必要があり、設定作業が面倒でした。一方で Telemetry はログ取得対象のイベントが定義済みであり、ログレベルを選択するだけで転送設定が完了します。ログレベルは「Level 1 - Standard」, 「Level 2 - Increased risk」の 2 種類があり、後者にはネットワーク関連イベントのログ  (Outgoing user network connections, System-level outgoing network connections) が含まれるようです。

https://docs.jamf.com/jamf-protect/documentation/Audit_Log_Levels_in_Telemetry.html

ログデータのサンプルはコチラのドキュメントで確認できます。


2021 年に cmdReporter を買収 -> Jamf から Compliance Reporter としてリリース -> Compliance Reporter  の一部機能を Telemetry として提供、という流れでリリースされたようで、cmtReporter や Compliance Reapoter の情報も参考になりそうです。

https://youtu.be/NPyMlDSwlyY?t=348



以下、実際に S3 や Sentinel に Telemetry のログを転送してみたメモです。

以下のブログを参考にさせていただき、まずは macOS 上で出力する監査ログの設定を変更するために /etc/security/audit_control ファイルを修正します。
-> 修正不要で動作しました 🙏

OpenBSM and praudit
OpenBSMはBSDのシステム監査の仕組みなんですが、これをmacOSに移植したのはMcAfeeらしいですね。なんにせよ、Windowsの監査ログのようなログがmacOSでも取れるようになるのでありがたい仕組みです。

OpenBSMで現在の取得しているログの設定は /etc/security/audit_control で確認できます。

https://ananeko.medium.com/collecting-security-logs-on-mac-os-x-openbsm-and-real-time-monitoring-e963c3ae6c70


Telemetry は Data Fowarding (アラートの転送) の設定が流用されるようで、それぞれのログが同一の S3 バケットに転送されます。Telemetry のログは「telemetry」フォルダ配下に保存されていきます。

telemetries フォルダ配下にログが転送される


ログファイルは 5 分ごとに作成されています。また Hive 形式でパーティション化されており、Athena でクエリをかける際にもありがたいです。(余談ですが、ログ転送用の S3 Bucket, IAM Role 作成用の Cloud Formation テンプレートが用意されているのもありがたかったです。)

対象デバイスが起動していると 5 分間隔でログが転送される模様


Microsoft Sentinel でもログを見てみます。

雰囲気

「AUE_auth_user」にはローカル認証の結果が記録されています。

Microsoft Sentinel / Telemetry - AUE_auth_user

「AUE_CONNECT」には、通信を行なった (と思われる) プロセスやアクセス先の IP アドレスなどの情報が記録されていました。

Microsoft Sentinel / Telemetry - AUE_CONNECT

「AUE_MOUNT」には Chrome のインストーラ (dmg) のマウント操作が記録されていました。

Microsoft Sentinel / Telemetry - AUE_MOUNT

2023.03.30 追記
Microsoft Sentinel との統合に関するブログが公開されていました。Sentinel の活用方法が動画で解説されています。



番外編 / Jamf Protect の GitHub リポジトリ

ここからは番外編として、Jamf Protect の活用をサポートするツール群のご紹介です。Jamf の GitHub リポジトリで、Jamf Pro やサードパーティサービスとの連携を可能とするツールが提供されています。

設定操作まで書く時間がなかったので概要レベルでの記載に留めています。雰囲気だけでも伝われば。。


SOAR Playbook - Endpoint Network Isolation

https://github.com/jamf/jamfprotect/tree/main/soar_playbooks/endpoint_network_isolation

脅威が検出された Mac を Isolate (ネットワークから隔離) 状態にするためのツール群です。APNs (Apple プッシュ通知サービス) 及び Jamf Pro インスタンスとの通信以外がブロックされます。詳細を後述しています。

  • endpoint_network_isolation_enforce.sh … Mac をネットワークから隔離するためのスクリプト

  • endpoint_network_isolation_revert.sh … 隔離状態を解除するためのスクリプト

  • jamf_pro_extension_attribute_endpoint_network_isolation_status.sh … Mac の状態 (隔離 or Not) を Jamf Pro の拡張属性に登録するためのスクリプト

Jamf Protect には Jamf Pro との連携機能が用意されており、脅威検出時に「対象デバイスの拡張属性 (Jamf Protect - Smart Groups) に任意の値を追追」することができます。拡張属性と Smart Computer Group, Policy を組み合わせることで、Jamf Protect での脅威検出をトリガとして「対象の Mac を自動的にネットワークから隔離する」ことができます。

通信の制御には macOS に組み込まれている Packet Filtering (pf) が利用されています。フィルタリングのポリシーを見ると (下記), APNs サービスや Jamf Pro インスタンスとの通信、DHCP 関連の通信のみ許可されていることがわかります。

# Create the Packet Filter rules file and set permissions
CreatePFRules () {

# Create the isolation PF fireWall policy
/usr/bin/tee /etc/pf.anchors/"$fileName".pf.rules <<EOF
            
            # Block all incoming connections
            block in all
            # Pass in incoming connections from Apple addresses and Jamf Pro
            pass in from { ${apnsIPRange}, ${JamfProInstance} } to any no state
            
            # Pass in DHCP
            pass in inet proto udp from port 67 to port 68
            pass in inet6 proto udp from port 547 to port 546
            
            # Block all outgoing connections
            block out from any to any no state
            
            # Pass out outgoing connections to Apple addresses and Jamf Pro
            pass out from any to { ${apnsIPRange}, ${JamfProInstance} } no state
EOF

    # Set permissions
    /usr/sbin/chown root:wheel /etc/pf.anchors/"$fileName".pf.rules
    /bin/chmod 644 /etc/pf.anchors/"$fileName".pf.rules

}

リモートでも Mac のロックダウン・ロックダウンの解除が可能になるのは便利です。



SOAR Playbook - Aftermath Collection

https://github.com/jamf/jamfprotect/tree/main/soar_playbooks/aftermath_collection

Jamf が提供している Incident Response ツール「Aftermath」との連携ツール集です。

Aftermath は IR 用のデータ収集・タイムラインの作成 (収集したデータを時系列に並べたレポートを生成)を自動化してくれるツールで、こちらも Jamf が OSS として提供しています。

Aftermath で収集されたデータ


https://github.com/jamf/jamfprotect/tree/main/soar_playbooks/aftermath_collection/aws_s3
この Playbook では「Jamf Protect での脅威検知 -> Jamf Pro と連動して Aftermath を実行 -> 収集したデータを S3 バケットへアップロード」を自動化できます。

S3 バケットに自動アップロードされたデータ

Aftermath が事前にインストールされていることが前提なので、Jamf Pro を使ってインストールしておきます。インストーラはコチラで取得できます。

Aftermath のデータのアップロードは、AWS CLI (aws s3 コマンド) で行われます。そのため、あらかじめアクセスキーの情報 (Access key ID, Secret access key) を pkg ファイルとしてビルドし、Jamf Pro から Policy でデプロイする準備をしておきます。

aftermath_collection.sh の以下の部分で、アップロード先の S3 バケットやアクセスキーの情報 (プロファイル名やクレデンシャルの格納先) の定義も必要です。

# Jamf Protect Analytic smartgroup identifier
analyticEA="aftermath"

# Location of the AWS CLI binary.
awsBinary="/usr/local/bin/aws"

# The name of the target S3 bucket resource
s3Bucket=""

# The region of the S3 bucket to use. Example: us-east-1
s3BucketRegion=""

# Aftermath Archive Directory
aftermathArchiveDir=""

# AWS Profile Name
awsProfile=""

# AWS Folder
awsFolder=""

aftermath_collection.sh を実行すると、以下の処理が行われます。

  • 環境の構築

    • AWS CLI のインストール、アクセスキー関連ファイルのデプロイ

  • Aftermath の実行 (IR 用データの収集、タイムラインの作成)

  • S3 バケットへ Aftermath データをアップロード

  • クリーンアップ

以下の点に注意して、自組織の環境に合わせて適宜カスタマイズして使いましょう。

  • アクセスキー関連のファイルを pkg としてビルドする際、current user の ~/.aws 配下のファイルがビルド対象になる

    • 別のアクセスキーの情報を登録している場合、そのクレデンシャルも含めてビルドされてしまう

  • クリーンアップ処理として、Aftermath が収集したデータやアクセスキーの情報に加えて AWS CLI 関連の環境 (/usr/local/bin/aws, /usr/local/aws-cli  など) も削除される

    • 業務のために AWS CLI をインストールしているユーザへの影響あり



Alerts Management - AWS

https://github.com/jamf/jamfprotect/tree/main/third_party_integrations/alerts_management/AWS

Jamf Protect には EDR のアラートを任意のエンドポイントへ送信できる機能があります (Alert Collection Endpoints)。同機能と組み合わせて、AWS (API Gateway, Lambda) で受け取ったアラートを「Jira でチケットを自動起票」,「Slack, Teams へアラートを通知」するためのスクリプトが提供されています。

Slack へのアラート通知を試してみましたが、以下の点が便利でした。

  • アラートがあがった Mac の「ホスト名」と「当該 Mac のインベントリ画面 (Jamf Pro) の URL リンク」を含められる

  • 対象のアラートが「マルウェアの実行検知」の場合は、VirusTotal で対象マルウェアを検索・ヒットしたページの URL リンクを含められる

スクリプトを少しカスタマイズして、VirusTotal に登録されている各社の AntiVirus エンジンで "malicious" と検出された数も合わせて通知してみました。

Slack への通知イメージ
[ View Threat in VirusTotal ] をクリックすると対象のマルウェアの画面が開く


VirusTotal での検索にはこちらの API を利用しています。マルウェア (バイナリファイル) のハッシュ値で検索をかけています。



Jamf Pro Extension Attributes

https://github.com/jamf/jamfprotect/tree/main/jamf_pro_extension_attributes

Jamf Protect のエージェントの情報を、Jamf Pro の拡張属性に登録するためのスクリプト集です。エージェントのステータスやバージョン情報、Last Check-in の日時などが取得できます。Jamf Protect コンソールを開くことなく、MDM である Jamf Pro で状態が確認できるのは便利です。(Insight の情報も見れるようになるとさらに嬉しい…)

いくつかは Jamf Pro の Extension Attribute Template でも提供されていました。

Settings > Computer management > Extension attributes



最後に

「こんな機能が欲しいな〜」と思っていたものが、続々と Jamf Protect にアドオンされていった 2022 年でした。2023 年のリリースノートには何が追加されるのでしょうか。個人的には「Insight (CIS Benchmark への準拠チェック) のステータスに応じた Jamf Pro - Smart Computer Group への登録」機能がくると嬉しいです。というわけで、Feature Request に Vote して年末年始のお休みを締めたいと思います。


いただいたサポートは記事を書くためのエネルギー(珈琲、甘いもの)に変えさせていただきます!