
Um kit de ferramentas forense para coleta e análise de evidências para OS X

O OSXCollector é um kit de ferramentas forenses de coleta e análise de evidências para OSX.
O script de coleta é executado em uma máquina potencialmente infectada e gera um arquivo JSON que descreve a máquina alvo. O OSXCollector coleta informações de plists, bancos de dados SQLite e do sistema de arquivos local.
Munido da coleta forense, um analista pode responder perguntas como:
O Yelp automatiza a análise da maioria das execuções do OSXCollector, convertendo sua saída em um resumo legível e acionável de apenas os itens suspeitos. Confira o projeto Filtros de Saída do OSXCollector para aprender como aproveitar ao máximo a análise automatizada da saída do OSXCollector.
osxcollector.py é um único arquivo Python que é executado sem dependências em uma máquina OSX padrão. Isso torna muito fácil executar a coleta em qualquer máquina – sem complicações com brew, pip, arquivos de configuração ou variáveis de ambiente. Basta copiar o único arquivo para a máquina e executá-lo:
sudo osxcollector.py é tudo o que é preciso.
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz
Se você acabou de clonar o repositório GitHub, osxcollector.py está dentro do diretório osxcollector/, então você precisa executá-lo como:
$ sudo osxcollector/osxcollector.py
IMPORTANTE: certifique-se de que o comando python na sua máquina Mac OS X use o interpretador Python padrão fornecido com o sistema e não seja substituído, por exemplo, pela versão do Python instalada através do brew. O OSXCollector depende de algumas ligações nativas do Python para bibliotecas do OS X, que podem não estar disponíveis em outras versões do Python que não a originalmente instalada no seu sistema.
Alternativamente, você pode executar osxcollector.py especificando explicitamente a versão do Python que você deseja usar:
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py
A saída JSON do coletor, junto com alguns arquivos úteis como logs do sistema, foi compactada em um .tar.gz para entrega a um analista.
osxcollector.py também tem muitas opções úteis para alterar como a coleta funciona:
-i INCIDENT_PREFIX/--id=INCIDENT_PREFIX:
Define um identificador que é usado como prefixo do arquivo de saída. O valor padrão é osxcollect.
$ sudo osxcollector.py -i IncontinentSealord
Wrote 35394 lines.
Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
Seja criativo com os nomes de incidente, isso torna mais fácil rir da dor.
-p ROOTPATH/--path=ROOTPATH:
Define o caminho para a raiz do sistema de arquivos no qual executar a coleta. O valor padrão é /. Isso é ótimo para executar a coleta na imagem de um disco.
$ sudo osxcollector.py -p '/mnt/powned'
-s SECTION/--section=SECTION:
Executa apenas uma parte da coleta completa. Pode ser especificado mais de uma vez. A lista completa de seções e subseções é:
versionsystem_infokextstartup
launch_agentsscripting_additionsstartup_itemslogin_itemsapplications
applicationsinstall_historyquarantinesdownloads
downloadsemail_downloadsold_email_downloadschrome
historyarchived_historycookieslogin_datatop_sitesweb_datadatabaseslocal_storagepreferencesfirefox
cookiesdownloadsformhistoryhistorysignonspermissionsaddonsextensioncontent_prefshealth_reportwebapps_storejson_filessafari
downloadshistoryextensionsdatabaseslocalstorageextension_filesaccounts
system_adminssystem_userssocial_accountsrecent_itemsmailfull_hash$ sudo osxcollector.py -s 'startup' -s 'downloads'
-c/--collect-cookies:
Coleta o valor dos cookies. Por padrão, o OSXCollector não despeja o valor de um cookie, pois pode conter informações sensíveis (ex.: id de sessão).
-l/--collect-local-storage:
Coleta os valores armazenados no armazenamento local dos navegadores web. Por padrão, o OSXCollector não despeja os valores, pois podem conter informações sensíveis.
-d/--debug:
Ativa a saída detalhada e pontos de parada do Python. Se algo estiver errado com o OSXCollector, tente isso.
$ sudo osxcollector.py -d
O coletor gera um .tar.gz contendo todos os artefatos coletados. O arquivo contém um arquivo JSON com a maioria das informações. Além disso, um conjunto de logs úteis dos logs do sistema alvo é incluído.
Cada linha do arquivo JSON registra 1 informação. Existem algumas chaves comuns que aparecem em todos os registros JSON:
osxcollector_incident_id: Um ID único compartilhado por todos os registros.osxcollector_section: A seção ou tipo de dado que este registro contém.osxcollector_subsection: A subseção ou descritor mais detalhado do tipo de dado que este registro contém.Para registros que representam arquivos, há várias chaves úteis:
atime: O tempo de acesso ao arquivo.ctime: O tempo de criação do arquivo.mtime: O tempo de modificação do arquivo.file_path: O caminho absoluto para o arquivo.md5: Hash MD5 do conteúdo do arquivo.sha1: Hash SHA1 do conteúdo do arquivo.sha2: Hash SHA2 do conteúdo do arquivo.Para registros que representam arquivos baixados:
xattr-wherefrom: Uma lista contendo as URLs de origem e de referência para o arquivo baixado.xattr-quarantines: Uma string descrevendo qual aplicativo baixou o arquivo.Para registros que representam uma linha de um banco de dados SQLite:
osxcollector_table_name: O nome da tabela de onde a linha vem.osxcollector_db_path: O caminho absoluto para o arquivo SQLite.Para registros que representam dados associados a um usuário específico:
osxcollector_username: O nome do usuárioO OSXCollector tenta converter carimbos de data/hora em strings de data/hora legíveis por humanos no formato YYYY-mm-dd hh:MM:ss. Ele usa heurísticas para identificar automaticamente vários carimbos:
versionA versão atual do OSXCollector.
system_infoColeta informações básicas sobre o sistema:
kextColeta as extensões do kernel de:
/System/Library/Extensions/Library/ExtensionsstartupColeta informações sobre os LaunchAgents, LaunchDaemons, ScriptingAdditions, StartupItems e outros itens de login de: