
Um framework para identificar e lançar exploits contra hosts de rede interna. Funciona através de enumeração de IP por WebRTC combinada com WebSockets e fingerprinting de recursos externos.
Um framework para identificar e lançar explorações contra hosts de rede interna. Funciona via enumeração de IP por WebRTC, varredura de hosts por WebSocket e fingerprinting de recursos externos.
Ao carregar o payload sonar.js em um navegador web moderno, o seguinte acontecerá:
<img src="https://raw.githubusercontent.com/mandatoryprogrammer/sonar.js/HEAD/x"> e <link rel="stylesheet" type="text/css" href="x"> e conectando o evento onload. Se os recursos esperados carregarem com sucesso, ele acionará o callback JavaScript predefinido para iniciar o exploit fornecido pelo usuário.sonar.js funciona com base em um banco de dados de impressões digitais. Uma impressão digital é simplesmente uma lista de recursos conhecidos em um dispositivo que podem ser vinculados e detectados via onload. Exemplos disso incluem imagens, folhas de estilo CSS e até JavaScript externo.
Um exemplo de banco de dados de impressões digitais pode ser visto abaixo:
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
},
},
]
O banco de dados acima contém impressões digitais para dois dispositivos, o roteador WiFi ASUS RT-N66U e o roteador WiFi Linksys WRT54G.
Cada entrada do banco de dados possui o seguinte:
name: Um campo para identificar qual dispositivo a impressão digital se destina. Pode ser algo como impressora HP Officejet 4500 ou roteador Linksys WRT54G.resources: Este é um array de links relativos para recursos como folhas de estilo CSS, imagens ou até arquivos JavaScript. Se você espera que esses recursos estejam em uma porta não padrão, como 8080, defina o recurso com a porta incluída: :8080/unique.css. Lembre-se de que usar recursos externos com conteúdo ativo, como JavaScript, é perigoso, pois pode interromper o fluxo normal de execução.callback: Se todos esses recursos forem encontrados no host enumerado, a função callback é chamada com um único argumento do endereço IP do dispositivo.Ao criar suas próprias impressões digitais, você pode construir exploits personalizados que serão lançados contra dispositivos internos assim que forem detectados pelo sonar.js. Exploits comuns incluem coisas como Cross-site Request Forgery (CSRF), Cross-site Scripting (XSS), etc. A ideia é que você pode usar essas vulnerabilidades para fazer coisas como modificar configurações de DNS do roteador, extrair arquivos de um servidor de arquivos interno e muito mais.
Para uma maneira mais fácil de criar impressões digitais, veja a seguinte extensão do Chrome que gera automaticamente código de modelo de impressão digital para a página em que você está:
Clique Aqui para Instalar a Extensão do Chrome

Usando sonar.js, uma equipe de pentest pode construir exploits web contra coisas como servidores de log internos, roteadores, impressoras, telefones VOIP e muito mais. Devido ao fato de as redes internas serem frequentemente menos protegidas, ataques como CSRF e XSS podem ser poderosos para assumir o controle das configurações de dispositivos na rede interna de um host. Já mencionamos que tudo isso pode ser feito a partir de uma página da Internet?
Se você possui um dispositivo como uma impressora, roteador ou algum outro serviço interno, envie-nos uma impressão digital para que possamos adicioná-la ao nosso banco de dados principal. Estaremos adicionando mais impressões digitais para mais dispositivos ao longo do tempo, mas estamos limitados aos dispositivos aos quais temos acesso.