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".
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):

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.
Identificamos um possível diretório oculto, /development, e agora vamos analisar o que existe dentro dele:

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


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.

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.
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)
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

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.

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

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)
Esse comando transforma a chave_rsa em um formato que o John entende, permitindo que ele consiga quebrá-la.

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
Descobrimos a senha! Ela é beeswax. Agora basta logar no SSH usando a chave_rsa original e essa senha.

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

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.