Skip to content

Solução para Network Forensics Puzzle Contest #2

Depois de 45 dias, finalmente o pessoal do Network Forensics Puzzle Contest liberou as respostas para o segundo Puzzle. As respostas para este desafio podem ser encontradas aqui: http://forensicscontest.com/2009/11/24/puzzle-2-answers

Respostas da Network Forensic

1. What is Ann’s email address?
Answer 1: sneakyg33k@aol.com

2. What is Ann’s email password?
Answer 2: 558r00lz

3. What is Ann’s secret lover’s email address?
Answer 3: mistersecretx@aol.com

4. What two items did Ann tell her secret lover to bring?
Answer 4: A fake passport and a bathing suit

5. What is the NAME of the attachment Ann sent to her secret lover?
Answer 5: secretrendezvous.docx

6. What is the MD5sum of the attachment Ann sent to her secret lover?
Answer 6: 9e423e11db88f01bbff81172839e1923

7. In what CITY and COUNTRY is their rendez-vous point?
Answer 7: Playa del Carmen, Mexico

8. What is the MD5sum of the image embedded in the document?
Answer 8: aadeace50997b1ba24b09ac2ef1940b7

Minha Solução

Baixando o arquivo .pcap

 wget -c http://forensicscontest.com/contest02/evidence02.pcap

Utilize o tcpflow[1] para entender o comportamento de comunicação entre os hosts.

Instalando o tcpflow no Debian Lenny

sudo aptitude install tcpflow

tcpflow -r evidence02.pcap

O resultado do comando criará 4 arquivos:

064.012.102.142.00587-192.168.001.159.01036
064.012.102.142.00587-192.168.001.159.01038
192.168.001.159.01036-064.012.102.142.00587
192.168.001.159.01038-064.012.102.142.00587

Explicando:

064.012.102.142.|  00587  | - | 192.168.001.159.| 01036
source_ip src_ptr destination_ip dst_ptr

Consultando a documentação do SMTP [2] (Simple Mail Transfer Protocol) e a RFC 4409, Message Submission for Mail, podemos entender um pouco mais do detalhes desta comunicação.

O emprego da porta 587 tenta restringir que programas de código malicioso enviem SPAM para outros domínios. Esta solução é uma alternativa para a limitação do SMTP que não faz autenticação de seus usuários.

Abrindo o arquivo 064.012.102.142.00587-192.168.001.159.01036 podemos observar o seguinte conteúdo:

$ cat 064.012.102.142.00587-192.168.001.159.01036

220 cia-mc06.mx.aol.com ESMTP mail_cia-mc06.1; Sat, 10 Oct 2009 15:35:16 -0400
250-cia-mc06.mx.aol.com host-69-140-19-190.static.comcast.net
250-AUTH=LOGIN PLAIN XAOL-UAS-MB
250-AUTH LOGIN PLAIN XAOL-UAS-MB
250-STARTTLS
250-CHUNKING
250-BINARYMIME
250-X-AOL-FWD-BY-REF
250-X-AOL-DIV_TAG
250-X-AOL-OUTBOX-COPY
250 HELP
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 AUTHENTICATION SUCCESSFUL
250 OK
250 OK
354 START MAIL INPUT, END WITH “.” ON A LINE BY ITSELF
250 OK
221 SERVICE CLOSING CHANNEL

Neste arquivo podemos encontrar o usuário (e-mail) e a senha das perguntas 1 e 2. Para entender melhor, visualize este tráfego no Wireshark.

wireshark -r evidence02.pcap

Utilize o Filtro: smtp, conforme ilustra a figura abaixo:

De acordo com a RFC 2554 [3], SMTP Service Extension for Authentication, “S” denota uma mensagem enviada pelo Servidor de E-mail e “C” uma mensagem enviada pelo Cliente.

Então as linhas “334 VXNlcm5hbWU6” e “334 UGFzc3dvcmQ6” querem dizer? Estas linhas estão codificadas na BASE64, portanto, podemos quebrá-las de duas formas (ou mais) para descobrir seu significado.

Instalando o metamail no Debian Lenny

sudo aptitude install metamail

Decodificando VXNlcm5hbWU6:

printf “VXNlcm5hbWU6” | mimencode -u
ou 
printf “VXNlcm5hbWU6” | base64 -d

 
Decodificando UGFzc3dvcmQ6:

