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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
NGWAF — MLベースのフィードバックWAFの最初のイテレーション | Kitploit
ツール/GitHubGitHub/fa-pengfei/ngwaf
防御ツールIDS/IPS回避WAFバイパスウェブセキュリティペネトレーションテスト機械学習学習と教育レッドチーミング異常検知ラボと実践
GitHubfa-pengfei/ngwaf

NGWAF

MLベースのフィードバックWAFの最初のイテレーション

60773年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

N3XT-G3N Web App Firewall (NGWAF)

NGWAFは @yupengfei、@zhangbosen、@matthewng、@elizabethlim によって作成されました。

NGWAFの初期段階への貢献に対して、@ruinahkoh に特別な感謝を捧げます。

NGWAFは実験的な概念実証であり、現在の形では本番環境での使用には適していません。

目次

  1. 動機

    ​ NGWAFの仕組み

    ​ NGWAFの主な利点

  2. コンポーネント | NGWAFの歯車

    ​ 頭脳: 機械学習ベースのWAF

    ​ 覗き窓: スケーラブルなインタラクティブ隔離環境

    ​ 図書館: 頭脳を強化する再トレーニングシーケンス

  3. NGWAFのセットアップ

    ​ 要件

    ​ インストールと使用方法

  4. 免責事項とその他の考慮事項

  5. ライセンス

動機

2000年代初頭からのウェブアプリケーションの爆発的な成長に伴い、ウェブベースの攻撃はますます横行しています。一般的な解決策の一つがウェブアプリケーションファイアウォール(WAF)です。しかし、現在のWAFのルールを調整して検出メカニズムを改善することは複雑で困難な場合があります。NGWAFは、新しい機械学習と隔離からハニーポットへのアーキテクチャを用いて、これらの欠点に対処することを目指しています。

WAF運用における実際の痛点から着想を得て、NGWAFは以下のプロセスを通じてWAF運用を簡素化し、再考することを意図しています:

痛点NGWAFの機能
検出メカニズムとルールの保守が複雑になる可能性がある機械学習を活用して検出メカニズムの作成と更新を自動化する
悪意のあるトラフィックを即座にブロックすると、将来のWAF改善のために脅威行為者の行動から学ぶ機会が減少する従来の悪意のあるトラフィックのドロップやブロックではなく、隔離へのリダイレクトによる脅威の排除

デプロイをシンプルかつポータブルにするために、アーキテクチャ内のさまざまなコンポーネントをdockerを使用してコンテナ化し、docker-composeファイルに設定しました。これにより、依存関係がdockerによって自動的に処理されるため、新規インストールで迅速かつ簡単に実行できます。デプロイメントは、ローカルまたはクラウドプロバイダーベースのkubernetesクラスターに拡張でき、大量のトラフィックを処理するためにノード/ポッドの数を増やすことでスケーラブルになります。

デプロイメントはmacOS(Docker Desktop)、linux(ubuntu)でテストされています。

NGWAFの仕組み

NGWAFは3つの主要コンポーネントを備えてすぐに動作し、これらのコンポーネントは前述の通りすべてコンテナ化されており、希望の使用量に応じてスケーラブルです。 保護対象のリソースは、セットアップ内でデプロイメントを変更することでカスタマイズできます。


NGWAFの高レベルアーキテクチャと、異なる関係者からの予想されるトラフィックフロー

主な利点

NGWAFは、以下の主なユーザー利点を念頭に設計されました:

1. ルールの複雑さの低減

NGWAFは従来のルールセットを深層学習モデルに置き換え、ルールの管理と更新の複雑さを低減します。ルールを手動で編集する代わりに、NGWAFの機械学習が悪意のあるデータからのパターン学習プロセスを自動化します。隔離環境から収集されたデータは自動的にスクラブされバッチ処理されるため、必要に応じて検出モデルに再トレーニングできます。

2. サイバー欺瞞

NGWAFは、潜在的な敵対的攻撃者を隔離するために構築されたインタラクティブな隔離環境からなる新しいアーキテクチャを採用しています。従来のWAFが検出時にブロックするのとは異なり、NGWAFは脅威行為者をエミュレートされたシステムに迂回させ、彼らの悪意のある行動の影響を和らげるために罠にかけます。この環境はまた、現在の攻撃手法を収集するための吸い込み口として機能し、悪意のあるデータの観察と収集を可能にします。これらのデータは、NGWAFの検出能力をさらに向上させるために使用できます。


NGWAFの動作: SQLインジェクションを検出すると、試行をドロップまたはブロックする代わりに、NGWAFは隔離環境にリダイレクトします。

3. 国際的に認知された標準への準拠

NGWAF作成の背後にある指針は、Open Web Application Security Projectの標準的な認識文書である The OWASP Top 10 2021 で強調されたリスクから保護することです。

トレーニングデータとコンプライアンスチェックは、この要件に基づいて収集され実施されます。

NGWAFのコンポーネント

1. 頭脳: 機械学習ベースのWAF

手動が必要なのはもう古い、NEURALに行こう

時間の経過とともにアナリストが手動でルールを特定し追加する必要がある従来のルールセットの代わりに、NGWAFは検出メカニズムにエンドツーエンドの機械学習パイプラインを活用し、特に複雑なペイロードの検出においてWAFルール管理の複雑さを大幅に低減します。

ベースモデル

そのために、ユーザーが後で自分のアプリケーションから収集したデータを再トレーニングと微調整に使用できるように、最初にベースモデルとアーキテクチャを作成する必要がありました:

  1. さまざまな公開データセットから悪意のあるペイロードと非悪意のあるペイロードを収集しました(1、2、3)
  2. ルールを手動で特定する代わりに、機械学習と深層学習を活用して、以前の悪意のあるデータからパターンを学習するプロセスを自動化します。いくつかのモデルアーキテクチャを実験し、最終的なモデルはリカレントニューラルネットワークを使用しました。

ベースモデルの一般的なアーキテクチャは、以下のような双方向LSTMモジュールを備えた単純なRNNです:


Tensorflowから引用した画像 (リンク)

パフォーマンス

このRNNアーキテクチャを使用することで、より単純なモデルと比較してパフォーマンスの向上を達成できました:

モデルアーキテクチャ精度

メンテナンスと再トレーニング

ベースモデルの一般化可能性を向上させるためにさまざまなアプリケーションからのログを含めていますが、モデルのさらなるメンテナンスと再トレーニングは以下にとって重要です:

  1. ユーザーの特定のアプリケーションからのトラフィックに対してモデルを調整する
  2. 脅威行為者が新たな方法や機会を発見するにつれて、経時的なモデルの劣化を軽減する

これに対処するために、NGWAFのユーザーはパッケージ化されたエンドツーエンドのモデル再トレーニングパイプラインの恩恵を受け、内部をいじることなく数回の簡単なステップでモデルのメンテナンスを簡単にトリガーできます(以下のセクション3を参照)。

2. 覗き窓: スケーラブルなインタラクティブ隔離環境

逃がすな、拘留しろ!

悪意のあるトラフィックをすぐにブロックまたはドロップする従来のWAFとは対照的に、NGWAFはより柔軟なアプローチを採用しています。つまり、悪意のある行為者を隔離環境内にリダイレクトして拘留します。この環境は、さまざまなインタラクティブなエミュレートされたハニーポットで構成され、より多くの攻撃手法/データを収集しようとします。これらのデータは、より現代的で複雑な攻撃に対するNGWAFの検出率を潜在的に向上させるために利用されます。

悪意のあるデータのキャプチャと再トレーニングのための自動スクラビング

現在、NGWAFの隔離環境は、捕らえられた攻撃者によって送信されたすべてのデータをELKスタックに転送し、分析と可視化を行います。 データはHTTPリクエストのさまざまなコンポーネントに自動的にスクラブされ、その後、環境のバックエンドでJSON形式で内部的にパッケージ化されてから転送されます。 これにより、再トレーニングプロセスを開始する際にデータをクリーニングしてインデックスするために必要な人件費を削減できます。

カスタマイズされた隔離環境の作成

NGWAFは現在、隔離環境内のハニーポットのフロントエンドの外観を変更するオプションをユーザーに提供しています(カスタマイズバージョンのdrupotに基づいています)。ユーザーは、dockerボリューム内のアセットフォルダを選択したフロントエンドアセットに置き換えるだけです。

NGWAFは、隔離環境の一部として独自のハニーポットをリンクしたいユーザーにも対応しています。 ユーザーはハニーポットのHTTPリクエストを環境のバックエンドサーバーに転送するだけで(バックエンドプロセスが自動的にデータをスクラブし、分析ダッシュボード(ELKスタック)に転送します)。

3. 図書館: 頭脳を強化する再トレーニングシーケンス

学習を続けられなければ、本当に賢いとは言えない

新しいペイロードや攻撃ベクトルが出現するにつれて、セキュリティを確保するために検出能力をアップグレードすることが重要です。そのため、NGWAFには防御側が機械学習モデルをトレーニングして新しいペイロードを検出できるようにする再トレーニング機能が組み込まれています。データサイエンスやニューラルネットワークに詳しくないユーザーでも、複雑な手順が代わりに処理されるため、このシンプルなインターフェースでモデルを微調整できます。

仕組み

ユーザーは自分のライブシステムからのラベル付けされたデータの小サンプル(例:数千件程度)をアップロードするだけで、既存のモデルをバックエンドで微調整できます:

  1. 新しい概念の導入: モデルのテキストベクトル化層の語彙が拡張され、新しいデータセット内の新しい用語が含まれます。新しい埋め込みもこれに対して初期化されます。
  2. 既存知識の保持: 以前のモデル内の既存の「学習済み知識」を活用するために、以前に既知の単語の埋め込みとLSTMモジュールが以前のモデルからロードされます。これにより、トレーニングプロセスも高速化されます。
  3. この更新されたアーキテクチャは新しいデータセットでトレーニングされ、トレーニングが完了すると、新しいモデルがライブWAFエンドポイントにデプロイされます。

トレーニングが完了すると、ユーザーには新しいモデルを評価するための簡単なモデル診断情報(例:テストセットでのパフォーマンスやさまざまなスコアしきい値)も提供されます。

ユーザーフロー

再トレーニングプロセスをトリガーするには、ダッシュボードに移動し、以下の手順に従ってください:

  1. アップロード用の新しいデータセット(.csv)を次の列で作成します:
  • payload [str]: システムからのペイロード、またはいくつかの文字列ベースの例(例:SQLiインジェクションの例)のいずれかである必要があります
  • label [int]: 非悪意のある例の場合は0、悪意のある例の場合は1にする必要があります
  • is_url [bool]: ペイロードがシステムからのもの(つまり、パスやデバイスなどの他のシステム情報を含む)の場合はTRUE、文字列ベースの例(例:"1==1")の場合はFALSEにする必要があります
  1. http://localhost:8088 に移動してNGWAF管理パネルを表示します。
  2. "Import Dataset"タブを選択し、作成したトレーニングセットをアップロードします
  1. "Manage Datasets"タブでトレーニングセットが正常にアップロードされたことを確認します。
  1. "Manage Model"タブで、モデルを再トレーニングするデータセットを選択し、"UPDATE WAF MODEL"ボタンをクリックします。
  1. おめでとうございます!モデルはしばらくして再トレーニングを完了するはずです。いくつかのモデル診断情報が表示されるはずです。

4. 追加機能:

NGWAFはELKスタックを使用して、NGWAFを通過するネットワークデータのログをキャプチャし、ユーザーがさらなる分析のためにNGWAFを通過するトラフィックを監視できるようにします。

NGWAFにはライブのTelegram通知機能もあり、NGWAFによって検出された悪意のある脅威を所有者にリアルタイムで通知します。

サンプル使用シナリオ

  1. 新しく通常のアプリケーション(内蔵のウェブクローナーを使用するか、隔離環境として別の複製デプロイメントを作成する)
  2. 既存のハニーポット/ハニーネットに統合する(ハニーポット/ハニーネットを指すように設定を更新する)

NGWAFのセットアップ

要件

テスト済みオペレーティングシステム

  1. macOS(Docker Desktop)
  2. linux

ML WAFコンポーネント

  1. Python
  2. request
  3. fastapi
  4. pandas
  5. scikit-learn
  6. tensorflow
  7. urllib

WAF管理パネルコンポーネント

  1. fastapi
  2. scikit-learn
  3. nltk
  4. pandas
  5. Create React App
  6. React Material Admin Template by Flatlogic

デコードレイヤー

  1. Cyberchef Server

キャッシュレイヤー

  1. Redis

隔離環境

  1. Drupot
  2. Elastic Search Stackコンポーネント(Elasticsearch、Logstash、Kibana、Filebeats)

Webアプリ

  1. DVWA
  2. OWASP
  3. VulnLab

インストールと使用方法

Dockerが実行されている状態で、以下のコマンドを使用してファイルを実行します:

./run.sh

ターゲットを置き換えるには、/waf/WafApp/waf.pyファイル内のdest_server変数とhoney_pot_server変数を正しいターゲットに指定します:

root@kitploit:~
# Replace me
dest_server = "dvwa"
honey_pot_server = "drupot:5000"

Dockerコンテナが起動したら、ローカルホストにアクセスできます。これらのポートで以下のサービスが実行されています:

また、waf-secrets.envファイルに以下を設定してください:

root@kitploit:~
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"

# TELEGRAM CONFIG
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"

さらに、waf-admin-secrets.envファイルに以下を設定してください:

root@kitploit:~
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxxx.xxx"
API_KEY="******************"
BUCKET_NAME="******************"

ACCESS_KEY_ID="******************"
SECRET_ACCESS_KEY="******************"

SQL_USERNAME="******************"
SQL_PASSWORD="******************"
SQL_SERVER="******************"
SQL_DATABASE_NAME="******************"

免責事項とその他の考慮事項

NGWAFはW.I.P(作業中)のオープンソースプロジェクトであり、機能や特徴はパッチごとに変更される場合があります。 貢献に興味がある場合は、遠慮なくIssueを作成するか、プルリクエストを送信してください!

ライセンス

ライセンス

MIT License

ツールをダウンロード
F1スコア
最終モデル0.9950.993
LSTMモジュールなしのニューラルネットワーク0.9560.891
決定木0.8780.840
ロジスティック回帰0.9460.914
ポートサービス備考認証情報(該当する場合)
8080DVWAWAFが存在する場所admin:password
5601Elasticsearchログを表示するためelastic:changeme
8088管理ダッシュボードWAFモデルを管理するためのダッシュボード
5001Drupotハニーポット