iPhoneトラッキング

少し前に、セキュリティ リサーチャーのAlex Levinsonは、iPhoneのロケーション(WiFiベースのロケーション、セルベースのロケーション、またはGPS)やその他いくつかの情報のSQLiteデータベースをiPhoneが保持していることを発見しました。

/private/var/root/Library/Caches/locationd/consolidated.dbに格納されているファイルは、ジェイルブレイクされた電話(sshまたはファイル転送ツール)上では簡単にアクセスでき、SQLite3ツールで読み込むことができます。

この問題が最近再浮上し、問題視されています。Pete WardenとAlasdair Allanの2人のリサーチャーが、そのデータベースに記録されたロケーションからマップを生成するMacOSツールについて報告しており、彼らは今日サンフランシスコで開かれているWhere 2.0でこの問題を発表しています。

Macをお持ちでない場合、ここにあるオンラインツール(フランス語)をお使いください。または、Firefox4 SQLiteManager plugin + Google Fusionを使用して、間に合わせることもできます(これは下のマップで私が使用した方法そのものです)。

Mikko Hypponenの投稿もお読みになることをお勧めします。どうしてアップル社がこのようなデータベースを設計したのかに関して興味深い説明がなされています。一言で言うと、Hypponenは、外部にあるロケーションのデータベースを借りるコストを削減するためだと考えています。

Hypponenの説明にいくつか付け加えたいと思います。

  • consolidated.dbは'標準'SQLite3データベースなので、SQLiteデータベースのようにクエリを行なうことができ、高機能ツールが必要ありません(高機能ツールはそれなりには素晴らしいですが)。データは、ここでは直接使用できます。
    sqlite> .dump CellLocation
    PRAGMA foreign_keys=OFF;
    BEGIN TRANSACTION;
    CREATE TABLE CellLocation (MCC INTEGER, MNC INTEGER,
    LAC INTEGER, CI INTEGER, Timestamp FLOAT,
    Latitude FLOAT, Longitude FLOAT, HorizontalAccuracy FLOAT,
    Altitude FLOAT, VerticalAccuracy FLOAT, Speed FLOAT, Course FLOAT,
    Confidence INTEGER, PRIMARY KEY (MCC, MNC, LAC, CI));
    43.60604608,7.06016272,1211.0,0.0,-1.0,-1.0,-1.0,70);
    ...
    
  • WifiLocationテーブルは、皆さんのiPhoneが感知したWiFiアクセスポイントに基づいて皆さんのロケーションを更新しようとします。これは、アップル社はWiFiアクセスポイントのロケーションを知っているからです。エッフェル塔が設置されている既知のWiFiアクセスポイントを皆さんのiPhoneが感知したら、皆さんはおそらくエッフェル塔の近くにいます。これはGPS機能を利用していません。
  • CellLocationテーブルは基本的には同じですが、皆さんのiPhoneが感知するGSMアクセスポイントをベースにしています。私が経験したことですが、今になって、どちらのテーブルも私がiPhoneを持ってポーランドに行ったことを通知していないことに気付きました。なぜでしょうか。明らかに、皆さんのiPhoneの古いイメージを復元すれば、データベースを上書きしています。ところで、iPhoneはまた、高度をうまく推定することができず、実際は海水面にいないのですが、海水面にいると推定しています。
  • iPhoneのロケーションとWiFiのロケーションを比べてみると(下のマップをご覧ください)、興味深いことが分かります。まず第一に、アップル社は私たちの職場にあるWiFiと実際私たちがいる位置を結びつけるのに成功していることを示しています(私たちがいるソフィア・アンティポリスのいくつかのロケーションはそれぞれ様々な近似値になっているからと考えます)。私たちの研究所のiPhone(修復したバックアップ)は私たちの会社からWiFiにだけアクセスしたこと、私たちがツーロンに行ったこと、しかしそこではWiFiを使わなかったことを示しています。

    CellLocation

    WifiLocation

  • セキュリティの視点から見ると、(その点を指摘してくたことにGuillaumeに感謝しますが)consolidated.dbの一貫性は全く保証されていないことに注意すべきです。先月Greenlandにいたと言い直すことは簡単です。同様に、だれかのiPhoneに侵入して、あたかも犯罪が起こったときその人が犯罪現場にいたことを示すように改ざんすることもできます。それゆえ、この問題は、科学捜査エキスパートに慎重に対処してもらうべきでしょう。
  • "untracked"アプリケーションはデータベースを定期的に削除します。
  • 最後に、iPhoneはSIMのMCC (Mobile Country Code)およびMNC (Mobile Network Code)を保存していることにお気づきでしょう。興味深いことに、私がときどき偽造のSIM (208/30)を使用していることに気付きました。これは、ローカルOpenBTSレプリケーション ジェイルを利用する場合です。OpenBTSレプリケーション ジェイルについては、VB 2011で言及します。この場合、この偽装のオペレータを感知しないので、私の所在地を特定できません。(これは研究所の中でのみの確認です)。
    INSERT INTO "CellLocation" VALUES(208,30,1000,10,314034365.532726,
    0.0,0.0,-1.0,0.0,-1.0,-1.0,-1.0,0);