printf “UGFzc3dvcmQ6” | mimencode -u
ou
printf “UGFzc3dvcmQ6” | base64 -d

O primeiro é “Username:” e o segundo “Password:”

Se você observar com mais cuidado, perceberá que os arquivos iniciando com 192.168* possuem tamanho distintos, 1,5K e 280K.

Analisando o arquivo 192.168.001.159.01036-064.012.102.142.00587:

$ head 192.168.001.159.01036-064.012.102.142.00587
EHLO annlaptop
AUTH LOGIN
c25lYWt5ZzMza0Bhb2wuY29t
NTU4cjAwbHo=
MAIL FROM:
RCPT TO:
DATA
Message-ID: <000901ca49ae$89d698c0$9f01a8c0@annlaptop>
From: “Ann Dercover”
To:

Neste conteúdo o mais imporante são as duas linhas que seguem logo abaixo do “AUTH LOGIN”.
Usuário: c25lYWt5ZzMza0Bhb2wuY29t e Senha: NTU4cjAwbHo=

Decodificando o usuário: 

printf “c25lYWt5ZzMza0Bhb2wuY29t” | mimencode -u
ou
printf “c25lYWt5ZzMza0Bhb2wuY29t” | base64 -d

Resultado da #1 pergunta: sneakyg33k@aol.com

Decodificando a senha:

printf “NTU4cjAwbHo=” | mimencode -u
ou
printf “NTU4cjAwbHo=” | base64 -d

Resultado da #2 pergunta: 558r00lz

Se você olhou o segundo arquivo 192.168.001.159.01038-064.012.102.142.00587, percebeu que o conteúdo do mesmo deixa mais eviente quem é o namorado (amante) da Ann

head 192.168.001.159.01038-064.012.102.142.00587

RCPT TO:

Resultado da #3 pergunta: mistersecretx@aol.com

Como o arquivo maior possui mais dados, vamos analisá-lo com mais calma. Observe as linhas 33 e 34 abaixo:

  33 Hi sweetheart! Bring your fake passport and a bathing suit. Address =
  34 attached. love, Ann

Ok, então a resposta para a pergunta de número 4 foi encontrada.

Resultado da #4 pergunta: Bring your fake passport and a bathing suit

Agora precisamos descobrir o nome do arquivo que foi enviado para o amante da Ann. Observe a linhas 56 abaixo:

  56         name=”secretrendezvous.docx”

Resultado da #5 pergunta: secretrendezvous.docx

Um ponto interessante a ser notado é a linha 57 que informa a codificação que a mensagem está armazenada. “Content-Transfer-Encoding: base64”

Tudo o que estiver entre as linhas 61 e 3700, você pode extrair, por que este montante de texto é o arquivo que precisamos abrir.

sed -n ‘61,3700p’ 192.168.001.159.01038-064.012.102.142.00587 > secret.txt

Agora, vamos decodificar no formato base64

cat secret.txt | base64 -d > secret.docx
ou
perl -MMIME::Base64 -ne ‘print decode_base64($_)’ < secret.txt > secret.docx

Descobrindo a resposta do questionamento 6

md5sum secret.docx

Resultado da #6 pergunta: 9e423e11db88f01bbff81172839e1923

Utilize o OpenOffice.org ou o BrOffice.org para abrir o arquivo secret.docx

Resultado da #7  pergunta: Playa del Carmen, Mexico

Até onde sei, todo documento .docx, na verdade, é um arquivo compactado zip, portanto, vamos extrair a figura da última pergunta.

unzip secret.docx

E depois

md5sum word/media/image1.png

Resultado da #8 pergunta: aadeace50997b1ba24b09ac2ef1940b7

Outras soluções já publicadas
http://www.offenseindepth.com/smtpcat/puzzle2.txt
http://john.scillieri.com/blog/2009/11/solving-the-network-forensics-puzzle-contest-2/

Obrigado aos organizadores do Puzzle, foi muito divertido!

 

Algumas Fontes:
1 – http://www.circlemud.org/~jelson/software/tcpflow/
2 – http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
3 – http://www.rfc-archive.org/getrfc.php?rfc=2554
http://www.gadgetwiz.com/protocols/smtp-auth-example.html
http://perl.active-venture.com/lib/MIME/Base64.html
http://www.activexperts.com/support/activemail/auth/

Comments are closed.