6 Ataques com QR Code
Desde os primórdios da Internet, os crackers tentam fazer com que os usuários acessem links maliciosos por meio de diversas táticas, incluindo persuasão por e-mail, aproveitando-se de atualidades como a doação para vítimas do terremoto no Japão ou solicitando confirmação de dados cadastrais, por cartas falsas enviadas via correio, tirando proveito do nome de entidades como a Receita ou a Polícia, por SMS e qualquer outro meio que consiga conduzir o inocente usuário a morder a isca neste ataque chamado de phishing. Embora todos esses meios envolvam algum tipo de persuasão, nenhum é mais simples (e provavelmente tão eficaz) quanto o Quick Response Code (QR Code). Você sabe por quê?
Antigamente, quando a educação digital era bem mais precária, a grande maioria não se preocupava com a existência de vírus, roubo de informações e outras ameaças, o que os tornava usuários altamente enganáveis. Bastava redigir um texto persuasivo o suficiente para conduzir o usuário a uma URL maliciosa como "Veja as fotos da festa em http://malicioso/fotos.exe", por exemplo, ou "Precisamos da resposta do orçamento anexo: (PDF) Orçamento.zip", conforme um dos e-mails que recebo regularmente:
Hoje em dia, o número de vítimas desse tipo de golpe diminuiu bastante, visto que os principais vetores de ataque foram saturados, estimulando crackers a procurarem outros meios, meios em que os usuários não estão acostumados, meios em que a chance dos usuários serem enganados seja maior. E depois, quando os usuários se tornarem alertas a esse novo vetor, os crackers vão pesquisar e criar novos ou misturar os vários existentes. Essas etapas fazem parte de um ciclo.
Eis que surge o QR Code, um dos mais recentes vetores de ataque. Inventado pela Denso em 1994, uma subsidiária da Toyota no Japão, esse código de barras bidimensional era utilizado para escanear componentes de veículos, mas tornou-se popular fora da indústria automotiva devido à velocidade de escaneamento e capacidade de armazenamento perto dos outros padrões.
Quanto à capacidade do QR Code, é importante ressaltar que ele é variável em função de três fatores:
- Tipo de dado, que pode ser:
- Numérico apenas
- Alfanumérico
- Binário
- Kanji
- Versão do QR Code (de 1 até 40)
- Level de correção de erro
- L – Baixa
- M – Média
- Q – Quartil
- H – Alta
Comparando com a maior capacidade que pode ser alcançada até o momento com os símbolos 40-L (Versão 40 e correção de erros L), temos os seguintes valores segundo a Wikipedia:
Tipo | Limite |
---|---|
Numérico apenas | Max. 7.089 caracteres (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) |
Alfanumérico | Max. 4.296 caracteres (0–9, A–Z [maiúsculo apenas], espaço, $, %, *, +, -, ., /, :) |
Binário/byte | Max. 2.953 caracteres (bytes de 8 bits) (23.624 bits) |
Kanji/Kana | Max. 1.817 caracteres |
Ataques com QR Code
Agora, com um pouco mais de bagagem a respeito do QR Code, vamos entender quais são os ataques baseados nele até o momento, começando pelo famoso hacktivista The Jester (@th3j35t3r), que em 05 de Março de 2012 alterou sua foto de perfil do Twitter para um QR Code sem dar satisfações.
1) Explorar navegador por QR Code
Curiosos utilizando-se de um aplicativo leitor de QR Code para dispositivo móvel escanearam o QR Code e foram automaticamente (graças ao aplicativo) redirecionados a um website malicioso criado pelo hacktivista, onde tiveram informações extraídas de seus dispositivos e posteriormente divulgadas de maneira criptografada no MediaFire. Ilustração:
Observação: esse tipo de ataque basicamente utiliza-se dos mesmos conceitos da exploração das recentes vulnerabilidades 0-day do Java e do Internet Explorer.
2) Explorar leitor de QR Code
Assim como é possível atacar humanos, é possível atacar os sistemas que farão uso do conteúdo desse QR Code.
Dependendo do conteúdo inserido no QR Code e da segurança do aplicativo que faz uso do conteúdo escaneado, é possível causar dos mais diversos estragos ou fraudes. Imagine o seguinte cenário: você tem um carro e hoje é o dia de rodízio dele, mas você ainda assim resolve andar com ele e passa por um radar. O radar vai tirar uma foto da placa e armazenar em algum banco de dados o número da sua placa, a foto, o horário, etc. Até aqui tudo normal, mas vale lembrar que o radar supõe que a placa identificada é um valor confiável, ou seja, que não representa risco, mas e se um radar fotografasse a seguinte placa:
E não tratasse contra ataques de injeção de códigos? Ao inserir no banco de dados, o resultado seria a exclusão do banco de dados "TABLICE", caso existisse. Por outro lado, você poderia alterar o "conteúdo de sua placa" para apontar para outra placa (fraude). Para relacionar esse cenário com os QR Codes, basta imaginar que antes de ler a placa, é necessário interpretar um QR Code.
Voltando agora para uma abordagem com dispositivos móveis, também é possível dominar o dispositivo da vítima assim como no primeiro ataque, caso o conteúdo do QR Code explore alguma vulnerabilidade como Buffer Overflow no aplicativo que interpreta o QR Code. Confira a ilustração:
3) Phishing por QR Code
Para os atacantes, uma das vantagens de se utilizar o QR Code para disparar o acesso a uma URL é o fato do usuário não precisar digitar a URL e acabar muitas vezes prendendo-se apenas ao conteúdo exibido, tornando-se assim uma vítima em potencial para ataques de Phishing que levam a sites com aparência clonada.
Embora existam usuários mais atentos, os atacantes utilizam URLs parecidas com as do site clonado e, por conta da limitação do visor do celular, este ataque pode enganar até os mais precavidos sim. Para exemplificar, confira:
4) Alteração de QR Code (Física e Lógica)
Já parou para pensar nos QR Codes espalhados por aí? Esses dias eu mesmo vi um QR Code atrás de uma embalagem de shampoo e me veio em mente: e se alguma empresa intermediária alterasse as embalagens de todos os shampoos modificando apenas o QR Code? Ninguém iria perceber até que alguém reclamasse, mas até lá muitos já teriam sido infectados.
Quem já frequentou o metrô de São Paulo deve ter visto na "TV Minuto" que algumas vezes é exibido um QR Code que cobre a tela toda. E se alguém manipulasse essa imagem?
Pensando um pouco alto, após uma invasão muitos crackers deixam trojans nos computadores invadidos, mas não estão tão longe de alterar os QR Codes também.
Quanto à alteração física, existe uma referência que a explica com maiores detalhes aqui.
5) Distribuir escaneador de QR Code infectado
Você tem certeza que o seu leitor de QR Code não está infectado? Capaz de alterar o valor dos QR Codes escaneados para valores maliciosos, sites maliciosos, por exemplo. Na prática, o software iria "fingir" que escaneou e depois lhe traria um valor malicioso. Entendo que essa prática seja menos provável perto das outras, mas não impossível. Pense a respeito!
6) Engenharia Social
Não se esqueça de que os humanos geralmente são o elo mais fraco de um sistema, então instruí-los é sempre bom. Ainda mais quando estamos falando de ataques direcionados a alguma determinada empresa ou organização, onde a curiosidade os conduz a fazerem grandes besteiras. Para exemplificar, imagine se alguém criasse um site malicioso e colocasse a URL desse site em um QR Code, imprimisse e colasse em alguma parede isolada, mas que esteja sob a vista dos funcionários. Certamente alguém iria escanear, e o pior, sem precisar cair em algum texto persuasivo como os demais métodos citados no topo deste artigo. Contra engenharia social: orientação!
Conclusão
Sem dúvida, como pudemos perceber, o QR Code pode ser mais nocivo do que se imagina, mas nem todas as pessoas e sistemas sabem disso.
Para as pessoas, o ideal é nunca escanear QR Codes (uma leve paranoia). Mas, se for escanear, que seja de fontes seguras, com um escaneador confiável e desabilitar qualquer tipo de ação automática por parte do leitor. Quanto aos sistemas, validar se o dado veio conforme o esperado, limitando os caracteres em uma whitelist e checando se o tamanho do conteúdo também veio conforme o esperado.
Referências e sugestões de leitura:
- Wikipedia – QR Code http://en.wikipedia.org/wiki/QR_code
- Wikipedia – The Jester QR Code Attack http://en.wikipedia.org/wiki/TheJester#QRcode_attack
- White Paper http://www.sba-research.org/wp-content/uploads/publications/QRCodeSecurity.pdf
- Alterando QR Codes http://wordpress.mrreid.org/2011/08/06/hacking-qr-codes/
- QR Code Attack utilizando SET http://pentestlab.wordpress.com/2012/04/17/qrcode-attack-vector/
- Gerador Online de QR Code http://qrcode.kaywa.com/
- Hotel feito com QR Codes http://thenextweb.com/socialmedia/2011/03/18/an-entire-hotel-built-out-of-qr-code-and-other-great-qr-strategies/