特に第 3 層と第 4 層 (ネットワークとトランスポート) で、ネットワーク スタックに負荷をかけるためにファジング戦略を実行するにはどうすればよいですか? SPIKE などのファザーを生成するためのフレームワークを見てきましたが、それらは主にアプリケーション層以上に焦点を当てているように思えますか? TCP など、これらの層でよく知られているプロトコルをファジングするためのよく知られた手法はありますか?
ありがとう。
特に第 3 層と第 4 層 (ネットワークとトランスポート) で、ネットワーク スタックに負荷をかけるためにファジング戦略を実行するにはどうすればよいですか? SPIKE などのファザーを生成するためのフレームワークを見てきましたが、それらは主にアプリケーション層以上に焦点を当てているように思えますか? TCP など、これらの層でよく知られているプロトコルをファジングするためのよく知られた手法はありますか?
ありがとう。
スキャピーを見てください。これにより、ネットワーク層とトランスポート層でファジングできます。このfuzz
関数は、IP 層または TCP 層で明示的に指定していないものをすべてファジングします (それぞれに個別に適用できます)。これにより、IP アドレスとポートのペアをランダムに生成することから、無意味なパケットを作成して送信することまで、さまざまな機能が提供されます。
Fragrouteも参照してください。これにより、TCP/IP があらゆる種類の回避技術を使用するようにねじ曲げられますが、ネットワーク スタックに隠れているバグや脆弱性が明らかになる可能性があります。
さらに、組織が反対しない場合は、Tor出口ノードをセットアップして、そこからトラフィックをキャプチャできます。正しい TCP 接続状態の追跡をテストするのに役立つことがわかりました。接続先はよく知られており、変更されていませんが、多種多様なサーバーと楽しいネットワーク輻輳の問題があります. 基本的には無限のトラフィック ソースです。組織が悪意のあるトラフィックの潜在的なソースになることに反対する可能性があるため、必ず上層部に確認してください (たとえ無責任の強い前例があるとしても)。自宅で実行/キャプチャしてから、pcapsを持ち込むことで、この問題を回避しました。
IP、UDP、または TCP をファジングしたい場合は、ループバックを介して高レベルのサービスからパケットを読み取り、ファジングし、転送するプロセスにルーティングします。生のソケットと通信できるドライバーが必要であり、それらのプロトコルについて該当する RFC が何を述べているかを読んで学習する必要があります。
これを行う簡単な方法があります。Justdelegard が推奨するように、一般的には Scapy を使用するのがおそらく最適です。
Laurent Gaffiéによる ICMPv4/IP ファザーのプロトタイプのリリースをご覧ください。彼の Python コード (ちなみに、pastebin.com でより読みやすい形で再投稿したもの) は、scapy からインポートし、彼が定義したいくつかのメソッドを使用して、いくつかのタイプのファジングを実行します。IP および ICMP パケットは、彼のサンプル コードで処理されます。したがって、これはあなたが求めているものとまったく同じように聞こえます。
現在、多くの企業がTcl/Expect を使用してネットワークのカスタム自動テストを行っているようです。SIP、H.323、レイヤー 2 & 3 プロトコルなど
したがって、Scapy がニーズを満たさない場合は、Expect を使用して Tcl で書かれたものを作成または検索して、その仕事を行うことができるかもしれません。または、Scapy を使用して Python でいくつかのことを行い、Expect を使用して Tcl で他のことを行いたい場合もあります。
Tcl は、ネットワーク テストおよび管理アプリケーションに長い間使用されてきました。1990 年代に、Tcl を使用して SNMP ベースのネットワーク管理を行う方法に関する本がありました。
Tcl の構文は明らかに奇妙ですが、ライブラリは非常に強力です。Python プログラミング言語の標準ライブラリでできることと同様に、ソケット上のカスタム ネットワーク動作の動作を定義するフレームワークのような機能が付属しています。
Python やその他のスクリプト言語とは異なり、Expect という名前の Tcl プログラム用の非常に強力なツールがあります ( expect のマニュアル ページを参照)。
Expect には便利な機能があります。Tcl テスト スクリプトを自動生成できます。生成されたスクリプトは、Expect 関数を呼び出します。この録音を行うとき、それは受動的な中間者として機能し、会話の両側を録音します。MS Word や Emacs で編集を行いながらマクロを記録するような方法です。
その後、自動生成された Expect スクリプトを編集して微調整したり、動作を変更したり、複数のバリエーションを作成したりできます。回帰テストを作成するのに非常に便利です。必要に応じて、これを使用して、上位層のプロトコル テストの作成を開始できるはずです。ゼロから始めるビート。
Tcl/Expect を使用して、文字列ベースのコマンドを使用する標準の TCP アプリケーション (FTP、HTTP、SMTP など) をテストできると思います。stdin から入力を読み取り、stdout への出力を生成する TELNET などの文字ベースのアプリケーションのテストにも適しています。