1 / 54

Windows PE ファイル感染及び発見的手法による検知

Windows PE ファイル感染及び発見的手法による検知. Nicolas BRULEZ / Digital River. PACSEC '04. はじめに. コンピュータ ウイルスの進化. 非暗号化 暗号化 少形( Oligomorphic ) 多様型( Polymorphic ) 変形型( Metamorphic ). PE ファイル形式. MZ ヘッダ PE ヘッダ PE ファイル ヘッダ PE オプショナル ヘッダ データ ディレクトリ セクション ヘッダ. 位置独立コード.

aricin
Download Presentation

Windows PE ファイル感染及び発見的手法による検知

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows PEファイル感染及び発見的手法による検知 Nicolas BRULEZ / Digital River PACSEC '04

  2. はじめに

  3. コンピュータ ウイルスの進化 • 非暗号化 • 暗号化 • 少形( Oligomorphic ) • 多様型( Polymorphic ) • 変形型( Metamorphic )

  4. PE ファイル形式 • MZ ヘッダ • PE ヘッダ • PE ファイル ヘッダ • PE オプショナル ヘッダ • データ ディレクトリ • セクション ヘッダ

  5. 位置独立コード • ウイルスはどのメモリアドレスでも実行可能であることが要求される • デルタ オフセットの計算

  6. Windows PE ファイル感染テクニック

  7. ウイルスの位置 • 最後のセクション: - 新しいセクション BEFORE :AFTER :

  8. ウイルスの位置 • 最後のセクション: - 新しいセクション

  9. ウイルスの位置 • 最後のセクション: - 最後のセクションの拡張 BEFORE :AFTER :

  10. ウイルスの位置 • 最後のセクション: - 最後のセクションの拡張

  11. ウイルスの位置 • ヘッダ感染

  12. ウイルスの位置 • キャビティ BEFORE :AFTER :

  13. 実行開始位置 • 最後のセクション内

  14. 実行開始位置 • 最初のセクション内

  15. 実行開始位置 • 最初のセクションの前

  16. e_lfanew 感染 • e_lfanewはPEヘッダ オフセットのポインタである • MZヘッダ内のMZ+3Chにある • e_lfanewの改変による感染は実に容易である • ウイルスはファイルの末尾にコピーされるが、独立した位置コードは不要である

  17. e_lfanew 感染 • プログラムが改変されることにより、そのe_lfanewはウイルスのPEヘッダにポイントする • そのためWindowsは感染したファイルではなく、ウイルスをロードする • そしてウイルスは感染したプログラムの一時的なコピーを作成し、 PEヘッダへの元のポインタを修正する • 最後にウイルスは例えばCreateProcessAを用いて一時ファイルを実行し、終了後、一時ファイルを削除する

  18. Windows PEファイルにおける発見的手法による検知

  19. PE ファイルの構造解析 発見的手法による検知は主にWindows実行可能プログラムのPEファイルの構造解析に基づく • エントリポイント • セクションの特性 • (固有の特性をもつ)セクションの名前 • PEヘッダ内で更新されない値 • ファイル内のPEヘッダの位置 など

  20. PE ファイルの構造解析 • 最後のセクション内のエントリポイント • 最初のセクションの前のエントリポイント

  21. PE ファイルの構造解析 • セクションの特性 : - 最後のセクション « 実行可能 » - 最初のセクション « 書き込み可能 » • セクション名およびその特性

  22. PE ファイルの構造解析 • «SizeOfImage» PEヘッダ内で正しくない • ファイルの終わり近くのPEヘッダ • « コードサイズ » 正しくない

  23. コード解析 • エントリ ポイントにおける非標準命令 • デルタ オフセットの計算 • 疑わしいコードの出力先変更: - JUMP FAR - PUSH RET   その他..

  24. コード解析 • PEファイルを探しているコード • システムDLLのイメージベースを取得するためのPEB使用 • システムの重要データのハードコードされた値 (PEB ...)

  25. コード解析 • コード セクション内の疑わしい文字列 - "*.exe" - Win関数の名前: FindFirstFileA, MapViewOfFile など.. - レジストリ キー : Run / RunOnce など

  26. エミュレーション • JMP FAR • PUSH / RET • + コード・フローの出力先変更のための多様な方法 • ディクリプタ エミュレーション( ループの識別)

  27. 対発見的テクニック

  28. PE 構造 • セクションの特性の非改変 • 追加された1つ以上のセクション (偽装リロケーション/インポート) • 疑わしいものを避けるために上書きするコードセクションの部分 • ウイルスを配置するコードセクションのパッキングは開放された場所 • EPO: エントリポイントの隠蔽

  29. PEの構造 • FF15/FF25 (IATスロットと呼ぶ) パッチ • スタック フレーム パッチ • 最新のチェックサム • 既存のセクション名の変更(可能な場合) • « コードサイズ » 固定

  30. アンチ エミュレーション • SEH – 構造化例外処理(Structured Exception Handling) • コプロセッサ命令 • MMX / SSE テクノロジ • 隠し命令 • アンチ仮想マシンコード • 鍵をブルートフォースする暗号解読層 • スレッド

  31. アンチ ヒューリスティック(発見的) コード • デルタ オフセットは異なる方法で計算される • 疑わしい行為を隠すオブフスケーション(不明瞭化)の使用法 (PEファイルチェックなど) • ウイルスローダに文字列はない: CRC / HASH

  32. 基本的な発見的エンジンについて

  33. 基本エンジン • 標準バイナリ : notepad, regedit, calc, MS Pain, WordPad など…

  34. 基本エンジン

  35. 基本エンジン

  36. 基本エンジン

  37. 基本エンジン • 感染したバイナリの解析 : 多様型、暗号化、標準、 EPO など

  38. 基本エンジン

  39. 基本エンジン

  40. 基本エンジン

  41. 基本エンジン

  42. 基本エンジン

  43. 基本エンジン

  44. ベーシック・エンジンのプレゼンテーション

  45. 基本エンジン

  46. 基本エンジン 注: これは基本エンジンにも関わらず、 最新のWin32ウイルスジェネレータ(Win32 Virus Generator)(VCL32)で作成された全てのウイルスを発見的に検知した

  47. 基本エンジン • パックされたファイルの解析: PE protect、 PEShield など…

  48. 基本エンジン

  49. 基本エンジン

  50. 基本エンジン

More Related