Desafios de recrutamento ao Mossad 2018 Parte 2
OO desafio 2 começa com o arquivo pcap.
Vamos baixar o arquivo e abri-lo usando 7zip.
O arquivo pode ser aberto com o wirehark e começar a analisá-lo, mas por outro lado há uma maneira mais fácil de analisar arquivos pcap de forma mais simples usando o software CapLoader 1.6:
Na saída do software você pode ver que se trata de um protocolo FTP na porta 2121 cujo nome de usuário para a conexão é user e a senha é 12345.
Faremos uma conexão simples usando um software FTP de alguma máquina Linux e parece que o servidor não aceita nossa conexão por algum motivo:
Voltaremos ao software CapLoader e veremos o restante dos pacotes:
Pode-se ver que antes de o cliente contatar o serviço ftp, ele contatou outro serviço na porta 5555 que se parece com algum método de port knocking.
Veremos os pacotes nos seus dois primeiros pedidos e tentaremos descobrir qual método de port knocking eles usaram.
Primeiro pacote:
Vamos começar a analisar o primeiro pacote tentando conectar ao lado do servidor na porta 5555:
Você pode ver que o servidor retornou algum hash de 32 caracteres para nós, exatamente como os hashes que vimos no arquivo.pcap:
Hash 32 caracteres geralmente denotam md5, vamos pegar um dos hashes que já sabemos para que serve a resposta necessária e jogá-lo no site:
`` https://hashkiller.co.uk/md5-decrypter.aspx`
E vamos receber:
Se olharmos para o número de caracteres nas respostas enviadas ao lado do servidor nos pacotes, podemos ver que o comprimento da resposta é de 128 caracteres que marca sha512.
Se pegarmos os números que obtivemos e fizermos sha512 neles, parece que obtemos um resultado completamente diferente do resultado que deveríamos obter no arquivopcap.
Portanto, decidimos tentar fazer uma força bruta, usando o seguinte código python:
O código executou exatamente uma execução e parou, a partir disso podemos concluir que precisamos construir um trecho de código simples que irá realizar as seguintes etapas:
Para fazer isso, escrevemos o seguinte código:
Agora vamos nos conectar ao serviço FTP:
E vamos puxar todos os arquivos para o nosso computador para tornar mais conveniente para nós pesquisá-los:
A próxima etapa do desafio é localizar arquivos interessantes dentro do sistema de arquivos baixado, para isso, escrevemos um código curto que nos imprime uma lista de todos os arquivos existentes no arquivo para que seja mais fácil analiza-los.:
Dentro da pasta do usuário de backup você pode encontrar 3 arquivos interessantes:
hint – Contendo a senha.
`` s3cr3t`
id_rsa – Chave privada para acesso ao servidor.
E outro arquivo floppyfw.conf.enc que atualmente não temos ideia de qual é sua função, mas por causa de sua extensão pode-se concluir que provavelmente está criptografado.
Tentaremos acessar o servidor com o nome de usuário de backup porque estamos em sua pasta pessoal e a senha da chave s3cr3t e obteremos:
Você pode ver que fomos capazes de nos conectar ao servidor, mas como não temos um terminal configurado, fomos expulsos, tentaremos nos conectar usando outro serviço como o sftp e obteremos:
Vamos baixar o arquivo python para nós e abri-lo usando um programa chamado:
`` EasyPythonDecompiler`
O que parece assim.:
Agora vamos olhar para o arquivo python que recebemos e ver como ele deve nos ajudar a descriptografar o arquivo floppyfw.conf.enc.
O conteúdo do arquivo conf_enc é um uso muito básico do algoritmo AES empython:
Vamos converter a função criptografar para descriptografar e tentar descriptografar o arquivo, faremos a inversão do final para o início assim:
Primeiro vamos inverter a linha:
return base64.b64encode(iv + cipher.encrypt(raw))` Pode-se perceber nesta linha que o IV é adicionado à informação criptografada e é realizado base64 para que nossa decodificação comece com a abertura da base64 e a seguir a divisão da informação e o IV para:
raw = base64.b64decode(raw)
iv = raw[:16]
data = raw[16:]
`
O comprimento IV pode ser visto como definido usando AES.block_size, que é 16.
Devemos então inverter o comando:
cipher.encrypt(raw)` Ao comando:
Chpher.decrypt(raw) E tudo o que nos resta fazer é desempacotar e retornar essas informações sendo que nossa função ficou assim: ![Função básica de decodificação aes](/img/blog/2018/mossad2018-2-4-17.png) Tentaremos descriptografar o arquivo floppyfw.conf.enc e obter o seguinte arquivo: ![legal iptables](/img/blog/2018/mossad2018-2-4-18.png) No arquivo encontramos configurações de iptables do firewall que permitem acesso ao endereço IP 10.128.0.3 para as portas 8080 e 3389 No momento não sabemos para o que é usado, então decidimos procurar mais arquivos que contenham a extensão .enc para descriptografá-los e ver o que obtemos: ![Uma lista de arquivos de backup criptografados que sabemos como descriptografar](/img/blog/2018/mossad2018-2-4-19.png) Encontramos os arquivos cisco.conf.enc e decidimos decifrar o mais recente. ![Descriptografar um arquivo de backup Cisco](/img/blog/2018/mossad2018-2-4-20.png) Podemos ver que este é um backup do arquivo de configuração de execução padrão do equipamento cisco, no arquivo você pode ver que temos o nome de usuário fwadmin e a senha criptografada na criptografia type 7, que é muito fácil de decifrar através do site: `` http://packetlife.net/toolbox/type7/
Vamos resumir o que alcançamos até agora:
`` USE_IPTABLES=y
RULE_1=iptables -I INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
RULE_2=iptables -P INPUT -j DROP
RULE_3=iptables -I OUTPUT -i eth1 -p tcp -m tcp --dport 3389 -d 10.128.0.3 -j ACCEPT
RULE_4=iptables -I OUTPUT -i eth1 -p tcp -m tcp --dport 8080 -d 10.128.0.3 -j ACCEPT
RULE_5=iptables -P OUTPUT -j DROP
RULE_6=iptables -P FORWARD -j ACCEPT
`
Com base nos dados desses arquivos, começaremos a criar nossa rota para o servidor de arquivos interno:
- Faremos um túnel para o servidor interno desta forma:
`` ssh -i id_rsa -L -N 1337:10.164.0.3:22 backup@35.204.90.89`
As bandeiras que usamos:
- -N Não execute comandos na chamada ssh porque estamos usando a chamada conforme necessário tunnel
- -L Chegando a porta de entrada e saída para o propósito do túnel, definimos a entrada em 1337 e a saída em 22.
Então basicamente pelo servidor 35.204.90.89 chegamos ao servidor 10.164.0.3 e temos uma porta ouvindo:
2. Faremos um segundo túnel através de nossa porta 1337 no servidor de arquivos usando o seguinte comando:
`` ssh fwadmin@localhost -p 1337 -N -L 1234:10.128.0.3:8080 -g`
As bandeiras que usamos:
- -p Indica uma porta para conexão nos conectamos através do servidor de túnel que criamos na porta 1337
- -N Explicamos no comando anterior, os usuários não devem enviar comandos notunnel
- -L Explicamos no pedido anterior, sua função é abrir uma porta conosco, desta vez 1234, que nos levará a
- -g Indica que a escuta será global em 0.0.0.0 para que possamos conectar usando nosso computador Windows através da máquina Linux no servidor de arquivos
O resultado ficará assim:
3. Abrimos um navegador e voltamos a máquina Linux para a porta 1234 que nos levará diretamente através do túnel para o servidor de arquivos interno:
Iremos para a pasta e pareceremos que passamos para o terceiro estágio:
Continue o desafio na terceira parte