Sítio do Piropo

B. Piropo

< Jornal Estado de Minas >
Volte
23/02/2006

< Keyloggers >


O mundo virtual está cheio de pragas. Que vão de vírus a cavalos (de Tróia), passando por diversas categorias de vermes. Entre eles, os mais daninhos talvez sejam os “keyloggers”. Porque enquanto os vírus e vermes podem, no máximo, afetar o conteúdo de nossos discos rígidos e prejudicar (por vezes, impedir) o funcionamento da máquina, os “keyloggers” conseguem furtar informações cruciais, como identificações de usuário e senhas de contas – inclusive bancárias – e, combinados com um cavalo de Tróia, enviá-las a meliantes que as usam em proveito próprio. E o fazem, na maioria das vezes, sem sequer serem percebidos.
Saber como o inimigo age é o primeiro passo para preparar uma boa defesa. Então vejamos como funcionam os “keyloggers”.
Um “keylogger” é uma praga perigosa. Seu nome significa literalmente “registrador de teclas”. Os primeiros, ainda nos tempos do DOS, se limitavam a criar um registro, ou relação, de cada tecla premida pelo usuário e a armazená-lo em um arquivo. Os modernos, além disso, registram movimentos do mouse e o conteúdo de telas e janelas e, com a ajuda de um programa tipo “cavalo de Tróia” (que controla o computador remotamente sem o conhecimento do usuário), podem enviar o arquivo para terceiros, que usam as informações em seu próprio proveito, em geral para fins ilegais ou inconfessáveis.
Em artigo sobre segurança < http://www.eweek.com/article2/0,1895,1893515,00.asp > no sítio britânico eWeek em novembro passado, Paul Roberts informa que até o final de 2005 teriam sido liberados mais de seis mil desses programas (atenção: não são 6 mil máquinas infectadas, são 6 mil diferentes “keyloggers” infectando milhões de máquinas). E as vítimas não foram apenas máquinas domésticas: em 2005 as autoridades policiais conseguiram frustrar um golpe de 420 milhões de libras que seriam transferidas ilegalmente de um banco japonês cujas máquinas foram contaminadas. Segundo Roberts, a China é uma das grandes fontes de “keyloggers”, especialmente os especializados no furto de propriedade intelectual, como arquivos criados pelo Word ou programas CAD. E acrescenta: “os ‘keyloggers’ são especialmente comuns em países onde a fraude bancária é um problema grave, como o Brasil”. Portanto, é bom tomar cuidado.
Neste ponto você já concluiu que para surripiar sua senha bancária são necessários pelo menos dois programas: o “keylogger” propriamente dito, que captura e registra as informações em um arquivo, e o cavalo de Tróia, que envia este arquivo para terceiros (isso, naturalmente, se o “keylogger” não foi instalado na sua máquina por um marido/mulher ciumento/a ou colega de trabalho interessado em saber o que você anda fazendo em sua máquina; neste caso, basta acesso físico à máquina para abrir o arquivo e descobrir coisas geralmente desagradáveis). Portanto, na maioria dos casos, há que instalar dois programas.
Se você acha que isso é uma garantia de que está protegido, pois dificilmente dois programas seriam instalados em sua máquina à sua revelia, se engana. Hoje há diversos meios de fazer isso. Um deles é apelar para vulnerabilidades do sistema operacional ou programas (como as que permitem instalar código malicioso sub-repticiamente sem exigir ação alguma da vítima além de exibir uma imagem na tela, por exemplo), mas tais vulnerabilidades assim que descobertas são eliminadas pelos responsáveis pelos sistemas vulneráveis através das “atualizações” e “remendos” (“patches”). Piores são as que apelam para a chamada “engenharia social”, explorando as fraquezas humanas e levando a vítima a clicar em ícones ou atalhos (“links”) que abrem arquivos cuja função é executar uma tarefa aparentemente inocente enquanto, por detrás dos panos, instalam os programas nocivos. Em geral vêm disfarçadas de mensagens de “amigos” insinuando que você está sendo traído/a e mostrando as fotos da suposta traição, de “alguém que te adora mas tem vergonha de se declarar” e manda fotos, ou mensagens alegando que seu CPF foi cancelado, sua conta bancária está sem fundos, que uma dívida com a empresa tal ou qual não foi paga e coisas que tais. Todas solicitam que você clique em um atalho para tomar as devidas providências – um clique que infalivelmente leva à instalação de programas mal intencionados (e há quem me recrimine por concordar com Nelson Rodrigues quando ele afirma que “a humanidade não deu certo”...)
Mas, afinal, como funcionam essas pragas?
Nos tempos do DOS, criar um “keylogger” era fácil. Bastava “capturar” cada saída da INT 09, a interrupção do BIOS que recebia os códigos das teclas premidas pelo usuário (“scancodes”), os convertia em códigos de caracteres e os depositava em um trecho de memória denominado “buffer do teclado”, de onde eram capturados pelo sistema operacional. Eu mesmo, quando ainda tinha tempo para me divertir programando, desenvolvi um residente que usava este truque. Mas, “honi soit qui mal y pense”, minhas intenções eram nobres: tudo o que meu programa fazia era descobrir quando era pressionada a tecla da barra invertida (que, nas eras pré-Internet servia para pouco ou quase nada) e, somente então, depositar no buffer de teclado em vez de seu próprio código de caractere, o do “c-cedilha” naqueles dias inexistente nos teclados vendidos no patropi. Era meu jeito de botar um “c-cedilha” no teclado. O programinha até que tinhas suas manhas: detectava “Shift”, “CapsLock” e as demais teclas de controle e reagia de acordo. Mas era um programa “do bem” que eu distribuía para os amigos e perdeu a serventia com o advento dos teclados ABNT. A técnica, porém, era a mesma usada por quem desenvolvia os programas “do mal”, os primeiros “keyloggers”, que em vez de trocar os códigos dos caracteres os deixavam passar intocados para o buffer de teclado, porém guardavam uma cópia de cada um deles em um arquivo oculto. Como na época não havia Internet, era preciso acesso físico à máquina para instalar o programa e, de tempos em tempos, recuperar o arquivo.
Depois as coisas se sofisticaram. Ainda antes dos tempos da Internet apareceram os “hardware keyloggers”, pequenos dispositivos cilíndricos menores que a embalagem de um baton, que se interpõem entre o conector do cabo do teclado e seu encaixe na traseira do computador. Se você pensa que um bichinho desses é fácil de ser localizado, se engana. Primeiro, porque não é hábito do usuário comum verificar periodicamente que dispositivos estão conectados por detrás de suas máquinas (há quanto tempo você não verifica a sua?). Segundo, porque os “keyloggers” se parecem muito com os adaptadores usados para converter padrões de conectores (USB, PS/2 e convencional), de modo que mesmo quando são localizados, nem sempre são identificados. E, como não dependem de software, não são detectados pelos programas de segurança. E você se surpreenderia com a quantidade de dados que já foram furtados mediante o uso desses dispositivos, que podem ser encontrados no comércio especializado por preços que variam de algumas dezenas a poucas centenas de dólares dependendo da quantidade de dados que podem armazenar em sua memória interna e de seu grau de sofisticação (alguns podem ser controlados remotamente). Mas todos exigem o contato físico com a máquina: afinal, eles precisam ser conectados entre o teclado e sua entrada na placa-mãe.

