【Frida】久しぶりにPayPayの通信解析をしようとしたらめっちゃ困った話

未分類

「あぁぁぁもう、なんで出来ねぇんだよ、〇ねや」
これは私が、NoxでPayPayログインできないとき、イラつきすぎて発した言葉です。

普通のスマホだとログインできるのに、Noxだとログインできない現象が発生して、通信解析が出来ず困っていたのですが、最終的に簡単に解決できてしまったので、そのお話です。

何が起きたの?

久しぶりに、PayPayのAPIライブラリを作成しようとして、NoxやBurpSuiteとFridaをセットアップして、いざ解析スタート!という時に、なんとログインができなくなる現象が発生。

普通のスマホだとログインできるが、Noxだとログインできない…
このような事象は初めてで、かなり困っていた。

エミュレーター制限?

通信を見ると、どうやらOTP入力の通信で拒否られているみたいでした。

ステータス自体はエラーじゃありませんが、レスポンスにはエラーの要素がありました。
エラーコードには「VERIFY_OTP_FRAUD_ERROR」の文字がありました。

個人的に、最も可能性が高いのはエミュレーターを検知しているのではないか、と思いました。

もしかしたらfridaやプロキシがダメなのだと思っていたのですが、それらは関係なく検知されているようで、やはりエミュレーターを検知していると思われます。

apk-mitmを使ってみる

Noxを使わず通信解析を行う方法として、apkにパッチを当てる方法があります。
これは、root化してfridaをスマホ側で動かす必要なく、プロキシを通すだけで簡単に通信解析を行うことが出来る方法です。

ただ、apktoolの問題によりエラーが発生して動作しませんでした。
私のフレンドによると、どの環境でも発生するエラーだと言われました。

objectionを使ってみる

apk-mitm以外にも、objectionにpatchapk機能があります。
ただ、こちらもapktoolを使用しているため、同様のエラーが発生しました。

でも、apk自体は生成してくれました、そのためそのapkで通信解析を試みました。
が、やはりだめで、通信ログは何一つ得ることは出来ませんでした。

root化検知?

上記2つが無理で、ずっと考え込んでいたところ、急にroot化検知について思い出しました。

自分は過去にDiscordのShop界隈にいました。
そこでツムツムのチート代行をやろうとしていたことがあります。
その時、root化の検知によって代行をあきらめたことがあります。

それを思い出して、「PayPayも同じように、root化を検知している?」と推測しました。
とはいえ、PayPayがroot化を阻止する理由は、あまり思い当たらず、正直あまり希望はありませんでした。

ただ、あまりにも解決法がないため、これに掛けました。

root化検知を無効にする

root化の検知を無効にするのは、非常に容易です。

objection経由でアプリを起動すれば、root化解除をシュミレートできます。
そのため、その機能を利用して、検知を無効にしてみてログインを試みることにしました。

android sslpinning disable
android root disable

objection起動後、このコマンドを実行します。
これでssl unpinningとroot化解除のシュミレートは完了です。
非常に簡単ですね。

無事ログイン完了

root化検知を無効にしたところ、何事もなかったかのようにログインされました。

は?

うーん…まさか本当にroot化を検知していて、ログインがはじかれていたとは…
もっと早く気づけばよかったなって…

この作業に2時間以上はかかっていると思います。
これだけで解決できたことを…2時間も…

とはいえログインできたので、解析もうまくいって、無事プログラムを作りきることが出来ました。

追記

どうやら「VERIFY_OTP_FRAUD_ERROR」は割と出やすいエラーのようです。
複数回ログインに失敗したときもこのようなエラーが出ました。

そのため、エラー処理にこのエラーが出たときのハンドリングも追加することになりました。

最後に

いかがでしたか?

何故PayPayがroot化検知を導入したのかは不明ですが…解析対策何ですかね?
とにかく無事解析出来て良かったです!

今回の記事はかなり内容が薄いというか…もはや記事にする必要ないだろってレベルだったと思います。
ですが、もしPayPay解析している人に届けば…と思い書きました。

ではまた次回のブログで!

コメント

タイトルとURLをコピーしました