Bhunter - hackeando nós de botnet

Analistas de vírus e pesquisadores de segurança de computadores estão correndo para coletar o máximo possível de amostras de novas botnets. Eles usam honeypots para seus próprios fins... Mas e se você quiser observar o malware em condições reais? Colocar seu servidor ou roteador em risco? E se não houver um dispositivo adequado? Foram essas questões que me levaram a criar o bhunter, uma ferramenta para obter acesso a nós de botnets.

Bhunter - hackeando nós de botnet

idéia central

Há muitas maneiras de espalhar malware para expandir botnets: desde phishing até a exploração de vulnerabilidades de dia 0. Mas o método mais comum ainda é a força bruta de senhas SSH.

A ideia é muito simples. Se algum nó de botnet estiver tentando usar senhas de força bruta para o seu servidor, então provavelmente esse nó em si foi capturado por senhas simples de força bruta. Isso significa que para ter acesso a ele basta retribuir.

É exatamente assim que o bhunter funciona. Escuta a porta 22 (serviço SSH) e coleta todos os logins e senhas com os quais tentam se conectar a ela. Então, usando as senhas coletadas, ele tenta se conectar aos nós atacantes.

Algoritmo de trabalho

O programa pode ser dividido em 2 partes principais, que funcionam em threads separados. O primeiro é o honeypot. Processa tentativas de login, coleta logins e senhas exclusivos (neste caso, o par login + senha é considerado um todo) e também adiciona endereços IP que tentaram se conectar à fila para novos ataques.

A segunda parte é diretamente responsável pelo ataque. Além disso, o ataque é realizado em dois modos: BurstAttack (ataque burst) - logins e senhas de força bruta da lista geral e SingleShotAttack (ataque de tiro único) - senhas de força bruta que foram usadas pelo nó atacado, mas ainda não foram adicionado à lista geral.

Para ter pelo menos algum banco de dados de logins e senhas imediatamente após o lançamento, o bhunter é inicializado com uma lista do arquivo /etc/bhunter/defaultLoginPairs.

Interface.

Existem várias maneiras de iniciar o bhunter:

Assim como uma equipe

sudo bhunter

Com este lançamento é possível controlar o bhunter através de seu menu de texto: adicionar logins e senhas para um ataque, exportar um banco de dados de logins e senhas, especificar um alvo para um ataque. Todos os nós hackeados podem ser vistos no arquivo /var/log/bhunter/hacked.log

Usando tmux

sudo bhunter-ts # команда запуска bhunter через tmux  
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter

Tmux é um multiplexador de terminal, uma ferramenta muito conveniente. Permite criar várias janelas dentro de um terminal e dividir as janelas em painéis. Com ele, você pode sair do terminal e fazer login sem interromper os processos em execução.

O script bhunter-ts cria uma sessão tmux e divide a janela em três painéis. O primeiro, maior, contém um menu de texto. O canto superior direito contém logs do honeypot, aqui você pode ver mensagens sobre tentativas de login no honeypot. O painel inferior direito exibe informações sobre o progresso do ataque aos nós da botnet e sobre hacks bem-sucedidos.

A vantagem deste método sobre o primeiro é que podemos fechar o terminal com segurança e retornar a ele mais tarde, sem que o bhunter interrompa seu trabalho. Para quem está pouco familiarizado com o tmux, sugiro esta folha de dicas.

Como um serviço

systemctl enable bhunter
systemctl start bhunter

Neste caso, habilitamos a inicialização automática do bhunter na inicialização do sistema. Neste método, a interação com o bhunter não é fornecida e a lista de nós hackeados pode ser obtida em /var/log/bhunter/hacked.log

Eficácia

Enquanto trabalhava no bhunter, consegui encontrar e obter acesso a dispositivos completamente diferentes: raspberry pi, roteadores (especialmente mikrotik), servidores web e uma vez uma fazenda de mineração (infelizmente o acesso a ela era durante o dia, então não havia nada interessante história). Aqui está uma captura de tela do programa, que mostra uma lista de nós hackeados após vários dias de trabalho:

Bhunter - hackeando nós de botnet

Infelizmente, a eficácia desta ferramenta não atendeu às minhas expectativas: o bhunter pode tentar senhas de nós por vários dias sem sucesso e pode hackear vários alvos em algumas horas. Mas isso é suficiente para um fluxo regular de novas amostras de botnets.

A eficácia é influenciada por parâmetros como: o país onde o servidor com bhunter está localizado, a hospedagem e o intervalo a partir do qual o endereço IP é alocado. Na minha experiência, houve um caso em que aluguei dois servidores virtuais de um hoster e um deles foi atacado por botnets 2 vezes mais frequentemente.

Bugs que ainda não corrigi

Ao atacar hosts infectados, em algumas situações não é possível determinar inequivocamente se a senha está correta ou não. Esses casos são registrados no arquivo /var/log/debug.log.

O módulo Paramiko, que é usado para trabalhar com SSH, às vezes se comporta de maneira incorreta: espera incessantemente por uma resposta do host quando tenta se conectar a ele. Experimentei temporizadores, mas não obtive o resultado desejado

O que mais precisa ser trabalhado?

Nome do serviço

De acordo com a RFC-4253, o cliente e o servidor trocam nomes de serviços que implementam o protocolo SSH antes da instalação. Este nome está contido no campo “NOME DO SERVIÇO”, contido tanto na solicitação do lado do cliente quanto na resposta do lado do servidor. O campo é uma string e seu valor pode ser encontrado usando wireshark ou nmap. Aqui está um exemplo para OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Starting Nmap ...
PORT   STATE SERVICE VERSION
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

No entanto, no caso do Paramiko, este campo contém uma string como “Paramiko Python sshd 2.4.2”, que pode assustar botnets projetados para “evitar” armadilhas. Portanto, acho necessário substituir essa linha por algo mais neutro.

Outros vetores

SSH não é o único meio de gerenciamento remoto. Há também telnet, rdp. Vale a pena dar uma olhada neles.

extensão

Seria ótimo ter várias armadilhas em diferentes países e coletar centralmente logins, senhas e nós hackeados deles em um banco de dados comum

Onde baixar?

No momento em que este artigo foi escrito, apenas uma versão de teste estava pronta, que pode ser baixada em repositório no Github.

Fonte: habr.com

Adicionar um comentário