始めに
•オンラインゲームでチートなどの不正行為など、運営の人
が困ってる。
•実はオンラインゲームなどもセキュリティの分野が
とても大切です。
今回のTL
実際にチートをしてみて、
どのような脆弱性は潜んでいるはか調べてみる。
今回使うゲーム
もふもふしよ♡
10秒以内に何回キー
ボードが叩けるか競う
ゲーム
今回使うゲーム
ランキング
スコアが高い順に順
位がつく
ゲームシステム(軽く)
ユーザ
サーバ
WEB
スコア
Play
Access
ゲームスタート(5分)
•なんでもあり!
•ゲーム終了時にスコアが一番高い人が1位!
ゲームスタート(5分)
http://192.168.7.36:60000
チート方法(実演)
•メモリをいじる
•逆コンパイル
•パケットの偽装
メモリをいじる1
うさみみハリケーンを使う!
メモリをいじる2
UsaMimi64.exeを実行
メモリをいじる3
対象の実行ファイルを選択
メモリをいじる4
検索 → メモリの範囲を指定して検索
メモリをいじる5
制限時間が短い時(今回は10秒)
実行速度を落としたり、
一時停止を使用する。
メモリをいじる6
値を変えて、メモリを特定。
メモリをいじる7
特定した。
メモリをいじる8
特定したメモリを書き換
えてスコアを改ざんする。
逆コンパイル1
• ILPsyを使う。
逆コンパイル2
• fileコマンドを使う。
• .NETで動いてることがわかる
逆コンパイル3
• 1度保存して自分の開発環境で開
いてみると便利
• 今回はvisual studio 2013 で開く
逆コンパイル4
• めちゃくちゃ変数宣言してるところ
がある。
• 変数の値を変えたらスコアがいじ
れるかも。
逆コンパイル5
• ロード時に変数を初期化してる。
• CountEventの初期値が0。
• CountEventの値を変えてコンパイ
ルしてみたらどうか。
逆コンパイル6
• スコアが変わった。
パケットの偽装1
•Fidolrを使う!!
パケットの偽装1-2
• 送信時にプロキシで止める
パケットの偽装1-3
• Rules → Automatic Breakpoints
→ Before Requests
パケットの偽装1-4
• 送信するスコアを止めれる。
パケットの偽装1-5
• スコアの改ざん。
パケットの偽装1-6
• 改ざんしたスコアの送信。
パケットの偽装1-7
•成功!
パケットの偽装2
•Wiresharkを使う!!
パケットの偽装2-2
•パケットの中身が見える
パケットの偽装2-3
•追跡 → TCPストリーム
パケットの偽装2-4
•POSTメッソドでデータを送っている
•パラメータは
• UserName → ユーザの名前?
• Score → 得点??
小ネタ。
赤文字が リクエスト
青文字がレスポンス
パケットの偽装2-5
•偽装パケットの生成。
• C#
• シェル
• 他にも
パケットの偽装2-6
•偽装パケットの生成。
• C#
• シェル
• 他にも
パケットの偽装2-6
•偽装パケットの生成。
• C#
• シェル
• 他にも
Chrome拡張
Advanced REST client
Google
rest-client
HTTPSender
ツールを自分で作ってみると面白いかも
ね…
対策1
• メモリを解析されにくくする
• 動いている変数の数が少なかったため、メモリが特定された。
• 変数の数を増やして動いているメモリを特定されにくくさせる。
対策2
• デコンパイルさせない
• 容易にデコンパイルされる言語であるC#で作られていた。
• デコンパイルされにくい言語で作成する。
• 難読化する
• デコンパイルされたとき、綺麗にソースコードが見えていた。
• デコンパイルされてもコードが読みずらくさせる。 →難読化されてるだけであきらめる人は多い
対策3
• プロトコルの変更
• HTTPを使用していたため、容易に解析されてしまった。
• 独自プロトコルを用いて解析を困難にさせる。
対策4
• どんなに対策しても、必ずチートをしてくる人がいる。
• 対策したからと言って油断せずに…
• チートを使用した人は、しょっ 処刑です!!!
対策5
•実は、1つだけチートの対策してた。
対策6
•XSSの対策
対策7
•理由
•うまいこと動かなかった。(すみません)
•別のユーザーにガチで迷惑かかる。(ゲーム以外にところで)
対策8
•もしできたら
•DOM操作のスクリプトを埋め込んでスコアが低くても
常に自分が1位になれる。
最後に…
•今回得た知識を悪用しないこと。
• 攻撃したくなったら、自分の攻撃者側と攻撃される人側になって攻撃してみる。
• 自分の作ったシステムに脆弱性がありそうだったら、友人達に攻撃してもらう。

オンラインゲームのチートとセキュリティ