死にゆくアンチウイルスへの祈り

5c6358240ec94522f70cf7b0e657f58f?s=47 Yuma Kurogome
September 10, 2017

 死にゆくアンチウイルスへの祈り

Security meets Machine Learning 第1回キックオフミーティング https://connpass.com/event/62844/ 発表資料

5c6358240ec94522f70cf7b0e657f58f?s=128

Yuma Kurogome

September 10, 2017
Tweet

Transcript

  1. Copyright©2017 NTT corp. All Rights Reserved. 死にゆくアンチウイルスへの祈り マルウェア対策のための機械学習入門 NTTセキュアプラットフォーム研究所 黒米

    祐馬 Security meets Machine Learning #1 2017/09/10
  2. 2 Copyright©2017 NTT corp. All Rights Reserved. • 経歴 •

    NTTセキュアプラットフォーム研究所 新卒一年目 • 関心分野 • マルウェア解析 • フォレンジック • 仮想化技術 • 機械学習は専門外 • だが,いまどきのセキュリティ系論文は多少の統計・機械学習の素 養,数値計算の常識がなければ読めない • 泣く泣く薄汚れたipynbを開き,混乱のまま と打ち込む ことになる 自己紹介 np.meshgrid
  3. 3 Copyright©2017 NTT corp. All Rights Reserved. アンチウイルスを取り巻く現状 https://www.wsj.com/articles/symantec-develops-new-attack-on-cyberhacking-1399249948 https://www.fireeye.com/blog/executive-perspective/2014/05/ghost-hunting-with-anti-

    virus.html •パック,難読化,ポリモーフィズム,メタモーフィズム,そして標的型攻撃 •シグネチャベースのアプローチがついに限界を迎える 2014年:「従来型」のアンチウイルスは死んだ •エンドポイント,機械学習あるいは「人工知能」にフォーカスした新興ベンダ •高い検出率をアピール 現在:「次世代型」アンチウイルスの勃興 アンチウイルスは攻撃の45%しか検知できない ――Symantec, 2014. 多くのマルウェアの寿命は2時間以下, シグネチャベースのアプローチは「幽霊狩り」 ――FireEye, 2014.
  4. 4 Copyright©2017 NTT corp. All Rights Reserved. アンチウイルスを取り巻く現状 https://eugene.kaspersky.com/2016/05/27/darwinism-in-it-security-pt-3-time-to-deal-with- these-no-good-parasites/

    https://labsblog.f-secure.com/2016/11/16/whats-the-deal-with-next-gen/ •「従来型」アンチウイルスは無用の長物 •独立系テスト機関は利権団体でしかない 「次世代型」アンチウイルスベンダの主張 •機械学習を用いたソリューションは「従来型」ベンダも以前から提供している •「次世代型」ベンダはVirusTotalなどのコミュニティにただ乗りしている 「従来型」アンチウイルスベンダの反論 VirusTotalから結果をかすめとる寄生虫どもは 間接的にサイバー犯罪を助長している ――Kaspersky, 2016. なぜ「次世代型」ベンダが喧嘩腰なのかわからないが, まあ酒でも酌み交わして,アイデアとデータを共有し, セキュリティのためにできることを語り合おうぜ ――F-Secure, 2016.
  5. 5 Copyright©2017 NTT corp. All Rights Reserved. いずれにせよマルウェア対策には機械学習の適切な理解が不可欠 本発表の概要 •

    どのように進めるのか • どのようなライブラリが利用できるのか • 注意しなければならないことはなにか • どのような研究が行われているのか マルウェア対策におけるデータ分析プロセス 機械学習をマルウェア対策に適用する際の注意点を整理し, 「とりあえず手を動かせるようになる」までをまとめる もちろん しただけでは「機械学習を理解した」とはいえませんが, 少なくともセンセーショナルな広告・ポエム・エアプ勢に踊らされるようなことはなくなるでしょう こんな発表聞くよりCoursera Machine LearningとKaggleやったほうがいいです from sklearn import svm
  6. 6 Copyright©2017 NTT corp. All Rights Reserved. で巨人の肩の上に立つ • 機械学習関連

    • jupyter • numpy • scipy • pandas • scikit-learn • matplotlib • seaborn • scikit-multilearn • imbalanced-learn • hyperopt • mlxtend • XGBoost • keras • PyTorch • … • マルウェア対策関連 言語の選択 http://pythonarsenal.com/ 残念ながらマルウェア対策関連の ライブラリはPython 2系多し ループを極力書かない行列計算の作法を学ぶ 実験ノートをコード化する インターフェイスの統一,コードの再利用性を意識する scikit-learnのベースクラスを 継承したライブラリ多数
  7. 7 Copyright©2017 NTT corp. All Rights Reserved. • CRISP-DM •

    SEMMA • KDD データ分析プロセス Business Understanding: 課題理解 Data Understanding: データ理解 Data Preparation: 前処理 Modeling: モデリング Evaluation: 評価 Deployment: 適用 Sample: データ取得 Explore: データ探索 Modify: 前処理 Model: モデリング Assess: 評価 Selection: データ選択 Preprocessing: 前処理 Transformation: データ変換 Data Mining: データマイニング Interpretation/ Evaluation: 解釈・評価 ※以降の説明はCRISP-DM準拠
  8. 8 Copyright©2017 NTT corp. All Rights Reserved. 目的を明確に定義する • 学習手法

    • ひとことに「マルウェア検知」というが……? • モデル更新方法 • バッチ学習 • オンライン学習 課題理解 種類 入力 出力 教師あり学習 分類 データ,ラベル 離散値 回帰 データ,値 連続値 教師なし学習 クラスタリング データ 離散値 異常検知 データ 離散値 次元削減 データ 低次元表現 強化学習 強化学習 環境 行動 … • 母集団の分布の仮定 • パラメトリック • ノンパラメトリック Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  9. 9 Copyright©2017 NTT corp. All Rights Reserved. 目的を明確に定義する • 教師ありアプローチの場合は目的変数を適切に設定する

    • Malicious/Benignの二値分類なのか? • ファミリごとの多クラス分類なのか? • 「RAT」「ワーム」といった区分で分類する場合は多ラベル分類 • バイナリ列単位の悪性判定 • 命令列単位の悪性判定 • APIコール列単位の悪性判定 • … 課題理解 skmultilearn sklearn.multiclass Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  10. 10 Copyright©2017 NTT corp. All Rights Reserved. 目的に応じたデータを用意する • データ

    • どこから検体を入手すればよいか? • どのような解析手法が目的に適しているか? • 動的解析結果の活用にはエンドポイントでの挙動監視が必要 データ理解 検体群 データセット 機械学習 アルゴリズム 動的解析 静的解析 評価 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  11. 11 Copyright©2017 NTT corp. All Rights Reserved. 大規模かつ整理されたデータが望ましい • よいデータソースの条件

    • サンプルサイズが大きい • 更新頻度が高い • 攻撃経路と紐付いている――現実の脅威を反映している • 論文の場合はポピュラーで追試可能なデータが望ましい データ理解 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  12. 12 Copyright©2017 NTT corp. All Rights Reserved. 入手した検体の解析結果を整形し,データセットを構築する • データセットのフォーマット

    • 各行に各検体の特徴量を記載したcsvファイルが扱いやすい データ理解 MD5 Size .text entropy .rdata entropy ラベル ecfe… 112044 6.30 5.05 Ramnit 2f70… 176128 NaN 5.36 Cerber … ファイル名 APIコール列 ラベル ui.dat CreateProcess, WriteProcessMemory, ResumeThread Ursnif sample.exe CreateProcess, WaitForSingleObject, CreateProcess Benign … pandas.read_csv pefile cuckoo capstone frida unicorn rekall idaapi numpy.loadtxt pyrebox rvmi Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  13. 13 Copyright©2017 NTT corp. All Rights Reserved. どの特徴量がどの尺度に当てはまるか確認する • 特徴量の分類

    • 特徴量設計に注意 • みにくいアヒルの子定理 • タスクから独立した万能の特徴量は存在しない • マルウェア対策固有の事情を考慮した特徴量の作り込みが必要 データ理解 データの種類 尺度の種類 尺度の特性 例 可能な計算 質的変数 名義尺度 順序に意味のない ラベル ファミリ名 なし 順序尺度 順序に意味のある もの • 深刻度 • 命令列 順序比較 量的変数 間隔尺度 数値の差に意味が あるもの 日時 和差 比例尺度 数値の差と比に意 味があるもの • ファイルサイズ • エントロピー • API呼び出し回数 和差積商 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  14. 14 Copyright©2017 NTT corp. All Rights Reserved. データの傾向を分析する • 不均衡データに注意

    • 正例・負例の数に偏りのあるデータ • Malicious/Benignの分類の場合,Benignの収集が必要 • ファミリの分類の場合,ファミリごとに同程度の検体数が望ましい • 汎化性能が伸び悩む要因 • Benignが10%, Maliciousが90%のデータの場合,すべてMaliciousと判定するだ けでも正答率や精度としては90% • 適切な前処理によって対処できる場合がある • リークに注意 • テストセットに含まれるべきデータで訓練してしまうこと • 正解ラベルと一対一対応してしまう可能性のある特徴量 • Malicious/Benignを比較して算出した値 • 既存アンチウイルスの検知結果 • 非常によい結果が出たらリークを疑う データ理解 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  15. 15 Copyright©2017 NTT corp. All Rights Reserved. データの傾向を分析する • 可視化

    • 特徴量をピックアップし,データの分布を目視確認 • 必要に応じて次元削減 • 後述 データ理解 matplotlib.pyplot seaborn mlxtend.plotting PEヘッダの情報の可視化 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  16. 16 Copyright©2017 NTT corp. All Rights Reserved. モデリングに向けてデータを整形,特徴量を変換する • 欠損値の削除

    • 質的変数の数値化 MD5 Size .text entropy .rdata entropy ラベル ecfe… 112044 6.30 5.05 Ramnit 2f70… 176128 NaN 5.36 Cerber … 前処理 • 除外 • 最頻値・平均値・中央値による穴埋め ファイル名 APIコール列 ラベル ui.dat CreateProcess, WriteProcessMemory, ResumeThread Ursnif sample.exe CreateProcess, WaitForSingleObject, CreateProcess Benign … • ダミー変数化 • 文字コード変換 • Bag of Words • N-gram pandas.DataFrame.drop pandas.get_dummies sklearn.preprocessing.Imputer Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  17. 17 Copyright©2017 NTT corp. All Rights Reserved. 欠損値や質的変数の取り扱いに注意する • 欠損値の穴埋め

    • 欠損値を平均値・中央値・最頻値のいずれかで埋める • 二値化 • 閾値より小さい値を0, 大きい値を1にする • One-hotエンコーディング • 質的変数を数値で表現する • 順序に意味のない名義尺度を数値化したい場合に用いる 前処理 sklearn.preprocessing.Imputer sklearn.preprocessing.binarize sklearn.preprocessing.OneHotEncoder Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  18. 18 Copyright©2017 NTT corp. All Rights Reserved. テキストデータの数値化では頻度や語順を考慮する • Bag

    of Words • 全文書中の単語を並べ,各単語の出現頻度をベクトル化 • 語順の情報を持たない 前処理 ファイル名 APIコール列 ラベル ui.dat CreateProcess, WriteProcessMemory, ResumeThread Ursnif sample.exe CreateProcess, WaitForSingleObject, CreateProcess Benign [ “CreateProcess”, “WriteProcessMemory”, “ResumeThread”, “WaitForSingleObject”, ] [ 1, 1, 1, 0 ] [ 2, 0, 0, 1 ] 全文書 ui.dat sample.exe 文書間の重複削除 sklearn.feature_extraction.text Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  19. 19 Copyright©2017 NTT corp. All Rights Reserved. テキストデータの数値化では頻度や語順を考慮する • n-gram

    • 隣接する言語単位n個の塊を並べ,出現頻度をベクトル化 • 語順の情報を持つ 前処理 ファイル名 APIコール列 ラベル ui.dat CreateProcess, WriteProcessMemory, ResumeThread Ursnif sample.exe CreateProcess, WaitForSingleObject, CreateProcess Benign [ “Cre”, “rea”, “eat”, … ] 文字3-gram 単語2-gram [ “CreateProcess-WriteProcessMemory”, “WriteProcessMemory-ResumeThread”, ], [ “CreateProcess-WaitForSingleObject”, … sklearn.feature_extraction.text Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  20. 20 Copyright©2017 NTT corp. All Rights Reserved. 高次元のデータは低次元のデータとして表現する • 次元の呪い

    • データが高次元になるにつれ学習が難しくなる • ノイズに影響されやすくなる • 学習に要するデータ数が指数関数的に増加 • Bags of Wordsの場合,ベクトルの次元数が膨れ上がりがち • 次元削減 • 特徴抽出 • 特徴の結合を低次元表現として抽出 • 特徴選択 • 特徴の部分集合を低次元表現として抽出 • 行列分解 • 主成分分析など • 判別分析 • フィッシャー線形判別分析など • 多様体学習 • 高次元空間を低次元多様体に埋め込む 前処理 sklearn.feature_selection sklearn.feature_extraction sklearn.decomposition sklearn.discriminant_analysis sklearn.manifold sklearn.cross_decomposition Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  21. 21 Copyright©2017 NTT corp. All Rights Reserved. エントロピーを考慮した特徴量の絞り込みを検討する • TF-IDF

    • 全文書中の各文書・各単語の重要度 • 情報ゲイン • 情報取得前後のエントロピーの差分 前処理 = = 2 Τ (1 + ) = = − ෍ ∈ × 2 , = () − ෍ ∈ × ( ) sklearn.feature_extraction.text.TfidfVectorizer Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  22. 22 Copyright©2017 NTT corp. All Rights Reserved. 特定の次元の影響を受け過ぎないよう,各次元の値の範囲を揃える • 正規化

    • 最小値を0, 最大値を1にする • 標準化 • 平均を0, 標準偏差を1にする • ノイズに頑強 前処理 = − − = − sklearn.preprocessing.MinMaxScaler sklearn.preprocessing.StandardScaler Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  23. 23 Copyright©2017 NTT corp. All Rights Reserved. 不均衡データに対処する • アンダーサンプリング

    • 多数派データのデータ数を削減 • オーバーサンプリング • 少数派データのデータ数を拡充 前処理 imblearn.under_sampling imblearn.over_sampling Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  24. 24 Copyright©2017 NTT corp. All Rights Reserved. 評価のためにデータをあらかじめ分割しておく • クロスバリデーション

    • データを訓練セットと検証セットに分割して学習 • k-foldクロスバリデーション • k等分したセットの全組合せで評価 • Stratified k-foldクロスバリデーション • k等分時に各クラスの比率を均等に割り振る • Leave-One-Outクロスバリデーション • サンプルサイズ等分したセットの全組合せで評価 前処理 訓練 検証 訓練 訓練 訓練 検証 訓練 訓練 訓練 訓練 訓練 訓練 訓練 訓練 検証 … 理想はLeave-One-Outだが,データの規模的に 現実的でない場合,ひとまずStratified 5-fold クロスバリデーションを検討すべき sklearn.model_selection.StratifiedKFold sklearn.model_selection.KFold sklearn.model_selection.LeaveOneOut Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment ※テストセットは別途用意
  25. 25 Copyright©2017 NTT corp. All Rights Reserved. モデリング 機械学習アルゴリズムを選択し,データ同士の関係性を分析する clf

    = アルゴリズム(ハイパーパラメータ) clf.fit(X, y) 本発表の スコープ Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  26. 26 Copyright©2017 NTT corp. All Rights Reserved. モデリング 今 現在

    最強のアルゴリズムは 決まっていない 特徴量は独立か? 標準化したか? マルウェアのクラスタは同じ大きさになり得るか? 誤差は正規分布するか? • ノーフリーランチ定理 • タスクから独立した万能のアルゴリズムは存在しない • 単純な手法から着手すべき 基底は線形で表現できるか? Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  27. 27 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    ハイパーパラメータに注意 • データとは別に設定する必要のあるパラメータ • SVMのカーネル,正則化項 • ランダムフォレストの木の数,枝の数 • … • 評価時に適切なパラメータを探索していく • 正則化 • 多くのアルゴリズムでは損失関数と正則化項の和を最小化していく • 損失関数 • 分類失敗時の誤差の表現 • 正則化項 • モデルの複雑化を抑制するペナルティ • 過学習を防ぐために重要 • 後述 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  28. 28 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    ロジスティック回帰 • L1正則化,L2正則化,Elastic Net • ナイーブベイズ • 特徴量の独立性を仮定 • k-NN • 多数決 • SVM • マージン最大化,カーネルトリック • 次元の呪いを克服 ※アルゴリズムの詳細は割愛 sklearn.naive_bayes sklearn.neighbors.KNeighborsClassifier sklearn.svm.SVC sklearn.linear_model.LogisticRegression Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment If you possess a restricted amount of information for solving some problem, try to solve the problem directly and never solve a more general problem as an intermediate step. – Vladimir Vapnik
  29. 29 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    ニューラルネット • 深層学習とは: • 2層以上の隠れ層 • ネットワーク構造の工夫 • ドロップアウトの導入 • 活性化関数の工夫 • … • 鞍点にハマりやすいものの,ひたすら強力 • どの解もよい解なので足踏みする • 経験上,実装がバグっていてもうまく学習してしまうことも • マルウェア分類タスクでは偽陽性率が低いとの報告あり • Saxe and Berlin. MALWARE’15. • 後述 • 「次世代型」ベンダ採用実績あり ※アルゴリズムの詳細は割愛 keras tensorflow PyTorch Chainer ※kerasが最もとっつきやすいがPyTorch推し MXNet Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  30. 30 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    決定木 • あまり前処理が効いていなくても機能 • 「次世代型」ベンダ採用実績あり • ランダムフォレスト • 決定木の多数決 1. データをランダムサンプリング 2. 決定木を生成 • 特徴量の重要度を算出できる • パラメータチューニングなどが容易 • 特徴選択にも利用可能 ※アルゴリズムの詳細は割愛 sklearn.tree.DecisionTreeClassifier sklearn.ensemble.RandomForestClassifier gcForest clf.fit(X, y).feature_importances_ Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  31. 31 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    勾配ブースティング決定木 • 決定木の逐次生成 1. 決定木を生成 2. 現在までの森での観測値と予測値の差を算出 3. 差にフィットする木を生成 • 特徴量の重要度を算出できる • ランダムフォレストと同様 ※アルゴリズムの詳細は割愛 lightgbm.LGBMClassifier sklearn.ensemble.GradinentBoostingClassifier catboost.CatBoostClassifier xgboost.XGBClassifier ※木の生成手法,正則化などが実装によって異なる clf.fit(X, y).feature_importances_ Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  32. 32 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    スタッキング • 学習器の多段化 • 学習器の出力を次の学習器の入力とする • 機械学習コンペティションKaggleで人気 ※アルゴリズムの詳細は割愛 mlxtend.classifier.StackingClassifier StackNet SVM NN RF SVM GBM Word count GBM ERT Size Entropy BoW Imports Averaging クラスの所属確率を出力・入力とする ランダムサンプリングしてから 各学習器に渡すことで過学習を抑制 xcessiv Kaggle-Ensemble-Guide https://www.kaggle.com/c/malware-classification/ Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  33. 33 Copyright©2017 NTT corp. All Rights Reserved. モデリング 代表的なアルゴリズムを検討する •

    その他 • ここで取り上げていない手法も多数 • 「アルゴリズム」「モデル」 • アルゴリズム • 計算機科学用語 • 手続き • モデル • 統計用語 • データを生成する確率分布 • データにモデルのパラメータをあてはめる手順がアルゴリズム model.fit() Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  34. 34 Copyright©2017 NTT corp. All Rights Reserved. 構築したモデルの性能をさまざまな尺度で評価する • 正答率

    • 正しく分類できる確率 • 適合率・精度 • マルウェア判定されたものがマルウェアである確率 • 再現率・検出率・真陽性率 • マルウェアを発見できる確率 評価 予測値 Malicious Benign 正 解 Malicious 真陽性 (True Positive: TP): マルウェアを正しく判定 偽陰性 (False Negative: FN): 見逃し Benign 偽陽性 (False Positive: FP): 誤検知 真陰性 (True Negative: TN): 正常ファイルを正しく判定 = + + + + = = + = + ※高いほどよい sklearn.metrics Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  35. 35 Copyright©2017 NTT corp. All Rights Reserved. 構築したモデルの性能をさまざまな尺度で評価する • 特異度・真陰性率

    • 正常ファイルを正常判定できる確率 • F値 • 再現率と適合率の調和平均 • トレードオフの関係にある両者を合成した尺度 評価 予測値 Malicious Benign 正 解 Malicious 真陽性 (True Positive: TP): マルウェアを正しく判定 偽陰性 (False Negative: FN): 見逃し Benign 偽陽性 (False Positive: FP): 誤検知 真陰性 (True Negative: TN): 正常ファイルを正しく判定 = + = 2 ∙ ∙ + ※高いほどよい sklearn.metrics Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  36. 36 Copyright©2017 NTT corp. All Rights Reserved. 構築したモデルの性能をさまざまな尺度で評価する • 偽陰性率

    • マルウェアを見逃す確率 • 偽陽性率 • 正常ファイルをマルウェアと判定する確率 評価 予測値 Malicious Benign 正 解 Malicious 真陽性 (True Positive: TP): マルウェアを正しく判定 偽陰性 (False Negative: FN): 見逃し Benign 偽陽性 (False Positive: FP): 誤検知 真陰性 (True Negative: TN): 正常ファイルを正しく判定 = + = + ※低いほどよい sklearn.metrics Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  37. 37 Copyright©2017 NTT corp. All Rights Reserved. 評価 構築したモデルの性能をさまざまな尺度で評価する •

    モデルの解釈性に注意 • マルウェア対策では「なぜマルウェアと判断されたか」が重要 • インシデントレスポンス時に「ブラックボックス」では困る • 決定木なら構造を可視化できる • が,ノイズにより構造が大きく変わる • 木を見て解釈できるほどデータの分布は単純なのか? • マルウェア対策という観点からすると回避されやすい • あくまで参考程度 PEヘッダの情報を特徴量としたときの決定木 pydotplus sklearn.tree.export_graphviz Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  38. 38 Copyright©2017 NTT corp. All Rights Reserved. 評価尺度間のトレードオフを認識し,よいパラメータを検討する • ROC曲線

    • 分類器のパラメータを変化させながら再現率と偽陽性率をプロットしたもの • マルウェアを発見できる確率 • 正常ファイルをマルウェアと判定する確率 • 両者はトレードオフであるがゆえに多層防御が必要 • AUC • ROC曲線より下の面積(積分値) • 大きいほどよい • pAUC • 低い偽陽性率に区間を絞ったAUC • 生物統計学で用いられる指標 評価 sklearn.metrics.roc_curve 複数アルゴリズムの比較 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment = න 0 −1()
  39. 39 Copyright©2017 NTT corp. All Rights Reserved. 評価尺度間のトレードオフを認識し,よいパラメータを検討する • 未学習

    • 訓練セットが少なすぎて学習できないこと • バイアス • モデルが単純すぎて学習がうまくいかない度合いを表す指標 • 過学習 • 訓練セットでの性能は出るが,未知のデータに適合できていないこと • バリアンス • 訓練セットへの依存度合いを表す指標 評価 ハイパーパラメー タに応じて過学習 のしやすさが変化 SVMの決定境界 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  40. 40 Copyright©2017 NTT corp. All Rights Reserved. 評価尺度間のトレードオフを認識し,よいパラメータを検討する • 学習曲線

    • サンプルサイズに対する正答率の可視化 • 検証曲線 • パラメータに対する正答率の可視化 評価 sklearn.model_selection.validation_curve sklearn.model_selection.learning_curve 訓練セットのみ高ければ過学習 ハイパーパラメータに応じて 過学習しやすさが変化 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  41. 41 Copyright©2017 NTT corp. All Rights Reserved. 評価尺度間のトレードオフを認識し,よいパラメータを検討する • 「汎化性能が高い」

    • 未知のデータに適合でき,真の分布をよく近似していること 評価 Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  42. 42 Copyright©2017 NTT corp. All Rights Reserved. これまでの検討を踏まえ,汎化性能を向上させる • データセットの見直し

    • サンプルサイズは充分か? • 特徴量設計は適切か? • パラメータチューニング • 汎化性能が向上するアルゴリズムのパラメータを探索する • グリッドサーチ • 格子点をとって全探索 • 時間がかかる上,格子点間のよいパラメータを見逃すことも • ベイズ最適化 • 性能が向上しそうな組合せを優先的に探索 • グリッドサーチより効率的 • Kaggleで人気 評価 sklearn.model_selection.GridSearchCV hyperopt Dionaeaハニーポット収集データ 「5267459バイトならWannaCry」という 決定境界はハッシュ値決め打ちよりマシだが 古典的なシグネチャとそう変わらない https://www.nogridsearch.com Begstra and Bengio. JMLR’12. Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  43. 43 Copyright©2017 NTT corp. All Rights Reserved. 構築したモデルをシリアライズし,再利用可能にする • シリアライズ

    • オブジェクトをバイト列などの表現に変換して出力すること • わかりやすい例としてはjson • デシリアライズ • バイト列などからオブジェクトを復元すること 適用 joblib pickle hdf5 protobuf msgpack-python シリアライズしたscikit-learnのモデル Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment
  44. 44 Copyright©2017 NTT corp. All Rights Reserved. 著者 特徴量 アルゴリズム

    Schultz et al. IEEE S&P’01. • DLL • 文字列 • バイト列 • Ripper • ナイーブベイズ Kolter and Maloof. KDD’04. • バイトレベルn-gram • ナイーブベイズ • SVM • 決定木 • ブースティング決定木 Karim et al. Computer Virology’05. • オペコードn-gram • 語順を無視したn-perm - Ye et al. KDD’07. • DLL • API • ファイル操作 • レジストリ操作 • ネットワークアクセス • ナイーブベイズ • SVM • 決定木 • Associative Classification Masud et al. Information Systems Frontiers’07. • バイト列n-gram • オペコード • DLL • 情報ゲインによる絞り込み • ナイーブベイズ • SVM • 決定木 • ブースティング決定木 Lyda et al. IEEE S&P’07. • バイナリを分割した各区間のエ ントロピー - Siddiqui et al. JSCI’09. • 可変長命令列 • 決定木 • バギング • ランダムフォレスト 研究動向 特徴量設計
  45. 45 Copyright©2017 NTT corp. All Rights Reserved. 著者 特徴量 アルゴリズム

    Ye et al. Computer Virology’09. • 印字可能文字列 • ナイーブベイズ • SVM • 決定木 • バギング Iwamura et al. ICC’11. • 命令列の縮約表現の最長一致部 分列 • Jaccard係数 Anderson et al. Computer Virology’11. • 実行トレースから構成したグラ フ Nataraj et al. ACM AISec’11. • 画像化したバイナリのGIST特 徴量 • k-NN Chau et al. SDM’11. • ファイルと端末の依存関係グラ フ • 確率伝播 Anderson et al. ACM AISec’12. • 2-gramバイト列 • オペコード • CFG • ファイル情報 • 命令トレース • システムコールトレース • SVM Karampatziakis et al. DIMVA’13 • ファイルの関係のグラフ表現 • ロジスティック回帰 Saxe and Berlin. MALWARE’15. • エントロピー • PEヘッダ • DNN 研究動向 特徴量設計 NTT SC研技術
  46. 46 Copyright©2017 NTT corp. All Rights Reserved. 著者 特徴量 アルゴリズム

    Kwon et al. ACM CCS'15. • ファイルダウンロードの依存関 係グラフ • SVM • k-NN • 決定木 • ランダムフォレスト Kantchelian et al. ACM AISec’15. • 既存アンチウイルスのラベル • 既存アンチウイルスの誤検知率 • ベイジアンネットワーク Kharaz et al. USENIX Security’16. • I/O • ランサムウェア特有の画面の変 化 • SSIM Zhu et al. ACM CCS’16. • 既存の学術論文から抽出した挙 動情報 • ランダムフォレスト Tobiyama et al. COMPSAC’16. • RNNでプロセス名・イベント・ 実行パスから生成した画像 • CNN 研究動向 特徴量設計 • エンドポイントセキュリティの発展は自然な流れ • より多種多様な特徴量が利用できるため • 結局どの手法がよいのか? • 問題設定,データセットがまちまち,どれも高い正答率を主張 • マルウェア版Iris/MNIST/Titanicがほしいところ
  47. 47 Copyright©2017 NTT corp. All Rights Reserved. • マルウェア検知回避 •

    Adversarial Perturbation 研究動向 機械学習システムへの攻撃 著者 概要 Noreen et al. GECCO’19. • 検知されないマルウェアをGAで生成 • 既存マルウェアにコードを追加 Hu and Tan. arXiv:1702.05983. • 検知されないマルウェアをGANで生成,ただし実行可能かどうかは不明 • モデルが未知でも特徴量は推測できるBlack-Box Attackが成り立つ Anderson. Black Hat USA’17. • 検知されないマルウェアをDQNで生成 • 実行ファイルとしての整合性を保ったまま,コードのみならずPEヘッダの 各所を変更 https://www.kaggle.com/c/nips-2017-non-targeted-adversarial-attack 著者 概要 Goodfellow et al. ICLR’15. • DNNの損失関数を近似し,損失を最大化するような摂動をデータに付与 • 異なるクラスへの誤分類を誘発 Papernot et al. IEEE S&P’16. • Softmax関数のパラメータが異なるDNNを多段化 • 1段目の出力を2段目の教師ラベルに付与する「蒸留」により誤分類を回避 機械学習のホットトピック,論文多数
  48. 48 Copyright©2017 NTT corp. All Rights Reserved. • コンセプトドリフト •

    データの傾向が経時変化すること • 動物の姿や人間の顔の傾向が短期間で変わることはないが,マルウェアは違う • 新種,すなわち新しいクラスが登場することも • 持続可能なモデルが必要 研究動向 コンセプトドリフト 著者 概要 Aiko and Matsuki. MWS/CSS’14. • 特徴量によらず時間経過にともなってマルウェアの検出率は線形に落ちる • テストセットには訓練・検証セットの翌月のデータを用いるべきと主張 Kumagai et al. AAAI'16. • データの傾向は変化するが,変化の仕方が劇的に変わることはない • データから分類器の時間的変化を学習 • 追加学習なしで未来のデータに適合する分類器を予測 Jordaney et al. USENIX Security’17 • 分類結果の信頼性を判定するConformal Evaluatorの導入 • あるデータについて既存クラスのデータとの類似度を測定,閾値と比較 • 分類器の性能が劣化する前にコンセプトドリフトを検知 NTT SC研技術 オンライン学習なら: http://blog.trendmicro.com/trendlabs-security-intelligence/cerber-starts-evading-machine- learning/
  49. 49 Copyright©2017 NTT corp. All Rights Reserved. • 解釈性 •

    モデルの判断基準を説明可能にする研究 • 深層学習の解釈が活発 研究動向 解釈性 著者 概要 Anderson et al. AICS’16. • あるクラスタに属する検体とそれ以外の検体を識別する最小単位のシグネ チャを算出 • 人間が理解しやすいシグネチャを生成 Ribeiro et al. KDD’16. • LIME: あるデータ点について非線形分類器と似た挙動の線形分類器を選択 • SPLIME: 非線形分類器の重要な特徴の集合被覆問題を解く Zhou et al. CVPR’16. • 分類に貢献しているユニットに重み付け • CNNが注視している画素を可視化 Ribeiro et al. KDD’16. Zhou et al. CVPR’16.
  50. 50 Copyright©2017 NTT corp. All Rights Reserved. いまや機械学習をツールとして用いている研究は当たり前 • その他

    • 取り上げた論文・トピックは全体のごくごく一部 • 周縁ジャンルの方がむしろ活発 研究動向 対象 代表的な手法 Androidマルウェア • DroidAPIMiner[SECURECOMM’13] • MAMADROID[NDSS’17] PDFマルウェア • PDFrate[ACSAC’12] • Hidost[NDSS’13] • POSTER: ROPMiner[ACM CCS’16] • PlatPal[USENIX Security’17] 既存アンチウイルス判定結果のアンサンブル • AVCLASS[RAID’16] • Euphony[MSR’17] 優先的に解析すべき検体の選択 • IFSS[KDD’09] • SigMal[ACSAC’13] • Shibahara et al.[GLOBECOM’16] 解析支援 • discovRE[NDSS’16] • EKLAVYA[USENIX Security’17] 解析環境の検知 • SandPrint[RAID’16] • Spotless Sandboxes[IEEE S&P’17] NTT SC研技術 NTT SC研技術
  51. 51 Copyright©2017 NTT corp. All Rights Reserved. いまや機械学習をツールとして用いている研究は当たり前 • 強者から学ぶ

    • 新規性 • 新しい問題設定・新しい前処理・新しい特徴量・新しい制約・新しいアルゴリズム • 「限定的な条件で既存手法をわずかに上回る」ものではちょっと……(すいません) • 評価 • 「知っているアルゴリズムを回してみた」で終わらない(すいません2) • よく知られたデータセットでの実験,を踏まえた10万検体以上での実験 • コンセプトドリフトを前提とした一定期間毎の評価 研究動向
  52. 52 Copyright©2017 NTT corp. All Rights Reserved. 機械学習一般の作法のみならず,ドメイン知識に注意を払うこと • コンセプトドリフト

    • マルウェアのトレンドは変化し続ける • 機械学習システムへの攻撃も起こりうる • データセット • 全マルウェアの感染可能性や深刻度が同じわけではない • 脅威の実情を反映した十分大きなデータセットとは? • 独立同分布の仮定は? • 評価基準 • 偽陽性率が十分に低いときの性能を最大化するには? まとめ Business Understanding: 課題理解 Data Understanding: データ理解 Data Preparation: 前処理 Modeling: モデリング Evaluation: 評価 Deployment: 適用 Business Understanding: 課題理解 Data Understanding: データ理解 Data Preparation: 前処理 Modeling: モデリング Evaluation: 評価 https://www.av-test.org/fileadmin/pdf/security_report/AV-TEST_Security_Report_2016- 2017.pdf 目的変数 不均衡データ リーク 質的変数 次元削減 過学習 ハイパーパラメータ 解釈性 クロスバリデーション ROC曲線 標準化 特徴量
  53. 53 Copyright©2017 NTT corp. All Rights Reserved. セキュリティ・データサイエンス・科学 「それ自体を科学と呼ばなければいけないものは科学ではない」と言われてきました. これには真実も含まれているかもしれませんが,これは「データサイエンス」という言

    葉そのものが何も表していないという意味ではありません.しかし,もちろんデータサ イエンスが意味しているものが科学ではなく,むしろ技能である可能性もあります. Non-crypto security will remain a mess. – Adi Shamir A series of hard-won scientific advances gives us the ability to field systems having verifiable protection, and an understanding of how to powerfully leverage verifiable protection to meet pressing system security needs. Yet, we as a community lack the discipline, tenacity and will to do the hard work to effectively deploy such systems. Instead, we pursue pseudoscience and flying pigs. In summary, the state of the science in computer and network security is strong, but it suffers unconscionable neglect. – Dr. Roger R. Schell
  54. 54 Copyright©2017 NTT corp. All Rights Reserved. アンチウイルスは死んだか • 銀の弾丸はない

    • 「従来型」「次世代型」という区分に意味はない • 機械学習がすべてを解決するわけではなく,相応のハマりどころがある • アンチウイルスは多層防御の一オプションでしかない • 機械学習はアンチウイルスの手法の一オプションでしかない • ……程度のことは誰でも言えるので,実際に手を動かして試すことをおすすめします You’ll face death, and it won’t be pretty. Enough death to leave you broken, time after time. – Dark Souls 3 https://xkcd.com/1838/