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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
macOS-Security-and-Privacy-Guide — 脅威モデリング、ディスク暗号化、ファイアウォール設定、安全な認証、ネットワークの堅牢化に関する実践的な手順をまとめた、厳選されたmacOSセキュリティおよびプライバシーガイド。 | Kitploit
ツール/GitHubGitHub/drduh/macos-security-and-privacy-guide
ネットワークセキュリティワイヤレスセキュリティ暗号化プライバシー認証学習と教育厳選リソース
GitHubdrduh/macos-security-and-privacy-guide

macOS-Security-and-Privacy-Guide

人気

すべて見る →

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

すべてのツールを探索

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

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

脅威モデリング、ディスク暗号化、ファイアウォール設定、安全な認証、ネットワークの堅牢化に関する実践的な手順をまとめた、厳選されたmacOSセキュリティおよびプライバシーガイド。

リポジトリを見るウェブサイト
22.5k1.5k12時間39分前Kitploit レビュー済み
  • 基本
  • 脅威モデル
    • 資産
    • 敵対者
    • 能力
    • 緩和策
    • モデル例
  • ハードウェア
  • macOSのインストール
    • システムのアクティベーション
    • Appleアカウント
    • App Store
    • 仮想化
      • Appleコンテナ
  • 初回起動
  • 管理者アカウントとユーザーアカウント
    • 注意点
    • セットアップ
  • ファームウェア
  • FileVault
  • ロックダウンモード
  • ファイアウォール
    • アプリケーション層ファイアウォール
      • ステルスモード
      • 署名付きアプリ
      • ファイアウォールの再読み込み
      • 状態の取得
      • AirDrop
    • サードパーティのファイアウォール
    • パケットフィルタ
      • pf設定の例
      • ファイアウォールコマンド
      • ネットワークのブロック
  • サービス
  • Siriの提案とSpotlight
  • Homebrew
  • DNS
    • DNSプロファイル
    • hostsファイル
    • DNSCrypt
    • Dnsmasq
  • 認証局
  • Privoxy
  • ブラウザ
    • Firefox
    • Chrome
    • Safari
    • Webブラウザのプライバシー
  • Tor
  • VPN
  • PGP/GPG
  • メール
    • Thunderbird
  • メッセンジャー
    • XMPP
    • Signal
    • iMessage
  • マルウェア
    • ソフトウェアのダウンロード
    • App Sandbox
    • Hardened Runtime
    • アンチウイルス
    • Gatekeeper
  • システム整合性保護
  • メタデータとアーティファクト
  • 認証
  • バックアップ
  • Wi-Fi
  • SSH
  • 物理的アクセス
  • モニタリング
    • ログ
    • DTrace
    • プロセス
    • ネットワーク
      • Wireshark
  • その他
    • スクリーンセーバー
    • 診断データ
    • メディアプレイヤー
    • ファイルハンドラ
    • Finderオプション
    • カスタムumask
    • キーボード入力
    • ネットワークの堅牢化
    • sudoers
  • 関連ソフトウェア
  • 追加リソース

基本

一般的なセキュリティのベストプラクティスを適用します:

  • 脅威モデルを作成する

    • あなたの敵対者は、局所的な盗聴者、一般的なマルウェアを使う犯罪者、または資金力があり高度な能力を持つ組織ですか?
    • あなたが防御している脅威やグループと、それらが現実的にできることを定義します。
  • システムとソフトウェアを最新の状態に保つ

    • オペレーティングシステムとすべてのアプリケーションの利用可能なアップデートを定期的にインストールします。
    • アップデートは、システム設定またはsoftwareupdateコマンドラインユーティリティでインストールできます。どちらもAppleアカウントは必要ありません。
    • Apple security-announceメーリングリストに登録するか、Appleセキュリティリリースを確認します。
  • 機密データを暗号化する

    • FileVaultを有効にして内部ストレージを暗号化します。
    • アカウントの認証情報にはパスワードマネージャーを使用し、特に機密性の高いファイルは別途暗号化することを検討します。
  • データの可用性を確保する

    • 重要なデータの定期的なバックアップを作成し、侵害が発生した場合にバックアップから復元できるようにしておきます。
    • 外部メディアやサードパーティのクラウドストレージにコピーする前に、バックアップを暗号化します。または、エンドツーエンド暗号化を提供するバックアップサービスを使用します。
    • バックアップを定期的・計画的にアクセスして検証します。
  • 慎重にクリックする

    • 最終的に、システムのセキュリティは管理者の能力と習慣に依存します。
    • 新しいソフトウェアをインストールする際は注意してください。開発者が公式と明示しているソース(WebサイトやGitHubリポジトリなど)からのみインストールします。

脅威モデル

セキュリティとプライバシーを有意義に向上させるための最も重要なステップは、脅威モデルを作成することです。これは、何を保護したいのか、誰がそれにアクセスしようとするのか、どのようにアクセスできるのか、そしてどのような管理策がユーザビリティのトレードオフに値するのかを一般的に記述したものです。これにより、潜在的な敵対者とその動機を理解することができ、より強力な防御につながります。

資産

資産には、電話、ラップトップ、認証情報、閲覧履歴などの個人情報が含まれます。

保護する価値が最も高いものから順に、重要度順にリストアップします。

敵対者

誰を防御対象とするかを定義します。まず、各敵対者が重要な資産を攻撃する可能性のある動機を定義することから始めます。例えば、金銭的利益は多くの攻撃者にとって大きな動機です。

能力

各敵対者について、できることとできないことをリストアップし、能力が低い順から高い順にランク付けします。例えば、通りすがりの泥棒は日和見的に行動します。画面ロックや強力なパスワードによる暗号化ストレージなどの基本的な対策でおそらく防げます。より洗練された執拗な敵対者には、デバイスを使用しないときに完全に電源を切ってメモリから認証情報を消去することや、より強力な認証メカニズムが必要になる場合があります。

緩和策

各脅威に対して最適な緩和策を選択します。例えば、ルームメイトに見つかる可能性があるならパスワードを紙に書かない、盗難に備えてストレージを暗号化してデータを保護するなどです。

セキュリティはユーザビリティとバランスを取る必要があります。すべての緩和策は、何らかの敵対能力に対抗して、不便さを正当化するものでなければなりません。残りのリスクが状況に対して許容できる場合は、防御の追加をやめます。デバイス、データ、旅行、仕事、敵対者が変わったときはモデルを見直します。

モデル例

次の表は、シンプルな脅威モデルの例です:

脅威モデリングについて詳しく読む。

ハードウェア

Appleシリコンハードウェアは、Secure Enclaveベースのキー保護やより強力な起動セキュリティオプションなど、ハードウェアバックアップされたセキュリティ機能を提供します。このガイドで説明する保護には、一般的に推奨されるプラットフォームです。

一部のIntelベースのMac、特に脆弱なT2世代のハードウェアを搭載するモデルは、macOSのアップデートでは完全には修正できないハードウェアの脆弱性の影響を受けます。

Appleはレガシーバージョンのすべての脆弱性にパッチを適用するわけではないため、macOSを実行する非Appleハードウェアや、最新のmacOSリリースをサポートしないシステムは避けてください。

Appleアクセサリは通常、macOS経由でファームウェアアップデートを受け取り、現在のBluetoothセキュリティ機能をサポートします。例えば、Bluetooth Low Energy(BLE)Privacyでは、デバイスアドレスをローテーションして追跡を減らします。サードパーティのアクセサリはこの機能をサポートしない場合があります。

macOSのインストール

macOSをインストールするにはいくつかの方法があります。

サポートされている最新バージョンのmacOSをインストールします。新しいバージョンのmacOSには、以前のリリースにはないセキュリティ修正やその他の改善が含まれています。

システムのアクティベーション

インストール中、Appleシリコン搭載MacはAppleのアクティベーションサービスに接続して、デバイスが紛失または盗難と報告されていないことを確認します。このプロセスの仕組みについてはこちらをご覧ください。

Appleアカウント

Appleアカウントは基本的なmacOSの使用には任意ですが、App Storeや多くのAppleサービスには必要です。機能を有効にする前に、データプライバシー設定を確認してください。

iCloudでエンドツーエンド暗号化を有効にし、Appleアカウントデータを確認してください。

App Store

App Storeは、Appleがアプリケーションをレビューするソフトウェア配布プラットフォームです。

App Storeアプリケーションは、App SandboxとHardened Runtime(アプリができることを制限し、一部の攻撃を困難にするセキュリティ機能)の使用が必須です。また、自動ソフトウェアアップデートも提供されます。

App Storeの利用にはAppleアカウントが必要で、プライバシー上のリスクとなる可能性があります。

仮想化

仮想化により、別のオペレーティングシステムを隔離された仮想マシン内で実行できます。Appleシリコン上では、macOSは次のようなアプリを使用して、サポートされているmacOSゲストとWindows 11 for ARMを実行できます。

  • UTM - ドキュメントに従って、macOSやその他の仮想マシンを作成します。
  • VirtualBuddy - Appleシリコン上でmacOS 12+を仮想化するためのアプリケーションです。
  • Bushel - 軽量で無料のアプリです。初回起動時に「Ask App Not to Track」を選択します。
  • VMware Fusion - Broadcomの下で現在無料。クリーンなUI、簡単なmacOSセットアップ、Windows 11 ARMをサポート。
  • tart (CLI) - Homebrewでインストールされるコマンドラインアプリケーション。
  • Parallels - 統合性に優れた有料オプションです。

[!WARNING] VMwareは、ダウンロード前にBroadcomアカウントと契約への同意が必要です。 Parallelsはアカウント、支払い情報、その他のデータを必要とします - プライバシー通知を参照してください。

Appleコンテナ

Apple Containerは、macOS上でLinuxコンテナを実行するためのコマンドラインツールです。単一のLinux仮想マシンを共有するコンテナランタイムとは異なり、Apple ContainerはmacOSの仮想化機能を使用して、各コンテナを隔離された軽量な仮想マシンで実行します。これにより、ワークロードとホストオペレーティングシステムの間により強力な分離境界が提供されます。

初回起動