Figura 1


Depois veio Windows e suas facilidades e complicações. Que incluem uma API (“Application Program Interface”, interface de programação de aplicativos) com centenas de rotinas e funções para ajudar o programador. Inclusive a “GetAsyncKeyState”, uma rotina que determina se o estado de uma tecla foi alterado desde a última verificação. Com ela, qualquer garoto que tenha noções de uma linguagem de programação elementar como o Visual Basic pode desenvolver um “keylogger”. Basta criar um “loop” (trecho de programa que se repete) para verificar o estado de cada tecla, anotando as mudanças encontradas. O resultado é um tanto bisonho: como o programa permanece o tempo todo verificando todas as teclas, tenham ou não sido premidas, consome uma apreciável fatia dos recursos de processamento da máquina, cujo desempenho passa a assemelhar-se ao de uma lesma lerda. Mas cuidado: apesar de bisonho, funciona. Além disso, um programador melhorzinho pode otimizar o código, por exemplo acrescentando uma rotina de monitoramento do teclado que só dispare o “keylogger” quando constatar que uma tecla foi acionada. Se você procurar direitinho talvez até encontre alguns “keyloggers” deste tipo na Internet. Mas quase todos foram criados por projetos de meliantes, garotos metidos a “hacker” que estão começando a programar e querem mostrar ao mundo como são poderosos. Se você confia nesse tipo de gente, use o programa à vontade. Mas sabendo desde já que a maior parte deles inclui armadilhas para surpreender os otários que confiaram nos aprendizes de biltres que os desenvolveram e adoram pregar peças nos incautos que depositam neles o mínimo de confiança. Portanto, se você se decidir a usar um programa destes, boa sorte. Garanto que vai precisar dela.
Um passo adiante estão os “keyloggers” que usam a função “SetWindowsHookEx()”, também da API de Windows. Esses já são coisa de profissional. A função não se limita ao teclado, mas intercepta todo o conjunto de intercâmbio de informações do sistema (“Windows messaging information”), que inclui botões clicados, ícones, barras título de janelas abertas e quejandas. É claro que um bom programa que usa esta técnica (conhecida por “hook”, de “gancho”, já que se “engancha” no sistema) precisa de um meio de classificar informações e separar o joio do trigo, gravando apenas o que é relevante em um arquivo texto que pode ser transferido via Internet seja automaticamente, a intervalos determinados para endereços prefixados, seja obedecendo a comandos enviados remotamente por quem “plantou” o “keylogger”. Programas tipo “hook” geralmente consistem de um módulo executável, que dispara o “gancho”, e um módulo DLL (“Dynamic Link Library”, ou biblioteca de ligação dinâmica), que contém as rotinas de captura de dados. Exigem um conhecimento razoável de programação para serem desenvolvidos mas são bastante eficientes, já que fornecem mais informações que as teclas premidas (por exemplo, se você costuma introduzir senhas em seus programas bancários usando a função “autocompletar” ou “copiando-as” de um arquivo criptografado e “colando-as” na caixa de dados, um “keylogger” simples não conseguirá furtá-las, já que não foram introduzidas através do teclado, mas um do tipo “hook” as capturará sem dificuldade). A imensa maioria dos “keyloggers” usados para fins escusos é deste tipo.
Finalmente existem ainda os “keyloggers” tipo “kernel” que, como o nome indica, penetram no próprio cerne do sistema operacional. Este tipo de praga usa suas próprias rotinas para substituir trechos do sistema operacional, o que os torna praticamente imunes à detecção por programas tipo antivírus e similares, já que depois de instalados passam a fazer parte do próprio sistema. Como substituem as rotinas responsáveis pela entrada e saída dos dados (ou seja, tanto o que entra pelo teclado e mouse quanto o que sai para o vídeo) e são instalados durante a própria carga do sistema, constituem o mais poderoso tipo de “keylogger”. Mas, por outro lado, como sua ação se restringe ao cerne do sistema, não alcançam as informações trocadas entre aplicativos (aquelas que transitam na chamada “application layer”), como as resultantes das operações de colar e cortar e de “autotexto” usadas nas entradas que apelam para a função “autocompletar”.
Então, já que sabemos como as pragas funcionam, falta usar esse conhecimento para nossa proteção.
Para descobrir se sua máquina está sendo espionada por um “hardware keylogger” basta dar uma olhada no ponto em que o cabo do teclado se conecta à traseira da máquina. Se houver alguma coisa entre o conector do cabo e o da placa-mãe, verifique se não se trata de um “keylogger”. Mas cuidado: pode ser que o que você lá encontrou seja um simples adaptador de formato. Experimente: remova o treco e tente encaixar o conector do cabo do teclado diretamente no da traseira da máquina. Se encaixar, é possível que o dispositivo seja mesmo um “keylogger”. Se não, provavelmente não passa de um inocente adaptador de padrões.
Quanto aos demais “keyloggers”: exceto os do tipo “kernel”, que são raros, todos os demais são facilmente identificáveis pelos bons utilitários contra vírus e contra programas espiões. A melhor proteção contra eles é manter as definições e assinaturas destes utilitários escrupulosamente atualizadas e fazer varreduras periódicas e completas dos discos rígidos.
Finalmente, há os “keyloggers” tipo “kernel”, virtualmente invisíveis. Bem, se não se pode detectá-los, pode-se ao menos impedir que enviem os dados coletados para quem os plantou. O que pode ser feito por um bom programa tipo “firewall” que controle tudo aquilo que sua máquina envia para o mundo exterior através da Internet.
E, finalmente, para os casos que escaparem de tudo isso: acostume-se a usar um conjunto de senhas “fortes” (em 26 de maio de 2005 publiquei aqui mesmo o artigo “Senhas”, ensinando a criar senhas seguras, ainda disponível na seção “Escritos / Artigos no Estado de Minas” de meu sítio em < www.bpiropo.com.br >). E, sobretudo: habitue a mudá-las periódica e regularmente. Essa, sim, é a forma mais garantida de proteger seus dados.
Um pouco de cuidado
A Internet foi desenvolvida no final do século passado por inspiração militar mas a grande responsável por sua disseminação e desenvolvimento foi a comunidade acadêmica, formada por cientistas e pesquisadores, gente de boa fé, encantada com a possibilidade de trocar informações técnicas e científicas e ter acesso a publicações acadêmicas. Gente que se preocupou fundamentalmente com os aspectos técnicos e funcionais sem ligar a mínima para os problemas de segurança. Afinal, pensavam eles, quem iria se dar ao trabalho de usar para finalidades menos nobres um veículo de troca de informações tão formidável?
Como sabemos, estavam enganados. E hoje a Internet, mais precisamente a troca de mensagens por correio eletrônico, é o meio preferido para propagação de programas “do mal”, vírus, vermes, cavalos de Tróia e assemelhados. Então vamos tentar ajudar o usuário que não sabe como se comportar diante de ameaças tão diversificadas.
Caro leitor, eu sei como você é belo, encantador e charmoso e tenho certeza que, no Brasil e no mundo, certamente haverá pencas de mulheres perdidamente apaixonadas por você sem coragem de se manifestar pessoalmente (se a cara leitora for do sexo feminino, por favor faça as devidas adaptações de gênero). Mas se alguma delas lhe enviar uma mensagem de correio eletrônico declarando seu amor e solicitando que você clique em um atalho (“link”) para ver as fotos da pobre criatura perdida de paixão ou para ler o cartão que ela lhe enviou, por favor, abstenha-se de clicar. Há uma forte probabilidade que aquela mensagem em particular seja de um pilantra fazendo-se passar por uma de suas muitas admiradoras apenas para roubar suas senhas e lhe causar dupla desilusão: amorosa e financeira.
Estou certo que você é um dos clientes preferenciais da Microsoft, Symantec ou todas as demais grandes empresas de informática e que seus (delas) empregados gastam grande parte do seu (deles) tempo cuidando da segurança de sua (desta vez da sua mesmo, leitor) máquina. Não obstante, se você receber uma mensagem pessoal informando que uma nova ameaça foi detectada e sugerindo executar o pequeno programa em anexo para vacinar a máquina, não execute. Por mais que aquelas empresas se preocupem com você, elas não enviam mensagens pessoais, especialmente com anexos executáveis.
Seu banco, a Receita Federal e as lojas onde você tem crédito guardam cuidadosamente seus dados pessoais. Portanto, se você receber uma mensagem de qualquer dessas organizações ou de uma concessionária de serviços públicos, solicitando a confirmação de senhas, CPFs, números de identidade ou qualquer outra informação pessoal, ou ainda informando que sua inscrição foi cancelada, seu nome foi para o SERASA ou sua conta venceu, ignore. Melhor ainda: comemore. Afinal a conta era sua e venceu. Venceu! Melhor que meu time, que já não vence há tanto tempo que estou quase desistindo dele.
Também eu aprecio, do ponto de vista puramente estético, naturalmente, um belo corpo de mulher (de novo, leitoras, façam as devidas adaptações de gênero). Mas se você receber uma mensagem com um atalho que promete revelar os mais recônditos mistérios daquela atriz famosa, ou rainha da bateria, ou participante do BBB ou coisa parecida, refreie seus instintos (estéticos, naturalmente) e se abstenha de clicar. Você dificilmente verá alguma coisa e, se vir, certamente não gostará do que viu.
E, finalmente: se algum amigo lhe contar que recebeu uma mensagem constrangida informando que ele está sendo traído (de novo, meninas, adaptem...) e que, apesar da forte amizade que os une, faltou coragem ao remetente para mostrar as fotos pessoalmente e por isso as envia em anexo, insista com seu amigo para refrear a curiosidade de abri-las mesmo na eventualidade ter sentido forte coceira na testa logo após ler a mensagem. Convença-o que, se ele abrir as fotos, seja qual for o resultado, certamente ficará ainda mais infeliz...

B. Piropo