Este post não marca minha primeira experiência com o TryHackMe, já explorei outras salas anteriormente e venho estudando aos poucos os conceitos básicos de segurança ofensiva. No entanto, esta é a primeira vez que decido registrar esse aprendizado em forma de post, como uma maneira de consolidar o que estou estudando e também compartilhar a experiência com quem está começando agora.

Para dar início à sala, primeiro ativamos a máquina alvo e o AttackBox, que será utilizada para realizar os testes e comandos necessários ao longo do desafio.

1. Enumeração:

Esta é uma das etapas mais importantes do pentest. Nela, utilizamos a ferramenta Nmap para identificar serviços e portas abertas no alvo.

Sintaxe do comando: nmap -sV -p- -sS (IP alvo)

-sV: faz o nmap identificar os serviços e as versões rodando nas portas.
-p-: instrui o nmap a escanear todas as portas.
-sS: utiliza o scan SYN, que é mais rápido e considerado mais "agressivo".
None
Resultado do nmap.

A partir do resultado do scan, podemos identificar quatro portas abertas no alvo: 22 (SSH), 80 (HTTP), 139 e 445, sendo estas duas últimas associadas ao serviço SMB.

Primeiramente vamos analisar o que está rodando nessa porta 80 (HTTP):

None
Servidor web http.

Uma mensagem de servidor em manutenção. Será que existe algum outro diretório escondido? Vamos usar a ferramenta Gobuster para descobrir.

Sintaxe do comando: gobuster dir -u (site alvo) -w /usr/share/wordlists/dirb/common.txt

-u : indica a url que será atacada.

-w: mostra a wordlist que o gobuster precisa usar.
None
Resultado do gobuster.

Identificamos um possível diretório oculto, /development, e agora vamos analisar o que existe dentro dele:

None
Diretório oculto.

Foram identificados dois arquivos, Dev.txt e J.txt, vamos analisar:

None
Dev.txt
None
J.txt

Encontramos duas conversas bem interessantes. O que mais chama a atenção está no J.txt, onde ele fala sobre credenciais fracas. Com isso, sabemos que existe alguém com uma senha fácil de ser quebrada. A partir da análise dos dois arquivos, já conseguimos identificar dois possíveis usuários administradores: um que começa com J e outro com K.

Agora que já sabemos dessas informações, vamos usar a ferramenta Enum4linux, que permite enumerar servidores SMB, a fim de coletar informações sobre usuários, senhas e outros dados relevantes.

Sintaxe do comando: enum4linux -a (IP alvo)

-a: faz com que o enum4linux faça uma pesquisa avançada.
None
Executando o comando enum4linux.
None
Resultado enum4linux.

A ferramenta nos retornou três usuários do IP alvo. Agora, sabendo que o usuário J na verdade é o usuário jan, podemos tentar quebrar a senha dele, já que a Kay mencionou que ela é fraca.

2. Exploração

Vamos utilizar a ferramenta de brute force mais conhecida, o Hydra, que vai nos ajudar a quebrar a senha do jan e, assim, obter acesso restrito à máquina alvo via SSH.

Sintaxe do comando: hydra -l jan -P /usr/share/wordlists/rockyou.txt ssh://(IP alvo)

-l: fala o usuario que ele vai tentar com a senha.

-P: diz a wordlist de senhas que ele deve usar.
None
Resultado do hydra.

Conseguimos descobrir a senha do jan, agora vamos entrar na máquina via SSH e coletar informações privilegiadas.

3. Escalação de Privilégios

Sintaxe do comando: ssh jan@(IP alvo)
None
Login do ssh.

Ao entrar na máquina, não encontrei nenhum arquivo no diretório do usuário jan, apenas no usuário kay. No entanto, não temos permissão para ler seu conteúdo e, ao executar o comando sudo -l, também não obtemos acesso.

Isso me faz pensar que a room não espera uma escalação vertical de privilégios, e sim uma horizontal, saindo do usuário jan para o kay. Porém, também sabemos que a kay não possui uma senha fraca, então o brute force não é algo que devemos fazer logo de cara.

Vamos tentar coletar alguma informação dentro do diretório da kay e ver se conseguimos descobrir algo sobre a senha dela

None
Explorando o diretório da kay.

Não conseguimos ler os arquivos do diretório da kay, porém conseguimos acessar o diretório .ssh dela e tivemos acesso à chave id_rsa. Se a extrairmos, conseguiremos fazer login via SSH utilizando a chave dela.

None
Resultado da key.

Agora vamos pegar a chave, colocar em uma pasta dentro da nossa máquina e tentar logar no usuário da kay.

None
Tentativa de login ssh.

Copiei a chave privada para minha máquina e executei o comando chmod 600 /root/Desktop/chave, pois o SSH exige que o arquivo da chave tenha essa permissão. Em seguida, rodei o comando para logar via SSH utilizando a chave privada, que seria ssh -i /root/Desktop/chave kay@10.67.146.105. Porém, ele está pedindo a senha da kay, e não temos essa informação. Então, vamos precisar quebrar essa chave e descobrir a senha.

Agora precisamos usar outra ferramenta que é muito conhecida, John the Ripper, ele é muito usado para quebra de chaves e senhas, vamos usar ele para quebrar e nos informar qual a senha de acesso para o usuário da kay no SSH.

Para isso, criei outro arquivo com a chave original, chamado key.john, já que o outro estava com chmod 600. Após criar esse arquivo, peguei ferramenta do John que vamos usar, o ssh2john.py.

python2 ssh2john.py (arquivo da chave) > (nome do novo arquivo)
None
Usando o john.

Esse comando transforma a chave_rsa em um formato que o John entende, permitindo que ele consiga quebrá-la.

None
Transformação feita pelo john.

Como podemos observar, a chave foi transformada em um conjunto de caracteres e números que apenas o John entende.

Agora vamos tentar quebrá-la com o John e ver se ele retorna a senha de acesso ao SSH.

Sintaxe do comando: john (arquivo com a chave) --wordlist=/root/Desktop/Tools/wordlists/rockyou.txt
None
Resultado da senha quebrada.

Descobrimos a senha! Ela é beeswax. Agora basta logar no SSH usando a chave_rsa original e essa senha.

None
Logando no usuário da kay.

Logamos com sucesso, agora só falta ler o arquivo que estava no diretório dela e finalizar a room.

None
Pegando a última flag.

Conclusão

A sala Basic Pentesting foi uma experiência bem interessante para reforçar conceitos básicos de pentest na prática. Apesar de ser uma sala introdutória, ela ajuda bastante a entender como as etapas se conectam e como pequenas informações podem fazer diferença ao longo do processo.

Durante a resolução, ficou claro que não basta apenas rodar ferramentas, é preciso analisar os resultados e pensar no próximo passo. Esse desafio ajudou a treinar esse raciocínio e a ter mais atenção aos detalhes encontrados durante a enumeração.

Esse é o primeiro post que escrevo sobre uma sala do TryHackMe, mesmo já tendo feito outras anteriormente. A ideia daqui pra frente é começar a documentar meu aprendizado, tanto para reforçar os estudos quanto para acompanhar minha evolução na área de segurança da informação.