狠狠撸

狠狠撸Share a Scribd company logo
2015/08/26SECCON 2015 x CEDEC CHALLENGE ゲームクラッキング&チートチャレンジ
担当:Team m1z0r3
Androidアプリ 診断報告
セクコン株式会社 様
m1z0r3(みぞれ)について
? 早稲田大学の情報セキュリティの研究室の有志で活動して
いるCTFチーム
2
2013:
m1z0r3結成
SECCON決勝大会出場
2014:
MWS Cup 準優勝
SECCON決勝大会出場
2015:
危機管理コンテスト
経済産業大臣賞写真の出典:
http://www.atmarkit.co.jp/ait/articles/1507/03/news101.html
主な活動実績
発表について
? ゲームのセキュリティ診断士として、セクコン株式会社
の開発者および経営者に対して報告を行う
? ゲームの仕様が知らされていない中で、アプリを解析す
るだけで、チートの可能性等のセキュリティ上の問題が
ないか調査した
3
2015/08/26SECCON 2015 x CEDEC CHALLENGE ゲームクラッキング&チートチャレンジ
担当:Team m1z0r3
Androidアプリ 診断報告
セクコン株式会社 様
目次
? 診断概要
? セキュリティの重要性
? チートの基本的な手法
? 診断の総評
? 通信改ざんによるスコアのチート(SandBag1)
? 通信の偽装による大量のアカウント作成(SandBag1)
? メモリ改ざんによるチート(SUNIDRA)
? まとめ
5
診断概要
? 依頼について
– 現在開発中のゲームのセキュリティ診断
– セキュリティ上の問題を引き起こす手法、影響度、対策方法
について報告を行う
? 診断環境
– 利用した端末:Nexus 7 (Android 4.4.4)
– 診断日時:2015/08/01 11:00 ~ 2015/08/10 23:59
6
セキュリティの重要性
7
ユーザー
ゲームがつまらなくなる
課金が無駄になる
開発者
クラッカーへの対応に追われる
リリース後の対策は、変更箇所が多くなる
経営者
ユーザーからの苦情の対応が生じる
企業の信用低下&売り上げが下がる
セキュリティ問題が起こることによる被害
チートとは
? 開発者が想定していない手法を利用して、高得点を叩き出
したり、有利にゲームを進めること
? アプリやサーバーとの通信に対しクラックを行う
8
アプリ
? スコア
? ユーザー情報 サーバー
オンラインゲームの構成
通信
チートの基本的な手法
9
パターン① Proxyの利用
? Proxyを利用してAndroidの通信を改ざんし、サーバーに送
信を行う
チートの基本的な手法
10
パターン② 通信の偽装
? プログラムを用いて通信を偽装し、サーバへリクエストを
送る
void cheat()
{
???
}
Program
チートの基本的な手法
11
ライフの値 100
攻撃力 20
制限時間 300
9999
パターン③ メモリの改ざん
? 端末のメモリを改ざんし、パラメタを書き換える
目次
? 診断概要
? セキュリティの重要性
? チートの基本的な手法
? 診断の総評
? 通信改ざんによるスコアのチート(SandBag1)
? 通信の偽装による大量のアカウント作成(SandBag1)
? メモリ改ざんによるチート(SUNIDRA)
? まとめ
12
セキュリティ問題の評価指標
? 問題の危険度を「実現可能性」と「被害の規模」を軸とし
て3段階に分ける
13
被害の規模
実
現
可
能
性
High
Medium
Low
? 攻撃の実現可能性(縦軸):環境要因によるものや人的要因を考慮
? 被害の规模(横轴):被害者数や被害の种类などを考虑
総評
? ゲームの面白さを損ねかねない影響度の大きな問題点が
複数発見された
? いくつかの初歩的なセキュリティ対策が行われておらず、
容易にチートが可能である
14
発見された問題一覧
15
アプリ 項目 危険度
SandBag1
スコアの改ざんが容易 High
アカウントの大量作成が可能 High
他ユーザーの名前を書き換えることが可能 Low
他ユーザーの通信改ざんが可能 Low
SUNIDRA
メモリ改ざんによるチートが可能 High
メモリ改ざんによるキャラクターのパラメ
タの改ざんが可能 Medium
発見された問題一覧
16
アプリ 項目 危険度
SandBag1
スコアの改ざんが容易 High
アカウントの大量作成が可能 High
他ユーザーの名前を書き換えることが可能 Low
他ユーザーの通信改ざんが可能 Low
SUNIDRA
メモリ改ざんによるチートが可能 High
メモリ改ざんによるキャラクターのパラメ
タの改ざんが可能 Medium
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
スコアの改ざんが容易
17
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
【概要】スコアの改ざんが容易
? サーバーに送信されるスコアを書き換えることができ、
不正にランキング上位に入ることが出来る
18
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
19
? Proxyを用いて通信を中継する際にリクエストを書き換える
HTTPリクエストヘッダ
スコア情報
【再現手法】通信の改ざんが容易SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
20
? Proxyを用いて通信を中継する際にリクエストを書き換える
HTTPリクエストヘッダ
スコア情報
99999
【再現手法】通信の改ざんが容易SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
? 送信する値を書き換えて上位にランクインできる
21
実際のスコア
448 pt
改ざん後のスコア
2147483647 pt
【再現手法】通信の改ざんが容易SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【影響】通信の改ざんが容易
22
モチベーション
の低下
通常プレイでは到達できない
スコアが1位にいる
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策 1/3】通信の改ざんが容易
23
? サーバー側で異常な値を送信してくるアカウントのデータ
を削除する
– 開発の必要はない
– DB内の不正なユーザーを削除することで一般ユーザーに対す
る影響を一時的に取り除くことができる
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
24
? 値の改ざんが行われていないかチェックするパラメタを追
加する
– クライアントとサーバーサイドでの開発が必要。必要な工数
は少ない
– pointから計算できるハッシュ値も同時に送るようにして、値
とハッシュ値の関係が正しいかを判定する
【対策 2/3】通信の改ざんが容易SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策 2/3】通信の改ざんが容易
25
http://dobon.net/vb/dotnet/string/md5.html
サンプルコード(クライアント側)
uuidとスコアを連結した
ものをハッシュ化
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策 2/3】通信の改ざんが容易
26
サンプルコード(サーバ側)
スコアの正当性をチェック
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策 3/3】通信の改ざんが容易
27
? 通信内容の秘匿
– 開発コスト高い
– 通信内容のパラメタも暗号化することで、どのようなパラメ
タのやりとりが行われるかを秘匿する
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策まとめ】通信の改ざんが容易
28
対策方法
開発コストの
低さ
ユーザビリ
ティ
セキュリティ
強度
備考
ログ監視 ○ ○ ×
根本的な
解決では
ない
パラメタ
追加 △ ○ △
パラメタ
の設定方
法なども
考える必
要がある
通信内容
の秘匿 × ○ ○
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
SandBag1
アカウントの大量作成が可能
29
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
【概要】アカウントの大量作成が可能
? 偽装した通信を大量に送ることで、アカウントを量産し、
ランキングを荒らすことができる
30
void cheat()
{
???
}
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
Program
【再現手法】アカウントの大量作成が可能
? アカウントを大量に作成するためのスクリプトを用意する。
31
※httpコマンドについては、 https://github.com/jkbrzt/httpie を参照してく
ださい。
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
uuidの値を変化させながら
リクエストを送信する
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
【再現手法】アカウントの大量作成が可能
32
※他ユーザーに影響を少なくするために、pointの値は負の値を用いている
SandBag1
? アカウントを大量に作成することでランキングが大幅に
下がる
アカウント量産前
34位
アカウント量産後
276位
【影響】アカウントの大量作成が可能
? ランキングの正当性が失われてしまうため、ユーザーは
ゲームに対しての信頼を失ってしまう
33
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策 1/3】アカウントの大量作成が可能
? IPアドレスによる制限を設ける
– 不正に大量作成を行っているユーザーがないかを監視する
– 問題のあるアクセスを行っているユーザーがあった場合は、
逐一そのIPアドレスからアクセスできないようにする
34
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策 2/3】アカウントの大量作成が可能
? CAPTCHAの利用
– ログインしていないユーザーもランキングに乗せたい場合の
選択肢
– ボット対策の有名な手法
– 悪性ユーザーが大量にアカウントを作成することを防ぐこと
ができる
35
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
引用:http://www.captcha.net/
【対策 3/3】アカウントの大量作成が可能
? ログイン機能を実装する
– 開発コスト高い
– 画面の追加が必要なため、ユーザービリティへの影響も大き
い
– メールアドレスやSNS連携(Twitter やFacebook)などで登録
を行う
– 登録が完了したユーザーのみランキングに反映させるように
する
– 登録をしないユーザーは遊べるが、ランキングへの反映がさ
れないように変える
36
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
【対策まとめ】アカウントの大量作成が可能
37
対策方法
開発コス
トの低さ
ユーザビ
リティ
セキュリ
ティ強度
備考
IPアドレスによ
る作成制限を設
ける
○ ○ × 根本的な解
決ではない
CAPTCHAの利
用 △ × ○
ログイン機能を
実装する × △ ○
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SandBag1
SUNIDRA
メモリ改ざんによるチートが可能
38
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
【概要】メモリ改ざんによるチートが可能
? メモリの改ざんにより、制限時間を改ざんすることができる
39
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
【再現手法】メモリ改ざんによるチートが可能
? Androidのメモリエディッタ(GameGuardian)を利用
? メモリ内からtimer の値を見つけて上限値に固定し、
ゲームを通常にクリアする
40
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
Timerの値が保持
されているアドレス
300秒(制限時間の上限)
に書き換える
【影響】メモリ改ざんによるチートが可能
? ランキング上位に入ることが出来る
? 正攻法でやっているユーザーのモチベーションへ深刻な
悪影響がある
41
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
通常プレイでは獲得
し得ないスコア
【対策 1/3】メモリ改ざんによるチートが可能
? ルート化検知を導入する
– クライアント側での開発が必要
– 端末上でのメモリ改ざんではAndroidがルート化されている
場合が多く、ルート化を検知することで対策になる
– ルート化検知参考リンク:
? https://blog.netspi.com/android-root-detection-techniques/
? http://docs.unity3d.com/ScriptReference/AndroidJavaClass.html
42
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
【対策 2/3】メモリ改ざんによるチートが可能
? 値の検索を困難にする
– クライアント側での開発が必要
– 値をそのまま保持せず、メモリに対する検索などを妨害する
– 例:値を定数値とXORしてメモリ上に保持
43
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
【対策 3/3】メモリ改ざんによるチートが可能
? メモリ改ざんが行われていないかチェックする
– クライアント側での開発が必要
– 時間の値が不正に改ざんされていないか判別する関数を、時
間の更新と共に評価を行う
– 適正な値か調べる(二重保持、ハッシュ値の保持)
44
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
【対策まとめ】メモリ改ざんによるチートが可能
45
対策方法
開発コス
トの低さ
ユーザビ
リティ
セキュリ
ティ強度
備考
ルート化検知を
導入する △ ○ △
ルート化検
知の回避法
が存在
値の検索を困難
にする × ○ ○
メモリ改ざんが
行われていない
かチェックする
× ○ ○
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
まとめ
? チートに関する基本的な手法の説明を行った
? SandBag1とSUNIDRAに対してセキュリティ診断を行い、
セキュリティ上で特に問題と思われる点に対し、概要、再
現手法、影響度、対策方法の観点で報告を行った
46
ご清聴ありがとうございました。
47
補足
48
ツール一覧
? Burp
– https://portswigger.net/burp/
? GameGuardian
– https://gameguardian.net/forum/forum/68-android/
49
通信の改ざんが容易 再現手法
? Proxy を用いてHTTP リクエストを改ざんする。Proxy には
Burp Suite Free Edition v1.6を用いた
? Android 端末のNetworkの設定でBurpを起動させているマ
シンをProxyとして設定し、サーバに対するリクエストを
フックする
? リクエストのpointに関するパラメタを改ざんしサーバに
送信する
50
他ユーザーの名前を書き換えることが可能 概要
? 他ユーザーのuuidを入手できた場合、ユーザー名を書き換
えることが出来る
51
書き換え
前
書き換え
後
他ユーザーの通信改ざんが可能
? サーバーとの通信がHTTPで行われているため、名前の変
更やスコアの書き換えが可能である。
? 手法 ARP SpoofingなどでMITM攻撃をする。
? 影響度 低い
? 対策 HTTPS通信にする。
? 備考 サービスには深刻な影響を与える可能性は高いが、
攻撃を行うための準備が難しいため、サービス全体への影
響度は低い。
52
他ユーザーの名前を書き換えることが可能
再現手法
? 他ユーザーのuuidを入手できた場合、書き換えたいユー
ザー名とポイントの更新を行う情報をサーバーに送る。
53
他ユーザーの名前を書き換えることが可能
影響度
? uuidは、.NETの機能を用いて生成されており、ランダムで
推測は難しく影響度が低い
? しかし、サーバーとの通信はHTTPで通信されていないた
め傍受されていたさいにはuuidが漏えいする危険性はある
54
他ユーザーの名前を書き換えることが可能
対策手法
? この攻撃にはpointの更新、uuidに対して認証が必要ない
という問題1-1と1-2の条件が必要である
? そのため、これらの問題のどちらかが解決できれば、この
攻撃も行えなくなる
55
【再現手法】メモリ改ざんによるチートが可能
? メモリの改ざんを行うことで、キャラクターのHPや攻撃力
を改ざんすることができる
56
SandBag1
? スコアの改ざんが
容易
? アカウントの大量
作成が可能
SUNIDRA
? メモリ改ざんに
よるチートが可能
SUNIDRA
HPの値を大幅に
高くした
←メモリ改ざん
Ad

