
Universal Plug and Fuzz
UFuzz, oder Universal Plug and Fuzz, ist ein automatisches UPnP-Fuzzing-Tool. Es listet alle UPnP-Endpunkte im Netzwerk auf, findet die verfügbaren Dienste und fuzzt diese. Es besitzt außerdem die Fähigkeit, HTTP mithilfe von Burp-Proxy-Logs zu fuzzen.
Es ist dafür ausgelegt, eingebettete Systeme zu fuzzen, und ist daher nur single-threaded. Es hat außerdem einen sehr begrenzten Payload-Satz, da das Fuzzen dieser Systeme langsam sein kann. Bestimmte Payloads wie blindes SQLi und Command Injection verlassen sich auf Verzögerungen, um anzuzeigen, ob die Injektion erfolgreich war, und können Fehlalarme erzeugen. Andere Payloads wie Format-Strings und Buffer Overflows sind darauf ausgelegt, einen benutzerdefinierten Monitor zur Erkennung von Abstürzen zu verwenden.
Beispielkonfigurationsmodule und Monitormodule sind enthalten. Benutzerdefinierte Monitore ermöglichen die Verwendung der Telemetrie des Zielsystems zur Erkennung von Abstürzen. Beispielmodule wurden für die telnet-basierte und serielle konsolenbasierte Absturzerkennung bereitgestellt.
Beachte, dass der Code sehr grob um die Kanten ist. „Hacky" wäre die beste Art, es zu beschreiben. Leider wurde dieses Projekt schnell geschrieben und wirklich nie richtig architekturiert. Ich werde in den kommenden Monaten daran arbeiten, das zu beheben.
Schließlich wurde ein Teil des Codes von anderen Projekten übernommen:
Der UPnP-Code basiert weitgehend auf Craig Heffners Miranda-Code. Craig war eine Inspiration für mich, und ich empfehle dringend, seinen Blog /dev/ttys0 zu lesen.
Ein Teil des Codes zur Generierung von Testsätzen basiert auf Ben Nagys Metafuzz-Projekt.
Der Socket- und HTTP-Parsing-Code basiert auf Excon.
UFuzz wurde mit Ruby 1.9.3 und Ruby 2.1.1 getestet. Du kannst alle erforderlichen Gems installieren, indem du bundle install im UFuzz-Verzeichnis ausführst.
Führe ufuzz mit der Option -h aus, um alle Befehlszeilenoptionen zu sehen. Wenn das Tool läuft, werden Protokolle in das Log-Verzeichnis geschrieben.
Für grundlegendes Fuzzing aller UPnP-Geräte im Netzwerk führe einfach ufuzz --upnp aus. Du wirst wahrscheinlich auch die Option -v 4 verwenden wollen, um die Anfragen und Antwortzusammenfassungen zu sehen.