iOS データ漏洩

 アプリのバックグラウンド処理
///////////////////////////////////////////////////////////////////////////////////
ハイデックが提案を行います。

このビデオでは、アプリケーション侵入テストコースを行います。

我々はアプリケーションのバックグラウンドと意図しないデータ漏洩を見ていきます。

基本的に、もし注意深くiPhoneを観察すると、このデモンストレーションのためにアプリケーション3を開いています。

もしホームボタンを押すとアプリケーションが閉じ、もう一度タップするとアプリケーション3が再び表示されます。

今、何かをしてみましょう。

たとえば、クレジットカード番号1 2 3 4 5 6 7 8 9 0を入力してみます。

さて、仮に何かを確認する必要があり、このアプリケーションを使うのをやめる必要があるとしましょう。

だから、ホームボタンを押すだけでこのアプリケーションを閉じます。

その後、戻ってきたときにアプリケーションが復元されます。これは、iPhoneがこの効果を実現するために、この特定のアプリケーションのスクリーンショットを撮るからです。

このスクリーンショットは、アプリケーションのファイルシステム内に保存されます。具体的には、「mobile applications」というフォルダ内に、その中に「caches」という名前のフォルダがあります。ここにスクリーンショットが保存されるのです。

私たちは、簡単にその場所に移動して、スクリーンショットを表示することができます。

次に、アプリケーションのスクリーンショットを取得するデモを見せます。このデモンストレーションでは、「iExplorer」というツールを使用します。

「iExplorer」を使用してアプリケーションのスクリーンショットを取得する方法をデモします。アプリケーションのライブラリやキャッシュフォルダなどにアクセスし、スクリーンショットを取得します。

アプリケーションがホームボタンを押したときにスクリーンショットを撮るという仕組みです。その結果、アプリケーションがバックグラウンドで動作している間に、ユーザーの入力内容が漏洩する可能性があります。しかし、これを防ぐ方法もあります。

アプリケーションの設定ファイルを変更して、アプリケーションがバックグラウンドで動作しないように設定することで、スクリーンショットの撮影を防ぐことができます。具体的な手順として、アプリケーションの設定ファイルに「application doesn't run in background」プロパティを追加し、その値を「yes」に設定します。

このようにして、アプリケーションがバックグラウンドで動作しないように設定することで、スクリーンショットの撮影を防ぐことができます。

以上が、このビデオの内容です。ありがとうございました。

///////////////////////////////////////////////////////////////////////////////////

キーボードキャッシュ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3477527/256caef5-7c18-259d-6e47-a1095d915fcb.png)
今回も昆虫が提供する映像で、アプリケーションの侵入テストコースを行います。

このビデオでは、キーボードについて見ていきます。

一般的にはテキストの予測とも呼ばれています。

おそらく何度か見たことがあるかもしれません。

通常、アプリケーションを開いて何かを入力すると、例えば、「Eddie」と入力した場合、アプリケーションが「administration」という予測を提示してくれることがあります。

どうしてそうなるのでしょうか。それはどこから来るのでしょうか。

実際には、これはiPhone内部の辞書から提供されています。

通常、iPhoneはユーザーがテキスト形式で入力するすべての内容を記録します。ただし、フィールドがよりセキュアな場合は記録されません。また、数値の場合も記録されません。

つまり、クレジットカード番号などの入力は記録されず、クリアテキスト形式で入力されたテキストだけがiPhoneによって記録されます。

これらの予測される単語は、プライベートな場所である「private/mobile/library/keyboard」に保存されています。そして、これは実際にこれらの単語を保存しているファイルです。

これを簡単に取得するために、SFTPを使用してiPhoneにログインし、このファイルをローカルマシンに取得します。

ファイルを取得しました。

この特定のファイルの内容を確認する方法はいくつかありますが、一つは「strings」コマンドを実行する方法です。エンターキーを押すと、このファイル内に含まれるすべての文字列のリストが表示されます。

別の方法として、ヘックスエディタを使用してこのファイルを開き、その中身を確認することもできます。

これらは、iPhone内の予測単語を保持しているファイルの内容を確認する可能な方法です。

もしアプリケーションを開発しており、アプリケーションが入力されたテキストを保存しないようにしたい場合は、セキュアなテキスト入力としてフィールドをマークすることで解決できます。

これにより、アプリケーションに入力されたデータはiPhoneによって記録されなくなります。

以上が、このビデオの内容です。ありがとうございました。

///////////////////////////////////////////////////////////////////////////////////

ペーストボード

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3477527/2c4642ce-3559-4d4e-db1a-3cd217981cc9.png)

別の映像がInside Takesから提供されています。このビデオではアプリケーションの侵入テストコースを行います。今回はペーストボードについてです。セキュアとしてマークされていないテキストフィールドに入力されたデータは、長押ししてコピーまたはカットをタップすることでコピーでき、そのデータはペーストボードアイテムにコピーされ、他のアプリケーションからもアクセスできます。したがって、ペーストボードアイテムにコピーされたデータを他のアプリケーションが読み取り、それをリモートサーバーに送信することが可能です。これはiOS内で実現可能です。

それでは、どのように行うのか見ていきましょう。まず最初に、アプリケーションを開きます。どのアプリケーションでも構いませんが、私の場合は「One Application」を選択します。ここにスーパーシークレットというテキストを入力してみます。そして、なんらかの理由でこのテキストをコピーします。これでテキストをコピーしました。

作業が完了したら、他のアプリケーションを開いてみましょう。ここでは「One Application」を開いてみます。このアプリケーションには、ペーストボードアイテムにあるテキストを貼り付けるオプションがあります。ペーストボタンをタップすると、先ほど「One Application 3」でコピーしたテキストがペーストされます。これによって、別のアプリケーションが他のアプリケーションでコピーされた情報を読み取ることができる様子がわかります。

これが、あるアプリケーションが他のアプリケーションでコピーされた情報を読み取る方法です。これがどのように可能かを見てみましょう。以下に、この操作を行うために使用した簡単なコードスニペットを示します。

swift
Copy code
let pasteboard = UIPasteboard.general
if let copiedText = pasteboard.string {
    bastetText.text = copiedText
}
このコードは、UIPasteboardのメソッドを呼び出して、文字列として読み取り、それを「bastetText」変数に格納しているだけです。また、必要であればこれをリモートサーバーに送信することも可能です。これにより、ペーストボードアイテムにコピーされた機密データが傷つけられる可能性があります。

以上がこのビデオの内容です。ご視聴いただきありがとうございました。