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.
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. | ||||||||||
| ||||||||||
Acessando a porta 80 pelo navegador e visualizando a página WEB, iniciamos de fato o desafio. | ||||||||||
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. | ||||||||||
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”. | ||||||||||
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= | ||||||||||
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/. | ||||||||||
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. | ||||||||||
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. | ||||||||||
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. | ||||||||||
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. | ||||||||||
Inserido a joia (flag) obtida na sala anterior e retornou mais um código para decifrar: | ||||||||||
| ||||||||||
crest 1 => base64 & base32 | ||||||||||
Entretanto, não haviam mais informações sobre as outras “crests” nesta sala, vamos checar a próxima… | ||||||||||
Em /galleryRoom/ pudemos encontrar outra crest: | ||||||||||
| ||||||||||
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. | ||||||||||
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 => 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@&%# | ||||||||||
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 => 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. | ||||||||||
| ||||||||||
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. | ||||||||||
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. | ||||||||||
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. | ||||||||||
| ||||||||||
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: | ||||||||||
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 |