komeの備忘録

東大理系大学院生の技術ブログ。たまに趣味。

モンスターハンターワールド MHW のパケットをキャプチャして解析してみた

最近買ったモンスターハンターワールドは、課金制のオンラインゲームである。ふと気になったので、救難信号を含めたパケットを気合いでキャプチャし、どこと通信しているのかを解析してみた。

目次

パケットキャプチャの概略

以下の図のようにして、PS4とルータの間に、Debianのラップトップを配置し、Debian内でブリッジ構成するようにした。

f:id:komee:20180410170219p:plain

Debian内でWiresharkを作動させ、PS4につながるインタフェースを通過するパケットを全てキャプチャすることにした。

なお個人情報などがあったため、キャプチャデータのpcapファイルのスクショはアップロードしないことにする。期待した人ごめんなさい。

キャプチャ①普通の通信

オンラインゲームであるため、同じルームに入っている世界中のどこかの通信相手と頻繁に通信していることがわかる。

通信パケットのプロトコルの多くは、UDPであり、時折TCPやTLSでセキュアな通信をしていることが分かった。

IPアドレスからそのIPアドレスの持ち主を確認するため、whoisコマンドを用いて、キャプチャされたパケットの自分でない方のアドレスから逆引きしてみた。

whoisコマンドの使い方

$ whois [IPアドレス]

なおwhoisコマンドが入っていない場合は、aptとかbrewとかyumとかで入れられるはず。私はaptで普通にインストールできた。

whoisコマンドの結果

  • UDPで通信しているパケット

新潟とか、東京とか、大阪とか、日本国内各地のプロバイダのアドレスの持ち主と通信していることが分かった。

世界中の人と通信している一方で、言語設定が共通の人と通信しているのだろうと推測できる。日本国外にいても、言語設定を日本語にすることで、日本語のユーザと一緒にプレイができるだろう。

これらの通信はP2Pで直接相手のPS4と通信していることが分かった。プロトコルは、同期速度を気にしていると考えられ、UDPを使っていると考えられる。

  • TCP、TLSで通信しているパケット

時折TCPやTLSで通信しているパケットも同時にキャプチャすることができた。 これらの通信相手に関しても同様にwhoisコマンドを用いてその情報を核にしてみると、AWSのEC2サーバと通信していることが分かった。

ルームの情報や、共通のクエストの情報など、全てのユーザが必要としている情報をAWSのサーバを用いて配信しているのであろうと考えられる。また、世界中でオンラインで楽しむゲームであり、一時的なユーザの増減など、それに耐えうるインフラ構築のためにもスケールイン・スケールアウトが容易なAWSのクラウドサーバが選ばれたのであろう。

通信内容について

通信内容に関しては、すべて暗号化されていて解析することはできなかった。PS4をハッキングして中の証明書を取り出せたら見れたりするのかなぁ。。

キャプチャ②救難信号

これまでの話の流れからして、じゃあ救難信号もAWSのEC2に送っているのかなぁ、と考えていたが、実際は違った。

救難信号を送ったタイミングで同時にパケットをキャプチャしてみた。

救難信号のパケットの宛先アドレスをwhoisコマンドを用いて情報を確認してみたところ、akamaiのサーバと通信していた。

なぜakamai?

救難信号を送ったら、全世界からお助けヒーローが駆けつけてくれるから、救難信号はリージョンごとではなく、世界中で一つのサーバで受けているのかなぁ?と考えてみた。

そうなればサーバはやっぱりアメリカに設置されるのかなぁ?と思い、digコマンドの逆引きでなんとなくの位置を把握してみた。

$ dig -x [IPアドレス]

すると、出てきたakamaiサーバのアドレスは明らかに東京リージョンのものであった。

このことから察するに、次の二つで運用していることが考えられる。

  • akamaiサーバ同士が同期通信

救難信号は最寄りのリージョンのakamaiサーバ[Aとする]に送り付けられれ、救難信号を受けたサーバAは、世界のどこかにある救難信号集積サーバと通信をして、世界中に救難信号を発信する。

  • リージョン内の人とのみ通信

救難信号は最寄りのリージョンのakamaiのサーバに送り付けられる。その後、そのリージョンに属する人にのみ救難信号を通知して、お助けが登場する。この場合、基本的には外部リージョンからの救難は来ないと考えられる。 一方で実際にプレイをしていると、よくわからない言語のプレイヤーが救難しに来ることが往々にしてあるため、こちらの運用の可能性は低いと考えられる。

まとめ

モンスターハンターワールドは、一緒にクエストを楽しんでいる仲間の家のPS4とP2PでUDPを用いた高速な通信をしていることが分かった。またサーバサイドにはAWSのサーバが利用され、突発的なアクセスの増減に対しても耐えうる構成になっていることがわかった。

救難信号に関しては、akamaiのサーバが用いられていた。なぜakamaiかは不明であり、今後の研究とする。

それにしてもモンスターハンターワールドは非常によくできたゲームであり、楽しい。機会があったらみんなも買って遊んでみるといいだろう。

モンスターハンター:ワールド - PS4

モンスターハンター:ワールド - PS4