Upgrade to Pro — share decks privately, control downloads, hide ads and more …

セキュリティ・キャンプ2019 Z2. ELFマルウェア検知エンジンの試作 成果報告

セキュリティ・キャンプ2019 Z2. ELFマルウェア検知エンジンの試作 成果報告

セキュリティ・キャンプ2019 Zトラック
https://www.ipa.go.jp/jinzai/camp/2019/zenkoku2019_program_list.html

にて実施した、Z2. ELFマルウェア検知エンジンの試作 の参加者が作成した成果報告資料です。

bachi/yuzuhara

August 17, 2019
Tweet

More Decks by bachi/yuzuhara

Other Decks in Technology

Transcript

  1. Z2. ELFマルウェア検知エンジンの試作
    セキュリティ・キャンプ2019
    Zトラック アンチウィルス実装ゼミ 成果報告
    張 東嘉 イボット アリジャン 上田 侑真
    講師 忠鉢 洋輔 大居 司

    View Slide

  2. Z2の概要
    ●ELFマルウェア検知エンジンのための,決定⽊に使う特徴
    量をひたすら⾒いだしていく
    ●なぜ決定⽊?
    ○判定理由が⾃明だから
    ○講師の強い意志

    View Slide

  3. システム概要
    MongoDB
    特徴量
    ストレージ
    特徴量抽出
    スクリプト
    決定木
    学習&評価
    1. 特徴量を追加 2. 特徴量を選択して
    学習&評価
    3. 何度も修正を繰り返す

    View Slide

  4. Z2講師が⽤意したデータセット
    悪性検体:
    VirusShareから抽出したELF 29,512件
    良性検体:
    DebianインストールDVDより抽出したELF : 172,483件
    学習に使⽤した検体数 (※それぞれ訓練⽤と評価⽤で2分割)
    マルウェア : 29,166
    正常系 : 29,166

    View Slide

  5. 特徴量を⾒つける
    ・マルウェアに多く含まれる⽂字列
    “/etc/init.d”, “/bin/sh”, “/var/log/wtmp”, “wget”, …
    ・エントロピー,圧縮率
    パッキングされている検体を⾒つける
    ・正常でないヘッダ・セクション・セグメント
    通常ではありえない改変されたヘッダを検出する

    View Slide

  6. 混同⾏列(Confusion Matrix)
    True Positive (TP)
    マルウェアを正しく検知
    False Positive (FP)
    正常系をマルウェアと誤検知
    False Negative (FN)
    マルウェアを未検知
    True Negative(TN)
    正常系を良性と認識

    View Slide

  7. とにかく特徴量を追加した結果(2〜3⽇⽬)
    (TP)
    13781
    (FP)
    856
    (FN)
    802
    (TN)
    13727
    精度 : 94.32%
    TP Rate : 94.50%
    FP Rate : 5.87%

    View Slide

  8. とにかく特徴量を追加した結果(2〜3⽇⽬)
    (TP)
    13781
    (FP)
    856
    (FN)
    802
    (TN)
    13727
    精度 : 94.32%
    TP Rate : 94.50%
    FP Rate : 5.87%
    FPがデカすぎる
    FP Rateが0.01%で製品レベルかなぁ・・・
    せめて1%ぐらいは切りたいよね

    View Slide

  9. 誤検知した正常系プログラムの調査 - 事例1
    誤検知された正常系プログラムをGhidraでリバースエンジニアリング
    → Heimdal ( https://www.h5l.org ) という認証⽤のプログラム
    ⽂字列を眺めると ”Copyright” を発⾒ ... 検知に使えるのでは?
    ”Copyright” が含まれたマルウェアは2099件,良性ソフトウェアが
    8298件
    → 新たな特徴量を発⾒

    View Slide

  10. 誤検知した正常系プログラムの調査 (続)- 事例2
    ・誤検知された正常系プログラムを確認したら FreeBSD を対
    象にしていた(Debian GNU kFreeBSD向けパッケージ)
    ・FreeBSD を対象としたファイルの数を確認
    → マルウェアが61件,良性ソフトウェアが2318件
    → 新たな特徴量として追加

    View Slide

  11. [0, 1, 2, 4, 5]
    [0, 1, 11, 12, 13, 14, 15, 16]
    [0, 1, 2, 3]
    [0, 1, 11, 12, 13, 14, 15, 16]
    [0, 1, 2, 3]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 42, 43, 53, 55, 56, 57]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 2, 3]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    ( … )
    [0→1→11→...→34→35] のルートを通る誤検知が多い ... 特徴量の追加・削除

    View Slide

  12. [0, 1, 2, 4, 5]
    [0, 1, 11, 12, 13, 14, 15, 16]
    [0, 1, 2, 3]
    [0, 1, 11, 12, 13, 14, 15, 16]
    [0, 1, 2, 3]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 42, 43, 53, 55, 56, 57]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 2, 3]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    [0, 1, 11, 12, 28, 29, 30, 31, 32, 34, 35]
    ( … )
    [0→1→11→...→34→35] のルートを通る誤検知が多い ... 特徴量の追加・削除

    View Slide

  13. 特徴量の調整
    ・パッキングを検出するため,圧縮率を特徴量に使⽤していた
    → 決定⽊から誤検知の原因だと判明
    ・圧縮率に閾値を設定し,特徴量を0, 1のみに更新した
    → 誤検知を⼤きく減らすことに成功

    View Slide

  14. 結果
    (TP)
    13886
    (FP)
    257
    (FN)
    697
    (TN)
    14326
    精度 : 96.73%
    TP Rate : 95.22%
    FP Rate : 1.76%

    View Slide

  15. 結果 - (⾼精度)
    (TP)
    14017
    (FP)
    188
    (FN)
    566
    (TN)
    14395
    精度 : 97.41%
    TP Rate : 96.12%
    FP Rate : 1.29%

    View Slide

  16. 結果 - (低FP率)
    (TP)
    7526
    (FP)
    18
    (FN)
    7057
    (TN)
    14565
    精度 : 75.74%
    TP Rate : 51.61%
    FP Rate : 0.12%

    View Slide

  17. まとめ
    ● 特徴エンジニアリングには複数の⽅法があり,
    やり⽅次第で⼤きく結果が異なる
    ● 精度やFPなど,どの結果を優先するかは場合による
    ○ ホワイトリストによる対応,別アルゴリズムによる検知とか
    ● ELFなんもわからん

    View Slide

  18. EOF

    View Slide