機械学習と情報セキュリティ2016

この記事は「情報セキュリティ系論文紹介 Advent Calendar 2016」14日目の記事です。

近年、ディープラーニングと呼ばれる機械学習手法の進展もあいまって、ディープラーニングではない機械学習もそこそこの注目を集めている。 ここでは、2016年に公表された機械学習系の情報セキュリティ論文について、気になったものをまとめてみる。

discovRE: Efficient Cross-Architecture Identification of Bugs in Binary Code (NDSS 2016)

命令数等の複数の数値指標を用いてk-Nearest Neighborによるフィルタリングを行った後、Maximum common subgraph(MCS)によるControl Flow Graphの類似度比較を行うことで、バイナリ(ファームウェア)から既知の脆弱性を含む関数をクロスアーキテクチャで同定する。 既存手法の1000倍オーダーの速度が出るとのことだが、前処理がやや煩雑なのと、脆弱性が修正される前と後の違いを見分けられるかについて(間接的に)次のようにしか触れられていないのが気になる。

However, the vast majority of bugs can be pinpointed to one or a list of specific functions.

CFGの類似度比較をもとにしているため、if文の追加等によるグラフの違いも最終的な結果に表れるはずだが、それが区別可能であるかについては触れられていない。 とはいえ、k-NNでのフィルタリングに用いる指標の選択やハイパーパラメータの設定について詳細な分析が行われており、参考になる。

Automatically Evading Classifiers: A Case Study on PDF Malware Classifiers (NDSS 2016)

セキュリティ分野における機械学習が他分野と異なる点として攻撃者によるバイパスを考慮しないといけないことを指摘した上で、遺伝的アルゴリズムによりbenignなPDFの特徴を取り入れることで悪性PDF分類器をバイパスするPDFを自動生成する。 結果、PDFrate [ACSAC’12]、Hidost [NDSS’13] を100%バイパスするPDFを自動生成できた。 また、対HidostなPDFである程度PDFrateもバイパスできるが、Gmailの分類器はバイパスできなかった。 そこで、Gmailの分類器をバイパスするルーチンを追加することで、47.1%の確率でバイパスできるPDFを自動生成できた。

攻撃者も本気を出してくるセキュリティ分野では、robustな分類器を作るのも難しいねという話。

Fast, Lean, and Accurate: Modeling Password Guessability Using Neural Networks (USENIX Security 2016)

わぁいニューラルネット あかりニューラルネット大好き(参考)。

Recurrent Neural Network(RNN)でパスワードの推測しやすさを計算し、リアルタイムでユーザにフィードバックすることを考える。 流出したパスワードのデータセットを教師データ、既存研究のパスワードデータセットと000webhostからの流出パスワードをテストデータとし、モンテカルロ法を使って評価したところ、次のようなことがわかった。

  • 1クラス8文字のネットワーク→3クラス12文字のネットワークのような転移学習をすることで精度が上がる
  • 自然言語データを加えてもそれほど精度は上がらない
  • モデルサイズを大きくすることによる精度向上は条件による

マルコフモデル、PCFG、Hashcat、John the Ripperとの比較において、RNNはどれよりも性能がよい。 また、圧縮や事前計算を行うことでモデルサイズ850KB、計算時間17ms程度にでき、精度を落とすことなくブラウザ上でのリアルタイムフィードバックに適用できる。

コードがGithubで公開されているが、リポジトリ名が「neural_network_cracking」なのが趣深い。

Stealing Machine Learning Models via Prediction APIs (USENIX Security 2016)

BigMLAmazon Machine LearningのようなMachine Learning as a Service (MLaaS)というものが世の中に出てきているが、有償サービスであるために最終的な分類結果以外にもconfidence値などの付加情報が返ってくる。 これを悪用することで、手塩にかけて学習させたモデルパラメータが第三者にコピーされる可能性がある。 そのようなModel-Extraction Attacksに関する既存研究のまとめ。 さらに、confidence値を隠せばよいというものでもなく、機械学習機械学習サービスのモデルパラメータを推定すること自体も可能であることを指摘している。

Black Hat USAみたいな内容だがUSENIX Securityなのがおもしろい。

Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks (IEEE Security and Privacy 2016)

Deep Neural Network(DNN)に対して、攻撃者が繰り返し入力を調整することによりDNNが誤分類する入力を作り出すことができるAdversarial Sample Craftingという問題が知られている。 このような問題への防御策として、DNNのモデルサイズの削減に用いられるDistillationという手法が有効である。 具体的には、出力層のSoftmaxのパラメータT(温度と呼ばれる)の大きなネットワークで分類した後、その結果を追加情報としてT=1のDNNで分類するようにする。 T=40程度でDistillationすることで、Adversarial Sampleによる誤分類を大きく減らすことができる。

日本でも昨年友利奈緒判定botの誤認識パターンをめぐる戦いというのがあったが、こういう人力調整にも有効なのかが気になる。

SandPrint: Fingerprinting Malware Sandboxes to Provide Intelligence for Sandbox Evasion (RAID 2016)

