macOS Keychain
WhiteIntelは、ダークウェブを活用した検索エンジンで、盗難マルウェアによる侵害を受けたかどうかを確認するための無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りとランサムウェア攻撃に対抗することです。
彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:
メインキーチェーン
ユーザーキーチェーン(
~/Library/Keychains/login.keycahin-db
)は、アプリケーションパスワード、インターネットパスワード、ユーザー生成証明書、ネットワークパスワード、ユーザー生成の公開/秘密鍵など、ユーザー固有の資格情報を保存するために使用されます。システムキーチェーン(
/Library/Keychains/System.keychain
)は、WiFiパスワード、システムルート証明書、システムの秘密鍵、システムアプリケーションパスワードなど、システム全体の資格情報を保存します。
パスワードキーチェーンアクセス
これらのファイルは、固有の保護を持たないため、ダウンロードできますが、ユーザーの平文パスワードが必要です。Chainbreakerのようなツールを使用して復号化できます。
キーチェーンエントリの保護
ACLs
キーチェーン内の各エントリは、**アクセス制御リスト(ACLs)**によって管理され、キーチェーンエントリでさまざまなアクションを実行できるユーザーを規定します。これには以下が含まれます:
ACLAuhtorizationExportClear:保持者が秘密のクリアテキストを取得できるようにします。
ACLAuhtorizationExportWrapped:保持者が別の提供されたパスワードで暗号化されたクリアテキストを取得できるようにします。
ACLAuhtorizationAny:保持者が任意のアクションを実行できるようにします。
ACLsには、これらのアクションをプロンプトなしで実行できる信頼されたアプリケーションのリストが付属しています。これには以下が含まれます:
N
il
(認証不要、誰もが信頼されています)空のリスト(誰もが信頼されていません)
特定のアプリケーションのリスト。
また、エントリには**ACLAuthorizationPartitionID
**というキーが含まれており、teamid、apple、cdhashを識別するために使用されます。
teamidが指定されている場合、エントリの値にアクセスするためには、使用されるアプリケーションが同じteamidを持っている必要があります。
appleが指定されている場合、アプリはAppleによって署名されている必要があります。
cdhashが示されている場合、アプリは特定のcdhashを持っている必要があります。
キーチェーンエントリの作成
Keychain Access.app
を使用して新しい エントリを作成する場合、次のルールが適用されます:
すべてのアプリが暗号化できます。
アプリケーションはエクスポート/復号化できません(ユーザーにプロンプトを表示せず)。
すべてのアプリが整合性チェックを見ることができます。
どのアプリもACLを変更できません。
partitionIDは**
apple
**に設定されています。
アプリケーションがキーチェーンにエントリを作成する場合、ルールは若干異なります:
すべてのアプリが暗号化できます。
エクスポート/復号化を行うことができるのは作成アプリケーション(または明示的に追加された他のアプリ)だけです(ユーザーにプロンプトを表示せず)。
すべてのアプリが整合性チェックを見ることができます。
どのアプリもACLを変更できません。
partitionIDは**
teamid:[ここにteamID]
**に設定されています。
キーチェーンへのアクセス
security
security
APIs
プロンプトを生成しないシークレットのキーチェーン列挙とダンプは、LockSmithというツールで行うことができます。
各キーチェーンエントリの情報をリスト化および取得:
API
SecItemCopyMatching
は各エントリに関する情報を提供し、使用する際に設定できるいくつかの属性があります:kSecReturnData
:trueの場合、データの復号を試みます(ポップアップを回避するためにfalseに設定)kSecReturnRef
:キーチェーンアイテムへの参照も取得します(後でポップアップなしで復号できることがわかった場合にtrueに設定)kSecReturnAttributes
:エントリに関するメタデータを取得しますkSecMatchLimit
:返す結果の数kSecClass
:どの種類のキーチェーンエントリか
各エントリのACLを取得:
API
SecAccessCopyACLList
を使用すると、キーチェーンアイテムのACLを取得し、ACLのリスト(ACLAuhtorizationExportClear
などの以前に言及されたもの)が返されます。各リストには以下が含まれます:説明
信頼されたアプリケーションリスト。これには次のようなものが含まれます:
アプリ:/Applications/Slack.app
バイナリ:/usr/libexec/airportd
グループ:group://AirPort
データをエクスポート:
API
SecKeychainItemCopyContent
は平文を取得しますAPI
SecItemExport
はキーと証明書をエクスポートしますが、コンテンツを暗号化してエクスポートするにはパスワードを設定する必要があります
そして、プロンプトなしでシークレットをエクスポートするための要件は次のとおりです:
1つ以上の信頼されたアプリがリストされている場合:
適切な認可が必要(
Nil
、またはシークレット情報にアクセスするための認可されたアプリのリストの一部である必要があります)コード署名がPartitionIDと一致する必要があります
コード署名が信頼されたアプリのものと一致する必要があります(または適切なKeychainAccessGroupのメンバーである必要があります)
すべてのアプリケーションが信頼されている場合:
適切な認可が必要
コード署名がPartitionIDと一致する必要があります
PartitionIDがない場合、これは必要ありません
したがって、1つのアプリケーションがリストされている場合、そのアプリケーションにコードをインジェクトする必要があります。
PartitionIDにappleが指定されている場合、**osascript
を使用してアクセスできます。つまり、PartitionIDにappleが含まれるすべてのアプリケーションを信頼しているものにアクセスできます。Python
**もこれに使用できます。
2つの追加属性
Invisible:UIキーチェーンアプリからエントリを非表示にするためのブールフラグです
General:メタデータを保存するためのものです(つまり、暗号化されていない)
Microsoftは、機密エンドポイントにアクセスするためのすべてのリフレッシュトークンを平文で保存していました。
参考文献
WhiteIntelは、ダークウェブを活用した検索エンジンであり、企業やその顧客が盗難マルウェアによって侵害されていないかをチェックするための無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。
彼らのウェブサイトをチェックし、無料でエンジンを試すことができます:
Last updated