Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
WAF-A-MoLE — MLベースのWebアプリケーションファイアウォール向けのガイド付き突然変異ベースのファザー | Kitploit
ツール/GitHubGitHub/avalz/waf-a-mole
WAFバイパスウェブセキュリティファジング機械学習敵対的攻撃
GitHubavalz/waf-a-mole

WAF-A-MoLE

MLベースのWebアプリケーションファイアウォール向けのガイド付き突然変異ベースのファザー

リポジトリを見る
20533202年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

WAF-A-MoLE

MLベースのWebアプリケーションファイアウォール(WAF)向けの、AFLに触発され、Andreas ZellerらのFuzzingBookを基にした ガイド付きミューテーションベースのファザー です。

SQLインジェクションクエリを入力として与えると、ターゲットのWAFをバイパスできる 意味論的に不変な クエリを生成しようとします。WAF-A-MoLEに解空間を探索させることで、ターゲットの分類器がカバーしていない危険な「盲点」を見つけ、製品の堅牢性を評価するためにこのツールを使用できます。

Python Version License Documentation Status

アーキテクチャ

WAF-A-MoLE アーキテクチャ

WAF-A-MoLEは最初のペイロードを受け取り、それをペイロード Pool に挿入します。このPoolは、各ペイロードに対するWAFの信頼度スコアで順序付けられた優先度キューを管理します。

各イテレーションでは、ペイロードPoolの先頭が Fuzzer に渡され、利用可能なミューテーション演算子の1つを適用することでランダムに変異されます。

ミューテーション演算子

ミューテーション演算子はすべて 意味論を保持 しており、SQL言語(このバージョンではMySQL)の高い表現力を活用しています。

以下は、現在のバージョンのWAF-A-MoLEで利用可能なミューテーション演算子です。

ミューテーション例
ケーススワップadmin' OR 1=1# ⇒ admin' oR 1=1#
空白置換admin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
コメント挿入admin' OR 1=1# ⇒ admin'/**/OR 1=1#
コメント書き換えadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
整数エンコーディングadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
演算子スワップadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
論理的不変式admin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
数字シャッフリングadmin' OR 1=1# ⇒ admin' OR 2=2#

引用方法

WAF-A-MoLEは、「WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning」で提示された方法論を実装しています。論文のプレプリントはarXivでもご覧いただけます。

引用する場合は、以下の(BibTeX)参考文献を使用してください。

@inproceedings{demetrio20wafamole,
  title={WAF-A-MoLE: evading web application firewalls through adversarial machine learning},
  author={Demetrio, Luca and Valenza, Andrea and Costa, Gabriele and Lagorio, Giovanni},
  booktitle={Proceedings of the 35th Annual ACM Symposium on Applied Computing},
  pages={1745--1752},
  year={2020}
}

WAF-A-MoLEの実行

前提条件

  • numpy
  • keras
  • scikit-learn
  • joblib
  • sqlparse
  • networkx
  • Click

セットアップ

pip install -r requirements.txt

使用例

独自のWAFの堅牢性を評価することも、いくつかのサンプル分類器に対してWAF-A-MoLEを試すこともできます。前者の場合、Modelクラスを参照してください。カスタムモデルは、WAF-A-MoLEで評価されるためにこのクラスを実装する必要があります。すでに sci-kit learn および keras 分類器用のラッパーが提供されており、特徴抽出フェーズ(ある場合)に合わせて拡張できます。

ヘルプ

wafamole --help

