Languages

Wednesday, April 18, 2018

Como as bolsas de criptomoedas protegem seus clientes

Este artigo é parte integrante de uma série de três artigos que serão publicados aqui, trata a respeito de uma investigação independente que fiz no mercado de criptomoedas como um todo, com foco em roubos recentes por Phishing que estavam ocorrendo na época de Março/2016 a Abril/2018 na Foxbit, bolsa brasileira de criptomoedas.

Para ler a primeira parte acesse: http://thinkhacker.blogspot.com.br/2018/04/como-os-hackers-roubam-criptomoedas.html

Endereços para doações:
BTC: 1FSzwTdndhtbjGtRTKiu2vQHHrVAPUGSZG
DCR: DsnWSf8qCZD85KR5mpidae5FEpJtuaARHir

Para baixar o relatório completo em PDF clique aqui: https://goo.gl/46oWm1

Vimos que existem diversas formas de se roubar senhas de um usuário, algumas quase impossíveis de se detectar. A popularização da informática trouxe muitos usuários inexperientes ao mundo da tecnologia, que são presas fáceis para os hackers usando os ataques aqui discutidos. Com isso a demanda por soluções seguras para garantir o controle de emails, contas de redes sociais, e mais importante instituições financeiras garantindo o acesso somente pelo beneficiário, cresceu muito.

Todo tipo de serviço hoje na internet tem que partir do pressuposto de que seu cliente é inexperiente e pode estar sofrendo um ataque neste exato momento, com isso foram criadas diferentes formas de se evitar a maioria deles, grande parte das soluções foram originadas no mercado financeiro, as quais discutiremos a seguir.

1. Prova de autenticidade

Provavelmente uma das implementações mais simples de segurança existentes no mercado é a prova de autenticidade, ela protege tanto contra phishing como man-in-the-middle e é tão simples que um programador sênior pode ser desenvolver ela em minutos.




Imagem 6 - Exemplo de prova de autenticidade usada pela Walltime, as cores serão sempre as mesmas quando acessada a partir da mesma máquina.


O princípio desta prova de autenticidade é criar uma camada a mais de segurança. Antes mesmo do login o serviço compartilha um segredo com o cliente que apenas eles sabem, desta forma se houver alguma informação divergente o cliente já fica em estado de alerta e evita digitar a senha por receio de ser roubado.

Apesar de simples a prova de autenticidade é uma forma poderosa de impedir que pessoas digitem senhas em páginas falsas criadas por phishing ou man-in-the-middle, é recomendado que esta prova venha acompanhada de outras medidas de segurança.




Imagem 7 - Prova de autenticidade do Mercado Bitcoin, o cliente cadastra uma palavra segredo que aparece em todas as páginas.


O maior exemplo de prova de autenticidade ocorre quando acessamos o internet banking de instituições financeiras, nestas é comum darem o nome do cliente antes de permiti-lo usar a senha, como o hacker não tem como saber o nome da pessoa de antemão isso já cria um alerta para o usuário de que ele pode estar sendo enganado.



Imagem 8 - Prova de autenticidade do Banco Itaú, ele afirma o nome do cliente antes dele digitar a senha de forma que ele possa desconfiar de um ataque caso o nome esteja errado ou não esteja presente.






Imagem 9- Prova de autenticidade do Banco Inter, assim como o Itaú ele informa o nome antes da senha.

Vale se atentar que a prova de autenticidade apesar de útil não é uma solução perfeita, pois o hacker pode programar um robô para acessar o mesmo site e copiar o nome da pessoa ou segredo. Apesar disso ela adiciona uma camada de dificuldade aos hackers uma vez que teriam que desenvolver um sistema de phishing mais avançado e isso dificulta e desestimula a fraude.

Como citado anteriormente a implementação da prova de autenticidade é bastante simples e é recomendado sempre ser utilizada em sistemas sensíveis, pois adiciona uma camada a mais de segurança, porém não deve ser utilizada sozinha.

2. Autenticação de dois fatores - 2FA

Essa talvez seja a melhor solução encontrada pelo mercado financeiro para evitar os ataques citados na segunda seção. A autenticação de dois fatores, também conhecida como 2FA (do inglês Two Factor Authentication) faz uso de um segredo que apenas você e seu banco possuem.


Imagem 10 - Token 2FA como era fornecido antigamente por bancos, desta forma era garantido que apenas o cliente saberia da chave gerada em determinado momento.


Um dos focos principais deste documento será como o 2FA, quando implementado corretamente, tem como dar garantia para o cliente de posse da sua conta a partir da posse do token.

O motivo do nome autenticação de dois fatores é porquê ele fatora a forma com que é feita a autenticação do cliente, a senha passa a não ser o fator mais importante para o uso da conta pelo beneficiário. Cada transação realizada na instituição financeira pela internet passa a exigir um código gerado pelo token na hora de sua execução.

