Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
めんどうくさいゲームセキュリティ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
@tkmru
December 18, 2019
Programming
11k
20
Share
めんどうくさいゲームセキュリティ
社内勉強会にて
@tkmru
December 18, 2019
More Decks by @tkmru
See All by @tkmru
10分で知るゲームが「チートされる」仕組み/findy202603
tkmru
0
870
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
8
2.6k
Bring Your Own Container: When Containers Turn the Key to EDR Bypass/byoc-avtokyo2024
tkmru
2
1.8k
ipa-medit: Memory search and patch tool for IPA without Jailbreaking/ipa-medit-bh2022-europe
tkmru
0
410
Ipa-medit: Memory modification tool for iOS apps without Jailbreaking/ipa-medit-codeblue2022
tkmru
0
230
趣味と実益のための著名なOSSライブラリ起因の脆弱性の探求/seccamp2021-b5
tkmru
0
5.5k
Ipa-medit: Memory Search and Patch Tool for IPA Without Jailbreaking @Black Hat USA 2021 Arsenal/ipa-medit-bh2021-usa
tkmru
1
4.8k
Learn the essential way of thinking about vulnerabilities through post-exploitation on middlewares (MySQL/PostgreSQL編)/seccamp2020-b8
tkmru
3
980
apk-medit: memory search and patch tool for debuggable APK @CODE BLUE 2020 Bluebox
tkmru
0
250
Other Decks in Programming
See All in Programming
Agentic UI beyond Chats Architecture Patterns & Open Standards @ngMunich 05/2026
manfredsteyer
PRO
0
110
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
1
170
GoogleCloudとterraform完全に理解した
terisuke
1
200
Firefoxにコントリビューションして得られた学び
ken7253
2
170
ついに来た!本格的なマルチクラウド時代の Google Cloud
maroon1st
0
460
「なんか〇〇ライブラリで脆弱性あるみたいなんだけど。。。」から始める脆弱性対応 / First Steps in Vulnerability Response
mackey0225
2
130
AlarmKitで明後日起きれるアラームアプリを作る
trickart
0
140
AWSはOSSをどのように 考えているのか?
akihisaikeda
0
130
関係性から理解する"同一性"の型用語たち
pvcresin
2
250
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
210
空間オーディオの活用
objectiveaudio
0
160
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
120
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
170
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
790
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
440
How to Think Like a Performance Engineer
csswizardry
28
2.6k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Marketing to machines
jonoalderson
1
5.3k
Tell your own story through comics
letsgokoyo
1
930
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
200
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
230
Transcript
めんどうくさい ゲームセキュリティ アカツキ セキュリティエンジニア 小竹 泰一
タイトルの元ネタ
自己紹介 • 名前: 小竹 泰一 • 入社: 2019年9月 • 職種:
セキュリティエンジニア • 脆弱性診断、ツールの検証/開発などなど
脆弱性診断とは!? • 攻撃者目線で自社サービスに対して攻撃し、脆弱性を発見する • 自社サービスのセキュリティホールを修正するために実施 • セキュリティインシデントによる被害を未然に防ぐ
いろいろな脆弱性診断
ネットワーク診断 • ミドルウェアの設定不備や、古い バージョンのソフトウェアが放置さ れていることによる脆弱性などを発 見 • 社内ネットワークにやる場合だと... • 社内ネットワークにつないだ診断員の
PCからネットワーク上の端末へ攻撃 • 脆弱性を持つ端末が放置されていると、 社内ネットワークに攻撃者が何らかの 形で侵入した場合、その端末が攻撃の 起点となる可能性
アプリケーション診断 • Webアプリケーションやスマホア プリなどに対する脆弱性診断 • XSS、SQLi、CSRF、SSRF、権限管理 の不備などを見つける • ゲームアプリの場合だとチートのしや すさという観点からも確認
• ユーザー自身が攻撃してくるので、 他のアプリケーションとは観点が 異なる
今日のお話 • ゲームアプリの診断で確認するところとチート対策について、 ざっくりお話しします • 時間の都合上、すべて網羅しているというかんじではないです
ゲーム以外のアプリケーションの診断 • プロキシツールをつかってアプリケーションとサーバーの間の 通信の詳細を見て、改ざんし脆弱性がないかチェック • プロキシツールを使うと通信内容を確認、改変しやすい サーバーの証明書 プロキシの証明書 公開鍵の証明書 公開鍵の証明書
Burp Suiteで通信内容を見る様子
ゲームアプリの診断 • 通信内容が暗号化されていることが多く、ただプロキシを使う だけでは中身を読み取れない プロキシの証明書 サーバーの証明書 公開鍵の証明書 公開鍵の証明書
Burp Suiteで通信内容を見る様子 暗号化されている
診断準備が必要 • 暗号化に使われている鍵とアルゴリズムを特定 • BurpやPacketProxyといったプロキシツールのencoderを開発 • 有償版のBurp Suiteはスキャナーがついていて便利 • PacketProxyはTCP/UDPを利用したバイナリ通信に対応していたり、
DNSサーバーが組み込まれていたりして便利
ありがちな脆弱性 • 複数のリクエストを同時に送信することで回数の制限を突破 • 例: 有料のガチャを1回分のコストで何度も引く • ガチャを引く際のリクエストをプロキシ上に保存 • 複数の同一のガチャを引くリクエストを同時に送信
• 例えば20個のリクエストを同時に送信すると9割程度のリクエストが 通るケースがある • 原因: DBでのロックの不備 • SELECT FOR UPDATEを用いて規定回数以上に処理が通らないように する
見るべきところは 通信レイヤーだけではない
クライアント上にもゲームロジックが 載っていると.... • メモリ上のデータ • apk/ipa内のバイナリ • ローカルファイル
クライアント上にもゲームロジックが 載っていると.... • メモリ上のデータ • apk/ipa内のバイナリ • ローカルファイル 攻撃可能!
メモリ改ざん • デバッガやチートツールを用いて、メモリ上の値を検索 • GDB、IDA Pro、GameGuardianなど • 見つかった値を改ざんしチート • スコアや所持金などを不正に上昇させる
• チートツールがあるので、チーターがカジュアルにチート可能 • この辺はゲーム以外のスマホアプリでも見ることもある
ありがちな脆弱性 • メモリ改ざんが有効な画面が一部だけ存在する • バトル画面は対策されていても、ショップ画面では対策されていない 場合がある • 対策: メモリ上のデータのエンコード/暗号化 •
くわしくは後ほど
バイナリの改ざん • 逆アセンブルした結果やデコンパイルした結果を元にバイナリ を解析 • パッチを当てることでチート • メモリ改ざんより難易度が高い • シンボル(関数名、変数名)が残っている、あるいはメタデー
タから復元できると容易 • Unityのglobal-metadata.datに注意
ローカルファイルの改ざん • ローカルファイル内にゲーム情報が保存されていることがある • 改ざんすることでチートができる • この辺はゲーム以外のスマホアプリでも見ることもある
チート対策方法
バイナリ改ざん対策 • シンボル情報の削除 • メタデータからも復元できないように • コード難読化 • 逆アセンブル、デコンパイルされても処理がわからないように •
コード改ざん検知 • パッチを当てられたらゲームが起動しないように • 攻撃者には無限に時間があるため、完全なリバースエンジニアリン グ対策は難しい
パケットの改ざん対策 • SSL Pinning • HTTPSで通信する際の証明書 or 公開鍵が一致するか検証 • プロキシツールの証明書を弾くことができる
• 通信内容の暗号化 • リバースエンジニアリング対策も併用 • バイナリからのシンボル情報の削除 • バイナリの難読化 多層防御が重要!
パケットの改ざん対策 • より強くするには.... • コード改ざん検知 • SSL Pinningを解除させないために • リクエスト/レスポンス改ざん検知
• 暗号化 + bodyに入っているデータのハッシュの検証でより強く • 独自暗号 • 一般的な暗号方式だと、暗号に使われている定数でバイナリをgrepされると 暗号方式がバレてしまう
メモリ改ざん対策 • メモリ上の値のエンコード/暗号化 • デバッガアタッチの検知 • GDBなどのデバッガの使用を検知 • Root化端末/Jailbreak端末の検知 •
チートツールはRoot化端末/Jailbreak端末のみで動作することが多い
ローカルファイル改ざん対策 • ゲームの進行を左右するようなファイルを置かない仕様に • 置く場合は暗号化 • リバースエンジニアリング対策も併用 • バイナリからのシンボル情報の削除 •
バイナリの難読化 多層防御が重要!
チート対策のポイント • クライアント側にロジックを載せると、100%の対策は不可能 • 時間と技術があれば理論上突破できる • 攻撃者には無限に時間がある • できるだけサーバー側にロジックを寄せるのが好ましい •
カジュアルなチートは阻止したい • 簡単にツールを使うだけでチートできるようなのは対策マスト • 他ユーザーに影響が及ぶようなチート、脆弱性は防ぎたい • 他ユーザーのアイテムの使用、サーバーが落ちる(DoS)など
まとめ • ゲームアプリの診断は他のアプリケーションの診断に比べてめ んどうくさい • 高レイヤーと低レイヤーに両方に触れられるのは面白い!! • クライアントサイド、サーバーサイド両方で対策を行う必要が あり、めんどうくさい •
多層防御が重要
おしまい