
Universal Plug and Fuzz
UFuzz, o Universal Plug and Fuzz, è uno strumento automatico di fuzzing UPnP. Enumera tutti gli endpoint UPnP sulla rete, individua i servizi disponibili e li sottopone a fuzzing. Ha anche la capacità di eseguire il fuzzing su HTTP utilizzando i log del proxy Burp.
È progettato per eseguire il fuzzing su sistemi embedded e, di conseguenza, è solo a thread singolo. Ha inoltre un set di payload molto limitato, poiché eseguire il fuzzing su questi sistemi può essere lento. Alcuni payload, come la SQL injection cieca e l'iniezione di comandi, si basano su ritardi per indicare se l'iniezione è riuscita e possono generare falsi positivi. Altri payload, come le format string e i buffer overflow, sono progettati per utilizzare un monitor personalizzato per rilevare i crash.
Sono inclusi moduli di configurazione di esempio e moduli di monitoraggio. I monitor personalizzati consentono di utilizzare la telemetria del sistema target per rilevare i crash. Sono stati forniti moduli di esempio per il rilevamento dei crash basato su telnet e console seriale.
Nota che il codice è molto grezzo. "Hacky" sarebbe il modo migliore per descriverlo. Purtroppo questo progetto è stato scritto in fretta e non è mai stato architettato adeguatamente. Lavorerò per risolvere questo problema nei prossimi mesi.
Infine, parte del codice è stata presa in prestito da altri progetti:
Il codice UPnP è basato in gran parte sul codice miranda di Craig Heffner. Craig è stato un'ispirazione per me e ti consiglio vivamente di leggere il suo blog /dev/ttys0.
Parte del codice di generazione del set di test è basata sul progetto Metafuzz di Ben Nagy.
Il codice di parsing di socket e HTTP è basato su Excon.
UFuzz è stato testato con Ruby 1.9.3 e Ruby 2.1.1. Puoi installare tutte le gemme richieste eseguendo bundle install nella directory UFuzz.
Esegui ufuzz con l'opzione -h per vedere tutte le opzioni della riga di comando. Quando lo strumento viene eseguito, i log vengono scritti nella directory log.
Per il fuzzing di base di tutti i dispositivi UPnP sulla rete, esegui semplicemente ufuzz --upnp. Probabilmente vorrai anche utilizzare l'opzione -v 4 per vedere le richieste e i riepiloghi delle risposte.