O laboratório junta três problemas comuns em máquinas Linux: um serviço de arquivos mal configurado, uma senha fraca exposta por meio de um hash e um executável privilegiado que chama outro programa sem usar o caminho completo.
A ideia da aula não é entregar a sequência do desafio. O objetivo é entender o comportamento de cada componente. Quando você encontra uma pista no Target, deve conseguir reconhecer o que ela significa e qual teste faz sentido em seguida.
FTP é um protocolo antigo e simples. O cliente abre uma conexão TCP com a porta 21 do servidor. Essa conexão é chamada de canal de controle. É nela que o cliente envia comandos como USER, PASS, LIST, CWD e RETR.
A listagem de diretórios e a transferência de arquivos não passam pela mesma conexão. O FTP abre um segundo canal, chamado canal de dados. É por isso que um login pode funcionar e, ainda assim, o comando ls falhar. Nesse caso, o problema costuma estar na negociação da conexão de dados, em NAT ou em regras de firewall.
Hoje, o modo passivo é o mais comum. O cliente pede uma porta ao servidor e abre a conexão até ela. Isso funciona melhor quando o cliente está atrás de um roteador ou firewall.
O FTP tradicional também não cifra usuário, senha ou conteúdo. Em uma rede sem proteção, esses dados podem ser observados em trânsito. Neste laboratório, o acesso ao Target ocorre dentro da VPN, mas a limitação do protocolo continua sendo importante.
O modo binary evita que o cliente trate o arquivo como texto e altere quebras de linha durante a transferência. Para arquivos desconhecidos, backups e Dumps, ele é a opção mais segura.
O Anonymous Login foi criado para distribuição pública de arquivos. Em muitos servidores, o usuário é anonymous e a senha pode ser vazia, qualquer texto ou um endereço de e-mail.
Ter esse recurso ativo não significa que o servidor está vulnerável. O problema está no que essa conta consegue ver e fazer.
Uma pasta pública pode conter documentos legítimos, mas também pode expor backups, arquivos de configuração, nomes de usuários, Keys, Dumps e cópias de arquivos de autenticação. Esse tipo de vazamento é chamado de Information Disclosure.
Durante a enumeração, separe as perguntas:
- O login foi aceito?
- Quais diretórios podem ser listados?
- Quais arquivos podem ser baixados?
- Existe permissão de upload, rename ou delete?
- O conteúdo encontrado ajuda a acessar outro serviço?
Não presuma que toda pasta pública permite escrita. Não presuma também que um servidor somente leitura é inofensivo. Um único backup pode ser suficiente para revelar uma credencial reutilizada em SSH, painel web ou outro Host.
Leitura
Permite coletar o conteúdo sem alterar o servidor.
Escrita
Pode permitir upload, sobrescrita ou criação de arquivos.
Contexto
O nome, o formato e o conteúdo do arquivo indicam seu possível uso.
Linux não precisa guardar a senha em texto claro. Em vez disso, armazena um resultado derivado dela. No arquivo /etc/shadow, o campo de senha costuma seguir este formato:
O identificador aponta para o algoritmo. O salt é um valor incluído no cálculo para que duas contas com a mesma senha não produzam necessariamente o mesmo resultado. O digest é o valor usado para verificar candidatos.
Uma linha unshadowed reúne os dados de /etc/passwd e /etc/shadow em um formato que ferramentas de Cracking conseguem processar. Isso também preserva o nome do usuário e outros campos úteis para organizar os resultados.
O salt não impede Cracking. Ele apenas obriga a ferramenta a calcular cada candidato com o valor correto, em vez de consultar uma tabela pronta.
| Prefixo | Formato | Leitura prática |
|---|---|---|
$1$ | MD5-Crypt | Formato antigo e relativamente rápido para testar. |
$5$ | SHA-256-Crypt | Exige mais trabalho por candidato. |
$6$ | SHA-512-Crypt | Formato ainda comum em sistemas Linux. |
No Cracking offline, nenhuma tentativa é enviada ao Target. John lê o hash, gera um candidato, calcula o resultado usando o mesmo algoritmo e compara os dois valores.
Isso é diferente de tentar senhas diretamente em SSH. Um ataque online depende da rede, produz logs e pode sofrer bloqueio. O Cracking offline depende principalmente do algoritmo, do hardware e da qualidade dos candidatos.
Uma Wordlist funciona bem quando contém palavras próximas do padrão usado pela pessoa ou pela organização. rockyou.txt é uma base comum para laboratórios porque reúne senhas reais vazadas no passado. Ela é útil para testar senhas simples, mas não substitui análise de contexto.
John normalmente detecta o formato sozinho. Quando isso não acontece, use --format. Depois, --show exibe o que já foi recuperado.
Uma senha encontrada ainda precisa ser validada. Ela pode pertencer a uma conta desativada, ter sido trocada ou não ser aceita pelo serviço que você está testando.
Quando um binário possui o bit SUID, ele pode executar com o Effective UID do proprietário do arquivo. Se o proprietário é root, o programa recebe privilégios que o usuário comum não possui.
Isso não significa que qualquer binário SUID gera uma Shell root. O programa precisa conter algum comportamento abusável. Por isso, executáveis customizados merecem atenção. Eles podem manipular arquivos temporários de forma insegura, confiar em variáveis de ambiente ou chamar outros comandos sem cuidado.
A enumeração inicial é simples:
O strings pode revelar nomes de comandos embutidos no programa. Ele ajuda a levantar hipóteses, mas não mostra toda a lógica do binário. Quando disponível, strace ajuda a observar quais arquivos e processos são realmente acessados.
O PATH é uma lista de diretórios separados por dois-pontos. A Shell e várias funções da libc usam essa lista quando recebem um nome de comando sem /.
Considere este valor:
Quando alguém digita ps, o sistema procura nesta ordem:
/usr/local/bin/ps/usr/bin/ps/bin/ps
A busca termina no primeiro arquivo executável encontrado.
Agora considere:
Nesse caso, /tmp/ps será escolhido antes de /usr/bin/ps, caso o arquivo exista e tenha permissão de execução.
Essa diferença importa quando um programa privilegiado chama ps em vez de /usr/bin/ps. O autor do programa provavelmente pretendia executar a ferramenta do sistema, mas deixou a escolha nas mãos do ambiente.
Há três condições importantes para um Path Hijacking:
- o programa chama um comando sem caminho absoluto;
- o processo usa um
PATHque pode ser influenciado pelo usuário; - o usuário controla um diretório consultado antes do executável legítimo.
Um nome com /, como ./ps ou /usr/bin/ps, não passa pela busca normal do PATH.
Também é importante entender o bash -p. Em alguns contextos privilegiados, o Bash reduz privilégios por segurança. A opção -p pede que ele preserve o Effective UID recebido. Isso só funciona quando o processo já foi iniciado com o contexto adequado.
Durante o laboratório, evite pular direto para um Payload.
No FTP, confirme primeiro o que a conta anonymous consegue acessar. Ao encontrar um arquivo interessante, faça uma cópia local e entenda seu formato. Se houver um hash, identifique o algoritmo e execute o Cracking no seu Host.
Depois do Foothold, enumere o sistema. Um executável SUID customizado é apenas um ponto de atenção. Você ainda precisa descobrir o que ele chama, qual ambiente recebe e se o comportamento pode ser controlado.
Essa sequência reduz tentativas aleatórias e facilita explicar por que cada comando foi usado.
Lab: FTP Anonymous Login
Nível: Intermediário
Categoria: Linux Infrastructure
Acesso: VPN WireGuard
Use o painel VPN no lado direito para baixar a configuração e revisar os passos de conexão. Depois que o túnel estiver ativo, inicie o Target no launcher.
Ambiente isolado para prática
Inicie uma instância temporária ao final da aula para praticar o conteúdo com segurança.