Dentro dos processos de forense digital, um dos pontos-chave é a linha do tempo. Seu objetivo é tentar determinar a ordem em que ocorreram os eventos nos sistemas afetados tipicamente por uma intrusão maliciosa.
O cronograma inclui uma série de análise, que deverá ser revisados dezenas de logs do servidor web, histórico de navegação, o envio de e-mails, logs de auditoria de objetos do sistema, se foram criados os documentos de metadados, excluído ou modificado, e assim por diante.
No post de hoje, como um exemplo, demonstrar em uma lista de documentos PDF encontrado em um computador Windows, para, em seguida, analisar todos os metadados e gerar o cronograma.
O primeiro programa que iremos usar é o linha-temporal-pdf.bat. O seu primeiro objectivo será o de listar todos os documentos PDF na unidade de disco rígido, e armazená-los em um arquivo de texto (que pode então hashear). Isso vai ter sucesso com uma declaração como a seguinte:
dir C:\ /s /B | find “.pdf” > PDF-documents.txt
Onde você pode substituir “C: \” para o caminho onde a unidade flash, disco rígido ou partição a partir da qual podemos calcular a linha do tempo de documentos PDF.
Em seguida, chamar um segundo programa, desta vez desenvolvido em Python, que é responsável em extrair seus metadados. Para fazer isso, vamos recorrer de volta para o Bat, com um loop FOR, agora el;e vai ler os documentos relacionados ao arquivo gerado PDF-documents.txt antes:
FOR /F “tokens=*” %%A IN (PDF-documents.txt) DO python.exe forensic-pdf.py -F %%A
Simples, não é? O código BAT final seria algo parecido com isto:
dir C:\ /s /B | find “.pdf” > PDF-documents.txt
@ECHO OFF
FOR /F “tokens=*” %%A IN (PDF-documents.txt) DO python.exe forensic-pdf.py -F %%A
Agora, vamos falar do software “forensic-pdf.py”, a fim de dada o caminho do local onde você ter localizado um documento, extrair toda a informação possível sobre seus metadados
Para este trabalho, vamos utilizar bibliotecas PyPDF2, que você pode baixar a partir do seguinte link:
https://pypi.python.org/pypi/PyPDF2
Com essa biblioteca você pode facilmente, chamando a função getDocumentInfo (), remover todos os metadados de um PDF.
O código a seguir vai demonstrar um exemplo de uso, o que lhe permitirá acompanhar como extrair os metadados de todos os documentos PDF hospedado em um computador:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import PyPDF2
import optparse
from PyPDF2 import PdfFileReader
def meta(fileName):
pdff = PdfFileReader(file(fileName, ‘rb’))
doc = pdff.getDocumentInfo()
print ‘Doc: ‘ + str(fileName)
for metai in doc:
print ‘- ‘ + metai + ‘:’ + doc[metai]
def main():
parser = optparse.OptionParser(‘usage %prog “+\
“-F <PDF file name>’)
parser.add_option(‘-F’, dest=’filename’, type=’string’,\
help=’PDF file name’)
(options, args) = parser.parse_args()
filename = options.filename
if filename == None:
print parser.usage
exit(0)
else:
meta(filename)
if __name__ == ‘__main__’:
main()
A saída seria semelhante à que se segue:
Definitivamente uma maneira rápida de construir um cronograma de documentos PDF em um sistema. Agora você pode jogar com o código python e modificar a saída para atender às suas necessidade de relatórios ou de exportação em algum formato CSV tipo, por exemplo, aplicar filtros para o Excel. As possibilidades são infinitas.