jailbreak

今回は、iPhoneを使った脆弱性診断ってどのように行うのか、簡単にご紹介したいと思います。

まず、脆弱性診断を行う際に、クライアントからサービスを提供するサーバ間でどのような通信が流れているのか確認する必要があります。WebベースのアプリケーションであればHTTPリクエストでどのようなデータを送信したらどのようなHTTPレスポンスがWebサーバから返信されるか確認する必要があります。

また、クライアントから送信されるリクエストを改ざんして、その操作した内容に応じてどのようなレスポンスが返ってくるか確認し、セキュリティコントロールの回避やデータの改ざんなどできるか検査を行います。その時、Webブラウザでも携帯アプリでもリクエストを直接サーバに送信する前に、リクエストを編集できるようにしなければなりません。その時、重宝するのが脆弱性診断ツールのプロキシ機能です。

よく社内のネットワークでプロキシサーバでWeb閲覧のフィルタリングやコンテンツのキャッシュを行なっている場合、PCのブラウザにプロキシサーバのアドレスを設定して、Web閲覧するにはそのプロキシサーバを経由しないと閲覧できないネットワーク構成になっていると思います。
そしてどの端末がどのようなリクエストを送信してどのようなレスポンスを受けたかわかりますので不正なサイトを閲覧したり、マルウェアをダウンロードしてしまった場合はアンチウイルス機能が搭載されていれば、検出できたりします。ただし、ダウンロードしたコンテンツがhttpsプロトコルを利用して暗号化されている場合はSSL/TLSをインターセプトできる環境が必要になります。

脆弱性診断を手動で行う時にはローカルプロキシ機能の存在が欠かせなく、脆弱性診断ツール上でローカルプロキシを稼働させ、そのプロキシを介して診断を実施します。下の絵のようなイメージです。

Pentest Local Proxy

脆弱性診断ツールで有名なものにBurp SuiteやOWASP ZAPがございますが、Burp Suiteの場合以下のようにプロキシを設定します。[Proxy]->[Option]で受け付けるアドレスやポートについて設定することができます。Burp Suiteがインストールされている端末のブラウザを使用する場合は127.0.0.1のローカルアドレスでも問題ございませんが、外部の端末からアクセスさせる場合はAll Interfaceまたはネットワークカードのインターフェースに割り当てられているIPアドレスを指定してください。

burpsuite local proxy

ここまでは暗号化されていないhttpプロトコルの暗号していない通信を閲覧、改竄することは可能ですが、httpsプロトコルの暗号化された通信を操作するにはBurp Suiteのプロキシサーバでhttpsリクエストを行なった後にブラウザにhttps通信で返すために利用するBurp SuiteのCA証明書をブラウザや携帯端末にインストールし、その証明書を信頼しなくてはなりません。
ブラウザをBurp Suiteのローカルプロキシに向けた場合、証明書はhttp://burp/certでダウンロードできます。ブラウザの場合は各ブラウザの証明書のインストール方法でダウンロードした証明書をインストールして信頼させてください。

burp cert download

iPhoneでは以下の画面[プロキシの構成]からプロキシサーバをBurp Suiteのプロキシ向けて、Safariなどのブラウザでhttp://burp/certにアクセスし証明書をダウンロードできます。ダウンロードしたらプロファイルの画面が出て、インストールするか確認画面が表示されますのでそのままインストールしてください。

プロキシの設定画面
iphone proxy settings iPhone Proxy 2

プロファイルのインストール画面
iphone profile for burpsuite

ここまではPCや携帯からの検査でも共通の部分となり、ローカルプロキシの準備について解説しました。
単純なアプリであればiPhoneでローカルプロキシを指定することである程度検査はできますが、証明書のピニングの問題(後半で解説します。)やiPhone内でのキャッシュ、保存しているデータやWeb以外の通信をキャプチャしたい場合は脱獄したiPhone上で検査することが欠かせません。

脱獄とはiPhoneのセキュリティモデルから抜け出すということで脱獄と言う表現が使われてますが、この脱獄したiPhoneは保証・サポート対象外になるため、iPhoneを失うつもりで行う覚悟が必要です。診断用に中古の安いiPhoneを購入することをお勧めします。
また最新バージョンにあげると脱獄が難しくなるので、脱獄しようとする端末のiOSのバージョン確認して脱獄可能な端末か確認する必要があります。そのため、iOSの自動アップデート機能などはOffにした方が無難です。

今回、試したのはiOS13.5.1になります。2020年6月1日にリリースされたCVE-2020-9859で脱獄できる脆弱性に対応したものですが、2020年6月23日くらいにこの13.5.1で脱獄可能になっております。checkra1nという脱獄アプリを使うと脱獄できましたが、いくつかcheckra1nのアプリ名で別のアプリをインストールさせるような偽物もありますのでご注意ください。私のiPhoneは13.5.1にアップデートしてしまったのですが、無事脱獄することができ、Cydia(脱獄iPhone用のAppStoreみたいなもの)もインストールすることができました。
次回はこの脱獄したiPhoneにSSHでログインしたり、プロキシを介してアプリの通信を確認してみたいと思います。

iPhone Jailbreak Home iPhone Jrailbreak 1

 

関連リンク