Thursday, February 3, 2011

Validação de Ferramentas Forenses - caso prático

É fundamental confiar nas ferramentas que utilizamos no dia-a-dia para Análise Forense e Resposta a Incidentes.

Já escrevi por aqui sobre Validação de Ferramentas Forenses - incluindo material do Departamento de Justiça Norte-Americano e do NIST. Hoje vamos a um caso rápido e prático de validação de ferramenta utilizando material disponível publicamente.

O material utilizado é open-source, tanto a massa de teste recém publicada por Simson Garfinkel (contendo diversos endereços de email) quanto a ferramenta bulk_extractor do pacote AFFLIB.

O objetivo é verificar a capacidade da ferramenta em extrair endereços de email (e seus offsets dentro da imagem) dos arquivos de evidência testados - que possuem endereços em várias codificações, conforme tabela abaixo:
email address Application (Encoding)
plain_text@textedit.com Apple TextEdit (UTF-8)
plain_text_pdf@textedit.com Apple TextEdit print-to-PDF (/FlateDecode)
rtf_text@textedit.com Apple TextEdit (RTF)
rtf_text_pdf@textedit.com Apple TextEdit print-to-PDF (/FlateDecode)
plain_utf16@textedit.com Apple TextEdit (UTF-16)
plain_utf16_pdf@textedit.com Apple TextEdit print-to-PDF (/FlateDecode)
pages@iwork09.com Apple Pages '09
pages_comment@iwork09.com Apple Pages (comment) '09
keynote@iwork09.com Apple Keynote '09
keynote_comment@iwork09.com Apple Keynote '09 (comment)
numbers@iwork09.com Apple Numbers '09
numbers_comment@iwork09.com Apple Numbers '09 (comment)
user_doc@microsoftword.com Microsoft Word 2008 (Mac) (.doc file)
user_doc_pdf@microsoftword.com Microsoft Word 2008 (Mac) print-to-PDF
user_docx@microsoftword.com
user_docx_pdf@microsoftword.com Microsoft Word 2008 (Mac) print-to-PDF (.docx file)
xls_cell@microsoft_excel.com
xls_comment@microsoft_excel.com Microsoft Word 2008 (Mac)
xlsx_cell@microsoft_excel.com Microsoft Word 2008 (Mac)
xlsx_cell_comment@microsoft_excel.com Microsoft Word 2008 (Mac) (Comment)
doc_within_doc@document.com Microsoft Word 2007 (OLE .doc file within .doc)
docx_within_docx@document.com Microsoft Word 2007 (OLE .doc file within .doc)
ppt_within_doc@document.com Microsoft PowerPoint and Word 2007 (OLE .ppt file within .doc)
pptx_within_docx@document.com Microsoft PowerPoint and Word 2007 (OLE .pptx file within .docx)
xls_within_doc@document.com Microsoft Excel and Word 2007 (OLE .xls file within .doc)
xlsx_within_docx@document.com Microsoft Excel and Word 2007 (OLE .xlsx file within .docx)
email_in_zip@zipfile1.com text file within ZIP
email_in_zip_zip@zipfile2.com ZIP'ed text file, ZIP'ed
email_in_gzip@gzipfile.com text file within GZIP
email_in_gzip_gzip@gzipfile.com GZIP'ed text file, GZIP'ed

Depois da instalação, download e verificação do MD5 da ferramenta e da massa de testes, o processo foi rápido:

$ bulk_extractor nps-2010-emails.E01 -o bulk_extractor/