Recommended

PDF
Etwest2014 ts 6
Shinji Kobayashi
?
PDF
スマートフォンゲームのチート事情
直生 亀山
?
PDF
SECCON 2015 × CEDEC CHALLENGE
kusano_k
?
PDF
とある颁辞肠辞蝉2诲虫アプリのチート编
kumin1030
?
PDF
一般的なチートの手法と対策について
優介 黒河
?
PDF
SECCON 2015 x CEDEC CHALLENGE (vulscryptos)
Charo_IT
?
PDF
オンラインゲームのチートとセキュリティ
Hayato Doi
?
PDF
とある诊断员の厂贰颁颁翱狈オンライン予选
zaki4649
?
PDF
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
?
PPTX
顿别狈础冲罢别肠丑肠辞苍2017冲顿别狈础でのチート?脆弱性诊断への取り组み
Toshiharu Sugiyama
?
PDF
滨苍迟别谤辞辫2015-肠4-3-モハ?イルケ?ームのチート対策
Osamu Kurokochi
?
PDF
アカウントハッキングと戦う!モバイルゲームに今、求められるセキュリティ
NHN テコラス株式会社
?
PPTX
摆颁贰顿贰颁2012闭ネットワークゲームの不正行為と対策
gree_tech
?
PPTX
ソーシャルゲームにレコメンドエンジンを导入した话
Tokoroten Nakayama
?
PPTX
オンラインゲームとセキュリティ改
土井 勇人
?
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
?
PDF
CEDEC?CHALLENGE ゲームAI プログラミングコンテスト 2013 in?CEDEC
Kazunori Sakamoto
?
PPT
Component basedgameenginedesign
DADA246
?
PDF
社会シミュレーションとデジタルゲーム
Youichiro Miyake
?
PDF
GDC2018 Amazon Overview
Amazon Web Services Japan
?
PPT
础颈-尝耻驳(础颈锄耻.尝罢×つくらぐ)「2.情报大学生ならゲームつくろうぜ!」
louis 0023
?
PDF
【厂罢搁3 パネルトーク】
Up Hatch
?

