
Un framework per identificare e lanciare exploit contro host di rete interni. Funziona tramite enumerazione IP WebRTC combinata con WebSocket e fingerprinting di risorse esterne.
Un framework per identificare e lanciare exploit contro host di rete interni. Funziona tramite enumerazione IP WebRTC, scansione host WebSocket e fingerprinting di risorse esterne.
Quando il payload sonar.js viene caricato in un browser web moderno, accade quanto segue:
<img src="https://raw.githubusercontent.com/mandatoryprogrammer/sonar.js/HEAD/x"> e <link rel="stylesheet" type="text/css" href="x"> e agganciando l'evento onload. Se le risorse previste vengono caricate con successo, viene attivata la callback JavaScript preimpostata per avviare l'exploit fornito dall'utente.sonar.js si basa su un database di impronte digitali. Un'impronta digitale è semplicemente un elenco di risorse note su un dispositivo a cui è possibile collegarsi e rilevare tramite onload. Esempi di ciò includono immagini, fogli di stile CSS e persino JavaScript esterni.
Un esempio di database di impronte digitali è visibile qui sotto:
var fingerprints = [
{
'name': "ASUS RT-N66U",
'resources': ["/images/New_ui/asustitle.png","/images/loading.gif","/images/alertImg.png","/images/New_ui/networkmap/line_one.png","/images/New_ui/networkmap/lock.png","/images/New_ui/networkmap/line_two.png","/index_style.css","/form_style.css","/NM_style.css","/other.css"],
'callback': function( ip ) {
// Insert exploit here
},
},
{
'name': "Linksys WRT54G",
'resources': ["/UILinksys.gif","/UI_10.gif","/UI_07.gif","/UI_06.gif","/UI_03.gif","/UI_02.gif","/UI_Cisco.gif","/style.css"],
'callback': function( ip ) {
// Insert exploit here
},
},
]
Il database sopra contiene impronte digitali per due dispositivi: il router WiFi ASUS RT-N66U e il router WiFi Linksys WRT54G.
Ogni voce del database ha i seguenti campi:
name: Un campo per identificare a quale dispositivo è destinata l'impronta. Potrebbe essere qualcosa come Stampante HP Officejet 4500 o Router Linksys WRT54G.resources: Un array di collegamenti relativi a risorse come fogli di stile CSS, immagini o persino file JavaScript. Se si prevede che queste risorse siano su una porta non standard come 8080, impostare la risorsa con la porta inclusa: :8080/unique.css. Tieni presente che l'uso di risorse esterne con contenuti attivi come JavaScript è pericoloso poiché può interrompere il normale flusso di esecuzione.callback: Se tutte queste risorse risultano esistenti sull'host enumerato, la funzione callback viene chiamata con un unico argomento: l'indirizzo IP del dispositivo.Creando le tue impronte digitali puoi costruire exploit personalizzati che verranno lanciati contro i dispositivi interni una volta rilevati da sonar.js. Gli exploit comuni includono cose come Cross-site Request Forgery (CSRF), Cross-site Scripting (XSS), ecc. L'idea è che puoi utilizzare queste vulnerabilità per fare cose come modificare le configurazioni DNS del router, scaricare file da un file server interno e altro ancora.
Per un modo più semplice di creare impronte digitali, consulta la seguente estensione Chrome che genera automaticamente il codice template dell'impronta per la pagina in cui ti trovi:
Clicca qui per installare l'estensione Chrome

Usando sonar.js, un team di penetration testing può costruire exploit web contro cose come server di log interni, router, stampanti, telefoni VOIP e altro ancora. Poiché le reti interne sono spesso meno protette, attacchi come CSRF e XSS possono essere potenti per assumere il controllo delle configurazioni dei dispositivi sulla rete interna di un host. Abbiamo detto che tutto ciò può essere fatto da una pagina web su Internet?
Se possiedi un dispositivo come una stampante, un router o un altro servizio interno, inviaci un'impronta digitale in modo che possiamo aggiungerla al nostro database principale. Aggiungeremo ulteriori impronte per più dispositivi nel tempo, ma siamo limitati ai dispositivi a cui abbiamo accesso.