アクセスログからの攻撃検出
背景
Webサーバのアクセスログを解析することで不正アクセスの攻撃や予兆を知ることができる。
概要
Isolation Forestを用いて、教師なし学習をおこない、URLパスから異常なアクセスを検出を行った。
更に、異常と判定されたURLパスから行われた攻撃の種類をLSTMを用いて学習させ、分類を行った。
この上記の2つの機能をWebアプリケーションにまとめて、実装した。
機能
アクセスログアップロード・攻撃判定機能
アクセスログをアップロードし、攻撃をしていると思われるIPアドレスを表示する機能。
また、行われた攻撃の種別をそれぞれ表示する。
攻撃種別は以下に分類した。
- SQLインジェクション
- OSコマンドインジェクション
- XSS(クロスサイトスクリプティング)
- 不正なファイルの読み込み
- ディレクトリトラバーサル
CSVダウンロード機能
上記の表データをCSVとしてダウンロードする機能
技術的解説
Isolation Forestを用いた教師なし学習
攻撃的なURLパスには特殊文字(例えば、’ ./. + 等の文字)が多く存在することに着目して、その特殊文字の個数を特徴量として、Isolation Forestを用いて異常検出を行った。
LSTMを用いた攻撃手法の分類
攻撃的なURLパスにはその攻撃特有な文字の順序が存在する。例えば、ディレクトリトラバーサルなら、../、SQLインジェクションならば、+やUNIONといった文字列が該当する。これらの文字列をLSTMを用いて分類して攻撃手法の分類を行った。
Webアプリケーションとしての実装
上記2つの出力結果がわかりやすいようにWebアプリケーションとして実装した。用いたWebフレームワークとしてはDjangoを採用した。
評価
Isolation Forestを用いた教師なし学習
iLogScanner(既存ツール)と比較して、検証を行った。
検証に使用したデータセットは脆弱性診断ツールを用いたときのWebサーバのアクセスログを用いた。
結果としては、以下のようになった
ㅤ | モデル予測 | iLogScanner |
異常(攻撃) | 802 | 140 |
正常 | 138 | 800 |
正確性 | 85% | 15% |
結果
既存のツール(iLogScanner)よりも、用いたデータセットでは、攻撃判定の正確性は向上していた。
LSTMを用いた攻撃手法の分類
データ件数:1800件で訓練と評価を行ったところ、攻撃手法の分類の正確性としては77%であった。
これは少し低い正確性であったと思っている。
原因としては5つの攻撃手法で分類したが、分類した攻撃手法ごとにデータ数が大幅に異なっていた。例えば、SQLインジェクションでは訓練データは1000件ほどあったが、XSSの訓練データは80件ほどであった。このデータの不均衡が正確性を下げた原因と思っている。
画面スクリーンショット