macOSが初めて起動するとき、セットアップアシスタントはプライマリアカウントの作成を要求します。

長くてユニークなパスワードを設定します。パスワードヒントのフィールドは空白のままにします。

個人を特定できる名前を避けます:コンピュータ名(「John Appleseed's MacBook」など)はローカルネットワークにブロードキャストされ、他のデバイスから見えます。

システム名は、システム設定 > 概要またはscutilコマンドで設定できます:```bash sudo scutil --set ComputerName MacBook sudo scutil --set HostName MacBook sudo scutil --set LocalHostName MacBook

root@kitploit:~
# 管理者アカウントとユーザーアカウント

最初に作成されるアカウントは管理者アカウントです。管理者はシステム全体の設定を変更でき、[sudo](https://en.wikipedia.org/wiki/Sudo) を使用してコマンドを実行できます。sudo は一時的に昇格した権限を付与します。管理者が実行するプログラムも同じ権限を取得する可能性があります。また、sudo には[脆弱性](https://bogner.sh/2014/03/another-mac-os-x-sudo-password-bypass/)が存在する場合もあります。

通常の日常業務には専用の標準アカウントを使用し、管理者アカウントはソフトウェアやシステムのインストール、構成、更新にのみ使用することが[ベストプラクティス](https://help.apple.com/machelp/mac/10.12/index.html#/mh11389)と考えられています。

macOS のログイン画面で管理者アカウントにログインする必要は必ずしもありません。ターミナルコマンドに管理者権限が必要な場合、システムは認証を求め、ターミナルはその権限を使い続けます。そのために、Apple は管理者アカウントとそのホームディレクトリを非表示にするための[推奨事項](https://support.apple.com/102099)を提供しています。

## 注意事項

- システム全体の `/Applications` ディレクトリにアプリケーションをインストールできるのは管理者のみです。Finder とインストーラは、承認が必要な場合に標準ユーザーに管理者の資格情報の入力を求めます。一部のアプリケーションは `~/Applications` にインストールできます。管理者アクセスを必要としないアプリケーションはユーザーディレクトリにインストールする必要があります。App Store のアプリケーションは引き続き `/Applications` にインストールされ、追加の認証は不要です。
- 標準ユーザーは通常、`sudo` を使用する権限がありません。管理者権限が必要な場合、macOS は管理者の資格情報を求めるか、管理者アカウントからタスクを実行できます。
- システム設定といくつかのシステムユーティリティ(例:Wi-Fi 診断)は、完全な機能のために管理者権限を必要とします。一部のシステム設定は、ロックアイコンを選択してロックを解除する必要があります。一部のアプリケーションは、開いたときに認証を求めるだけで、すべての機能にアクセスするには管理者アカウントから直接開く必要があるものもあります(例:コンソール)。
- 一部のサードパーティアプリケーションは、現在のユーザーが管理者であることを前提としており、標準アカウントでは動作しません。
- 追加の考慮事項については、[issue 167](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/167) を参照してください。

## セットアップ

アカウントはシステム設定で作成および管理できます。既存のシステムでは、通常、2 つ目の管理者アカウントを作成し、元のアカウントを管理者アカウントから標準アカウントに変更する方が簡単です。新しくインストールしたシステムでは、セットアップ後に標準アカウントを追加する必要があります。

アカウントの降格は、システム設定の新しい管理者アカウントから行えます。

macOS がグループメンバーシップを決定する方法の詳細については、[この投稿](https://superuser.com/a/395738)も参照してください。

# ファームウェア

システムへの改ざんを防ぐために、ファームウェアセキュリティが[フルセキュリティ](https://support.apple.com/guide/mac-help/mchl768f7291/mac)に設定されていることを確認してください。これはデフォルト設定です。

# FileVault

Apple シリコン Mac は、デフォルトでハードウェアバックアップされたストレージ暗号化を使用します。[FileVault](https://support.apple.com/guide/mac-help/protect-data-on-your-mac-with-filevault-mh11785/mac) はさらに、再起動後に起動ボリュームのロックを解除するために、承認されたユーザーのパスワードを要求します。

Apple シリコンでは、FileVault の承認は[ファームウェア](https://support.apple.com/102384)も保護します。これにより、指定された起動ディスク以外からの起動、[リカバリ](https://support.apple.com/guide/mac-help/macos-recovery-a-mac-apple-silicon-mchl82829c17/15.0/mac/15.0#mchl5abfbb29)へのアクセス、およびデバイスファームウェアアップデート(DFU)モードによる[復元](https://support.apple.com/108900)が防止されます。

FileVault はリカバリキーの設定を求めます。使用する場合は、安全な場所に保管してください。FileVault はリカバリに iCloud を使用するオプションも提供します。

FileVault の状態を確認します。```bash
fdesetup status

ロックダウンモード

ロックダウンモード は、高度な攻撃で悪用されることの多いシステム機能やアプリケーション機能を無効化することで、攻撃対象領域を大幅に削減します。

ロックダウンモードを有効にすると、Safari には信頼する Web サイトを制限から除外するオプションがあります。

ファイアウォール

macOS ではいくつかの種類のファイアウォールを利用できます。

[!NOTE] マルウェアが管理者権限を取得した場合、ファイアウォールのポリシーを無効化または回避する可能性があります。システム全体の侵害に対する強力な保護として、ローカルファイアウォールに依存しないでください。

アプリケーション層ファイアウォール

内蔵ファイアウォールは基本的な保護を提供し、受信接続のみをブロックします。送信接続を監視またはブロックすることはできません。

これは、システム設定のネットワークにあるファイアウォールタブ、または次のコマンドで制御できます:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on

root@kitploit:~
### ステルスモード

攻撃者はしばしばネットワークをスキャンして標的とするシステムを特定します。[ステルスモード](https://support.apple.com/guide/mac-help/use-stealth-mode-to-keep-your-mac-more-secure-mh17133/mac) が有効な場合、クローズされたポートへの接続試行に対して応答が送信されず、システムを検出しにくくなります。

ステルスモードを有効にする:```bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on

署名済みアプリ

デフォルトでは、ファイアウォールは Apple または特定の開発者によって署名されたソフトウェアの着信接続を許可します。これらのルールを無効にすると、macOS はアプリケーションが着信接続を受け入れる前に確認を求めるようになります:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp off

root@kitploit:~
### ファイアウォールの再読み込み

`socketfilterfw` で設定を変更した後、新しい設定を適用するためにファイアウォールサービスを再読み込みします:```bash
sudo pkill -HUP socketfilterfw

状態を取得

ファイアウォールの状態を確認します:```bash for firewallFlag in
--getglobalstate
--getblockall
--getallowsigned
--getstealthmode
--listapps do /usr/libexec/ApplicationFirewall/socketfilterfw "$firewallFlag" done

root@kitploit:~
または、[system profiler](https://ss64.com/mac/system_profiler.html) を使用する:```bash
system_profiler SPFirewallDataType

AirDrop

アプリケーション層ファイアウォールを有効にし、内蔵ソフトウェアの着信接続を無効にすると、AirDrop が機能しなくなります。AirDrop を機能させるには、sharingd と rapportd にファイアウォールの例外を許可します:```bash sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/rapportd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/libexec/sharingd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/rapportd sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/libexec/sharingd

root@kitploit:~
## サードパーティ製ファイアウォール

[Little Snitch](https://www.obdev.at/products/littlesnitch/index.html)、[Radio Silence](https://radiosilenceapp.com/)、[LuLu](https://objective-see.com/products/lulu.html) などのアプリケーションは、使いやすさとセキュリティのバランスを提供します。

これらのプログラムは、受信接続と送信接続の両方を監視してブロックできます。ただし、クローズドソースの[システム拡張機能](https://support.apple.com/HT210999)が必要な場合があります。

許可またはブロックのプロンプトが頻繁に表示されて煩わしい場合は、接続を一時的に許可しながら記録します(Little Snitchの[サイレント許可モード](https://help.obdev.at/littlesnitch6/concepts-opmodes))。設定を確認して、ネットワークアクティビティを理解し制御してください。

## パケットフィルタ

macOSには、コマンドラインから設定するパケットフィルタリングファイアウォールである [pf](https://en.wikipedia.org/wiki/PF_(firewall)) も含まれています。これは強力ですが、組み込みのアプリケーションファイアウォールよりもかなり複雑です。

pfは、[Murus](https://www.murusfirewall.com/) などのグラフィカルアプリケーションでも制御できます。

pfファイアウォールについては、多くの[書籍](https://nostarch.com/book-of-pf-4e)や[ガイド](https://www.openbsd.org/faq/pf/)で解説されています。次の例は、基本的なポリシーを設定する方法を示しています。

### pf設定の例

次のルールを `pf.rules` というファイルに追加します。```console
# Define interface
wifi = "en0"

# Global options
set block-policy drop
set skip on lo0
set state-policy if-bound
set ruleset-optimization basic

# Normalize
scrub in on $wifi all fragment reassemble

# Define tables
table <blocklist> persist

# Deny and log blocked traffic
block log all
block quick from no-route to any
antispoof quick for $wifi

# Enforce blocklist
block log quick on $wifi from <blocklist> to any
block log quick on $wifi from any to <blocklist>

# Allow DHCP
pass out on $wifi proto udp from any port 68 to any port 67 keep state
pass in  on $wifi proto udp from any port 67 to any port 68 keep state

# Allow outbound TCP
pass out on $wifi proto tcp from ($wifi) to any flags S/SA keep state

# Allow outbound UDP
pass out on $wifi proto udp from ($wifi) to any keep state

# Allow outbound ICMP (ping)
pass out on $wifi proto icmp from ($wifi) to any keep state

pf の高度な設定例は pf/pf.rules にあります。

ファイアウォールコマンド

ファイアウォールを制御するには:

CommandTask
sudo pfctl -e -f pf.rules設定ファイルでファイアウォールを有効にする
sudo pfctl -t blocklist -T add 1.2.3.4IPv4 アドレスをブロックリストテーブルに追加する
sudo pfctl -dファイアウォールを無効にする

ファイアウォールを監視するには:

ネットワークのブロック

pf はネットワークアドレスの範囲をブロックできます。たとえば、組織全体をブロックできます。Merit RADb に問い合わせて、自律システム(単一の組織が運用する大規模ネットワーク)が使用しているネットワークのリストを取得します。例: Facebook:```bash whois -h whois.radb.net '!gAS32934'

root@kitploit:~
返されたネットワークのリストをブロックリストに追加します:```bash
sudo pfctl -t blocklist -T add $(whois -h whois.radb.net '!gAS32934' | sed -n '2p')

アドレスが追加されたことを確認します:```console $ sudo pfctl -t blocklist -T show No ALTQ support in kernel ALTQ related functions disabled 31.13.24.0/21 31.13.64.0/24 157.240.0.0/16 ...

root@kitploit:~
ネットワークトラフィックがそれらのアドレスにブロックされていることを確認します(DNSリクエストは引き続き機能します):```console
$ dig a +short facebook.com
157.240.2.35

$ curl --connect-timeout 5 -I https://facebook.com/
*   Trying 157.240.2.35...
* TCP_NODELAY set
* Connection timed out after 5002 milliseconds
* Closing connection 0
curl: (28) Connection timed out after 5002 milliseconds

$ sudo tcpdump -tqni pflog0 'host 157.240.2.35'
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.443: tcp 0

ファイアウォールは TCP接続 の開始に必要な最初のパケットを破棄するため、接続はタイムアウトします。

詳しくは drduh/config/scripts/pf-blocklist.sh を参照してください。

サービス

多くのシステムおよびユーザーのバックグラウンドサービスは launchd によって管理されています。

管理者アカウントは、システム設定 でサービスと拡張機能を変更できます。

サービス設定を読み取るには:```bash defaults read /System/Library/LaunchAgents/com.apple.Finder

root@kitploit:~
> [!IMPORTANT]
> システムサービスは [SIP](https://github.com/drduh/macOS-Security-and-Privacy-Guide#system-integrity-protection) によって保護されています。SIP を無効にしてシステムサービスを変更すると、セキュリティが損なわれ、システムが不安定になる可能性があります。

サービスのステータスを表示するには:```bash
find /var/db/com.apple.xpc.launchd \
  -type f -print -exec defaults read {} \; 2>/dev/null

script management with launchd および launchd.info を参照してください。

Siri の提案と Spotlight

Siri の提案と Spotlight は、有効にしている機能によっては、一部のクエリや使用情報を Apple に送信することがあります。システム設定で Siri と Spotlight を検索し、オンラインでの提案を無効にし、インデックス作成や提案から除外するカテゴリを設定してください。詳細は Apple の 検索とプライバシー ポリシーを確認してください。

Homebrew

App Store で入手できないプログラムについては、Homebrew の使用を検討してください。

[!IMPORTANT] Homebrew のインストールや管理のワークフローによっては、App Management または フルディスクアクセス を要求されることがあります。これらの権限は、十分に理解し、必要と判断した場合にのみ付与してください。

信頼できる安全なネットワーク上で定期的に brew upgrade を実行し、ソフトウェアの更新をインストールしてください。インストール前にパッケージの情報を確認するには、brew info <package> を実行し、オンラインでフォーミュラを確認してください。HOMEBREW_NO_INSECURE_REDIRECT=1 などの追加のセキュリティオプションを有効にしてください。

Homebrew の匿名アナリティクス によると、Homebrew は匿名の使用状況アナリティクスを収集し、セルフホストの InfluxDB インスタンスに報告します。

Homebrew のアナリティクスをオプトアウトするには、brew analytics off を実行するか、シェル起動ファイルで HOMEBREW_NO_ANALYTICS=1 を設定してください。

DNS

DNS プロファイル

macOS には、暗号化 DNS、フィルタリング、DNSSEC を設定するための「DNS 構成プロファイル」機能があります。

DNS プロファイルは、作成するか、Quad9、AdGuard、NextDNS などのプロバイダーから入手できます。

hosts ファイル

hosts ファイル を使用して、マルウェア、広告、その他の不要なサービスに関連するドメインをブロックします。

A レコード でドメインをブロックするには、次のいずれかの行を /etc/hosts に追加します。``` 0 example.com 0.0.0.0 example.com 127.0.0.1 example.com

root@kitploit:~
> [!NOTE]
> IPv6はAレコードではなくAAAAレコードを使用します: `::1 example.com` エントリを含めることでIPv6接続をブロックします。

多くのドメインリストがオンラインで入手できます。`/etc/hosts` に追加する前に、各エントリが `0`、`0.0.0.0`、または `127.0.0.1` で始まることを確認し、`127.0.0.1 localhost` エントリを保持してください。

一般的なホストリストには以下があります:
- [StevenBlack/hosts](https://github.com/StevenBlack/hosts)
- [Sinfonietta/hostfiles](https://github.com/Sinfonietta/hostfiles)
- [someonewhocares.org](https://someonewhocares.org/hosts/zero/hosts)

ホストファイルにリストをダウンロードして追加するには、[tee](https://man7.org/linux/man-pages/man1/tee.1.html) コマンドを使用します:```bash
curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts |
  sudo tee -a /etc/hosts

Little Snitch は ブロックリスト にも対応しています。

DNSCrypt

DNS トラフィックを暗号化するには、DNSCrypt/dnscrypt-proxy を検討してください。信頼できるリゾルバーを設定すると、DNSCrypt は DNS クエリを暗号化します。さらに、DNSSEC は、サポートされている場合、署名済みの DNS レスポンスを検証できます。

Homebrew から DNSCrypt をインストールし、指示に従って dnscrypt-proxy を設定して起動します:```bash brew install dnscrypt-proxy

root@kitploit:~
DNSCryptをDnsmasqと一緒に使用する場合、次のコマンドを実行してDNSCrypt設定ファイルを特定します:```bash
brew info dnscrypt-proxy | grep dnscrypt-proxy.toml | head -1

このコマンドは、/opt/homebrew/etc/dnscrypt-proxy.toml のようなパスを表示するはずです。

デフォルトでは、dnscrypt-proxy は 127.0.0.1:53 で待ち受け、設定された 1 つ以上の DNS プロバイダーにクエリを送信します。設定を編集し、listen_addresses を 53 以外のポート(例: 5355)に変更してください:```toml listen_addresses = ['127.0.0.1:5355', '[::1]:5355']

root@kitploit:~
DNSCrypt を開始:```bash
sudo brew services restart dnscrypt-proxy

DNSCrypt が実行されていることを確認してください:```console $ sudo lsof +c 15 -Pni UDP:5355 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dnscrypt-proxy 15244 nobody 7u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355 dnscrypt-proxy 15244 nobody 10u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355 dnscrypt-proxy 15244 nobody 12u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355 dnscrypt-proxy 15244 nobody 14u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355

root@kitploit:~
さらに、これらのpfルールは、ループバックインターフェイス外のポート53への通常のDNSトラフィックをブロックし、[DNSリーク](https://dnsleaktest.com/)のリスクを低減します:```console
block drop quick on !lo0 proto udp from any to any port = 53
block drop quick on !lo0 proto tcp from any to any port = 53

Dnsmasq

dnsmasq は、応答をキャッシュし、未修飾名に対するアップストリームクエリを防ぎ、トップレベルドメイン全体をブロックできます。

DNSCrypt と組み合わせて使用すると、DNS トラフィックを暗号化できます。

DNSCrypt を使用しない場合は、少なくとも ISP が提供するもの以外の DNS リゾルバーを選択してください。一般的な代替手段としては、Google DNS と OpenDNS があります。

Dnsmasq をインストール:```bash brew install dnsmasq

root@kitploit:~
[drduh/config/dnsmasq.conf](https://github.com/drduh/config/blob/main/dnsmasq.conf) またはデフォルトの設定ファイルをダウンロードして編集します。

特定の宛先をブロックするために追加できるドメインリストの例については、[drduh/config/domains](https://github.com/drduh/config/tree/main/domains) を参照してください。

プログラムをインストールして起動します([特権ポート](https://unix.stackexchange.com/questions/16564/why-are-the-first-1024-ports-restricted-to-the-root-user-only) 53にバインドするには sudo が必要です):```bash
sudo brew services start dnsmasq

ローカルDNSサーバーとしてdnsmasqを設定するには、システム設定 > ネットワーク を開き、現在使用中のネットワーク接続(Wi-Fiなど)を選択して、DNSタブを開き、+ を選択して 127.0.0.1 を追加します。または、次を使用します:```bash sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1

root@kitploit:~
Dnsmasq が設定されていることを確認してください:```console
$ scutil --dns | head
DNS configuration

resolver #1
  search domain[0] : whatever
  nameserver[0] : 127.0.0.1
  flags    : Request A records, Request AAAA records
  reach    : 0x00030002 (Reachable,Local Address,Directly Reachable Address)

$ networksetup -getdnsservers "Wi-Fi"
127.0.0.1

[!NOTE] 一部のVPNアプリケーションは接続時にDNS設定を上書きします。issue 24 と drduh/config/scripts/macos-dns.sh を参照してください。

認証局

macOSには、世界中の企業、政府、その他の組織によって運営される信頼されたルート証明機関(CA)のセットが含まれています。信頼されたCAは、macOSとブラウザがHTTPS接続に対して受け入れる可能性のある証明書を発行できるため、ルートCAストアはシステムの信頼境界の重要な部分となっています。

Appleが提供する信頼されたルートストアを理解するには、キーチェーンアクセス または security コマンドラインツールと /System/Library/Keychains/SystemRootCertificates.keychain ファイルを使用して システムルート を検査します。キーチェーンアクセスは次のコマンドでも起動できます:```bash open "/System/Library/CoreServices/Applications/Keychain Access.app"

root@kitploit:~
また、**ログイン**、**ローカル項目**、**システム**キーチェーン内に、ユーザー、管理者、VPNクライアント、セキュリティ製品、またはモバイルデバイス管理アプリケーションによって追加された可能性のある証明書も確認してください。

選択した証明書を無効にするには、その信頼設定を**信頼しない**に変更し、確認のためにウィンドウを閉じます。これにより、詐欺的な証明書を使用して暗号化トラフィックを[サイレントに傍受](https://en.wikipedia.org/wiki/DigiNotar#Issuance_of_fraudulent_certificates)する[MITM](https://wikipedia.org/wiki/Man-in-the-middle_attack)攻撃のリスクを軽減できる可能性があります。

> [!WARNING]
> 証明機関の信頼設定を削除または変更すると、Webサイト、ソフトウェアアップデート、エンタープライズネットワーク、VPN、キャプティブポータル、その他のサービスが壊れる可能性があります。

現在のトラストストア情報については、Appleの[利用可能な信頼済み証明書](https://support.apple.com/103723)および[ブロック済み証明書](https://support.apple.com/103247#blocked)のリストを参照してください。

# Privoxy

Webトラフィックをフィルタリングするためのローカルプロキシとして[Privoxy](https://www.privoxy.org/)の使用を検討してください。

Homebrewを使用してPrivoxyをインストールして起動します:```bash
brew install privoxy
brew services start privoxy

あるいは、Privoxy用の署名付きインストールパッケージは、公式サイトまたはSourceforgeから入手できます。署名付きパッケージはHomebrew版よりも安全で、Privoxyプロジェクトからサポートを受けています。

デフォルトでは、PrivoxyはローカルのTCPポート8118で待ち受けます。

アクティブなネットワークインターフェースのシステムHTTPプロキシを127.0.0.1、ポート8118に設定します:```bash sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8118

root@kitploit:~
システムの**HTTPS**プロキシを設定します:```bash
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8118

プロキシは システム設定 > ネットワーク > 詳細 > プロキシ でも設定できます。

プロキシが設定されていることを確認してください:```console $ scutil --proxy { ExceptionsList : { 0 : *.local 1 : 169.254/16 } FTPPassive : 1 HTTPEnable : 1 HTTPPort : 8118 HTTPProxy : 127.0.0.1 HTTPSEnable : 1 HTTPSPort : 8118 HTTPSProxy : 127.0.0.1 }

root@kitploit:~
ほとんどのWebトラフィックは暗号化されていますが、Privoxyはホスト名でリクエストをフィルタリングできます。たとえば、次のルールは、.net、github.com、およびAppleドメインへのトラフィックを除くすべてのトラフィックをブロックします。```console
{ +block{all} }
.

{ -block }
.apple.
.github.com
.net

Facebookドメインをブロックするには:```console { +block{facebook} } .cdninstagram. .facebook*. .fb. .fbcdn*. .fbinfra. .fbsbx. .fbstatic*. .fbsv. .fburl. .instagr.am .tfbnw. .thefacebook. fb*.akamaihd.net

root@kitploit:~
追加の Privoxy の例については、[drduh/config/privoxy/config](https://github.com/drduh/config/blob/main/privoxy/config) と [drduh/config/privoxy/user.action](https://github.com/drduh/config/blob/main/privoxy/user.action) を参照してください。Privoxy は、フィルタールールを編集した後に再起動する**必要はありません**。

トラフィックがブロックまたはリダイレクトされていることを確認するには、[curl](https://en.wikipedia.org/wiki/CURL) を使用するか、ブラウザで <http://p.p> の Privoxy インターフェースを開いてください:```console
$ ALL_PROXY=127.0.0.1:8118 curl example.com -IL | head
HTTP/1.1 403 Request blocked by Privoxy
Content-Length: 9001
Content-Type: text/html
Cache-Control: no-cache
Pragma: no-cache

$ ALL_PROXY=127.0.0.1:8118 curl github.com -IL | head
HTTP/1.1 302 Local Redirect from Privoxy
Location: https://github.com/
Content-Length: 0

HTTP/1.1 200 Connection established

HTTP/2 200
content-type: text/html; charset=utf-8

[!NOTE] アプリケーションやサービスはプロキシ設定を無視できます。pf は各アプリケーションを個別に設定しなくても、トラフィックをプロキシ経由でリダイレクトできます。

ブラウザ

ウェブブラウザは、信頼できないインターネットコンテンツをダウンロードして実行するため、重大なセキュリティとプライバシーのリスクをもたらします。

ブラウザのセキュリティ境界として重要なのが同一オリジンポリシー (SOP) です。これは、あるウェブサイトが別のウェブサイトのデータを読み取ることを防ぎます。バイパスされると、同じブラウザプロファイル内の他のサイトのデータや操作が露出する可能性があります。

一部のブラウザ攻撃は、ユーザーにソフトウェアのインストール、権限の付与、悪意のある拡張機能の使用を説得することに依存しています。予期しないダウンロード、拡張機能のプロンプト、ターミナルでのコマンド実行要求には特に注意してください。

ブラウザ拡張機能も重大なセキュリティリスクをもたらします。悪意のある、または質の低い拡張機能は、ブラウザ内のすべて(資格情報を含む)を危険にさらす可能性があります。ブラウザ拡張機能の使用は、信頼できる開発者が公開した必要不可欠なものに限定するべきです。

異なるアイデンティティや目的に応じて、ブラウザプロファイルを分けて使用してください。可能であれば、JavaScript を無効にし、ブラウザのサイト権限を使用して信頼できるサイトでのみ許可してください。

Mozilla Firefox、Google Chrome、Safari、Tor Browser は人気のあるブラウザで、それぞれ独自の機能と目的を持っています。

Firefox

Firefox は、Quantum と Photon プロジェクトを通じて、コードベースの主要部分を近代化しました。Quantum には、一部のコンポーネントを C++ から Rust に移行することが含まれます。Rust は、メモリ安全性と並行性安全性を向上させるように設計されたプログラミング言語です。

Firefox は、脆弱性の責任ある開示のためのバグ報奨金プログラムを含め、Chrome に匹敵するセキュリティモデルを提供しています。Firefox は4週間のリリースサイクルを採用しています。

推奨設定については、drduh/config/firefox.user.js と arkenfox/user.js を参照してください。また、スクリプトを選択的にブロックできる拡張機能である NoScript も参照してください。

Firefox はユーザーのプライバシーに重点を置いています。プライベートブラウジングモードでトラッキング保護をサポートしています。トラッキング保護はデフォルトのアカウントで有効にできますが、一部のウェブサイトではブラウジング体験が損なわれる可能性があります。Firefox の厳格なトラッキング保護モードでは、トラッキングに対抗するためにフィンガープリントをランダム化します。Firefox は個別のユーザープロファイルを提供します。ブラウジングはマルチアカウントコンテナで区切ることもできます。

Firefox は、WebExtension API を通じてのみ Web 拡張機能をサポートしています。この API は Chrome と非常によく似ています。Firefox での Web 拡張機能の提出は無料です。Firefox の Web 拡張機能はほとんどの場合オープンソースですが、一部の Web 拡張機能はプロプライエタリです。

Chrome

Google Chrome は、オープンソースの Chromium プロジェクトに基づいています。Chrome には、プロプライエタリなコンポーネント、自動更新、PDF ビューアー、メディアコーデックのサポート、クラッシュレポート、Google アカウントの統合が含まれています。詳細については、Chrome のプライバシー設定と Google のプライバシーポリシーを確認してください。

Chrome は、資格情報を含む複数のデバイス間でのアカウント同期を提供します。データはアカウントのパスワードで暗号化されます。

Chrome は世界で最も高いシェアを誇り、大多数の開発者にとって優先的なターゲットプラットフォームとなっています。主要なテクノロジーは Chrome のオープンソースコンポーネントに基づいています。たとえば、Chrome の V8 エンジンを使用する node.js、Chromium と node.js に基づく Electron フレームワークなどです。Chrome の膨大なユーザーベースは、脅威アクターとセキュリティ研究者にとって最も魅力的なターゲットとなっています。絶え間ない攻撃にもかかわらず、Chrome は長年にわたって印象的なセキュリティ実績を維持してきました。これは小さな偉業ではありません。

Chrome は個別のプロファイル、堅牢なサンドボックス、頻繁なアップデートを提供し、印象的な実績を持っています。さらに、Google は脆弱性報告に対して非常に高額な報奨金プログラムを提供しており、独自の Project Zero チームも擁しています。つまり、非常に才能があり意欲的な多数の人々が、常に Chrome のコードを監査し、セキュリティを強化しているということです。

ブラウザ設定で V8 最適化(JavaScript エンジンのパフォーマンス機能)を無効にすることを検討してください。セキュリティ上のトレードオフについてはこの解説を参照してください。

uBlock Origin Lite でトラッカーをブロックしてください。

DNS プリフェッチを無効にしてください(DNS プリフェッチとそのプライバシーへの影響を参照)。Chrome は Google のパブリックネームサーバー 8.8.8.8 と 8.8.4.4 を使用して DNS を解決しようとする可能性があります。

詳細については、Chromium Security と Chromium Privacy を参照してください。個人情報がどのように収集・使用されるかを理解するには、Google のプライバシーポリシーをお読みください。

Safari

Safari は Apple の標準ブラウザであり、macOS に統合されており、Apple 製ハードウェアでのバッテリー効率の改善を提供します。

Safari にはオープンソースとプロプライエタリの両方のコンポーネントがあります。Safari は、macOS エコシステムで広く使われているオープンソースの Web エンジン WebKit に基づいています。WebKit は、メール、ブックス、App Store などの Apple アプリで使用されています。Chrome の Blink エンジンは WebKit のフォークであり、両エンジンには多くの類似点があります。

Safari は、ユーザーのセキュリティとプライバシーに役立つ特定の独自機能をサポートしています。コンテンツブロッカーは、JavaScript を使用せずにコンテンツブロッキングルールを作成できるようにします。このルールベースのアプローチにより、メモリ使用量、セキュリティ、プライバシーが大幅に向上します。Safari 11 では、インテリジェントトラッキング防止が導入されました。これは、トラッカーのウェブサイトからユーザーが一定期間操作しないと、Safari に保存されたトラッキングデータを削除します。Safari はトラッキングを減らすためにブラウザフィンガープリントをランダム化できます。Safari は、セキュリティとプライバシーの理由から、WebUSB や Battery API などの特定の機能を意図的にサポートしていません。Safari のプライベートタブには分離された Cookie とキャッシュがあり、タブを閉じると破棄されます。Safari は、Cookie とブラウジングを分離するための Firefox のマルチアカウントコンテナに相当するプロファイルもサポートしています。Safari は、サイトごとに無効化できるロックダウンモードを使用すると、大幅にセキュリティを強化できます。Safari のトラッキング防止について詳しくは、こちらを参照してください。

Safari の Web 拡張機能には、Web Extension API に加えて、Safari のサンドボックス環境でネイティブコードを使用するオプションもあります。Safari の Web 拡張機能は、Apple App Store を通じて配布されます。App Store への提出には、Web 拡張機能のコードが Apple によって監査されるという追加の利点があります。一方、App Store への提出には高額なコストがかかります。年間の開発者サブスクリプション料金は 100 USD です(Chrome の 5 USD、Firefox の無料提出とは対照的です)。この高額なコストは、大多数のオープンソース開発者にとって障壁となります。その結果、Safari には選択できる拡張機能が非常に少ないのが現状です。ただし、拡張機能をインストールする際は、この高額なコストを念頭に置いてください。ほとんどの Web 拡張機能には、開発コストを賄うための何らかの収益化手段があると予想されます。レビュー用のオープンソースコードが利用できない Web 拡張機能は避けてください。

Safari は、ユーザー設定とパスワードを iCloud キーチェーンと同期します。保存されたパスワードを表示するには、現在のデバイスのアカウントパスワードまたは別の設定済み認証方法による認証が必要です。

Safari は新しい Web 機能の実装が Chrome や Firefox より遅いですが、セキュリティパッチはシステムアップデートを通じて迅速に提供されます。

ハイパーリンク監査ビーコンを無効にするには、el1t/uBlock-Safari も参照してください。

Web ブラウザのプライバシー

ウェブサイトは、設定、フォント、画面サイズ、言語、IP アドレス、ブラウザの動作から、ブラウザとデバイスに関する情報を推測します。この情報はブラウザフィンガープリンティングに寄与します。

セキュリティを意識したブラウジングと、ブラウザが送信するデータについての詳細は、HowTo: プライバシーとセキュリティを意識したブラウジング、browserleaks.com、Am I Unique?、EFF Cover Your Tracks のリソースを参照してください。

クロスサイトトラッキングを減らすには、サードパーティ Cookie をブロックしてください。

また、ローカルまたは(VPN に接続している場合は)パブリックな IP アドレスを漏えいする可能性がある WebRTC にも注意してください。Firefox と Chrome/Chromium では、この機能は uBlock Origin で無効にできます。ロックダウンモードは Safari でも WebRTC を無効化します。

Tor

Tor は、ブラウジング中に追加のプライバシーを提供できる匿名性ネットワークです。Tor Browser は、Tor ネットワークを使用するように設定された、Firefox ベースの改変ブラウザです。

Tor Project から Tor Browser をダウンロードしてください。検証のための dmg ファイルと asc ファイルの両方を取得してください:```console $ cd ~/Downloads

$ file tor-browser-macos-* tor-browser-macos-15.0.17.dmg: XZ compressed data, checksum NONE tor-browser-macos-15.0.17.dmg.asc: PGP signature Signature (old)

$ gpg --verify tor-browser-macos-*.asc [...] gpg: Can't check signature: No public key

$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected] gpg: key 0x4E2C6E8793298290: public key "Tor Browser Developers (signing key) [email protected]" imported gpg: Total number processed: 1 gpg: imported: 1 pub rsa4096/0x4E2C6E8793298290 2014-12-15 [C] [expires: 2027-07-15] Key fingerprint = EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 uid [ unknown] Tor Browser Developers (signing key) [email protected] sub rsa4096/0x157432CF78A65729 2024-07-15 [S] [expires: 2026-10-26] Key fingerprint = CAAE 408A EBE2 288E 96FC 5D5E 1574 32CF 78A6 5729

$ gpg --verify tor-browser-macos-*.asc gpg: assuming signed data in 'tor-browser-macos-15.0.17.dmg' gpg: Signature made Sun Jun 28 15:35:20 2026 PDT gpg: using RSA key CAAE408AEBE2288E96FC5D5E157432CF78A65729 gpg: Good signature from "Tor Browser Developers (signing key) [email protected]" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290 Subkey fingerprint: CAAE 408A EBE2 288E 96FC 5D5E 1574 32CF 78A6 5729

root@kitploit:~
出力に `Good signature from "Tor Browser Developers (signing key) <[email protected]>"` が表示されていることを確認してください。キーが個人検証されておらず、信頼できるキーリングに追加されていないため、警告が表示されるのは想定どおりです。

詳細については、[Tor Browser の署名を検証するにはどうすればよいですか?](https://support.torproject.org/tbb/how-to-verify-signature/) を参照してください。

Tor Browser のインストールを完了するには、ディスクイメージを開いて Applications フォルダにドラッグするか、次のコマンドを使用します:```bash
hdiutil mount tor-browser-macos-15.0.17.dmg
cp -r /Volumes/Tor\ Browser/Tor\ Browser.app/ ~/Applications/

アプリケーションがThe Tor ProjectのApple Developer ID (MADPSAYN6T)によって署名されていることを確認してください:```console $ spctl --assess -vv ~/Applications/Tor\ Browser.app /Users/user1/Applications/Tor Browser.app: accepted source=Notarized Developer ID origin=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)

$ pkgutil --check-signature ~/Applications/Tor\ Browser.app Package "Tor Browser.app": Status: signed by a certificate trusted by macOS Certificate Chain: 1. Developer ID Application: The Tor Project, Inc (MADPSAYN6T) Expires: 2028-10-11 17:57:46 +0000 SHA256 Fingerprint: 76 3C 89 02 ED CB AD 8E 59 86 1E 93 D3 05 5B 28 F9 04 0C 96 03 8B 16 28 9F 38 64 ED 53 45 B4 DA ------------------------------------------------------------------------ 2. Developer ID Certification Authority Expires: 2031-09-17 00:00:00 +0000 SHA256 Fingerprint: F1 6C D3 C5 4C 7F 83 CE A4 BF 1A 3E 6A 08 19 C8 AA A8 E4 A1 52 8F D1 44 71 5F 35 06 43 D2 DF 3A ------------------------------------------------------------------------ 3. Apple Root CA Expires: 2035-02-09 21:40:36 +0000 SHA256 Fingerprint: B0 B1 73 0E CB C7 FF 45 05 14 2C 49 F1 29 5E 6E DA 6B CA ED 7E 2C 68 C5 BE 91 B5 A1 10 01 F0 24

root@kitploit:~
`codesign` コマンドを使用して、アプリケーションのコード署名を調べることもできます:```console
$ codesign -dvv ~/Applications/Tor\ Browser.app
Executable=/Users/user1/Applications/Tor Browser.app/Contents/MacOS/firefox
Identifier=org.torproject.torbrowser
Format=app bundle with Mach-O universal (x86_64 arm64)
CodeDirectory v=20500 size=805 flags=0x10000(runtime) hashes=14+7 location=embedded
Signature size=9054
Authority=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jun 28, 2026 at 14:01:57
Notarization Ticket=stapled
Info.plist entries=27
TeamIdentifier=MADPSAYN6T
Runtime Version=15.5.0
Sealed Resources version=2 rules=13 files=208
Internal requirements count=1 size=188

署名されたアプリケーションの完全な証明書詳細を表示するには、codesign で抽出し、openssl でデコードします:```console $ codesign -d --extract-certificates ~/Applications/Tor\ Browser.app Executable=/Users/user1/Applications/Tor Browser.app/Contents/MacOS/firefox

$ file codesign* codesign0: Certificate, Version=3 codesign1: Certificate, Version=3 codesign2: Certificate, Version=3 Certificate, Version=02

$ openssl x509 -inform der -in codesign0 -subject -issuer -startdate -enddate -noout subject= /UID=MADPSAYN6T/CN=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)/OU=MADPSAYN6T/O=The Tor Project, Inc/C=US issuer= /CN=Developer ID Certification Authority/OU=G2/O=Apple Inc./C=US notBefore=Oct 11 17:57:47 2023 GMT notAfter=Oct 11 17:57:46 2028 GMT

$ openssl x509 -inform der -in codesign0 -fingerprint -noout SHA256 Fingerprint=76:3C:89:02:ED:CB:AD:8E:59:86:1E:93:D3:05:5B:28:F9:04:0C:96:03:8B:16:28:9F:38:64:ED:53:45:B4:DA

root@kitploit:~
Tor Browserは、トラフィックを識別またはブロックしにくくするための、[プラガブル・トランスポート](https://support.torproject.org/tor-browser/circumvention/)と呼ばれる特別な接続方法を使用できます。これは、[リレー](https://support.torproject.org/relays/)を設定するか、既存の[ブリッジ](https://bridges.torproject.org/)を使用することで実現できます。

Torネットワークは[匿名性](https://www.privateinternetaccess.com/blog/2013/10/how-does-privacy-differ-from-anonymity-and-why-are-both-important/)を提供しますが、これは必ずしもプライバシーと同じではありません。このネットワークは、トラフィック分析と関連付けが可能なグローバルな観察者に対して防御するものではありません。また、[Seeking Anonymity in an Internet Panopticon](https://bford.info/pub/net/panopticon-cacm.pdf)と[Traffic Correlation on Tor by Realistic Adversaries](https://www.ohmygodel.com/publications/usersrouted-ccs13.pdf)も参照してください。

詳細については、[Torプロトコル仕様](https://spec.torproject.org/tor-spec/)を参照してください。

また、[Invisible Internet Project (I2P)](https://geti2p.net/en/about/intro)とその[Torとの比較](https://geti2p.net/en/comparison/tor)も参照してください。

# VPN

文書化された最新のプロトコルと十分に監査済みのクライアントを備えたVPNプロバイダーまたはセルフホスト型セットアップを選択してください。[PPTP](https://en.wikipedia.org/wiki/Point-to-Point_Tunneling_Protocol#Security)のような古いプロトコルは避け、[OpenVPN](https://en.wikipedia.org/wiki/OpenVPN)または[WireGuard](https://www.wireguard.com/)を[Linux VM上で](https://github.com/mrash/Wireguard-macOS-LinuxVM)、または[クロスプラットフォームツール](https://www.wireguard.com/xplatform/)のセットを介して使用してください。

一部のVPNクライアントは、接続が中断または切断されたときに、次に利用可能なネットワークインターフェースを介してトラフィックを送信する場合があります。VPN経由でのみトラフィックを許可する方法の例については、[scy/8122924](https://gist.github.com/scy/8122924)を参照してください。

仮想マシン([hwdsl2/setup-ipsec-vpn](https://github.com/hwdsl2/setup-ipsec-vpn))またはDockerコンテナ([hwdsl2/docker-ipsec-vpn-server](https://github.com/hwdsl2/docker-ipsec-vpn-server))上で[IPsec](https://en.wikipedia.org/wiki/Ipsec) VPNをセットアップするためのガイドを参照してください。

VPNプロバイダーの地理的な位置を考慮することは価値があるかもしれません。さらなる議論については、[issue 114](https://github.com/drduh/macOS-Security-and-Privacy-Guide/issues/114)を参照してください。

また、macOS内蔵のVPN L2TP/IPsecと[IKEv2](https://en.wikipedia.org/wiki/IKEv2)クライアントに関するこの[技術概要](https://blog.timac.org/2018/0717-macos-vpn-architecture/)も参照してください。

# PGP/GPG

PGPは、特に電子メールにおけるデータの暗号化と署名のための標準規格です。鍵を正しく交換および検証した通信者間のメッセージ内容を保護できますが、電子メールの受信者や件名などのメタデータは保護しません。

GPG(GNU Privacy Guard)は、PGP標準に準拠したGPLライセンスのオープンソースプログラムです。ソフトウェア署名を検証し、[対称鍵暗号](https://en.wikipedia.org/wiki/Symmetric-key_algorithm)または[公開鍵](https://en.wikipedia.org/wiki/Public-key_cryptography)を使用してファイルを暗号化できます。

GnuPGはHomebrewでインストール(`brew install gnupg`)するか、[GPG Suite](https://gpgtools.org/)をインストールしてください。

推奨設定を使用するには、[gpg.conf](https://github.com/drduh/YubiKey-Guide/blob/main/config/gpg.conf)をダウンロードしてください:```bash
curl -o ~/.gnupg/gpg.conf \
  https://raw.githubusercontent.com/drduh/YubiKey-Guide/main/config/gpg.conf

drduh/YubiKey-Guide を参照して、認証情報を生成・管理してください。

メール

メールは、既定では強力なプライバシーを提供するようには設計されていません。メッセージの内容は、サービスプロバイダーによって保持されたり、受信者のメールボックスにコピーされたり、転送されたり、アカウントの侵害によって公開されたりする可能性があります。メタデータ(受信者、件名、タイムスタンプ、メールサーバー情報など)は、メッセージの内容が暗号化されている場合でも、一般的に表示されたままになります。

Thunderbird

Thunderbird は、標準の IMAP、POP、CalDAV、CardDAV をサポートする、無料かつオープンソースのメールクライアントです。プロバイダーのリモートサーバーだけに依存するのではなく、メールにアクセスしてローカルコピーを保持するための適切な選択肢です。

Thunderbird は OpenPGP によるメール暗号化をサポートしており、メッセージの内容を保護し、暗号学的な 署名 を提供できます。機密性の高い通信で鍵に依存する前に、必ず独立したチャネルを通じて公開鍵のフィンガープリントを検証してください。

メッセージのアーカイブ機能 を使用すると、メッセージをリモートメールサーバーから ローカルフォルダ に移動できるため、プライバシーが向上します。

メッセンジャー

XMPP

XMPP は、IETF によって開発された オープンプロトコル であり、クロスプラットフォームのフェデレーテッドメッセージングをサポートします。クライアントの選択肢 は多数あります。ブラウザのサンドボックスを活用するには、ブラウザベースのクライアントのいずれかの使用を検討してください。

プロバイダーによっては、アカウントの設定にユーザー名とパスワード以外は不要な場合もあります。

XMPP は既定ではエンドツーエンド暗号化(E2EE)されていません。互換性のあるクライアントで OMEMO を使用してください。

Signal

Signal は人気のある E2EE メッセンジャーであり、その ダブルラチェット プロトコルは WhatsApp、Google メッセージ、Facebook Messenger など多くの他のアプリケーションで使用されています。

Signal デスクトップアプリを使用するには、まずスマートフォンに Signal をインストールする必要があります。

追加のガイダンスについては、EFF の Signal ガイド を参照してください。

iMessage

iMessage は Apple 純正のメッセンジャーです。使用するには Apple Account が必要です。

連絡先キー検証 を有効にして、連絡先を検証してください。

iMessage は、電話番号またはメールアドレス のどちらでも使用できます。

[!WARNING] 既定では iCloud バックアップが有効になっており、E2EE なしでメッセージの暗号化キーのコピーが Apple のサーバー に保存されます。これを防ぐには、iCloud バックアップを無効にする か、高度なデータ保護 を有効にしてください。メッセージの受信者にも同じ設定を行うよう促してください。

マルウェア

一般的な macOS マルウェアがどのように永続化するかを学ぶには、Mac OS X におけるマルウェアの永続化手法 と OS X Yosemite におけるマルウェアの永続化 を参照してください。

高度な macOS マルウェア機能の例については、Hacking Team の資料 を参照してください。さらなる分析については、MacOS 向け root インストール、Mac Agent 用サポートドライバ、RCS Agent for Mac を参照してください。

また、RCS インプラントインストーラの簡単な分析 と reverse.put.as も参照してください。

ソフトウェアのダウンロード

App Store のアプリケーション、または Apple によって公証(ノータリゼーション)された アプリケーションはマルウェアのリスクを軽減する可能性がありますが、どちらのプロセスも安全性を保証するものではありません。Apple は公証されたアプリに対して自動チェックを実行し、App Store のアプリは 審査 を受けます。それ以外の場合は、開発者が公式のものとして特定したソースからソフトウェアを入手し、Web サイトまたはコマンドラインでのダウンロードが HTTPS を使用していることを確認してください。

App Sandbox

アプリが App Sandbox を使用しているかどうかを確認してください:```bash codesign --display --entitlements -
/System/Applications/Calculator.app 2>&1 | grep -A2 com.apple.security.app-sandbox

root@kitploit:~
App Sandbox を有効にすると、出力は次のようになります:```console
[Key] com.apple.security.app-sandbox
[Value]
    [Bool] true

Activity Monitor では、"Sandbox" 列を表示することで、有効かどうかを示すこともできます:```bash defaults write com.apple.ActivityMonitor "UserColumnsPerTab v6.0"
-dict-add 0 '(Command, CPUUsage, CPUTime, Threads, IdleWakeUps, Architecture, GPUUsage, GPUTime, PID, UID, Sandbox, restricted)'

root@kitploit:~
App Store のソフトウェアは App Sandbox を使用する必要があります。Google Chrome などのアプリケーションは独自の [sandbox](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/design/sandbox.md) を使用しており、App Sandbox を使用しない場合もあります。

> [!NOTE]
> サンドボックス化はアプリケーションのデフォルトのアクセスを制限しますが、エンタイトルメントとユーザーが付与した権限によってアクセスを拡張できます。

## Hardened Runtime

アプリケーションが [Hardened Runtime](https://developer.apple.com/documentation/security/hardened_runtime) を使用しているか確認します:```bash
codesign --display --verbose /path/to/application.app

ハードンドランタイム(Hardened Runtime)が有効な場合、出力に flags=0x10000(runtime) が表示されます。

この機能が有効なすべてのアプリケーションを一覧表示します:```bash for app in /Applications/.app /System/Applications/.app; do if codesign -dvv "$app" 2>&1 | grep -q 'flags=0x10000(runtime)'; then echo "$app" fi done

root@kitploit:~
**アクティビティモニタ**には「制限」列を表示するオプションがあり、プログラムがmacOSの[動的リンカ](https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html)を介したコードインジェクションを制限されていることを示します。

Hardened Runtimeは、配布アプリの公証を受けるための前提条件です。

## アンチウイルス

ファイルやアプリケーションをスキャンするには、[VirusTotal](https://www.virustotal.com/gui/home/upload)へのアップロードを検討してください。ただし、これにより公開表示されることに注意してください。

macOSには[XProtect](https://support.apple.com/guide/security/protecting-against-malware-sec469d47bd8)と呼ばれるウイルス対策ソフトウェアが組み込まれており、バックグラウンドで実行され、マルウェア検出に使用するシグネチャを自動的に更新します。マルウェアが検出された場合、XProtectはそれを削除して隔離しようとします。

XProtectの更新状況を確認:```bash
xprotect version

BlockBlock や hazcod/maclaunch のようなアプリケーションは、持続的なマルウェアの防止や検出に役立つ可能性があります。

アンチウイルスソフトウェアは一般的なマルウェアの検出に役立ちますが、多くの場合、広範なシステム特権で実行されるため、攻撃対象領域を増やす可能性もあります。一部の製品は、ベンダーにテレメトリやサンプルを送信することもあります。

Sophail: Applied attacks against Antivirus、Analysis and Exploitation of an ESET Vulnerability、Popular Security Software Came Under Relentless NSA and GCHQ Attacks、How Israel Caught Russian Hackers Scouring the World for U.S. Secrets を参照してください。

Gatekeeper

Gatekeeper は、ソフトウェアの公証と来歴を検証します。

Gatekeeper は、公証されていないアプリケーションを開こうとすると警告を表示します。失敗した試行後、システム設定 > プライバシーとセキュリティ に表示されるアプリケーションを選択することで、これを回避できます。

Gatekeeper が有効かどうかを確認します:```bash spctl --status --verbose

root@kitploit:~
# System Integrity Protection

System Integrity Protection が有効になっていることを確認するには、`csrutil status` コマンドを使用します。このコマンドは `System Integrity Protection status: enabled.` を返すはずです。それ以外の場合は、[リカバリモード](https://support.apple.com/102518) を使用して [SIP を有効化](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection) してください。

# メタデータとアーティファクト

macOS はファイルにメタデータ([APFS 拡張属性](https://en.wikipedia.org/wiki/Extended_file_attributes#macOS))を付加します。

一部のメタデータ属性は、[`mdls`](https://ss64.com/mac/mdls.html) コマンドと [`xattr`](https://ss64.com/mac/xattr.html) コマンドで表示および削除できます。設定(`plist`)ファイルは、[`defaults`](https://ss64.com/mac/defaults.html) コマンドで読み取りおよび変更できます。

システムおよびアプリケーションのメタデータは、次の場所にあります:

- `~/Library/Preferences/`
- `~/Library/Containers/<APP>/Data/Library/Preferences`
- `/Library/Preferences`

Bluetooth 情報:

- `/Library/Preferences/com.apple.Bluetooth.plist`

プリンタジョブのキャッシュ:

- `/var/spool/cups`

以前接続した iOS デバイス:

- `/Users/$USER/Library/Preferences/com.apple.iPod.plist`
- `/Library/Preferences/com.apple.iPod.plist`

Finder の環境設定:

- `~/Library/Preferences/com.apple.finder.plist`
- `~/Library/Preferences/com.apple.sidebarlists.plist`

診断データ:

- `/var/db/CoreDuet`
- `/var/db/diagnostics`
- `/var/db/systemstats`
- `/var/db/uuidtext`
- `/var/log/DiagnosticMessages`

スペルと言語の候補:

- `~/Library/LanguageModeling`
- `~/Library/Spelling`
- `~/Library/Suggestions`

アプリケーションの状態:

- `~/Library/Saved\ Application\ State`
- `~/Library/Containers/<APPNAME>/Data/Library/Saved\ Application\ State`

自動保存メタデータ:

- `~/Library/Containers/<APP>/Data/Library/Autosave\ Information`
- `~/Library/Autosave\ Information`

Siri の分析:

- `~/Library/Assistant/SiriAnalytics.db`

QuickTime Player の履歴:

- `~/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Preferences/com.apple.QuickTimePlayerX.plist`

その他のメタデータ:

- `~/Library/Containers/com.apple.appstore/Data/Library/Preferences/com.apple.commerce.knownclients.plist`
- `~/Library/Preferences/com.apple.commerce.plist`
- `~/Library/Preferences/com.apple.QuickTimePlayerX.plist`

# 認証

[Passwords](https://support.apple.com/guide/passwords/the-passwords-app-mchl901b1b95/mac) アプリは [安全な認証情報](https://support.apple.com/guide/security/automatic-strong-passwords-secc84c811c4/web) を作成します。また、[パスキー](https://fidoalliance.org/passkeys/) に対応しています。パスキーは、互換性のあるサービスで使用するとフィッシングに耐性を持つように設計された認証情報です。

[KeePassXC](https://keepassxc.org/) は、検討に値するオープンソースのクロスプラットフォーム対応パスワードマネージャーです。互換性のあるハードウェアトークンによる強力な認証と、認証情報を自動入力するブラウザ拡張機能をサポートしています。

覚えやすいパスワードは [Diceware](https://secure.research.vt.edu/diceware/) で作成できます。

オンラインアカウントで [多要素認証](https://en.wikipedia.org/wiki/Multi-factor_authentication) を有効にしてください。対応サービスでは、ハードウェアトークンやパスキーなど、フィッシング耐性のある認証を優先してください。認証アプリは SMS コードよりも望ましいですが、パスワードのみの認証よりは、どのような MFA でも優れています。

[YubiKey](https://www.yubico.com/products/) は人気のあるハードウェア認証トークンです。暗号化、署名、認証タスク用の鍵も保存できます - [drduh/YubiKey-Guide](https://github.com/drduh/YubiKey-Guide) を参照してください。

GnuPG はパスワードやその他の暗号化ファイルの管理にも使用できます - [drduh/Purse](https://github.com/drduh/Purse) と [drduh/pwd.sh](https://github.com/drduh/pwd.sh) を参照してください。

# バックアップ

ファイルを外部メディアやオンラインサービスにバックアップする前に、ローカルで暗号化してください。

[3-2-1 バックアップモデル](https://www.cisa.gov/sites/default/files/publications/data_backup_options.pdf) に従ってください。重要なデータのコピーを 3 つ保持し、少なくとも 2 種類の異なるメディアに保存し、少なくとも 1 つは別の物理的な場所に保管します。

## Time Machine

[Time Machine](https://support.apple.com/104984) は macOS でバックアップを処理するための組み込みツールです。外付けドライブまたはネットワークストレージを使用して、[暗号化された](https://support.apple.com/guide/mac-help/keep-your-time-machine-backup-disk-secure-mh21241) バックアップを作成してください。

## GnuPG

[GnuPG](https://www.gnupg.org/) はパスワードまたは公開鍵とともに使用でき、秘密鍵は [YubiKey](https://github.com/drduh/YubiKey-Guide) に保存されます。

パスワードを使用してディレクトリを圧縮および暗号化する:```bash
tar zcvf - ~/Downloads |
  gpg -c > ~/Downloads/backup-$(date +%F-%H%M%S).tar.gz.gpg

ディレクトリを復号化して解凍する:```bash gpg -o ~/Downloads/decrypted-backup.tar.gz -d ~/Downloads/backup-*.tar.gz.gpg tar zxvf ~/Downloads/decrypted-backup.tar.gz

root@kitploit:~
## Disk Utility

暗号化ボリュームは、[ディスクユーティリティ](https://support.apple.com/guide/disk-utility/toc) または `hdiutil` を使用して作成できます:```bash
hdiutil create ~/Downloads/encrypted.dmg -encryption -size 50M -volname "secretStuff"
hdiutil mount ~/Downloads/encrypted.dmg
cp -v ~/Documents/passwords.txt /Volumes/secretStuff
hdiutil eject /Volumes/secretStuff

Other

Tresorit と restic も有用かもしれません。

Wi-Fi

SSID と呼ばれる Wi-Fi ネットワーク名とデバイスのプローブ動作は、近隣や以前使用したネットワークに関する情報を明らかにする可能性があります。非表示ネットワークは意味のあるプライバシーを提供せず、デバイスがそれらを積極的にプローブする原因となることがあります。

プライベート Wi-Fi アドレスを設定して、ネットワーク追跡を減らします。

ワイヤレスネットワークのセキュリティを WPA3 に設定します。Apple のガイダンスに従って、ルーターとアクセスポイントの推奨設定を行います。

SSH

リモート SSH 接続には、パスフレーズまたはハードウェアトークンで保護された一意の SSH キーを使用し、サーバーのホストキーを検証し、パスワードベースの認証を避けます。推奨クライアントオプションについては drduh/config/ssh_config を参照してください。

SSH トンネルは、VPN と同様に、別のコンピュータを介してトラフィックを安全にルーティングできます。リモートホストのポート 8118 で実行されている Privoxy を使用するには:```bash ssh -C -L 5555:127.0.0.1:8118 [email protected] sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 5555 sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 5555

root@kitploit:~
または、SSH接続を[SOCKSプロキシ](https://www.mikeash.com/ssh_socks.html)として使用するには:```bash
ssh -NCD 3000 [email protected]

By default, macOS does not have Remote Login (SSH server) enabled.

To enable SSH and allow incoming connections, use System Settings > General > Sharing or the command:```bash sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

root@kitploit:~
パスワード認証を無効にし、SSHサーバー設定のさらなる[堅牢化](https://stribika.github.io/2015/01/04/secure-secure-shell.html)を検討してください。推奨オプションについては [drduh/config/sshd_config](https://github.com/drduh/config/blob/main/sshd_config) を参照してください。

SSHサーバーが稼働していることを確認してください:```bash
sudo lsof -Pni TCP:22

Physical access

安全でない場所にコンピュータを放置しないでください。監視のない物理的アクセスを許された熟練した攻撃者は、ハードウェアキーロガーをインストールして、パスワードを含むキーストロークを記録する可能性があります。内蔵キーボードまたはBluetoothキーボードを備えたMacを使用すると、この種の攻撃の市販品の多くはUSBキーボードとコンピュータの間に挿入するように設計されているため、この攻撃をより困難にできます。

Mac使用中の盗難の影響を軽減するには、buskill/buskill-appまたはLennolium/swiftGuardの使用を検討してください。

公共の場での使用には、プライバシースクリーン/フィルターの購入を検討してください。

マニキュアや開封防止シールをコンポーネントに貼り付けて、改ざんを検出できます。

監視

ログ

Consoleまたはlog streamコマンドでシステムログを監視します。

過去5分間のすべてのシステムログをクラシックなsyslog形式で出力します:```bash log show --last 5m --style syslog

root@kitploit:~
JSON配列として出力:```bash
log show --last 5m --style json

改行区切りのJSON(1行に1つのJSONオブジェクト)を出力します。jq で使用するために必要です:```bash log show --last 5m --style ndjson

root@kitploit:~
サブシステムでメッセージをフィルタリングします。例えば `com.apple.SoftwareUpdate` から:```bash
log show --last 1h --style json \
  --predicate 'subsystem == "com.apple.SoftwareUpdate"'

メッセージをコンテンツでフィルタリングします。例えば、failed を含むメッセージ:```bash log show --last 1h --predicate 'eventMessage CONTAINS "failed"'

root@kitploit:~
大文字と小文字を区別しないメッセージフィルタリング:```bash
log show --last 1h --predicate 'eventMessage CONTAINS[c] "error"'

jqで異なるエラーメッセージをカウント:```bash log show --last 1h --style ndjson
--predicate 'eventMessage CONTAINS[c] "error"' | jq -r '.eventMessage' | sort | uniq -c | sort -nr | head -100

root@kitploit:~
ログをアーカイブにエクスポートします。これはConsoleで開くことができます:```bash
log collect --last 1h --output ~/Downloads/logs-$(date +%F-%H%M).logarchive

DTrace

システム整合性保護はDTraceの動作を妨げるため、使用前に一部無効化する必要があります。

  • iosnoop はディスクI/Oを監視します
  • opensnoop はファイルオープンを監視します
  • execsnoop はプロセスを監視します
  • errinfo は失敗したシステムコールを監視します
  • dtruss はすべてのシステムコールを監視します

詳細は man -k dtrace を参照してください。

プロセス

アクティビティモニタまたは ps コマンドで実行中のプロセスを一覧表示します。

ネットワーク

開いているネットワーク接続を一覧表示します。```bash sudo lsof -Pni

root@kitploit:~
さまざまなネットワーク関連データ構造の内容を一覧表示します:```bash
sudo netstat -n -p tcp
sudo netstat -n -p udp | sort | uniq

Wireshark

Wireshark はコマンドラインから tshark を使用して利用できます。

en0 は、networksetup -listallhardwareports で表示されるアクティブなインターフェースに置き換えてください。

[!IMPORTANT] 監視する権限があるネットワークとシステムでのみトラフィックをキャプチャしてください。

DNS の監視:```bash /Applications/Wireshark.app/Contents/MacOS/tshark -i en0
-Y "dns.flags.response == 1" -Tfields
-e frame.time_delta
-e dns.qry.name
-e dns.a
-Eseparator=,

root@kitploit:~
HTTPの監視:```bash
/Applications/Wireshark.app/Contents/MacOS/tshark -i en0 \
  -Y "http.request or http.response" -Tfields \
  -e ip.dst \
  -e http.request.full_uri \
  -e http.request.method \
  -e http.response.code \
  -e http.response.phrase \
  -Eseparator=/s

TLS証明書を監視する:```bash /Applications/Wireshark.app/Contents/MacOS/tshark -i en0
-Y "ssl.handshake.certificate" -Tfields
-e ip.src
-e x509sat.uTF8String
-e x509sat.printableString
-e x509sat.universalString
-e x509sat.IA5String
-e x509sat.teletexString
-Eseparator=/s -Equote=d

root@kitploit:~
# その他

## スクリーンセーバー

スクリーンセーバーが起動したらすぐに画面をロックするように設定します:```bash
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0

診断データ

診断と使用状況データ を無効にします。

クラッシュレポーター(アプリがクラッシュした後に表示され、問題をAppleに報告するよう促すダイアログ)を無効にします:```bash defaults write com.apple.CrashReporter DialogType none

root@kitploit:~
## メディアプレイヤー

音楽ファイルやビデオファイルの再生には、内蔵メディアアプリケーションである [QuickTime Player](https://en.wikipedia.org/wiki/Quicktime_player) を使用します。これは [App Sandbox](https://developer.apple.com/documentation/security/app_sandbox/protecting_user_data_with_app_sandbox) と [Hardened Runtime](https://developer.apple.com/documentation/xcode/configuring-the-hardened-runtime) を利用し、基本システムの一部として [Signed System Volume](https://support.apple.com/guide/security/signed-system-volume-security-secd698747c9/web) の利点も受けられます。

## ファイルハンドラ

[既定のファイルハンドラ](https://support.apple.com/guide/mac-help/choose-an-app-to-open-a-file-on-mac-mh35597) を管理して、特定のファイルタイプを開く際のリスクを軽減します。

スクリプトファイルの既定のアプリを変更して、開いたときに実行せず内容を表示するようにします。

Finder で任意の .sh ファイルを見つけて選択し、右クリックして「情報を見る」を選ぶか、<kbd>Command</kbd> + <kbd>I</kbd> を押します。「このアプリケーションで開く」セクションで、ドロップダウンメニューから TextEdit を選択します。一覧にない場合は、「その他...」を選択し、アプリケーション > TextEdit.app を選択します。「すべて変更...」を選択し、「続ける」を選択して確認します。

## Finder オプション

Finder で隠しファイルとライブラリフォルダを表示する:```bash
defaults write com.apple.finder AppleShowAllFiles -bool true
chflags nohidden ~/Library

すべてのファイル名拡張子を表示:```bash defaults write NSGlobalDomain AppleShowAllExtensions -bool true

root@kitploit:~
Do not default to saving documents to iCloud:```bash
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false

カスタム umask

カスタム umask を設定します:```bash sudo launchctl config user umask 077

root@kitploit:~
再起動し、ファイル/ディレクトリを作成して、パーミッションを確認します(macOSのデフォルトでは「グループ/その他」の読み取りアクセスが許可されます):```console
$ ls -ld umask*
drwx------@ 2 user1 staff  64 Jul 26 12:00 umask.dir
-rw-------@ 1 user1 staff  32 Jul 26 12:00 umask.txt

キーボード入力

Terminal で セキュアキーボード入力 を有効にします(これは TextExpander などのアプリケーションに干渉する可能性があります)。

ネットワークの堅牢化

Bonjourマルチキャストアドバタイズメント を無効にします(これにより AirPlay および AirPrint 機能も無効になります):```bash sudo defaults write /Library/Preferences/com.apple.mDNSResponder
NoMulticastAdvertisements -bool YES

root@kitploit:~
[Handoffを無効にする](https://support.apple.com/guide/mac-help/change-airdrop-handoff-settings-mchl6a407f99)機能と[Bluetooth](https://support.apple.com/guide/mac-help/turn-bluetooth-on-or-off-blth1008)機能。

## Sudoers

macOSの`/etc/sudoers`には次の行が含まれています:```bash
Defaults env_keep += "HOME MAIL"

これにより、sudo は権限昇格時に HOME を変更しなくなります。その結果、sudo で実行されるプログラムは、呼び出し元ユーザーのホームディレクトリにある設定ファイルを使用する可能性があります。この動作が特に必要な場合を除き、env_keep から HOME を削除することを検討してください。

root ユーザーが非 root ユーザーのホームディレクトリを使用できる利便性を維持するには、/var/root/.zshrc に export 行を追加します。例:```bash export HOME=/Users/user1

root@kitploit:~
# 関連ソフトウェア

ソフトウェア | カテゴリ | 説明
:-: | :-: | :-
[lynis](https://github.com/CISOfy/lynis) | 監査スキャナ | システム構成をチェックし、堅牢化の改善案を提案するクロスプラットフォームのセキュリティ監査ツール。
[zentral](https://github.com/zentralopensource/zentral) | 監視・構成管理プラットフォーム | macOSエンドポイント向けのフリート管理サーバー。インベントリ、イベント、監査、osqueryの結果を収集する。管理された環境に最適。
[osquery](https://github.com/osquery/osquery) | 監視エンジン | オペレーティングシステムの状態をSQLテーブルとして公開し、プロセス、ユーザー、起動項目、ネットワーク接続などを繰り返しチェックできるようにする。
[pareto-mac](https://github.com/paretoSecurity/pareto-mac) | 監査スキャナ | Macを一般的なベースラインセキュリティ推奨事項に照らしてチェックするメニューバーアプリ。

# 追加リソース

- [iCloudのセキュリティとプライバシーの概要](https://support.apple.com/102651)
- [EFF監視セルフディフェンスガイド](https://ssd.eff.org/)
- [beerisgood/macOS_Hardening](https://github.com/beerisgood/macOS_Hardening)
- [macOSリバースエンジニアリングブログ](https://reverse.put.as/)
- [リバースエンジニアリングリソース](http://samdmarshall.com/re.html)
- [Malwarebytesブログ](https://www.malwarebytes.com/blog)
- [Objective-Seeのブログ](https://objective-see.com/blog.html)
- [CISベンチマーク](https://www.cisecurity.org/benchmark/apple_os/)
- [Appleオープンソース](https://opensource.apple.com/)
- [iOS、macOSの未来、自由、セキュリティ、そしてますます敵対的なグローバル環境におけるプライバシー](https://gist.github.com/iosecure/357e724811fe04167332ef54e736670d)
ツールをダウンロード
敵対者動機能力緩和策
ルームメイトプライベートなチャットや閲覧履歴を見る至近距離で接近可能;画面を見たり、認証情報を観察できる生体認証(指紋または顔)を使用し、プライバシーフィルムを使用し、使用しないときは電話をロックする
泥棒電話をロック解除して個人情報を盗み、銀行口座を引き出し、電話を現金化するパスワード入力の覗き見、放置されたログイン済みデバイスの窃取常にデバイスを物理的に管理し、使用しないときはデバイスをロックし、人前でのパスワード入力を避け、Find Myなどのサービスを使用して盗難デバイスを追跡またはリモートで無効化する
犯罪者金銭的利益ソーシャルエンジニアリング(情報を漏らしたり安全でない行動を取らせたりするためにユーザーを騙す)、容易に入手できるマルウェア、パスワードの再利用、脆弱性の悪用ソフトウェアをサンドボックス化し、OSのセキュリティ機能を有効にし、ソフトウェアのアップデートを自動的に維持する
企業ユーザーデータに基づくマーケティングテレメトリと行動データの収集ネットワーク接続をブロックし、デバイス固有の識別子をリセットし、支払いデータを追加しない
国家/APT標的型監視インターネットインフラの受動的監視、高度な暗号解析オープンソースソフトウェア、強力なダイスウェア認証情報、セキュアエレメントを備えたハードウェアを使用し、使用しないときはデバイスの電源を切り、tripwire / honeypot / カナリアトークンアラートを利用する
CommandTask
sudo pfctl -t blocklist -T showブロックリストを表示する
sudo pfctl -s rulesアクティブなルールを表示する
sudo pfctl -s statesステートテーブルを表示する
sudo ifconfig pflog0 createパケットログインターフェイスを作成する
sudo tcpdump -ni pflog0ブロックされたパケットを監視する
コマンドタスク
launchctl listユーザージョブを表示
sudo launchctl listシステムジョブを表示
launchctl list com.apple.Finderサービスを調べる
systemextensionsctl listシステム拡張機能を一覧表示
ls /System/Library/LaunchDaemonsシステムデーモンを一覧表示
ls /System/Library/LaunchAgentsシステムエージェントを一覧表示