macOS Sensitive Locations & Interesting Daemons
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
シャドウパスワードは、/var/db/dslocal/nodes/Default/users/
にあるplistにユーザーの設定と共に保存されます。
次のワンライナーを使用してユーザーに関するすべての情報(ハッシュ情報を含む)をダンプできます:
このようなスクリプト または こちらのスクリプト は、ハッシュを hashcat フォーマット に変換するために使用できます。
非サービスアカウントのすべてのクレデンシャルをハッシュキャットフォーマット -m 7100
(macOS PBKDF2-SHA512) でダンプする代替のワンライナー:
ユーザーの ShadowHashData
を取得する別の方法は、dscl
を使用することです: sudo dscl . -read /Users/`whoami` ShadowHashData
このファイルは 単一ユーザーモード でシステムが実行されているときに のみ使用されます(したがって、あまり頻繁ではありません)。
セキュリティバイナリを使用して 復号化されたパスワードをダンプ する際、いくつかのプロンプトがユーザーにこの操作を許可するように求めます。
このコメントに基づくと juuso/keychaindump#10 (comment)、これらのツールはBig Surではもう機能していないようです。
keychaindumpというツールは、macOSのキーチェーンからパスワードを抽出するために開発されましたが、Big Surのような新しいmacOSバージョンでは制限があります。keychaindumpの使用には、攻撃者がアクセスを得てroot権限を昇格させる必要があります。このツールは、ユーザーのログイン時にキーチェーンがデフォルトでロック解除されるという事実を利用しており、アプリケーションがユーザーのパスワードを繰り返し要求することなくアクセスできるようにしています。ただし、ユーザーが使用後にキーチェーンをロックすることを選択した場合、keychaindumpは無効になります。
Keychaindumpは、Appleによって認証および暗号操作のためのデーモンとして説明されている特定のプロセスsecuritydをターゲットにして動作します。抽出プロセスは、ユーザーのログインパスワードから派生したマスターキーを特定することを含みます。このキーは、キーチェーンファイルを読み取るために不可欠です。マスターキーを見つけるために、keychaindumpはvmmap
コマンドを使用してsecuritydのメモリヒープをスキャンし、MALLOC_TINY
としてフラグ付けされた領域内の潜在的なキーを探します。これらのメモリ位置を検査するために使用されるコマンドは次のとおりです:
潜在的なマスターキーを特定した後、keychaindumpは特定のパターン(0x0000000000000018
)を示すヒープを検索し、マスターキーの候補を特定します。このキーを利用するには、keychaindumpのソースコードに記載されているように、さらなる手順としてデオブフスケーションが必要です。この分野に焦点を当てるアナリストは、キーを復号化するための重要なデータがsecuritydプロセスのメモリ内に保存されていることに注意する必要があります。keychaindumpを実行するためのコマンドの例は次のとおりです:
Chainbreaker は、法的に正当な方法でOSXキーチェーンから以下の種類の情報を抽出するために使用できます:
ハッシュ化されたキーチェーンパスワード、hashcat または John the Ripper でのクラックに適しています
インターネットパスワード
一般的なパスワード
プライベートキー
パブリックキー
X509証明書
セキュアノート
Appleshareパスワード
キーチェーンのアンロックパスワード、volafox または volatility を使用して取得したマスターキー、またはSystemKeyのようなアンロックファイルがある場合、Chainbreakerはプレーンテキストパスワードも提供します。
これらのいずれかの方法でキーチェーンをアンロックできない場合、Chainbreakerは他のすべての利用可能な情報を表示します。
これらの手順に従ってください メモリダンプを実行します
ユーザーのパスワードを知っている場合、それを使用してユーザーに属するキーチェーンをダンプおよび復号化することができます。
kcpasswordファイルは、ユーザーのログインパスワードを保持するファイルですが、システム所有者が自動ログインを有効にしている場合のみです。したがって、ユーザーはパスワードを求められることなく自動的にログインされます(これはあまり安全ではありません)。
パスワードは、ファイル**/etc/kcpassword
に0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
**というキーでXORされて保存されています。ユーザーのパスワードがキーよりも長い場合、キーは再利用されます。
これにより、パスワードは比較的簡単に復元できます。たとえば、このスクリプトを使用することができます。
Notificationsデータは$(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
にあります。
興味深い情報のほとんどはblobにあります。したがって、その内容を抽出し、人間が読める形式に変換するか、**strings
**を使用する必要があります。アクセスするには、次のようにします:
ユーザーのノートは ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
にあります。
macOSアプリの設定は**$HOME/Library/Preferences
**にあり、iOSでは/var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
にあります。
macOSでは、cliツール**defaults
を使用してPreferencesファイルを変更**できます。
**/usr/sbin/cfprefsd
**はXPCサービスcom.apple.cfprefsd.daemon
とcom.apple.cfprefsd.agent
を要求し、設定を変更するなどのアクションを実行するために呼び出すことができます。
ファイル/System/Library/OpenDirectory/permissions.plist
はノード属性に適用される権限を含み、SIPによって保護されています。
このファイルは特定のユーザーにUUID(uidではなく)によって権限を付与し、ShadowHashData
、HeimdalSRPKey
、KerberosKeys
などの特定の機密情報にアクセスできるようにします:
通知の主要なデーモンは /usr/sbin/notifyd
です。通知を受け取るためには、クライアントは com.apple.system.notification_center
Machポートを通じて登録する必要があります(sudo lsmp -p <pid notifyd>
で確認できます)。デーモンはファイル /etc/notify.conf
で設定可能です。
通知に使用される名前はユニークな逆DNS表記であり、通知がそれらの一つに送信されると、それを処理できると示したクライアントが受け取ります。
現在の状態をダンプし(すべての名前を確認する)、notifydプロセスにSIGUSR2信号を送信し、生成されたファイル /var/run/notifyd_<pid>.status
を読み取ることが可能です。
Distributed Notification Centerの主なバイナリは**/usr/sbin/distnoted
**であり、通知を送信する別の方法です。いくつかのXPCサービスを公開し、クライアントを検証するためのチェックを実行します。
この場合、アプリケーションはトピックに登録できます。クライアントは**apsd
を介してAppleのサーバーに連絡し、トークンを生成します。
その後、プロバイダーもトークンを生成し、Appleのサーバーに接続してクライアントにメッセージを送信できるようになります。これらのメッセージは、apsd
**によってローカルで受信され、通知が待機しているアプリケーションに中継されます。
設定は/Library/Preferences/com.apple.apsd.plist
にあります。
macOSには/Library/Application\ Support/ApplePushService/aps.db
に、iOSには/var/mobile/Library/ApplePushService
にメッセージのローカルデータベースがあります。これには3つのテーブルがあります:incoming_messages
、outgoing_messages
、およびchannel
。
デーモンと接続に関する情報を取得することも可能です:
これらはユーザーが画面で見るべき通知です:
CFUserNotification
: このAPIは、メッセージを表示するポップアップを画面に表示する方法を提供します。
掲示板: これはiOSで消えるバナーを表示し、通知センターに保存されます。
NSUserNotificationCenter
: これはMacOSのiOS掲示板です。通知のデータベースは/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
にあります。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)