
UFuzz(Universal Plug and Fuzz)は、自動UPnPファジングツールです。ネットワーク上のすべてのUPnPエンドポイントを列挙し、利用可能なサービスを見つけてファジングします。また、Burpプロキシログを使用してHTTPをファジングする機能もあります。
組み込みシステムをファジングするように設計されているため、シングルスレッドのみです。また、これらのシステムのファジングは遅い可能性があるため、ペイロードセットも非常に限られています。ブラインドSQLiやコマンドインジェクションなどの特定のペイロードは、インジェクションが成功したかどうかを示すために遅延に依存しており、誤検知が発生する可能性があります。フォーマット文字列やバッファオーバーフローなどの他のペイロードは、クラッシュを検出するためにカスタムモニタを使用するように設計されています。
設定モジュールとモニタモジュールの例が含まれています。カスタムモニタを使用すると、ターゲットシステムのテレメトリを利用してクラッシュを検出できます。Telnetベースおよびシリアルコンソールベースのクラッシュ検出用のサンプルモジュールが提供されています。
コードは非常に粗削りであることに注意してください。最も適切な表現は「ハッキー」でしょう。残念ながら、このプロジェクトは迅速に書かれ、実際に適切に設計されることはありませんでした。今後数か月でこれを解決するために取り組んでいきます。
最後に、コードの一部は他のプロジェクトから借用しています:
UPnPコードは、Craig Heffner氏のmirandaコードに大きく基づいています。Craig氏は私にインスピレーションを与えてくれました。また、彼のブログ/dev/ttys0を読むことを強くお勧めします。
テストセット生成コードの一部は、Ben Nagy氏のMetafuzzプロジェクトに基づいています。
ソケットおよびHTTPパースコードは、Exconに基づいています。
UFuzzは、Ruby 1.9.3およびRuby 2.1.1でテストされています。UFuzzディレクトリでbundle installを実行することで、必要なすべてのgemをインストールできます。
すべてのコマンドラインオプションを表示するには、-hオプションを指定してufuzzを実行してください。ツールを実行すると、ログはログディレクトリに書き込まれます。
ネットワーク上のすべてのUPnPデバイスに対して基本的なファジングを行うには、ufuzz --upnpを実行するだけです。リクエストとレスポンスの要約を表示するには、-v 4オプションも使用したいでしょう。