アプリケーションのユーザー名とパスワードをiOSキーチェーンに保存しています。 Appceleratorを使用してアプリケーションを開発しており、次の module を使用しています。 APIを使用して、デバイスとシミュレーターの両方ですべてのCRUD操作を実行できます。
キーチェーンの侵入テストに関するブログやトピックをいくつか読んだ後、キーチェーン情報がSQLデータベースに格納されていることを知りました。私の目的は、この特定のデータベースを見つけて、その内容を読むためにオープンにすることです。情報がそこに格納されていることを確認したい(データが暗号化され、すべて意味不明なものになる)が、アクセスグループを指定する識別子が存在することを期待しています。
データベースを開き、テーブルをチェックして、コンテンツがそのテーブルに保存されていることを確認したいだけです。脱獄したデバイスがないので、iOS 9.3シミュレータでこのタスク全体を実行します。
特に暗号化された意味不明なコンテンツを表示する準備ができていることを念頭に置いて、これはそれほど難しいことではありません。
単純に~/Library/Developer/CoreSimulator/Devices
フォルダーに移動し、アクセスしたいキーチェーンを持つ目的のシミュレーターのUUIDを見つけます。シミュレーターに属するUUID名のフォルダーを見つけたら、そのフォルダー内に移動し、data/Library/Keychains
フォルダーに移動します。
そこに、探しているSQLiteデータベースファイルであるkeychain-2-debug.db
ファイルがあります。
その後、 http://sqlitebrowser.org/ のようなツールを使用してデータベースを参照します。
このツールでデータベースを開き、Browse Data
に移動してテーブルのgenp
を取得したときに、キーチェーンに書き込んでいたものを見つけることができました。その後、agrp
列フィールドの値を確認します。これは、キーチェーンデータベースに誰がそのエントリを書き込んだかを示しているためです。アプリでTEAMID.com.your.app.bundle.id
の値を見つけると、アプリで記述したものが見つかります。
乾杯