Como apenas o cliente e o banco possuem posse do segredo gerador de números (chaves) a instituição tem como garantir a validade da transação com a mesma qualidade de quando o beneficiário está presente. O Banco possui em seu sistema um gerador de chaves eletrônico análogo ao do cliente e o cliente através do aparelho também tem posse física desse gerador.

Com a popularização dos smartphones foram desenvolvidas novas soluções no mercado que fazem uso destes e reduzem custos de operação, mas desta forma como se pode garantir que apenas o beneficiário saiba o segredo gerador?



Imagem 11 - Solução 2FA do Banco do Brasil, o BB Code, além de garantir segurança para a transação garante que o cliente esteja ciente da transação sendo realizada com a chave.


Note que agora o cliente estará usando seu smartphone pessoal para confirmar as transações, como ele não mais estará recebendo um aparelho de seu gerente é necessário muito cuidado no fornecimento deste segredo pois ele só pode ser fornecido para o beneficiário.

Para garantir isso os bancos usam uma combinação de internet banking com caixas eletrônicos, o cliente recebe parte do segredo via internet gravando em seu celular e posteriormente recebe a outra metade no caixa eletrônico após inserir seu cartão, impressão digital e uma série de respostas a perguntas pessoais. Desta forma ele tem como garantir que a pessoa por trás do celular é a mesma que fez a conta. Em certos casos uma foto é retirada em conjunto para confirmar a posse do segredo em casos de fraude.

Caso o cliente venha a perder seu celular, a pessoa que adquiriu nada pode fazer pois não sabe a senha, caso o cliente perca a senha, o invasor nada pode fazer sem ter posse do celular do cliente.

Em caso de perdas do aparelho o serviço financeiro precisa fornecer uma forma para o cliente trocar o segredo gerador. É de extrema importância que essa troca seja feita de forma segura, garantindo a identidade do cliente ao fazê-lo. Tal garantia é tão importante quanto no primeiro fornecimento pois se for oferecido uma forma de troca sem o mesmo rigor nas verificações de identidade a instituição estará abrindo a porta para hackers.


Imagem 12 - Aplicativo Authy, usando o protocolo de 2FA do Google Authenticator, tem sido o mais adotado atualmente no mercado de criptomoedas.


A implementação deste modelo de autenticação varia de moderada a complexa, para que haja a proteção contra ataques é preciso ter meios de garantir seu uso apenas pelo cliente e é preciso verificações adicionais de identidade, mas quando bem implementado é uma ferramenta forte contra roubo de contas.

Em questão de pouco tempo outros sistemas não financeiros começaram a adotar o token 2FA para aumentar a segurança dos usuários, redes sociais como Facebook ou Twitter, serviços de e-mail como o Gmail e até sistemas de armazenamento em nuvem e backups. A grande diferença desses sistemas é que eles não realizam transações que precisam de 2FA então ele serve apenas como barreira de defesa suplementar na hora do login, não é a mesma segurança que os padrões do mercado financeiro mas adiciona uma dificuldade a mais para os hackers.

3. E-mail de confirmação

Essa é uma forma simples e bastante poderosa de criar um bloqueio contra hackers, para cada transação é exigida uma confirmação enviada para o email do cliente.

O funcionamento desta solução é bem similar ao 2FA discutido anteriormente, porém com um adicional, o email enviado ao cliente deve conter um link para a página original da empresa. Desta forma mesmo que o cliente tenha sido atingido por um phishing ele irá se salvar ao clicar no link, pois será direcionado ao endereço correto da instituição financeira.

Normalmente usa-se um link com uma chave aleatória que representa somente aquela transação solicitada pelo cliente, o cliente então só consegue executar a transação se clicar no e-mail, ler a página com a transação e confirmar ela.



Imagem 13 - Email de autorização da transação do Mercado Bitcoin, repare que ele contém um link para dar prosseguimento ao pedido.





Imagem 14 - Email de confirmação de transação da Braziliex. 


Note que a presença de links “https”, ou seja, com criptografia, é importante para evitar ataques man-in-the-middle, uma vez que o cliente poderá ver um alerta ao entrar na página caso ela seja falsificada por este ataque.

Ao exigir um email de confirmação, a plataforma financeira em questão se torna muito mais segura contra phishing, além de aumentar a segurança dos clientes contra man-in-the-middle, este tipo de técnica vem sido amplamente utilizada no mercado de criptomoedas e se tornou um padrão de mercado.

Uma vez adotada esta medida o agente malicioso terá que invadir a conta do cliente na plataforma bem como seu e-mail, sendo assim a real vulnerabilidade fica reduzida a clientes que possuem a mesma senha em seu email, sem 2FA, e na plataforma ao mesmo tempo.

