Na Internet, perguntas como “Como posso verificar se meu roteador, computador, câmera IP ou qualquer outro dispositivo estão na botnet?” São muito comuns. Isso me motivou a falar sobre um dos poucos casos de colisão com botnets da minha prática.
Estudando o tráfego suspeito, me deparei com o endereço IP do roteador, do qual foram feitas tentativas sem êxito de conexão via SSH ao meu HONEYPOT. Em /var/log/auth.log, vi o seguinte:
... Oct 9 23:52:04 dvrh sshd[3523]: Failed password for root from 129.***.***.29 port 35276 ssh2 Oct 9 23:52:04 dvrh sshd[3523]: Connection closed by authenticating user root 129.***.***.29 port 35276 [preauth] Oct 9 23:52:05 dvrh sshd[3525]: Connection closed by authenticating user root 129.***.***.29 port 35278 [preauth] Oct 9 23:52:06 dvrh sshd[3529]: Failed password for root from 129.***.***.29 port 35280 ssh2 Oct 9 23:52:06 dvrh sshd[3529]: Connection closed by authenticating user root 129.***.***.29 port 35280 [preauth] Oct 9 23:52:06 dvrh sshd[3531]: Invalid user admin from 129.***.***.29 port 35282 Oct 9 23:52:07 dvrh sshd[3531]: Failed password for invalid user admin from 129.***.***.29 port 35282 ssh2 Oct 9 23:52:07 dvrh sshd[3531]: Connection closed by invalid user admin 129.***.***.29 port 35282 [preauth] Oct 9 23:52:08 dvrh sshd[3533]: Invalid user test from 129.***.***.29 port 35286 Oct 9 23:52:11 dvrh sshd[3533]: Failed password for invalid user test from 129.***.***.29 port 35286 ssh2 Oct 9 23:52:11 dvrh sshd[3533]: Connection closed by invalid user test 129.***.***.29 port 35286 [preauth] Oct 9 23:52:11 dvrh sshd[3535]: Invalid user test from 129.***.***.29 port 35288 Oct 9 23:52:12 dvrh sshd[3535]: Failed password for invalid user test from 129.***.***.29 port 35288 ssh2 Oct 9 23:52:12 dvrh sshd[3535]: Connection closed by invalid user test 129.***.***.29 port 35288 [preauth] Oct 9 23:53:12 dvrh sshd[3537]: Invalid user admin from 129.***.***.29 port 35290 Oct 9 23:53:12 dvrh sshd[3537]: Connection closed by invalid user admin 129.***.***.29 port 35290 [preauth] ...
A conclusão não foi difícil: alguém tentou acessar meu servidor usando um conjunto de logons e senhas padrão. Além disso (a julgar pelos intervalos de tempo), isso foi feito no modo automático. Isso significa que provavelmente este é outro roteador que é membro da botnet.
De fato, esta imagem é típica para hosts com uma porta 22 aberta. Você pode verificar isso sozinho: abra o ssh para acessar a Internet externa, permita a entrada de senha e os bots não o farão esperar. Ao mesmo tempo, ~ 80% das tentativas serão da China.
Felizmente, depois de algum tempo, consegui acessar esse IP infeliz via ssh usando um dos logons e senhas padrão (Surpreso? Não). Mas aconteceu que este não é um roteador comum, mas algum dispositivo chamado Calix GigaSpire.
O Calix GigaSpire é um sistema de controle doméstico inteligente no sistema operacional EXOS. O GigaSpire inclui os seguintes recursos:
- Suporta Wi-Fi 6 (802.11ax), com 8x8 a 5 GHz e 4x4 a 2,4 GHz
- Serviço Multi Gigabit
- Serviços de Nível 2 e Nível 3
- Gerenciado pelo Calix Support Cloud
- Suporte à Internet das coisas (Bluetooth Low Energy, Zigbee 3.0 e Z-Wave Pro)
- Assistente de voz do Amazon Alexa
A primeira coisa que fiz, ao entrar no sistema, olhei para a lista de processos em execução para encontrar algo interessante. E esse "algo interessante" era assim:
[router] / # ps ... 2978 root 1444 S {kkbs2l3mdqjq} ipjq2njq5qjq 9729 root 1584 S {kkbs2l3mdqjq} ipjq2njq5qjq 14871 root 5532 S {hgoj42jadsjvebc} m6ojj5oj5gojj2h08b8l 19037 root 308 S {hgoj42jadsjvebc} m6ojj5oj5gojj2h08b8l 19041 root 284 S {hgoj42jadsjvebc} m6ojj5oj5gojj2h08b8l ...
Suspeita é a "aleatoriedade" dos nomes desses processos. Para entender o que são esses processos, sugiro relembrar o que é o sistema de arquivos / proc:
procfs é um sistema de arquivos especial usado em sistemas operacionais semelhantes ao UNIX. Permite acessar informações do kernel sobre processos do sistema. Necessário para executar comandos como ps, w, top. Geralmente é montado em / proc. Nesse diretório, você pode obter qualquer informação sobre seu sistema. Por exemplo, quanta memória de swap está sendo usada no momento, qual o tamanho do cache do processador, quais módulos do kernel estão carregados, quantos discos ou partições estão disponíveis etc.
Estamos interessados em diretórios que contêm informações sobre processos suspeitos encontrados. Eles possuem o formato / proc / PID, em que PID é o ID do processo para o qual esse diretório contém informações. Se você olhar para o conteúdo deles, poderá encontrar os seguintes arquivos:
- cmdline - contém o comando com o qual o processo foi iniciado, bem como os parâmetros passados para ele
- cwd - link simbólico para o diretório de trabalho atual do processo
- exe - link para o arquivo executável
- root - link para a pasta raiz
- variáveis ambientais - ambiente disponíveis para o processo
- fd - contém descritores de arquivos, arquivos e dispositivos que o processo usa
- mapas , statm e informações de memória de processo mem
- stat , status - status do processo
O que podemos fazer sobre isso? A primeira coisa que vem à mente é calcular a soma de verificação de um dos arquivos executáveis e procurar correspondências na Internet:
/ # md5sum /proc/2978/exe d204e97ac15a6d0a3ed7e415edfa582e /proc/2978/exe
Encontrei esse MD5 na
lista de somas de verificação Mirai , que indica a natureza da origem do arquivo. Mas o que podemos fazer agora? Para se livrar do bot Mirai, basta reiniciar o roteador. Mas, nesse caso, é inútil, já que um novo malware subirá em um roteador com uma senha simples e alterar a senha de outra pessoa é um excesso, você sabe o que é.