O resultado da recuperação de endereços de emails - foi o seguinte:
75776 plain_text@textedit.com plain_text@textedit.com________________
86329 rtf_text@textedit.com __\f0\fs24 \cf0 rtf_text@textedit.com}_______________
97282 plain_utf16@textedit.com __p_l_a_i_n___u_t_f_1_6_@_t_e_x_t_e_d_i_t_._c_o_m_________________
100904 user_doc@microsoftword.com PERLINK "mailto:user_doc@microsoftword.com" __user_doc@mic
100934 user_doc@microsoftword.com softword.com" __user_doc@microsoftword.com_ Really._____
103009 user_doc@microsoftword.com K______________u_s_e_r___d_o_c_@_m_i_c_r_o_s_o_f_t_w_o_r_d_._c_o_m______y_________K
103097 user_doc@microsoftword.com mailto:user_doc@microsoftword.com
118170 user_doc@microsoftword.com mailto:user_doc@microsoftword.com____
203195 xls_cell@microsoft_excel.com ___'____________xls_cell@microsoft_excel.com________________
211202 xls_comment@microsoft_excel.com mson Garfinkel:_xls_comment@microsoft_excel.com_<_______[______
211406 xls_cell@microsoft_excel.com K______________x_l_s___c_e_l_l_@_m_i_c_r_o_s_o_f_t___e_x_c_e_l_._c_o_m______y_________K
211498 xls_cell@microsoft_excel.com mailto:xls_cell@microsoft_excel.com_
212898 xls_cell@microsoft_excel.com mailto:xls_cell@microsoft_excel.com____
270633 pages@iwork09.com 9 0 obj_(mailto:pages@iwork09.com)_endobj_11 0 ob
639006 docx_within_docx@document.com PERLINK "mailto:docx_within_docx@document.com" _doc_within_do
639038 doc_within_doc@document.com @document.com" _doc_within_doc@document.com________________
645550 docx_within_docx@document.com mailto:docx_within_docx@document.com____
691892 ppt_within_doc@document.com ____________p_p_t___w_i_t_h_i_n___d_o_c_@_d_o_c_u_m_e_n_t_._c_o_m___#___#_______!_
696936 ppt_within_doc@document.com ____6ppt_within_doc@document.com___Dmail
697012 ppt_within_doc@document.com mailto:ppt_within_doc@document.com_______
697094 ppt_within_doc@document.com ____6ppt_within_doc@document.com___Dmail
697170 ppt_within_doc@document.com mailto:ppt_within_doc@document.com___`_/___
736283 ppt_within_doc@document.com __-___This is a ppt_within_doc@document.com Really!________
737114 ppt_within_doc@document.com mailto:ppt_within_doc@document.com__
737238 ppt_within_doc@document.com mailto:ppt_within_doc@document.com__
798484 xls_within_doc@document.com ____________x_l_s___w_i_t_h_i_n___d_o_c_@_d_o_c_u_m_e_n_t_._c_o_m_________________
812228 xls_within_doc@document.com _&___xls_within_doc@document.com____._c_
812742 xls_within_doc@document.com K______________x_l_s___w_i_t_h_i_n___d_o_c_@_d_o_c_u_m_e_n_t_._c_o_m______y_________K
812832 xls_within_doc@document.com mailto:xls_within_doc@document.comyX__;__H_,_]__
814302 xls_within_doc@document.com mailto:xls_within_doc@document.com__
814426 xls_within_doc@document.com mailto:xls_within_doc@document.com__
150251-ZIP-402 user_docx@microsoftword.com Target="mailto:user_docx@microsoftword.com" TargetMode="Ex
150876-ZIP-1012 user_docx@microsoftword.com "/>user_docx@microsoftword.com
222871-ZIP-161 xlsx_cell@microsoft_excel.com ount="1">xlsx_cell@microsoft_excel.com
223096-ZIP-265 xlsx_cell@microsoft_excel.com Target="mailto:xlsx_cell@microsoft_excel.com" TargetMode="Ex
227323-ZIP-433 xlsx_comment@microsoft_excel.com ce="preserve">__xlsx_comment@microsoft_excel.com__
279757-ZIP-347110 pages_comment@iwork09.com nk href="mailto:pages_comment@iwork09.com">
279757-ZIP-347178 pages_comment@iwork09.com aracterStyle-7">pages_comment@iwork09.com
279757-ZIP-349229 pages@iwork09.com nk href="mailto:pages@iwork09.com">
279757-ZIP-349289 pages@iwork09.com aracterStyle-7">pages@iwork09.com
451416-ZIP-1255117 keynote@iwork09.com nk href="mailto:keynote@iwork09.com?subject=">
451416-ZIP-1255189 keynote@iwork09.com racterStyle-38">keynote@iwork09.com
451416-ZIP-1258690 keynote_comment@iwork09.com nk href="mailto:keynote_comment@iwork09.com">
451416-ZIP-1258761 keynote_comment@iwork09.com racterStyle-38">keynote_comment@iwork09.com
548961-ZIP-731705 numbers_comment@iwork09.com nk href="mailto:numbers_comment@iwork09.com">
548961-ZIP-731775 numbers_comment@iwork09.com aracterStyle-1">numbers_comment@iwork09.com
548961-ZIP-738454 numbers_09@apple.com nk href="mailto:numbers_09@apple.com">
548961-ZIP-738517 numbers@iwork09.com aracterStyle-1">numbers@iwork09.com
660769-ZIP-1380 docx_within_docx@document.com ____>_______d_o_c_x___w_i_t_h_i_n___d_o_c_x_@_d_o_c_u_m_e_n_t_._c_o_m_________________
661629-ZIP-1731-ZIP-925 docx_within_docx@document.com Target="mailto:docx_within_docx@document.com" TargetMode="Ex
661629-ZIP-2355-ZIP-889 docx_within_docx@document.com "/>docx_within_docx@document.com
735578-ZIP-265 ppt_within_doc@document.com Target="mailto:ppt_within_doc@document.com" TargetMode="Ex
749860-ZIP-4640 pptx_within_docx@document.com ____________p_p_t_x___w_i_t_h_i_n___d_o_c_x_@_d_o_c_u_m_e_n_t_._c_o_m___#___#_________
751625-ZIP-1868-ZIP-265 pptx_within_docx@document.com Target="mailto:pptx_within_docx@document.com" TargetMode="Ex
751625-ZIP-3418-ZIP-1154 pptx_within_docx@document.com "/>pptx_within_docx@document.com
826652-ZIP-1212 xlsx_within_docx@document.com ____________x_l_s_x___w_i_t_h_i_n___d_o_c_x_@_d_o_c_u_m_e_n_t_._c_o_m_I_______________
827551-ZIP-4350-ZIP-265 xlsx_within_docx@document.com Target="mailto:xlsx_within_docx@document.com" TargetMode="Ex
827551-ZIP-5292-ZIP-161 xlsx_within_docx@document.com ount="1">xlsx_within_docx@document.com
841728-ZIP-258 email_in_zip@zipfile1.com is is a test. __email_in_zip@zipfile1.com__This is a test
842821-ZIP-0 email_in_zip_zip@zipfile2.com email_in_zip_zip@zipfile2.com_
843776-GZIP-0 email_in_gzip@gzipfile.com email_in_gzip@gzipfile.com_
844800-GZIP-0-GZIP-0 email_in_gzip_gzip@gzipfile.com email_in_gzip_gzip@gzipfile.com_
65614-PDF-0 plain_text_pdf@textedit.com plain_text_pdf@textedit.com
76878-PDF-0 rtf_text_pdf@textedit.com rtf_text_pdf@textedit.com
87118-PDF-0 plain_utf16_pdf@textedit.com plain_utf16_pdf@textedit.com

Fazendo uma rápida comparação entre o que foi listado pelos criadores da imagem e o resultado obtido, vemos que apenas 3 codificações não foram encontradas - em itálico abaixo (e que a ferramenta encontrou 2 endereços que não estavam listados pelo autor - sublinhados):

$ cat email-target.txt | awk '{print $1}' | grep . | sort | uniq > objetivo.txt
$ cat email.txt | awk '{print $2}' | sort | uniq > resultado.txt
$ diff objetivo.txt resultado.txt

8a9
> numbers_09@apple.com
22d22
< user_doc_pdf@microsoftword.com
24d23
< user_docx_pdf@microsoftword.com
28d26
< xlsx_cell_comment@microsoft_excel.com
29a28
> xlsx_comment@microsoft_excel.com


Complementando, o resultado presente na saída do bulk_extractor diz respeito ao offset do match específico nos dados que foram processados. Para recuperação dos arquivos relacionados, pode ser utilizado o script iblkfind.py da ferramenta fiwalk (File and Inode Walk Program).


8 comments:

  1. Não conhecia estas ferramentas da afflib. Gostei muito do exemplo prático, testei aqui e consegui reproduzir os resultados em Windows.

    ReplyDelete
  2. suffer não entendi bem o que diz respeito a endereços em várias codificações, pode explicar(resumo) o que seria essa codificação.

    []'s

    ReplyDelete
  3. Anômimos, obrigado pelos comentários.

    Esclarecendo a questão da codificação, trata-se das diferentes formas que a informação pode ser gravada em disco (nos setores e clusters). Um mesmo texto (ou email no caso em pauta) é gravado de forma diferenciada em arquivo de texto puro (ASCII) e em um documento do Word (Unicode) por exemplo

    Para mais detalhes - veja: http://en.wikipedia.org/wiki/Character_encoding

    um abraço!

    S.S.

    ReplyDelete
  4. Suffer, agora entendi a parte da codificação, nesse caso se tratam de clientes de email?
    como outlook e outros.Ou essas aplicações seriam do conteudo em anexo com a respectiva aplicação?

    Ex.:

    email aplicação
    oc_within_doc@document.com Microsoft Word 2007 (OLE .doc file withi
    email_in_zip@zipfile1.com text file within ZIP

    ReplyDelete
  5. Suffer, me reponde uma coisa, o arquivo que foi usado para fazer a extração "nps-2010-emails.E01", diz respeito a que arquivo mesmo. É um dump de memória? É uma imagem de alguma aplicação tipo numbers 09? Ou algum arquivo de documento, tipo microsoft word?

    macedo

    ReplyDelete
  6. Macedo, este arquivo .E01 é uma arquivo de evidência, que contém a cópia bit a bit de uma mídia (HD, por exemplo) a ser analisada..

    [ ]s,

    Sandro Süffert

    ReplyDelete
  7. Sandro eu nunca vi email com usuario e dominio como estes? e se esses email tem algum conteudo em anexo ou só conteudo sem anexo?

    Paulo Norman

    ReplyDelete
  8. Paulo, neste caso específico, trata-se de uma massa de dados gerada exatamente para testar a capacidade de ferramentas em detectarem os endereços de email em diferentes codificações (encodings)..

    [ ]s,

    ReplyDelete