More Related Content

Similar to CEDEC 2015 チートチャレンジ (14)

PDF
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
?
PPTX
顿别狈础冲罢别肠丑肠辞苍2017冲顿别狈础でのチート?脆弱性诊断への取り组み
Toshiharu Sugiyama
?
PDF
滨苍迟别谤辞辫2015-肠4-3-モハ?イルケ?ームのチート対策
Osamu Kurokochi
?
PDF
アカウントハッキングと戦う!モバイルゲームに今、求められるセキュリティ
NHN テコラス株式会社
?
PPTX
摆颁贰顿贰颁2012闭ネットワークゲームの不正行為と対策
gree_tech
?
PPTX
ソーシャルゲームにレコメンドエンジンを导入した话
Tokoroten Nakayama
?
PPTX
オンラインゲームとセキュリティ改
土井 勇人
?
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
?
PDF
CEDEC?CHALLENGE ゲームAI プログラミングコンテスト 2013 in?CEDEC
Kazunori Sakamoto
?
PPT
Component basedgameenginedesign
DADA246
?
PDF
社会シミュレーションとデジタルゲーム
Youichiro Miyake
?
PDF
GDC2018 Amazon Overview
Amazon Web Services Japan
?
PPT
础颈-尝耻驳(础颈锄耻.尝罢×つくらぐ)「2.情报大学生ならゲームつくろうぜ!」
louis 0023
?
PDF
【厂罢搁3 パネルトーク】
Up Hatch
?
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
?
顿别狈础冲罢别肠丑肠辞苍2017冲顿别狈础でのチート?脆弱性诊断への取り组み
Toshiharu Sugiyama
?
滨苍迟别谤辞辫2015-肠4-3-モハ?イルケ?ームのチート対策
Osamu Kurokochi
?
アカウントハッキングと戦う!モバイルゲームに今、求められるセキュリティ
NHN テコラス株式会社
?
摆颁贰顿贰颁2012闭ネットワークゲームの不正行為と対策
gree_tech
?
ソーシャルゲームにレコメンドエンジンを导入した话
Tokoroten Nakayama
?
オンラインゲームとセキュリティ改
土井 勇人
?
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
?
CEDEC?CHALLENGE ゲームAI プログラミングコンテスト 2013 in?CEDEC
Kazunori Sakamoto
?
Component basedgameenginedesign
DADA246
?
社会シミュレーションとデジタルゲーム
Youichiro Miyake
?
GDC2018 Amazon Overview
Amazon Web Services Japan
?
础颈-尝耻驳(础颈锄耻.尝罢×つくらぐ)「2.情报大学生ならゲームつくろうぜ!」
louis 0023
?
【厂罢搁3 パネルトーク】
Up Hatch
?

CEDEC 2015 チートチャレンジ