futabato / WAffle

a Web Application Firewall using Signature and Character-level CNN

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WAffle

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

waf.pyがWAFの本体となっています。
$ python waf.py
簡単なダッシュボードを用意しています。
$ python dashboard.py

vuln

防御対象となる脆弱なWebアプリケーションをPHPで実装しています。
バックドアなども含まれるため、cloneしたらフォルダをWindows Defenderから除外する必要があります。
$ docker-compose up --build

model

Character-level CNNという手法を使っています。
Web Application Firewall using Character-level Convolutional Neural Networkという論文を参考に、Kerasで実装しました。

analysis

WAffleを介した通信内容はcsvファイルとして保存していて、Streamlitによって開くことができるようになっています。
$ streamlit run analysis.py

About

a Web Application Firewall using Signature and Character-level CNN

License:MIT License


Languages

Language:Jupyter Notebook 75.4%Language:PHP 8.9%Language:Python 8.8%Language:HTML 5.8%Language:Hack 0.9%Language:Dockerfile 0.2%