はじめに
いまさら(2023年)ながら、まとめてみる
各種ツールのインストール
インストール自体はさすがに省略 m(_ _)m
今回のバージョンは、
- Windows10 Professional
- Burp Suite Community Edition 2023.10.1.1
- Win64 OpenSSL v3.1.3
- Nox Player v7.0.5.8(2023/09/11) (Android9相当!?) (ダウンロードしたらv7.0.5.9だった)
認証局証明書の抽出
Burpから、証明書をExportする
特に秘密鍵は必要ないので、DER形式で抽出
証明書の編集
DER形式からPEM形式へ変換
OenSSLのコマンドでフォーマットを変換
openssl.exe x509 -inform DER -in cacert.der -out cacert.pem
証明書ファイル名の書き換え
これはどうも、OpenSSLの仕様のようだ。
「"ハッシュ値".0」というファイルでないとダメのようだ。
C:\temp>openssl.exe x509 -inform PEM -in cacert.pem -subject_hash_old
9a5ba575
-----BEGIN CERTIFICATE-----
~~~~~省略~~~~~
C:\temp>move cacert.pem 9a5ba575.0
1 個のファイルを移動しました。
Link
・OpenSSLでSSLサーバ証明書の検証をする方法
NoxPlayerの設定(ルート化)
起動して、設定画面からAndroidエミュレータをRoot化できる
GUIで設定できるのはとても便利だ♪
NoxPlayerへコピー
NoxPlayerへコピー(D&D)
証明書ファイルをドラッグ・アンド・ドロップで、NoxPlayer内へコピーされると思う。
(コピー先のディレクトリパスは記憶しておくこと)
NoxPlayerへコピー(adb.exeの場所)
Nox Playerのインストール先(C:\Program Files (x86)\Nox\bin)にadb.exeがある
C:\Program Files (x86)\Nox\bin>dir adb*
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は A079-921A です
C:\Program Files (x86)\Nox\bin のディレクトリ
2023/09/29 10:58 395,091 adb.7z
2023/09/29 10:59 1,503,072 adb.exe
2023/09/29 10:59 97,792 AdbWinApi.dll
2023/09/29 10:59 62,976 AdbWinUsbApi.dll
4 個のファイル 2,058,931 バイト
0 個のディレクトリ 36,198,649,856 バイトの空き領域
NoxPlayerの証明書フォルダへコピー
D&Dでは、/system/etc/security/cacerts/ 以下にはコピーできないようなので、adb.exeコマンドを使って、コピーする
↓のは、D&Dでコピーしたファイルが /sdcard/Pictures 以下にコピーされてしまったので、それを/system/etc/security/cacerts/以下にコピーする
C:\Program Files (x86)\Nox\bin>adb shell
d2q:/ # mount -o rw,remount /system
d2q:/ # mv /sdcard/Pictures/9a5ba575.0 /system/etc/security/cacerts/
d2q:/ # chmod 644 /system/etc/security/cacerts/9a5ba575.0
d2q:/ # reboot
複数のAndroidデバイスを接続していると、「デバイスIDを指定してくれ~」とか面倒なので、エミュレータ1台起動するだけにしておいた方が無難だと思う。
NoxPlayerの再起動
adbコマンドの "reboot" コマンド後は仮想キーボードが無反応になるようなので、NoxPlayer自体を再起動した方がいいかもしれない。
Burp Suite を外部からも接続できるようにする
通常は127.0.0.1にバインドされていて、ローカルホストからしか接続できないので、外部ホストからも接続できるように0.0.0.0にバインドさせる
キャプチャ画像にはバインドポート番号が空欄だけど、ここにはポート番号(例えば8080)を入れておくように。
NoxPlayerのProxy設定
Burpが動作している端末のIPアドレスとポート番号は事前に調べておく。
それを
- Tools→設定→ネットワークとインターネット→Wi-Fi→"Wi-Fi名"→詳細設定→"編集ボタン"→プロキシ
に記述する
テスト
ブラウザで動作テスト
Nox Playerに標準でインストールされているWebブラウザで、Proxy経由でhttps通信を覗けるかテストする
アプリの動作テスト(AndroidStudio/Java)
AndroidStudio/Javaで書いたWebページを取得するだけのテスト用のアプリがあるので、実際にトラップできるかをテストする
sWebGetAndroid (GooglePlay)
(レスポンスを表示するタイミングはすごい遅いので、待ち時間があるよ)
さすがに「Force NoProxy」を、チェックするとトラップできない。(当たり前か...orz)
→
開発業者にjava.net.HttpURLConnectionクラスのProxyに関するプロパティはいじらないでと言っておく必要があるかもしれない
アプリの動作テスト(Monaca)
Monaca(Cordva)で書いたWebページを取得するだけのテスト用のアプリがあるので、実際にトラップできるかをテストする
Webブラウザベース(WebView)なので、Webブラウザでトラップできれば、こちらでもトラップできるとは思う...
アプリの動作テスト(Xamarin)
Xamarinで書いたWebページを取得するだけのテスト用のアプリがあるので、実際にトラップできるかをテストする
うん!? 「NoProxy」でトラップできないのは当然として、「Default」でもトラップできない...
開発業者がXamarinで作っていないようにとお祈りしておく必要があるかもしれない
アプリの動作テスト(.NET MAUI)
まだ、テスト用アプリを書いていない...orz
アプリの動作テスト(Flutter)
まだ、テスト用アプリを書いていない...orz
Fiddlerの場合
認証局証明書の抽出
Fiddlerの場合、「Tools」→「Options」メニュー→「HTTPS」タブの「Actions」ボタンの「Export Root Certificate to Desktop」を選択すると、デスクトップに、CER形式の証明書がエクスポートされる
デスクトップに「FiddlerRoot.cer」というファイルができる
証明書の編集
CER形式もDER形式でよいようだ
OenSSLのコマンドでフォーマットを変換
openssl.exe x509 -inform DER -in FiddlerRoot.cer -out FiddlerRoot.pem
これ以降は、Burpと同じ手順です。
Zapの場合
認証局証明書の抽出
OWASP ZapもCER形式のようだ。
なので、Fiddlerと同じ手順です。
なので、これ以降は、Burpと同じ手順です。
Link
- エミュレーターとBurp SuiteでAndroidアプリのHTTP通信をキャプチャする(Android7.0以上対応)
- アプリの通信内容を確認する(Android7以降)
- Windows 10 + Burp Suite で Android 8.0 のアプリの通信を取得する方法
- Burp Suite Professionalと連携するようAndroid端末を設定する
- バージョン99以降のChromeブラウザの設定
- Configuring Burp Suite With Android Nougat
- Android端末にインストール可能なDER形式の自己証明書作成
- モバイルアプリの検証環境をつくってみた①
- モバイルアプリの検証環境をつくってみた②
- AndroidへのBurpのCA証明書のイントールを途中までためしてみた
- NoxPlayerでモバイルのテスト環境を構築してみた
- OWASP ZAP で Android の Web通信をインターセプトする方法
- PKCS#12(pfx)形式から、秘密鍵、公開鍵形式への変換方法
- 後ほど
後で追記していく...