Enumeração SSH e Acesso Baseado em Chave

LinuxBeginner
Pratique Agora

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 ping para verificar se um alvo está online.
  • Empregar nmap para 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.