3.4. Cancelamento instantâneo da transação


O cancelamento instantâneo funciona de uma forma muito similar ao email de confirmação, logo é comum que essas medidas sejam oferecidas em conjunto. Ela consiste em oferecer ao cliente uma forma de congelar tanto a transação a ser realizada como sua conta de forma imediata.



Imagem 15 - Exemplo de cancelamento instantâneo oferecido pelo Banco do Brasil, basta apenas uma mensagem SMS e a transação, bem como o cartão, serão bloqueados.


A simplicidade de implementação é a mesma do email de confirmação, é aconselhável para situações emergenciais em que o usuário foi trancado fora de sua conta e de outra forma não teria como cancelar a transação realizada pelo hacker, ela tem sido frequentemente utilizada no mercado financeiro de criptomoedas no exterior.



Imagem 16 - Email de confirmação da Bitstamp, bolsa européia de criptomoedas, note que além do link de confirmação é fornecido um link para congelamento da conta em caso de acesso indevido. 



Note que é importante que o cancelamento da transação seja feito de forma instantânea, muitas bolsas oferecem o cancelamento apenas após o login do cliente, esta implementação é incorreta, pois nestes casos bastaria o hacker trocar a senha ou usar outro método para trancá-lo fora da conta, ficando a vítima impossibilitada de agir.

5. Validação de navegador novo


Navegadores podem ser identificados pelo serviço que acessam, através de uma espécie de impressão digital. Características únicas são enviadas para o serviço toda vez que ele é acessado, entre essas características o endereço de IP do usuário.

Vimos na imagem 6 que a Walltime implementa essa impressão digital de forma a criar uma imagem que o cliente pode memorizar para saber se está lidando com a página correta.

Essa informação pode ser usada por plataformas financeiras para saberem que estão lidando com a mesma pessoa que lidaram outras vezes. A solução não é perfeita, pois o IP do cliente ou o ambiente que usa pode mudar com o tempo. Porém é possível criar uma forma para o cliente cadastrar impressões digitais novas como se fossem dele, usando as técnicas de validação explicadas anteriormente como e-mail de confirmação (3) e 2FA (2).



Imagem 17 - Email de cadastro e confirmação de login por IP novo usado na Bittrex, bolsa internacional de criptomoedas.

Apesar de adicionar mais uma camada na segurança a maioria dos dados enviados pelo navegador podem ser forjados pelo atacante. Deixando o endereço IP como uma das únicas garantias na identificação.

Desta forma é fornecida uma forte proteção contra phishing (1.1) porém não há proteção contra man-in-the-middle (1.2) ou malwares (1.3) uma vez que eles permitem o uso do mesmo ip do cliente, como em casos por exemplo de invasão do roteador do cliente.

6. Anti-Malwares Personalizados


Existem hoje no mercado diversas soluções de antivírus que protegem contra malwares ou até mesmo man-in-the-middle, mas eles realizam a proteção de uma forma mais genérica e abrangente, para que a plataforma financeira garanta a proteção de seus clientes se faz necessário o uso de uma solução própria, com foco a ataques contra ela.

Este tipo de proteção é extremamente complexa e avançada, mas existem empresas terceiras que possuem soluções próprias e que pode ser personalizada para cada plataforma. Dado a complexidade dela no entanto o custo pode ser alto.



Imagem 16 - Instalação do Warsaw, solução da GAS Tecnologia e Diebold Nixdorf, usada em plataformas bancárias


A idéia por trás dessa solução é ter um software rodando continuamente na máquina do cliente, capaz de detectar malwares que possam furtar suas credenciais bancárias.

Além da proteção contra malware esse software pode prover anti-phishing, fazendo a autenticação criptográfica da plataforma que o cliente está se conectando e bloqueando acessos indevidos em uma lista negra de páginas não permitidas.

“A finalidade é impedir que o usuário interaja com páginas falsas e também que softwares maliciosos atuem nos sistemas protegidos pela solução. No momento em que é identificada uma página falsa, via lista negra de sites falsos conhecidos ou inteligência artificial sofisticada, técnicas variadas são utilizadas para proteger o usuário contra o roubo de suas informações.
Um grande diferencial é a utilização de um conjunto de regras e métodos avançados conhecido por heurística para identificação de sites maliciosos não conhecidos. Isso é essencial, já que inúmeros novos sites falsos são desenvolvidos diariamente, sendo necessária esta técnica para conseguir inviabilizá-los.” - Fonte: http://www.dieboldnixdorf.com.br/gas-antifraude.

Para a terceira parte, com a falha descoberta acesse aqui:  

No comments:

Post a Comment