No caso de um ataque man-in-the-middle, podemos abusar dessa confiança representando um ponto de acesso sem fio, permitindo interceptar e modificar os dados da rede.
Isso não apresenta riscos para os dados privados, mas é muito divertido brincar com seus amigos que estão tentando usar o seu Wi-Fi.
Nesse caso, estaremos interceptando e manipulando o tráfego de dentro de uma rede local, muitas vezes uma rede Wi-Fi conectada a um roteador sem fio. Lembre-se de que um ataque man-in-the-middle (MitM) ainda envolve interceptar e modificar o tráfego.
Instalando o que vamos precisar
A principal ferramenta que usaremos para interceptar e modificar o tráfego de rede neste guia é o Man-in-the-Middle Framework, mais conhecido como MITMf. Destina-se ao uso no Linux , mas pode ser potencialmente compilado para uso no macOS ou Windows. É uma ferramenta de linha de comando, então teremos que aprender um pouco sobre como funciona para usá-la.
Podemos encontrá-lo disponível nos repositórios de várias distribuições, incluindo Kali Linux e BlackArch. Após pesquisar para confirmar a disponibilidade do pacote com apt-cache search mitmf , podemos instalar o MITMf usando apt-get , como visto no exemplo abaixo.
sudo apt-get install mitmf
Também podemos desejar instalar o pacote "mitmflib" se houver algum erro de biblioteca durante o uso do MITMf. Você pode fazer isso usando um comando semelhante.
Se quisermos construir o MITMf a partir da fonte, podemos baixar uma cópia do GitHub executando o seguinte em uma janela de terminal.
git clone github.com/byt3bl33d3r/MITMf
Se você tiver problemas com dependências, o restante dos utilitários necessários para o MITMf pode ser instalado executando o script de instalação. Para fazer isso, inicializaremos e clonaremos os submódulos e instalaremos as dependências necessárias copiando o texto abaixo em uma janela de terminal.
cd MITMf git submodule init git submodule update --recursive
pip2 install -r requirements.txt
Se esses comandos falharem ou exibirem erros, pode ser necessário localizar e instalar individualmente as dependências para a estrutura. Um guia de instalação manual completo está disponível no GitHub do desenvolvedor.
As linhas acima instalarão o MITMf dentro do diretório em que o repositório git foi clonado. Se o MITMf for instalado usando este método, a ferramenta também precisará ser executada dentro desta mesma pasta. O script pode ser executado chamando Python diretamente com python2 e especificando o nome do script, conforme mostrado abaixo.
sudo python2 mitmf.py
Se o MITMf estiver instalado em sua própria pasta, todos os comandos deste tutorial precisarão ser executados com o comando acima, em vez de simplesmente executar mitmf.
Configurar MITMf
Após a instalação do MITMf, podemos confirmar sua funcionalidade solicitando a página de ajuda. Faça isso digitando o comando abaixo. O programa deve ser executado como superusuário, sendo logado como "root" ou usando sudo como mostrado. Se a página de ajuda for retornada com sucesso, podemos começar a adicionar nossos parâmetros de uso.
sudo mitmf --help
O primeiro sinalizador que desejamos selecionar é nosso sinalizador -i , ou interface de rede. Podemos listar nossas interfaces de rede disponíveis usando ifconfig , executado sem argumentos.
Se estivermos executando isso em uma máquina virtual, veremos a ponte do adaptador de software à qual a VM está conectada, bem como o adaptador de loopback. Supondo que a VM esteja em uma máquina conectada com sucesso à rede, o adaptador em uso deve ser funcional para executar o MITMf.
No caso acima, o adaptador de rede é eth0. Em uma máquina conectada diretamente à rede, isso indicaria que a conexão é feita pelo adaptador Ethernet. Em uma conexão sem fio, é mais provável que o adaptador seja wlan0 ou um adaptador com título semelhante.
No exemplo da máquina host abaixo, a máquina possui adaptadores sem fio e Ethernet disponíveis, referidos como eth0 e wlan0, respectivamente.
Depois de identificarmos o nome do adaptador conectado à rede que pretendemos atingir, podemos adicioná-lo à nossa string de parâmetro MITMf sem executá-lo ainda. Nesse caso, usaremos wlan0.
sudo mitmf -i wlan0
Em seguida, queremos identificar o IP do nosso gateway de rede ou o endereço do roteador em nossa rede. Podemos fazer isso de várias maneiras, uma das quais é usando netstat.
netstat -rn
Depois de identificar o IP do roteador localizando-o na coluna Gateway e na linha Interface apropriada , podemos adicionar o argumento à nossa string MITMf. Na maioria dos casos, o endereço do roteador será semelhante a 192.168.0.1 ou 192.168.1.1.
--gateway 192.168.0.1
Finalmente, se quisermos escolher um alvo específico na rede, podemos procurar seu endereço IP dentro da rede usando arp-scan e nbtscan em outra janela de terminal. O Nbtscan pode ser executado usando o intervalo de rede potencial como argumento, como visto no exemplo abaixo, usando todos os hosts, incluindo e entre 192.168.0.1 e 192.168.0.255.
nbtscan 192.168.0.1-192.168.0.255
Ao executar um arp-scan, podemos usar o sinalizador -l para visualizar os dispositivos de rede, como visto abaixo.
arp-scan -l
Se um desses endereços MAC ou nomes de host corresponderem ao do nosso dispositivo de destino, podemos especificar esse IP posteriormente como um argumento.
Virando a Internet de cabeça para baixo
Com nossa rede agora explorada, podemos adicionar nossos argumentos à nossa string de comando MITMf e executar os plugins de nossa escolha.
Nesse caso, seguimos o -i com a interface de rede que desejamos usar, como wlan0. Indicamos que desejamos usar os plugins spoof e arp antes de especificar nosso gateway de rede após a parte --gateway da string. Por fim, adicionamos --upsidedownternet para usar o plugin Upsidedownternet. Este plugin irá virar todas as imagens possíveis de cabeça para baixo antes de encaminhá-las para o usuário.
Depois de juntá-lo, sua string deve ficar parecida com a abaixo.
sudo mitmf -i wlan0 --spoof --arp --gateway 192.168.0.1 --upsidedownternet
Agora, você pode executá-lo pressionando enter e observar o resultado. Do nosso lado, poderemos ver um log à medida que as imagens são invertidas.
No dispositivo de qualquer pessoa conectar em seu Wi-Fi, tudo o que será visto estará de cabeça para baixo.
Substituindo todas as imagem
Assim como o ataque acima, também podemos tentar interceptar todas as imagens e substituí-las por uma de nossa escolha ou por uma imagem aleatória de uma pasta. Primeiro, vamos querer preparar uma pasta de imagens, pois precisaremos especificar essa pasta como um argumento para o comando.
Podemos baixar um conjunto inteiro de imagens diretamente de uma Pesquisa do Google usando "Salvar página como" e selecionando "Página da Web, completa".
Embora as imagens baixadas usando este método sejam misturadas no tipo de arquivo, podemos mover todas as imagens com extensões correspondentes para um subdiretório. Na linha de comando, cd na pasta que contém as imagens e crie o diretório com as imagens mkdir.
Em seguida, mova todos os arquivos de imagem correspondentes para este subdiretório com o comando mv abaixo.
mv *.jpg imagens/
Depois que todas as imagens utilizáveis estiverem no mesmo diretório, você pode classificá-las e excluir aquelas que não desejamos manter.
Agora, podemos usar esta pasta como um argumento em nosso comando MITMf. Lembre-se de que o caminho completo do diretório é necessário, portanto, em vez de apenas /images, precisaremos especificar /home/user/images ou onde quer que sua pasta esteja localizada.
A string completa será parecida com a abaixo.
sudo mitmf -i wlan0 --spoof --arp --gateway 192.168.0.1 --imgrand --img-dir /home/user/images/
Também podemos direcionar um dispositivo específico adicionando um endereço IP "destino" ao comando, conforme visto abaixo.
sudo mitmf -i wlan0 --spoof --arp --gateway 192.168.0.1 --target 192.168.0.2 --imgrand --img-dir /home/user/images/
Uma vez executado, poderemos registrar e visualizar a atividade do MITMf.
No dispositivo do usuário, todas as imagens serão substituídas por quaisquer imagens assustadoras que queremos que eles vejam.
O ataque, implementado como acima, deve ser usado com cautela, pois pode fazer com que a internet se torne assustadora demais para qualquer mero humano usar sem ser aleijado pelo medo.
Injetar HTML e JavaScript
Podemos injetar código nas páginas da web da vítima, em vez de apenas manipular suas imagens. Para fazer isso, usamos o plug-in de injeção, combinado com um arquivo JavaScript ou HTML especificado, localizado em uma URL ou em um caminho de arquivo. Neste exemplo, usaremos o sinalizador --inject combinado com um arquivo JavaScript usando --js-file abaixo.
sudo mitmf -i wlan0 --spoof --arp --gateway 192.168.0.1 --inject --js-file /home/user/script.js
Antes de executar este comando, precisaremos criar um arquivo JavaScript ou HTML para injetar. Se isso não fosse uma brincadeira, nós facilmente carregamos um gancho BeEF JavaScript nesta carga ou algo criado sob medida.
Para testar a funcionalidade do JavaScript por enquanto, podemos usar um alerta simples.
alert("HACKEADO");
Esse código abrirá uma janela de alerta contendo o texto "Hackeado" em qualquer site ao qual o usuário se conectar pela rede. Podemos salvar este arquivo como "script.js" ou qualquer outro nome de arquivo, desde que seja referido no comando MITMf usado a extensão .js no final. Quando executado, esse script será injetado nas solicitações da web do destino.
Embora essa funcionalidade seja boa para chatear as pessoas ou intrusos que estejam em seu Wi-Fi essa brincadeira é a minha favorita. Consiste em injetar um arquivo de áudio de um grito reproduzido automaticamente. Mais uma vez, isso será salvo como um arquivo de script específico e adicionado ao comando MITMf.
new Audio('URL').play()
Nesta string, o URL pode ser substituído pelo local na web de um arquivo de áudio, como um MP3. Esse arquivo de áudio será reproduzido automaticamente em todas as páginas que o usuário acessar na Internet e pode ser quase impossível rastrear a origem. Como antes, as modificações serão registradas no seu console.
Protegendo-se de ataques MitM
Por mais divertidos que sejam os ataques do MITM, eles representam uma preocupação e um perigo reais para a privacidade. A proteção mais eficaz contra essa variedade de ataques é a segurança de rede padrão e estar ciente de quem está presente na rede. Podemos usar as técnicas de varredura de rede apresentadas na Etapa 1 para identificar quem está presente em uma rede e descobrir possíveis dispositivos invasores em sua rede.
Os ataques MitM são fundamentalmente possíveis apenas se alguém for permitido entre o cliente e o servidor de uma solicitação. Uma senha de rede forte com segurança WPA2 pode garantir que apenas usuários autorizados ou proprietários do roteador Wi-Fi tenham permissão para se conectar, assim como a proteção de uma rede totalmente cabeada.
Além das redes locais, o uso cuidadoso da criptografia de ponta a ponta significa que, mesmo quando o tráfego é capturado, ele não pode ser decifrado. Uma etapa é impor HTTPS usando HTTPS Everywhere . Mesmo com essas precauções usadas, as redes públicas continuarão não sendo confiáveis e os sites continuarão a falhar na implementação da criptografia. Os hackers continuarão a ser capazes de hackear as redes... ou talvez apenas trocá-las.
Obrigado por lerem meu artigo. Espero que vocês possam se divertir com seus amigos e familiares com essas pegadinhas hackers. Se ainda tiver alguma dúvida deixe nos comentários para que eu possa te ajudar!