Usage: wafamole [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  evade  Launch WAF-A-MoLE against a target classifier.

wafamole evade --help

Usage: wafamole evade [OPTIONS] MODEL_PATH PAYLOAD

  Launch WAF-A-MoLE against a target classifier.

Options:
  -T, --model-type TEXT     Type of classifier to load
  -t, --timeout INTEGER     Timeout when evading the model
  -r, --max-rounds INTEGER  Maximum number of fuzzing rounds
  -s, --round-size INTEGER  Fuzzing step size for each round (parallel fuzzing
                            steps)
  --threshold FLOAT         Classification threshold of the target WAF [0.5]
  --random-engine TEXT      Use random transformations instead of evolution
                            engine. Set the number of trials
  --output-path TEXT        Location were to save the results of the random
                            engine. NOT USED WITH REGULAR EVOLUTION ENGINE
  --help                    Show this message and exit.

サンプルモデルの回避

wafamole/models/custom/example_modelsに、遊び心のあるいくつかの事前学習済みモデルを用意しています。使用した分類器は以下の表のとおりです。

分類器名アルゴリズム
WafBrainリカレントニューラルネットワーク
ML-Based-WAF非線形SVM
ML-Based-WAF確率的勾配降下法
ML-Based-WAFAdaBoost
トークンベースナイーブベイズ
トークンベースランダムフォレスト
トークンベース線形SVM
トークンベースガウシアンSVM
SQLiGoT - 有向比例ガウシアンSVM
SQLiGoT - 有向非比例ガウシアンSVM
SQLiGoT - 無向比例ガウシアンSVM
SQLiGoT - 無向非比例ガウシアンSVM

MLベースのWAFに加えて、WAF-A-MoLEはルールベースのWAFもサポートしています。具体的には、pymodsecurityプロジェクトに基づくOWASP Core Rule Set (CRS)を搭載したModSecurity WAF用のラッパーを提供しています。

WAF-BRAIN - リカレントニューラルネットワーク

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのWAF-Brain分類器をバイパスします。

wafamole evade --model-type waf-brain wafamole/models/custom/example_models/waf-brain.h5  "admin' OR 1=1#"

ML-Based-WAF - 非線形SVM(元のWAF-A-MoLEデータセット使用)

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのML-Based-WAF SVM分類器をバイパスします。

wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc.dump  "admin' OR 1=1#"

ML-Based-WAF - 非線形SVM(SQLiV5/SQLiV3データセット使用)

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのML-Based-WAF SVM分類器をバイパスします。SQLiV5はKaggleから取得したデータセットを、WAF-A-MoLE自身が生成した一連のクエリで拡張したものです。これは、WAF-A-MoLEのクエリが再学習によるWAFの堅牢性を強化できることの概念実証です。mlbasedwaf_svc_sqliv3.dump を使用すると、元のKaggleデータセット(SQLiV3)で学習されたWAFをバイパスできます。

wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc_sqliv5.dump  "admin' OR 1=1#"

ML-Based-WAF - 確率的勾配降下法(SGD)

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのML-Based-WAF SGD分類器をバイパスします。

wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_sgd.dump  "admin' OR 1=1#"

ML-Based-WAF - AdaBoost

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのML-Based-WAF AdaBoost分類器をバイパスします(他のモデルよりも時間がかかり、実行時間は約2~5分です)。

wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_ada.dump  "admin' OR 1=1#"

トークンベース - ナイーブベイズ

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのトークンベースのナイーブベイズ分類器をバイパスします。

wafamole evade --model-type token wafamole/models/custom/example_models/naive_bayes_trained.dump  "admin' OR 1=1#"

トークンベース - ランダムフォレスト

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのトークンベースのランダムフォレスト分類器をバイパスします。

wafamole evade --model-type token wafamole/models/custom/example_models/random_forest_trained.dump  "admin' OR 1=1#"

トークンベース - 線形SVM

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのトークンベースの線形SVM分類器をバイパスします。

wafamole evade --model-type token wafamole/models/custom/example_models/lin_svm_trained.dump  "admin' OR 1=1#"

トークンベース - ガウシアンSVM

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのトークンベースのガウシアンSVM分類器をバイパスします。

wafamole evade --model-type token wafamole/models/custom/example_models/gauss_svm_trained.dump  "admin' OR 1=1#"

SQLiGoT

admin' OR 1=1# と等価なクエリを使用して、事前学習済みのSQLiGOT分類器をバイパスします。 DP、UP、DU、UU をそれぞれ使用して、有向比例、無向比例、有向非比例、無向非比例を指定します。

wafamole evade --model-type DP wafamole/models/custom/example_models/graph_directed_proportional_sqligot "admin' OR 1=1#"

OWASP ModSecurity CRS - ルールベースWAF

ツールをダウンロード