📝

Unityのモバイルゲーム向けセキュリティ関連覚書

2023/01/31に公開

免責事項

リリースされているアプリやゲーム、ソフトウェア利用許諾契約(EULA)やアプリケーション利用規約などでリバースエンジニアリングは禁止されています。
実際に試す場合は、自分で開発しているアプリやゲームや脆弱性確認用でリリースされているアプリやゲームを使いましょう。

はじめに

ハック(攻撃)と対策(防御)は表裏一体です。どのようなハックが行われるのかを知らないと対策は行えません。
ハックする側の方が、時間や対応者の人数など基本有利です。
日々新たな問題が発生しています。最新の情報を常に確認する必要があります。

リンクは、すべて目は通していますが、すべてを試しているわけではありません。
上手くいかない、よくわからないなどはキーワードをピックアップして検索してみると良いでしょう。

オンラインゲームセキュリティ(株式会社データハウス)([ad]Amazon)という本が出ている。
これだけでは足りなけれども。用語や知ったり、いろいろな問題が書かれているので取っ掛かりとして参考になる。

追記
Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた」として対応する場所ををまとめてみました。

Unity

手法解説

リバースエンジニアリング

AssetBundle

標準で暗号化されていない。
ネットワーク経由でダウンロードされたり、ストレージに保存されているデータを取り出し。
ツールを使って内容を確認できる。

通信

対策

実装

プログラム保護

データ保護

独自対応

CrackProof

その他のセキュリティサービス

クライアント(端末)

リバースエンジニアリング

総合

いろいろな手法がまとめられています。

メモリ改ざん

再パッケージ

Android

iOS

実端末チェック

Android

iOS

Firebase

エミューレータ

Android

ネットワーク

物理

テスト環境作成

マックを使えばあまり難しいことを考えずに設定できます。

ルーター化

Wifi+Lanの構成でルーター構築可能です。
macで通信内容の解析ツールを動かすして確認しやすいです。
macにLanポート2つ使用してLan+Lanでも構成できます。

帯域制限

攻撃(解析)

https(http)

mitmproxyがそこそこ使いやすいです。

すべてのプロトコル

https以外もみたい場合は、tcpdumpやWiresharkなどを使用しましょう。

TLS(SSL)

HTTPSトラフィックを復号化する3つの方法の概要

環境設定

Android
iOS

生成

一般的なプロトコル生成

httpやhttpsなどを生成できます。

パケット生成

パケットを自由に生成できます。

位置情報

Android

デベロッパー機能で位置偽造ができます。

APIでmock locationが使用されているかのチェックはできます。

iOS

デベロッパーモードにしてツールを使用すると位置情報が偽造できます。

サーバ

SMS認証

Discussion