Biohazard Writeup - TryHackMe
13
0

Biohazard Writeup - TryHackMe

A Biohazard é uma room que pode ser encontrada na plataforma TryHackMe. Criada com um estilo puzzle para a solução dos desafios, mas com uma "pegada" especial, sendo baseada na clássica franquia: Resident Evil.

Pedro Mariano
10 min
13
0

Bem vindos ao writeup da room Biohazard!

A Biohazard é uma room que pode ser encontrada na plataforma TryHackMe, que utiliza do estilo puzzle para a solução dos desafios, mas com uma "pegada" especial. Essa é uma room baseada na franquia clássica e ainda tão adorada de jogos eletrônicos conhecida como Resident Evil (no Japão é conhecido como Biohazard).

Como um entusiasta da franquia e também com todo o enredo envolvido, juntando a temática que essa room "diferenciada" nos traz e insere neste mundo de CTF, decidi criar este writeup contando um pouco da jornada e tentando trazer um pouco desta atmosfera "survival horror" do Resident Evil.

Vamos ao que interessa!


Task 1 - Introduction

Após o deploy da máquina, seguimos e respondendo às questões.

Utilizando o nosso amigo NMAP, foi possível identificar 3 portas abertas.

PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Acessando a porta 80 pelo navegador e visualizando a página WEB, iniciamos de fato o desafio.

Email image

Na página WEB somos introduzidos no enredo junto ao time composto por Chris, Jill, Barry, Weasker e Joseph. A página retorna somente o texto e um link para “adentrarmos” à mansão.

De acordo com a história, já podemos encontrar a resposta para a terceira questão da Task 1: STARS alpha team, o nome do time em operação.

Task 2 - The Mansion

No enunciado dessa tarefa, é ressaltado a importância da coleta de todos os itens e dados para avançar para o próximo level e o formato das flags: Item_name{32 character}

Como informado na descrição desta room, este é um CTF no estilo puzzle e como todo puzzle, temos que resolver/decifrar seus enigmas e desafios, neste caso, os desafios dentro do desafio haha.

Seguindo fielmente a dica desta task e já aguardando os piores cenários, trilhei a room anotando todas as informações, links e flags encontradas para os puzzles, o que realmente ajudou muito para a conclusão e recomendo para quem está iniciando nesta room e/ou CTFs em geral. Anotações são o caminho!

Sem mais delongas, vamos seguindo nessa atmosfera de “terror e códigos”...

Clicando no link para acesso a mansão, somos levados para outra página /mansionmain/ onde também é continuado a história e enredo deste desafio - assim como cada uma das páginas neste desafio, sendo importante e também divertido acompanhar a “trama” até a conclusão.

Email image

De início, não é possível visualizar algo para continuar, mas buscando um pouco mais em seu código fonte podemos achar a indicação para a próxima sala, chamada de “Dining room”.

Email image

Nesta sala, encontramos o emblema na parede que responderá a primeira questão desta tarefa. Clicando em “YES”, pegamos então o emblema.

emblem{fec832623e???????????}

Conforme solicitado nas instruções, ao atualizar a página /dining_room/ apresenta um campo para inserir um emblema. Mas como “nem tudo são flores”, perceberá que este emblema encontrado não é o requisitado no momento, mas… mantenha-o anotado! 

Pesquisando novamente mais a fundo, encontramos uma hash em base64 que nos leva para uma nova sala:

SG93IGFib3V0IHRoZSAvdGVhUm9vbS8=

Email image

Agora, dentro da nova sala indicada /teaRoom/, nos deparamos com uma cena "desconfortante”, um lockpick (lock_pick{037b35e2????????}) e uma sugestão para a próxima sala: /art/Room/.

Email image

Em /artRoom/ encontram-se algumas esculturas e um pedaço de papel para investigar. Ao verificar o papel, é possível encontrar um “mapa” para as salas da mansão. Com isso, saímos um pouco do escuro e vamos trabalhar em cima dele.

Email image

Na sequência do mapa e descartando as salas já acessadas, a próxima sala da lista é: /barRoom/. A página do /barRoom/ está “trancada” e pode ser aberta com o lockpick obtido anteriormente. Utilizando o lockpick foi possível adentrar à sala com sucesso.

Email image

Nesta sala há um piano e para continuarmos, é necessário “tocar” uma determinada música e, além dele, encontra-se também uma anotação nomeada como: moonlight somata. E ao lê-la encontramos as “notas musicais”, porém está codificada em base32 e será necessário decodificar para prosseguir.

Look like a music note NV2XG2LDL5ZWQZLFOR5TGNRSMQ3TEZDFMFTDMNLGGVRGIYZWGNSGCZLDMU3GCMLGGY3TMZL5

Ao decodificar, conseguimos a flag para a plataforma e também para submetermos nesta mesma sala.

Em seguida encontramos uma área secreta, com um emblema de ouro na parede.

Pegando este emblema conseguimos mais uma flag (gold_emblem{58a8c41a9???????}) e uma dica informando para atualizar a página do emblema (Secret bar room) para apresentar o campo de inserção de flag. Mas novamente, esta flag obtida não é a correta para este campo.


Neste momento, foi necessário uma pausa para pensar um pouco mais... até pensando em seguir para outras salas do mapa para uma possibilidade de encontrar a resposta deste campo. Mas foi aí que veio um “estalo” na mente! No início também havia uma sala com o mesmo “problema”, correto? E as 2 solicitam um emblema para submeter, mas não informa o tipo do emblema… E que tal inserir o emblema obtido de nossa primeira flag desta task nesta sala secreta (Secret bar room) e vice versa?


Tcharam! Ao inserir o emblema no campo solicitado na sala Secret bar room, fui redirecionado para uma nova página que contém somente o nome “rebecca” e nada mais...

Submetendo a flag  gold_emblem em /diningRoom/ fui redirecionado para uma nova página que apresenta uma frase cifrada:

klfvg ks r wimgnd biz mpuiui ulg fiemok tqod. Xii jvmc tbkg ks tempgf tyi_hvgct_jljinf_kvc

Pesquisando pelo padrão da cifra, é possível identificar que a frase está cifrada em Vigenere, sendo necessário uma senha para decifrá-la. Novamente um “puzzle”, mas como estas 2 salas estão de certa forma relacionadas, ao tentar utilizar o nome “rebecca” como senha para decifrar obtém-se a frase em texto claro com sucesso: “there is a shield key inside the dining room. The html page is called the_great_shield_key”, indicando o local para a próxima chave.

Concluindo este puzzle, utilizo o “mapa” novamente para seguir para um novo local, a sala: /diningRoom2F/. Esta página informa somente sobre o brilho azul da pedra e nenhum link ou outra informação. Mas procurando um pouco mais, há o que aparenta ser uma nova frase cifrada:

Lbh trg gur oyhr trz ol chfuvat gur fgnghf gb gur ybjre sybbe. Gur trz vf ba gur qvavatEbbz svefg sybbe. Ivfvg fnccuver.ugzy

Também está cifrado em Vigenere, mas não foi passado uma chave para decifrar. Para isso, foi utilizado o site www.dcode.fr.

Email image

Ao decifrar, conseguimos a dica para obter a jóia azul: “You get the blue gem by pushing the status to the loawer floor. The gem is on the diningRoom first floor. sapphire.html”. E consequentemente, a próxima flag: blue_jewel{e1d457???????}.

Seguindo o mapa, a próxima página é /tigerStatusRoom/. Onde há uma estátua da cabeça de um tigre e a instrução para inserir a joia em seus olhos.

Email image

Inserido a joia (flag) obtida na sala anterior e retornou mais um código para decifrar:

crest 1:
S0pXRkVVS0pKQkxIVVdTWUpFM0VTUlk9
Hint 1: Crest 1 has been encoded twiceHint
Hint 2: Crest 1 contanis 14 letters
Note: You need to collect all 4 crests, combine and decode to reavel another path
The combination should be crest 1 + crest 2 + crest 3 + crest 4. Also, the combination is a type of encoded base and you need to decode it

crest 1 => base64  & base32

Entretanto, não haviam mais informações sobre as outras “crests” nesta sala, vamos checar a próxima…

Email image

Em /galleryRoom/ pudemos encontrar outra crest:

crest 2:
GVFWK5KHK5WTGTCILE4DKY3DNN4GQQRTM5AVCTKE
Hint 1: Crest 2 has been encoded twice
Hint 2: Crest 2 contanis 18 letter

crest 2 => base32 & base58

Seguindo o mapa novamente, levou à sala /studyRoom/ que contém um “helmet symbol” embutido na porta. Porém, até o momento, este item ainda não foi encontrado. Vamos dar mais uma olhada nas próximas salas.

