Mais conteúdo relacionado
Semelhante a [CB17] Trueseeing: Effective Dataflow Analysis over Dalvik Opcodes (20)
[CB17] Trueseeing: Effective Dataflow Analysis over Dalvik Opcodes
- 2. WHO WE ARE
➤ 吉村 孝広 (@alterakey)
➤ 株式会社モノリスワークスCTO
➤ Keybase:
https://keybase.io/alterakey
➤ 吉村 賢哉(@ad3liae)
➤ 株式会社モノリスワークスCEO
➤ Keybase:
https://keybase.io/ad3liae
➤ 株式会社モノリスワークスとは?
http://monolithworks.co.jp/
➤ 講演: DEF CON 25 Demo Labs
- 3. WHAT WE DO
➤ alterakey
➤ Security Researcher
➤ iOS/Android
➤ Network pentesting
➤ ad3liae
➤ Security Researcher
➤ iOS/Android
- 7. WHY IS DECOMPILING HARD?
➤ 逆コンパイラの動作には何が必要なのか…
➤ 正確な逆アセンブル結果
➤ ある種の共通コードパターン
(e.g. function prologue/epilogue)
➤ 難読化ツールはこれらを妨害
- 8. GO DIRECT
➤ Trueseeing
➤ 機能
➤ データフロー解析
➤ 定数や型のゆるい推論
➤ マニフェスト分析
➤ 逆コンパイラを使用しない
➤ 速度向上
➤ 頑健性向上
➤ D8にも対応
➤ PyPIからすぐに使える!
- 10. MARKING UP
➤ 解釈
➤ 通常指令 (op)
➤ メタ指令
➤ .class / .method
➤ .implements / .super etc.
➤ アノテーション類
➤ マーク
➤ メソッド
➤ クラス
- 11. GO FASTER
➤ コードベースをマップする
➤ 定数
➤ 関数呼び出し
➤ sput (static put)
➤ iput (instance put)
➤ 名前類 (メソッド, クラス)
➤ クラス群の関係性
➤ 今ごろなぜSQL?
— 複雑なクエリを効率良く実行
➤ DBに「考えさせる」設計
- 12. DATAFLOW TRACING (1)
➤ Lenient Backtracking
➤ 「関心点」から引数まで
➤ 関心点が何らかの定数に帰着させられ
ないか追跡
(関心点を「解く」)
➤ 関心点の例
➤ API呼び出しの引数 etc.
➤ レジスタの参照/書込を対応
➤ move*, const*
- 13. DATAFLOW TRACING (2)
➤ Call tracing
➤ 引数から呼び出し元へ
➤ Call stackの上位へ波及
➤ p*の特殊な取扱い
➤ 正しくない場合もある
➤ R8がp*を積極的に再利用する例
➤ WIP, 近日対処
- 21. REPORTING IN HTML
➤ 詳細かつ明解なレポート
➤ Summary
➤ Description
➤ Solution
➤ Risk Factor
➤ CVSS score
➤ Instances
➤ 人間向け
- 23. CAPABILITY
➤ OWASP Mobile Top 10 (2016)の
ほぼ全域をカバー
➤ M1: Improper Platform Usage
➤ M2: Insecure Data Storage
➤ M3: Insecure Communication
➤ M4: Insecure Authentication
➤ M5: Insufficient Cryptography
➤ M6: Insecure Authorization
➤ M7: Client Code Quality Issues
➤ M8: Code Tampering
➤ M9: Reverse Engineering
➤ M10: Extraneous Functionality
- 24. CASE STUDY
➤ #1: InsecureBankV2
(DEFCON 25)
➤ #2: クレジットカードアプリ
➤ #3: 温泉ガイドアプリ
paper stack 1 SQ SEPIA 500X by wintersoul1 on flickr, CC-BY-NC-ND 2.0
- 25. CASE STUDY #1
➤ InsecureBankV2 (難読化版)
➤ DEF CON 25で発表
➤ 優秀な’hack-me’型問題
➤ もともと難読化されていない
➤ 以下のルールを元に難読化
“proguard-android-optimize”
➤ パス増加: 5→8
➤ 全ての最適化を許可
(i.e. HV class merging etc.)
- 29. CASE STUDY #2
➤ 中国向けクレジットカードアプリ
➤ 現在日本では入手不能
(地理的制約が適用された?)
➤ 公開β中に発見
➤ 面白い対象
➤ 機微情報の取扱い
➤ 大量の個人情報
- 36. M7: CLIENT CODE QUALITY
➤ addJavascriptInterface()によるカスタムJS
インターフェースの使用
➤ APIレベル17未満ではカスタムJSインター
フェースがarbitrary OS command
executionへexploitできる可能性
➤ 条件:
➤ コンテンツのコントロール
➤ 対象あるいは環境のAPIレベルが17未
満
- 37. GO FURTHER
➤ 展望・TBD類
➤ バイナリパッチモードの強化
➤ 正確性の向上
➤ シグニチャの追加
➤ exploitationの追加
➤ ARMコード解析
➤ MSILコード解析
➤ iOSサポート
➤ シンボリック実行の使用
➤ 自動的な動的解析
摩周湖 by Sendai Blog on flickr, CC-BY 2.0
- 38. FURTHER BINARY PATCHING
➤ Status: ほぼdone (近くPR)
➤ Introducing variable (in smali)
➤ ローカルレジスタの確保
➤ 定数の割り当て
➤ 対象引数の置き換え
➤ DBのパッチ
➤ Introducing function (in smali)
➤ 関数をテンプレートから導入
➤ 呼び出しの導入
➤ DBのパッチ
➤ 自動修復機能の強化に必須
- 39. FURTHER ACCURACY
➤ Status: ほぼdone (近くPR)
➤ storageのゾーニング
(e.g. 外部=insecureなど)
➤ 必要な引数のみを解析
➤ APIの選択的なemulation
(e.g. StringBuilderなど)
➤ TLS pinningパターンの追加
➤ 確度の慎重な評価
- 40. FURTHER SIGNATURES
➤ Status: WIP
➤ HTTP parameter injection
➤ Path traversal
➤ Client-side XSS/SQLi
➤ 脆弱な暗号系の使用
➤ rooted端末の不完全な検出
➤ 機微情報の疑わしい使用
➤ Taint解析
➤ File I/O
➤ Network I/O
- 42. ARM CODE ANALYSIS
➤ Status: WIP
➤ ネイティブコード解析
➤ 検討: radare2 (r2)+VEX IR
➤ 問題:
➤ r2: 時間がかかる
➤ r2: ファイル全体の逆アセンブルができ
ない?
(cf. IDAでのProduce File)
- 44. IOS
➤ Status: WIP
➤ Swift, Objective-C, bitcodeによるバイナ
リの解析
➤ 検討: radare2+VEX IR+LLVM tools
➤ 問題:
ARMコード解析と同様
- 45. TRUE SYMBOLIC EXEC.
➤ Status: 研究中
➤ シンボリック実行によって
➤ 順方向解析できる
➤ 到達可能性の評価ができる
➤ すると…
➤ コードの部分評価ができる
(e.g. 変換を解析したり)
➤ 正確性の向上
➤ 高度な難読化ツールへの耐性
➤ 検討: VEX IR
- 50. ACCURATE (2)
➤ アプリが難読化されていても影響を受けずに解析
できる
➤ M1: 不適切なCP/BRの公開, プライバシーの懸
念, 有効なdebug/backupビット etc.
➤ M2: 安全でないファイルパーミッション, ログ
出力がある問題 etc.
➤ M3: 平文通信, TLS non-pinning etc.
➤ M5: 固定パラメータによる暗号系の使用 etc.
➤ M7: WebView関連の脆弱性 etc.
➤ M8: 公開鍵が埋め込まれている問題 etc.
➤ M9: 難読化の欠如
- 52. FREE AS FREEDOM
➤ GPL-3
➤ https://github.com/monolithworks/
trueseeing
➤ 永久に自由
➤ 改修やシグニチャを今後拡充
➤ 便利なだけでなく不可欠な存在を目指し
て
Freedom by Mochamad Arief on flickr, CC-BY-NC-ND 2.0