こんにちは。ChillStackの谷です。
近年、フィッシングサイトなど悪性なWebコンテンツによる被害は深刻化しており、悪意のあるWebサイトかどうかを事前に判断し防ぐシステムの高性能化が必要とされています。
そのため、悪性なWebコンテンツと正常なWebコンテンツを静的ファイル情報のみで高速かつ高性能に機械学習で識別する様々な研究が行われています。
本記事では、悪性HTMLの検知に関する論文の一つである A Deep Learning Approach to Fast, Format-Agnostic Detection of Malicious Web Content をご紹介します。
概要
Webコンテンツの検出に関するこれまでの研究は、機能を抽出するために構文解析またはHTMLおよびJavascriptのエミュレーションに依存していました。 本論文の提案手法では、単純な正規表現で静的HTMLファイルから直接抽出された特徴を用いて悪性かどうかを判定します。 静的HTMLの情報のみを用いることにより、ファイアウォールやWebプロキシなどの高頻度のデータコンテキストでの動作が十分に速くなり、様々なコストが激減します。
手法
悪意あるHTMLは、基本的に可変で巨大な通常のHTMLの中に小さな悪意あるコンテンツが埋め込まれています。 解析の手法として以下のようなものが考えられます。
1 明示的なHTMLファイルのパース
HTML、CSS、JSが展開されて初めて悪意のあるコードとして動作するためベストな方法ではありません。
2 動的解析、シンボリック実行(部分的な実行)
計算のオーバーヘッドがあると検出器の中で攻撃の挙動を開始させてしまうため、コスト大きくなる問題点があります。
そのため、本研究では、まずbag-of-wordsでtoken表現を獲得しています。文章全体から局所的な集約表現を獲得するため、たくさんの良性なHTMLコードに埋め込まれた僅かな悪性表現を見つけることができます。 獲得したtoken表現を用いて、shared-weight NNをつかって分類を行なっています。
feature extraction
まず、アルファベット以外のところで区切ってトークンを作ります。区切ったトークンを16個の同じ長さのチャンクに分けます。そのあと、ハッシュ技術を使って1024個のバイナリ値の bag-of-words style 表現を獲得します。
獲得した16個の表現 x[0]...x[15]
から、隣り合った要素で平均をとった x(0, 1), x(2, 3), ... , x(14, 15)
を計算します。それを繰り返していき、x(all)
まで行ったら、元の x[0]...x[15]
と計算した値全て(計31個)を使い、入力ベクトルとします。
ここで、合計するのではなく平均をとることで、異なる長さのドキュメント同士でも各表現レベルのノルムを均一に保つことができます。 そのあと、Layer norm -> FC(10241024) -> ReLU -> Layer norm -> dropout -> FC(10241024) -> ReLU -> Layer norm と続きます。
maximum activation
inspectorのあと、31個のフィルターの中で同じ位置の各ニューロン内で最大値をとって、1024の長さのベクトルを作ります。
master
2回FCしたあと、最後のFCで出力を26個にして、それぞれにsigmoidをかけます。 1つ目のoutputは文章が悪性であるかどうかを判定します。 残りの25個は、フィッシングサイトかどうか、exploit kitのインスタンスかどうかなどを判定しています。 lossはbinary-cross-entropyで、26個のoutputsの結果の勾配の平均をとってアップデートしています。
結果
以下の2つの方法で検証しています。
- 標準的な文書分類タスクとしての評価
- 様々な方法でアーキテクチャを変更して実験した評価
しかし既存の異常検知モデルとの直接的な精度比較は行なわれていません。 このアーキテクチャは速度面で優れていることが強みだからです。
データセットはVirusTotalから10ヶ月分取得したものを用いています。 全ベンダーで良性と判断されたデータはnormal、3つ以上のベンダーで悪性と判断されたデータはmaliciousとしています。
詳細な識別結果は、論文を参考にしてください。
コメント
特徴抽出がユニークで、興味深い論文でした。
CNNをむやみに用いるよりドメイン知識を活用した特徴量設計をした方が有効な場合もあり、かけるコストと得られる効果を考慮し、それぞれのタスクに最適な手法の選定を行う必要があります。
ChillStackでは無料で不正検知・異常検知に関するご相談を受けていますので、お気軽にご連絡ください。