A próxima sala do mapa é: /armorRoom/. Nesta sala também há uma porta trancada com “shield symbol” embutido nela. Este símbolo já está em mãos! Foi conseguido após decifrar a cifra Vigenere anteriormente.

Email image

Inserido a chave na porta e adentrado na “sala das armaduras”, tendo em seu interior, um total de 8 armaduras e em uma delas existia uma nota…

Nesta nota, encontra-se a terceira crest:

crest 3:
MDAxMTAxMTAgMDAxMTAwMTEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMTEgMDAxMDAwMDAgMDAxMTAxMDAgMDExMDAxMDAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAxMDAgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMDAgMDAxMTEwMDAgMDAxMDAwMDAgMDAxMTAxMTAgMDExMDAwMTEgMDAxMDAwMDAgMDAxMTAxMTEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAxMTAgMDAxMTAxMDAgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTAxMTAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMTAgMDExMDAwMDEgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTEwMDEgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTAxMTEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAxMDEgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMDAgMDAxMDAwMDAgMDAxMTAxMDEgMDAxMTEwMDAgMDAxMDAwMDAgMDAxMTAwMTEgMDAxMTAwMTAgMDAxMDAwMDAgMDAxMTAxMTAgMDAxMTEwMDA=
Hint 1: Crest 3 has been encoded three times
Hint 2: Crest 3 contanis 19 letters

crest 3 => base64 & bin & hex

    ... foi utilizado a ferramenta xxd para trabalhar com hexadecimais.

Na próxima sala /attic/, também há uma porta trancada com “shield symbol” embutido nela. Utilizado novamente a “shield key” e... P@&%#

Email image

Atacado instantaneamente por uma serpente gigante, sendo necessário 10 tiros para fazê-la recuar! Em meio ao desespero de toda a ação, foi encontrado um corpo deitado no chão, aparentemente um outro membro da STARS, Richard. Junto a ele foi encontrada mais uma anotação:

crest 4:
gSUERauVpvKzRpyPpuYz66JDmRTbJubaoArM6CAQsnVwte6zF9J4GGYyun3k5qM9ma4s
Hint 1: Crest 2 has been encoded twice
Hint 2: Crest 2 contanis 17 characters

crest 4 => base58 & hex

Conforme as instruções, esta é a última (crest 4). Após decodificar todas elas e combiná-las, chegamos à “charada” final:

RlRQIHVzZXI6IGh1bnRlciwgRlRQIHBhc3M6IHlvdV9jYW50X2hpZGVfZm9yZXZlcg==

Ao decodificar, conseguimos descobrir a informação completa trazendo o usuário e senha do serviço FTP.

Task 3 -  The guard house

Utilizando as credenciais FTP, foram encontrados alguns itens juntos a um arquivo important.txt que continha algumas informações deixadas por Barry.

ftp 10.10.200.78
ftp> pass
200 PORT command successful. Consider using PASV.
ftp> dir
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 7994 Sep 19 2019 001-key.jpg
-rw-r--r-- 1 0 0 2210 Sep 19 2019 002-key.jpg
-rw-r--r-- 1 0 0 121 Sep 19 2019 helmet_key.txt.gpg
-rw-r--r-- 1 0 0 170 Sep 20 2019 important.txt
226 Directory send OK.

Realizado o download de todos os arquivos existentes no diretório por meio do comando get. Os arquivos .jpg abriram normalmente sem informações em sua imagem. O arquivo criptografado helmet_key.txt.gpg necessita de uma senha para acesso ao seu conteúdo.

Diante disso, foi checado primeiramente o arquivo important.txt, que apresenta o seu conteúdo diretamente.

cat important.txt Jill, I think the helmet key is inside the text file, but I have no clue on decrypting stuff. Also, I come across a /hidden_closet/ door but it was locked. From,Barry

Através da mensagem deixada é indicado um novo local, mas assim como as outras salas, o /hidden_closet/ também está trancado e com um “helmet symbol” embutido para destrancar.

Para obter o “helmet symbol”, foram necessários alguns passos. Talvez o “puzzle” mais complicado desta room!

Para trabalhar com as imagens e com o arquivo .gpg após o download via FTP, utilizei as ferramentas: steghide, file, binwalk e gpg

