
Un framework pour identifier et lancer des exploits contre des hôtes internes au réseau. Fonctionne via l'énumération d'adresses IP WebRTC combinée à des WebSockets et au fingerprinting de ressources externes.
Un framework pour identifier et lancer des exploits contre des hôtes du réseau interne. Fonctionne via l'énumération d'adresses IP WebRTC, le scan d'hôtes par WebSocket et la prise d'empreintes de ressources externes.
Lors du chargement de la charge utile sonar.js dans un navigateur web moderne, les actions suivantes se produiront :
<img src="https://raw.githubusercontent.com/mandatoryprogrammer/sonar.js/HEAD/x"> et <link rel="stylesheet" type="text/css" href="x"> et en accrochant l'événement onload. Si les ressources attendues se chargent correctement, cela déclenche le callback JavaScript prédéfini pour lancer l'exploit fourni par l'utilisateur.sonar.js fonctionne à partir d'une base de données d'empreintes. Une empreinte est simplement une liste de ressources connues sur un périphérique qui peuvent être liées et détectées via onload. Des exemples incluent des images, des feuilles de style CSS, et même du JavaScript externe.
Un exemple de base de données d'empreintes est présenté ci-dessous :
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 ) {
// Insérez l'exploit ici
},
},
{
'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 ) {
// Insérez l'exploit ici
},
},
]
La base de données ci-dessus contient des empreintes pour deux périphériques : le routeur WiFi ASUS RT-N66U et le routeur WiFi Linksys WRT54G.
Chaque entrée de la base de données comporte les éléments suivants :
name : Un champ pour identifier le périphérique concerné par l'empreinte. Cela pourrait être quelque chose comme Imprimante HP Officejet 4500 ou Routeur Linksys WRT54G.resources : Un tableau de liens relatifs vers des ressources telles que des feuilles de style CSS, des images, ou même des fichiers JavaScript. Si vous vous attendez à ce que ces ressources se trouvent sur un port non standard comme 8080, définissez la ressource avec le port inclus : :8080/unique.css. Gardez à l'esprit que l'utilisation de ressources externes avec du contenu actif comme JavaScript est dangereux car cela peut interrompre le flux normal d'exécution.callback : Si toutes ces ressources sont trouvées sur l'hôte énuméré, la fonction callback est appelée avec un seul argument : l'adresse IP du périphérique.En créant vos propres empreintes, vous pouvez construire des exploits personnalisés qui seront lancés contre des périphériques internes une fois détectés par sonar.js. Les exploits courants incluent des choses comme la falsification de requête intersite (CSRF), le cross-site scripting (XSS), etc. L'idée est que vous pouvez utiliser ces vulnérabilités pour modifier les configurations DNS d'un routeur, décharger des fichiers d'un serveur de fichiers interne, et plus encore.
Pour un moyen plus simple de créer des empreintes, consultez l'extension Chrome suivante qui génère automatiquement le code modèle d'empreinte pour la page sur laquelle vous vous trouvez :
Cliquez ici pour installer l'extension Chrome

En utilisant sonar.js, une équipe de test d'intrusion peut construire des exploits web contre des choses telles que des serveurs de logs internes, des routeurs, des imprimantes, des téléphones VOIP, et plus encore. En raison du fait que les réseaux internes sont souvent moins protégés, des attaques comme CSRF et XSS peuvent être puissantes pour prendre le contrôle des configurations de périphériques sur le réseau interne d'un hôte. Avons-nous mentionné que tout cela peut être fait depuis une page web sur Internet ?
Si vous possédez un périphérique tel qu'une imprimante, un routeur ou un autre service interne, veuillez nous soumettre une empreinte afin que nous puissions l'ajouter à notre base de données principale. Nous ajouterons davantage d'empreintes pour plus de périphériques au fil du temps, mais nous sommes limités aux périphériques auxquels nous avons accès.