Autor: Kelvem Sousa
O encaminhamento de portas SSH (MITRE ATT&CK - Remote Services: SSH) é uma das principais técnicas utilizadas para movimentação lateral em hosts Linux, basicamente, você pode encaminhar qualquer o tráfego de qualquer porta através de uma conexão SSH.
Existem 3 tipos de encaminhamento de portas SSH, eles são
Encaminhamento local;
Encaminhamento remoto; e
Encaminhamento dinâmico.
Abordaremos apenas o encaminhamento local e encaminhamento remoto.
A partir do momento que um atacante consegue um acesso valido via SSH, basta realizar o seguinte comando para realizar os redirecionamentos:
Porta local
Comando utilizando
ssh -L ip_atacante:3306:vitima:3306 user@vitima
O fluxo de redirecionamento local funciona da seguinte forma:
Porta remota
Comando utilizado
ssh -L ip_atacante:80:webserver:80 user@vitima
O fluxo de redirecionamento remoto funciona assim:
Como podemos detectar?
Por padrão o SSH está habilitado para logs informativos (LogLevel INFO), que fornece informações sobre autenticações com falha/sucesso, IP de origem e sessões, impossibilitando identificar o encaminhamento de porta, felizmente, podemos habilitar logs de depuração (LogLevel DEBUG1) que proporciona maior visibilidade, e fornece as conexões encaminhadas.
Para habilitar, basta editar o arquivo /etc/ssh/sshd_config e adicionar a linha LogLevel DEBUG1 conforme mostrado na imagem abaixo:
E executar o comando para restartar o SSH
service ssh restart
pronto, feito isso, vamos validar!
Cenário 1
No primeiro, vamos realizar um teste de redirecionamento de porta local.
"O atacante realizar o redirecionamento da porta 3306 para conectar no banco de dados mysq"
O comando que utilizei para realizar o redirecionamento é
ssh -L 192.168.0.68:3306:localhost:3306 vitima@192.168.0.141
Configuramos o redirecionamento, mas se olharmos os logs, não temos nenhuma evidencia do encaminhamento para localhost:3306, apenas a autenticação normal no SSH. Podemos validar isso lendo o arquivo /var/log/auth.log com o comando:
cat /var/log/auth.log
Agora, vamos conectar no MySql utilizando o DBeaver (instalado na maquina 192.168.0.68)
Lembrando, estamos conectando na porta local do nosso host 192.168.0.68:3306 para conectar no host 192.168.0.141:3306
Perfeito, conectado com sucesso!
Agora se lermos o arquivo /var/log/auth.log, identificaremos o encaminhamento da porta, ele mostra que uma conexão foi iniciada via SSH connected to localhost port 3306
Com isso, podemos detectar que foi feito um encaminhamento de porta para a porta local 3306.
Cenário 2
No segundo cenário temos:
"O atacante configura o encaminhamento de porta remoto via SSH para conectar-se ao pfsense inacessível (http://192.168.159.130) diretamente da rede 192.168.0.68"
O comando que utilizamos para realizar o redirecionamento é
ssh -L 192.168.0.68:80:192.168.159.130:80 vitima@192.168.0.141
Se novamente lermos o arquivo /var/log/auth.log, não temos nenhuma evidencia do encaminhamento para 192.168.159.130:80
Porém, acessando diretamente da nossa máquina o endereço http://localhost, conseguimos acessar o console pfsense que não teríamos acesso diretamente
Agora se olharmos novamente para o arquivo de log /var/log/auth.log vamos identificar o encaminhamento de porta, ele mostra que uma conexão foi iniciada via SSH connected to 192.168.159.130 port 80