Com isso, foi obtido o helmet_key{458493193501d2b????????}.

Ao retornar à sala /studyRoom/ com o “helmet” em mãos, foi possível adentrá-la.

Email image

Em seguida, foi encontrado dentro da sala uma mesa bagunçada e um “livro selado” (doom.tar.gz).

Task 4 - The Revisit

Pegado (download) o livro e aberto (descompactado), retornando um usuário SSH em seu conteúdo.

tar -xvf doom.tar.gz eagle_medal.txt cat eagle_medal.txt SSH user: umbrella_guest

Retornado ao /hidden_closet/, agora com o “helmet” para abrir a porta. Utilizado o "helmet" e ao adentrar, é observado que se parece com uma caverna. Lá foi encontrado o Enrico, líder do grupo STARS e logo começou a reportar sobre um possível traidor existente no grupo STARS que estaria causando todo esse caos, mas enquanto ele falava surgiu inesperadamente o barulho de um tiro no local e em seguida Enrico estava morto. Não foi possível visualizar o atirador e também descobrir o nome do traidor que Enrico queria tanto contar.

Email image

Verificando a cena, foi encontrado uma “wolf medal”. Examinando a medalha, foi achado a senha SSH.

Foi encontrado também um “MO disk 1” contendo uma cifra Vigenere (necessário a chave para decifrar):

wpbwbxr wpkzg pltwnhro, txrks_xfqsxrd_bvv_fy_rvmexa_ajk

Task 5 - Underground laboratory 

Utilizado as credenciais obtidas para o acesso via SSH.

ssh umbrella_guest@10.10.200.78

Agora com acesso SSH, foi encontrado um diretório oculto com um arquivo de texto chris.txt descrevendo a conversa entre Chris e Jill, onde é descoberto o traidor. Jill também recebe um “MO Disk 2” apresentando a senha: a?????.

Agora com a senha em mãos, foi possível decifrar o Vigenere do “MO disk 1” e, com isso, obter as credenciais de um usuário existente no host.

weasker:stars_members_are_?????

Acessando o seu diretório /home, foi encontrado uma anotação weasker_note.txt que relata o encontro entre Weasker e Jill…

E o resultado desse encontro foi “de matar”!?

weasker@umbrella_corp:~$ cat weasker_note.txt Weaker: Finally, you are here, Jill. Jill: Weasker! stop it, You are destroying the mankind. Weasker: Destroying the mankind? How about creating a 'new' mankind. A world, only the strong can survive. Jill: This is insane. Weasker: Let me show you the ultimate lifeform, the Tyrant. (Tyrant jump out and kill Weasker instantly) (Jill able to stun the tyrant will a few powerful magnum round) Alarm: Warning! warning! Self-detruct sequence has been activated. All personal, please evacuate immediately. (Repeat) Jill: Poor bastard

Agora, com um monstro insano a solta e o alarme ecoando, é preciso sair imediatamente!

Neste nível, já não havia mais para onde seguir e foi necessário escalar o privilégio para atingir o último objetivo.

Com sudo -l foi descoberto que posso executar qualquer comando com nível root na máquina umbrella_corp.

weasker@umbrella_corp:~$ sudo -l
Matching Defaults entries for weasker on umbrella_corp:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User weasker may run the following commands on umbrella_corp:
(ALL : ALL) ALL

Utilizado então, o comando sudo su e elevado o privilégio para root.

Agora como root e dentro do diretório /root, foi encontrado o arquivo root.txt que relata a cena final... com direito a helicóptero, fuga e, claro... o insano “TYRANT”!

E com toda certeza não podemos esquecer da última flag :D

Deixo para vocês o desfecho desta breve, adorável e insana noite:

Email image

Conclusão

Separando o enredo da parte técnica, é possível realizar algumas analogias para com os cenários reais como a importância da análise de um "robots.txt", códigos fontes, metadatas, "misconfigurations" e entre outros assuntos que pudemos vivenciar para a conclusão desta room.

Apesar de ser um suspeito para opinar haha, esta room foi bem divertida e desafiante. Apesar de sua temática diferenciada, os desafios e puzzles foram elaborados e encaixados muito bem para o cenário. Acredito que agradou não só aos fans hackers da franquia como também aos outros jogadores de CTF.

Espero que tenham gostado!

Sinta-se livre para pingar um café :D

naP0

Deixe seu Pingback