実ユーザのマシンとサンドボックスを識別する汎用的な分類器は作れるか?という問いに対して、作れるということを示した論文。 サンドボックスの環境情報(fingerprint)をHTTPで抜き取るプログラムSandPrintを開発し、実ユーザの環境情報とそれらを分類する分類器をガウシアンカーネルを用いた非線形SVMで作る。 結果、メモリに関する特徴量だけでも98.06%の精度が出た。 さらに、すべての特徴量を用いた場合はfalse positiveもfalse negativeもない100%の精度を達成できる。 また、三つの商用マルウェアアプライアンスに対しても同様のアプローチが有効であることを確認した。

環境情報をもとにしたサンドボックス検知自体はそれなりに知られているが、実際にそれらを収集して汎用的に使える指標を分析したという点でおもしろい。

(Semi)-Supervised Machine Learning Approaches for Network Security in High-Dimensional Network Data (ACM CCS 2016 Poster)

高次元の特徴量を持つネットワークデータからDDoSやHTTP flashcrowds等の異常パケットを検知する半教師あり学習手法として、k-Meansクラスタリングとk-Nearest Neighborによる多数決を組み合わせたk-CDA (k-means Clustering-based Detector of Attacks) を提案。 k-MeansのKは訓練データのサンプルサイズの1000分の1とし、k-NNのkはKの3分の1とする。 完全な教師あり学習であるC4.5決定木、Random Forest、SVM、ナイーブベイズ、多層パーセプトロンと比較した結果、ラベル付き教師データの5%のみしか用いていないにも関わらず、低false positiveの領域でC4.5決定木に劣らない精度が出た。 あまり精度の出なかったDDoSパケット検知については、相関ベースのBest-first searchで特徴量を245個から22個に絞ることで精度が向上した。

へー、という感じ。

Static ROP Chain Detection Based on Hidden Markov Model Considering ROP Chain Integrity (ACM CCS 2016 Poster)

隠れマルコフモデルで文書型マルウェアに含まれるROP chainを検知する手法の提案。 ROP chainがうまく繋がっているかをチェックすることで、false positiveを減らす工夫をしている。 評価の結果、高スループットでfalse negativeゼロ、低false positiveな分類ができた。

自分は研究者ではないのでabstructしか読めていない。

追記

ACM CCSとそのワークショップの論文は1年間限定で読めるということを教えてもらった。

32 bit環境でのROP chainについて、バイト単位での遷移過程を次の図のようにモデリングする。

f:id:inaz2:20161217161419p:plain

ここで、Dは文書、Aはアドレス、Cは定数、JはROP中のjunkを表す。 また、Aについてはライブラリに含まれるROP gadget候補を全列挙して確率モデルに組み込む。 さらに、ROP chainがうまく繋がっているか(ROP Chain Integrity)のチェックを行う。 具体的には、各アドレス候補に飛んだ先でスタックポインタが何ワードずれるかをシンボリック実行を用いて計算しておき、各アドレスに飛んだ後のスタックポインタがちゃんと次のアドレス(上図のA1に対応する箇所)を指しているかをチェックする。 結果、false negativeゼロ、false positive 3%の精度で検知できた。 また、1ファイル2.5秒の処理速度が出た。

文書をバイト列とみなし、隠れマルコフモデルでの尤度をみるという正統派アプローチを試みていて興味深い。

AdversariaLib: An Open-source Library for the Security Evaluation of Machine Learning Algorithms Under Attack (arXiv preprint)

勾配降下法で機械学習が誤分類する入力を生成するOSSライブラリの紹介。 バックエンドにscikit-learnとFANNを用いている。 論文中では、きれいな「3」の画像から3と分類されない「3」のような画像を作り出す例が紹介されている。 また、前述の論文にもあったように、元の分類器に近い分類をする新たな分類器を作り出せることにも触れられている。

光の機械学習に対抗する闇の機械学習ライブラリ(検証用)といった感じ。

Applied Machine Learning for Data Exfil and Other Fun Topics (Black Hat USA 2016)

正確には論文ではないが、機械学習を売りにしたエンドポイントセキュリティ製品を開発しているCylance社によるいくつかのツールの発表。

  • NMAP Clustering
  • Botnet Panel Identification
    • あるウェブサイトにBotnet Panelが置かれているかどうかを決定木のアンサンブルで調べる。Chrome Extensionが無料で公開されている
  • Obfuscating Data with Markov Chains
    • 適当な文章からマルコフチェーンを作り、数値を遷移確率の順位に対応させてエンコードすることでデータを難読化する。

全体的にたいした話ではないのだが、有償製品がどういったことをやっているのかの参考にはなる。

所感

資料へのリンクがないため取り上げなかったが、AIとセキュリティに関するワークショップとしてAISec 2016というものも存在する。 また、DNNモデルのAdversarial Sample Craftingに対するrobust性を検証するDeep-pwning (DEF CON 24)というフレームワークも公開されている。

防御手法への応用だけではなく、バイパス手法や機械学習サービスに対する攻撃についても研究されているあたり、いかにもセキュリティらしい。

関連リンク