a Web Application Firewall using Signature and Character-level CNN
正規表現によるパターンマッチングとCharacter-level CNNで防御するWeb Application FirewallをPythonで実装しました。
HTTP DATASET CSIC 2010をTraining : Validation : Test = 7.5 : 1.5 : 1.0に分割し、学習と検証を行いました。
Testデータ(6,107件)に対して、Accuracy: 86.4, Precision: 75.7, Recall: 99.3という精度が出ています。
使用したテストデータと、性能テストを行った後のcsvファイル、学習済みモデルはGoogle Driveからダウンロードできます。
元のデータセットをcsv形式に変換したものはkaggleにて公開されていたので、以下のリンクからダウンロードしました。
CSIC 2010 Web Application Attacks | Kaggle
waf.py
がWAFの本体となっています。
$ python waf.py
簡単なダッシュボードを用意しています。
$ python dashboard.py
防御対象となる脆弱なWebアプリケーションをPHPで実装しています。
バックドアなども含まれるため、cloneしたらフォルダをWindows Defenderから除外する必要があります。
$ docker-compose up --build
Character-level CNNという手法を使っています。
Web Application Firewall using Character-level Convolutional Neural Networkという論文を参考に、Kerasで実装しました。
WAffleを介した通信内容はcsvファイルとして保存していて、Streamlitによって開くことができるようになっています。
$ streamlit run analysis.py