Introdução
Bem-vindo a este laboratório prático focado na enumeração SSH e na exploração de autenticação fraca baseada em chaves. Secure Shell (SSH) é um protocolo fundamental para administração remota segura, mas configurações incorretas podem criar vulnerabilidades de segurança significativas.
Neste laboratório, você simulará um teste de penetração contra um sistema alvo. Você começará verificando a conectividade de rede, depois usará a poderosa ferramenta nmap para enumerar o serviço SSH e coletar informações. Em seguida, você aproveitará uma chave privada fornecida para explorar uma configuração incorreta comum — permissões de arquivo inadequadas — para obter acesso shell sem senha. Finalmente, você explorará o sistema alvo para localizar e recuperar uma flag oculta.
Ao concluir, você entenderá como:
- Verificar a conectividade de rede usando
ping. - Enumerar um serviço SSH com
nmap. - Compreender os conceitos básicos de autenticação baseada em chaves SSH.
- Explorar permissões de chave fracas para obter acesso não autorizado.
- Navegar por um sistema remoto para encontrar informações confidenciais.
Vamos começar.
Verificar Conectividade com o Alvo usando Ping
Nesta etapa, você começará confirmando que sua máquina pode se comunicar com o sistema alvo. O comando ping é uma ferramenta padrão de diagnóstico de rede que envia pacotes ICMP para um host para testar sua alcançabilidade. Este é o primeiro e mais básico passo em qualquer reconhecimento de rede.
Seu ambiente inclui um sistema alvo acessível através do nome de host target.
Execute o seguinte comando no terminal para enviar quatro pacotes para o target e verificar se ele está online:
ping -c 4 target
Você deverá ver uma resposta semelhante à abaixo, confirmando que o alvo é alcançável e a conexão de rede está estável. O endereço IP e os tempos de resposta podem diferir ligeiramente.
PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms
--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.065/0.072/0.091/0.011 ms
Com a conectividade confirmada, você pode prosseguir para a próxima fase de enumeração.
Escanear Portas Abertas com Nmap
Nesta etapa, você usará o nmap para escanear o alvo em busca de portas abertas e identificar os serviços em execução nelas. Nmap (Network Mapper) é uma ferramenta crítica para profissionais de segurança, utilizada para descoberta de rede e auditoria de segurança.
Realizaremos um escaneamento direcionado na porta 22, a porta padrão para SSH, para coletar informações de versão e a chave do host.
Execute o seguinte comando no seu terminal:
nmap -sV -p 22 --script ssh-hostkey target
-sV: Habilita a detecção de serviço e versão.-p 22: Especifica que apenas a porta 22 deve ser escaneada.--script ssh-hostkey: Um script do Nmap Scripting Engine (NSE) que recupera as chaves do host SSH do alvo.
A saída será semelhante a esta:
Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 11:56 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00020s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.78 seconds
O escaneamento confirma que a porta 22/tcp está aberta e executando OpenSSH 8.9p1. Esta informação é vital para a próxima etapa, onde você tentará se conectar.
Conectar ao Alvo via SSH
Nesta etapa, você usará a chave privada SSH fornecida para se conectar ao alvo. A autenticação baseada em chave SSH é geralmente mais segura do que a autenticação por senha, mas depende da chave privada ser mantida em segredo e das permissões de arquivo no cliente e no servidor estarem corretamente configuradas.
Um arquivo de chave privada, id_rsa, foi colocado no seu diretório ~/project. Para que o SSH use uma chave privada, suas permissões devem ser restritivas. Defina as permissões corretas com o comando chmod:
chmod 600 id_rsa
Este comando garante que apenas o proprietário do arquivo tenha permissões de leitura e escrita, o que é um requisito para a maioria dos clientes SSH.
Se você encontrar um prompt de senha, apesar de ter a chave correta, o problema provavelmente são as permissões do lado do servidor. O SSH exige que o diretório home do usuário não tenha permissões de escrita para o grupo ou outros. Verifique as permissões atuais:
docker exec target-container ls -ld /home/testuser
Se você vir permissões como drwxrwxrwx (777), corrija-as:
docker exec target-container chmod 755 /home/testuser
Agora, use a chave privada para se conectar ao target como o usuário testuser.
ssh -i id_rsa testuser@target
-i id_rsa: Especifica o arquivo de identidade (chave privada) a ser usado para autenticação.
Você pode ser solicitado a confirmar a autenticidade do host. Digite yes e pressione Enter.
The authenticity of host 'target (172.17.0.2)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Devido a uma configuração incorreta no servidor (permissões inseguras no diretório home do usuário), o serviço SSH aceitará a chave e você terá acesso sem senha. Você será logado e verá o prompt do shell do alvo.
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-48-generic x86_64)
...
testuser@target:~$
Você obteve acesso ao shell do sistema alvo com sucesso.
Explorar Sistema Alvo e Localizar Flag
Nesta etapa, seu objetivo final é encontrar e ler o arquivo da flag. Agora que você tem um shell no sistema alvo, pode explorar seu sistema de arquivos como faria em uma máquina local. Esta é a fase de pós-exploração, onde um atacante procura dados valiosos.
Você está atualmente no diretório home do testuser (/home/testuser). Use o comando ls para listar os arquivos e diretórios neste local.
ls
Você verá o conteúdo do diretório home, que deve incluir o arquivo da flag.
testuser@target:~$ ls
flag.txt
testuser@target:~$
Você localizou flag.txt. Agora, use o comando cat para exibir seu conteúdo e revelar a flag.
cat flag.txt
O terminal imprimirá o valor da flag.
testuser@target:~$ cat flag.txt
labex{ssh_k3y_b4s3d_acc3ss_fl4g}
testuser@target:~$
Parabéns! Você enumerou com sucesso o serviço SSH, explorou uma vulnerabilidade de autenticação baseada em chave e capturou a flag. Copie o valor da flag para completar o laboratório.
Para desconectar do alvo, digite exit e pressione Enter.
Resumo
Neste laboratório, você executou com sucesso um ataque simulado visando um serviço SSH mal configurado. Você progrediu pelas etapas-chave de um teste de penetração, desde o reconhecimento inicial até a pós-exploração.
Você aprendeu a:
- Usar
pingpara verificar se um alvo está online. - Empregar
nmappara realizar um escaneamento detalhado de uma porta SSH, identificando a versão do serviço. - Compreender os requisitos do lado do cliente para autenticação baseada em chave SSH, incluindo permissões adequadas para a chave privada (
chmod 600). - Explorar uma vulnerabilidade do lado do servidor relacionada a permissões de arquivo inseguras para obter acesso não autorizado ao shell.
- Navegar por um sistema de arquivos remoto para localizar e recuperar uma flag.
Este exercício demonstra um princípio de segurança crítico: a segurança é uma corrente, e um único elo fraco — neste caso, permissões de diretório inadequadas — pode comprometer todo o sistema, mesmo quando mecanismos de autenticação fortes como chaves SSH estão em uso. Sempre garanta que suas configurações SSH e permissões de arquivo sejam fortalecidas de acordo com as melhores práticas de segurança.



