Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DLL Injectionを用いた****** Chr*meへの攻撃 [(https|http)POSTデータの奪取](自粛版)

1,180 views

Published on

none

Published in: Technology
  • Be the first to comment

DLL Injectionを用いた****** Chr*meへの攻撃 [(https|http)POSTデータの奪取](自粛版)

  1. 1. セキュリティキャンプ・アワード2016 takaki DLL Injectionを用いた****** Chr*meへの攻撃 [(https|http)POSTデータの奪取] 2016/03/04
  2. 2. 簡単な自己紹介 ハンドルネーム:takaki 年齢:0x13歳 Twitter:tikuwachan_nara [icon] e-mail:157008it@edu.setsunan.ac.jp 所属:なし
  3. 3. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  4. 4. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  5. 5. DLL Injectionとは・・・ DLL EXE 挿入 [目的] ・パッチを当てる ・ログを取る ...など            (実行ファイル) (動的リンクライブラリ ) イメージ
  6. 6. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  7. 7. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  8. 8. ****** Chr*meを利用していると... [自分の場合] ↓ たくさんタブを開く ↓ メモリをたくさん食う
  9. 9. 1.無駄にメモリを使ってるように感じる****** Chr*me 2.危険なデータとかメモリ上に残ってそうだ 3.メモリを解析してみよう 上記の思考に至りました。 ...というわけで しかし、どうやって解析するのか ...
  10. 10. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  11. 11. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  12. 12. 今回の解析に利用したツール ・Cheat Engine 6.5 (http://www.cheatengine.org/downloads.php ) -opensource これを選んだ理由 ・高速なメモリスキャンが可能 ・VEH DebuggerやKernelmode Debuggerが使える ・アンチデバッグに検出されにくい (カーネルAPIやネィティブAPIを使ってるため) ・x64をDisassemblyできる 次に参考図
  13. 13. 今回の****** Chr*meの攻め方 1.Chromeのプロセスをアタッチして、メモリスキャンをしてみると生のPOSTデータが 残っていることが分かった 2.winsock2のWSAsendにブレークポイントを設置してみる 3.POSTのタイミングと同時にブレークさせる 4.HTTPSの場合暗号化される前のデータがどこかで拾えそう 5.メモリスキャンと併用しながら生のPOSTデータがメモリのどこかに一旦展開するよう な関数を探してみる 6.探していると生のPOSTデータのポインターとサイズが都合よく拾える関数が見つ かった。
  14. 14. 今回作ったDLLの内容 1.アドレスが常に固定でないため、モジュール(chr*me.dll)のアドレスから特定 のバイト列をスキャンし関数のアドレスを特定する。 2.関数のアドレスにハードウェアブレークポイントを設置する。 (なるべくメモリを改変したくない) 3.ブレークした際に生のPOSTデータのポインターとサイズを取得 4.生のPOSTデータを取得し、パーセントエンコーディングしてから サーバにデータを送信する。
  15. 15. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  16. 16. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  17. 17. デモの内容 動画URL:https://youtu.be/HJ0UWpDYtQc 1.現行のバージョンの****** Chr*meに作ったDLL を挿入する 2.用意したローカルサーバにPOSTデータが転送さ れていることを確認する 環境 ・Windows 7 ・xampp ・アンチウイルスソフト導入済み
  18. 18. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  19. 19. ・DLL Injectionとは ・****** Chr*meを解析するに至った経緯 ・未知のメモリの解析手段 ・デモ ・DLL Injectionを防ぐ方法の考案
  20. 20. 1.ntdllのLdrLoadDllをhookし、DLLのホワイトリストを作成 し弾く 2.ntdllのNtCreateThreadExをhookし、スタートアドレス が適切なモジュールのものかチェックする 3.悪意のあるコードをパターンで検出する しかし、まだ未実験 以下を考案
  21. 21. 最後に ・◯ウェアの中にはこういった攻撃手法のものもあるかもし れない ・最新のバージョンのアンチウイルスソフトでも検出されない (上図参考) ・****** Chr*meはもう少し軽くしてほしい

×