Browse By

OSXCollector – Um conjunto de ferramentas de coleta e análise de evidências forenses para OS X

OSXCollector é um conjunto de ferramentas de coleta e análise de evidências forenses para OSX. 

Coleção Forense
O script de coleção é executado em uma máquina potencialmente infectada e gera um arquivo JSON que descreve a máquina de destino. O OSXCollector reúne informações de listas, bancos de dados SQLite e sistema de arquivos local.

Análise Forense
Armado com a coleção forense, um analista pode responder à pergunta como:

  • Esta máquina está infectada?
  • Como esse malware chegou lá?
  • Como posso prevenir e detectar mais infecções?

O Yelp automatiza a análise da maioria das execuções do OSXCollector, convertendo sua saída em um resumo facilmente legível e acionável das coisas suspeitas . Confira o projeto Filtros de Saída OSXCollector para aprender como aproveitar ao máximo a análise de saída automatizada do OSXCollector. 

Performing Collection
osxcollector.py é um único arquivo Python que é executado sem nenhuma dependência em uma máquina OSX padrão. Isso facilita muito a execução da coleção em qualquer máquina – sem preocupações com a mistura, pip, arquivos de configuração ou variáveis ​​de ambiente. Basta copiar o arquivo único 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.pyestá dentro do osxcollector/diretório, então você precisa executá-lo como:

$ sudo osxcollector/osxcollector.py

IMPORTANTE: verifique se o pythoncomando na sua máquina Mac OS X usa o interpretador Python padrão fornecido com o sistema e não é substituído, por exemplo, pela versão 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 aquela originalmente instalada no seu sistema. Como alternativa, você pode executar osxcollector.pyexplicitamente especificando a versão do Python que gostaria de usar:

$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py

A saída JSON do coletor, juntamente com alguns arquivos úteis, como logs do sistema, foi empacotada em um arquivo .tar.gz para transferência para um analista. 
osxcollector.pytambém possui muitas opções úteis para alterar o funcionamento da coleção:

  • -i INCIDENT_PREFIX--id=INCIDENT_PREFIX: Define um identificador 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.gzSeja criativo com nomes de incidentes, pois é mais fácil rir da dor.
  • -p ROOTPATH--path=ROOTPATH: Define o caminho para a raiz do sistema de arquivos para executar a coleção. O valor padrão é /. Isso é ótimo para executar a coleção na imagem de um disco.
    $ sudo osxcollector.py -p '/mnt/powned'
  • -s SECTION--section=SECTION: Executa apenas uma parte da coleção completa. Pode ser especificado mais de uma vez. A lista completa de seções e subseções é:
    • version
    • system_info
    • kext
    • startup
      • launch_agents
      • scripting_additions
      • startup_items
      • login_items
    • applications
      • applications
      • install_history
    • quarantines
    • downloads
      • downloads
      • email_downloads
      • old_email_downloads
    • chrome
      • history
      • archived_history
      • cookies
      • login_data
      • top_sites
      • web_data
      • databases
      • local_storage
      • preferences
    • firefox
      • cookies
      • downloads
      • formhistory
      • history
      • signons
      • permissions
      • addons
      • extension
      • content_prefs
      • health_report
      • webapps_store
      • json_files
    • safari
      • downloads
      • history
      • extensions
      • databases
      • localstorage
      • extension_files
    • accounts
      • system_admins
      • system_users
      • social_accounts
      • recent_items
    • mail
    • full_hash$ sudo osxcollector.py -s 'startup' -s 'downloads'
  • -c--collect-cookies: Coleta o valor dos cookies. Por padrão, o OSXCollector não descarta o valor de um cookie, pois pode conter informações confidenciais (por exemplo, ID da sessão).
  • -l--collect-local-storage: Colete os valores armazenados no armazenamento local dos navegadores da web. Por padrão, o OSXCollector não despeja os valores, pois eles podem conter informações confidenciais.
  • -d--debug: Ativa pontos de interrupção detalhados de saída e python. Se algo estiver errado com o OSXCollector, tente isso.
    $ sudo osxcollector.py -d

Detalhes da coleção
O coletor gera a.tar.gzcontendo 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 de destino está incluído. 

Chaves comuns a 

cada registro
Cada linha do arquivo JSON registra 1 parte de informação . Existem algumas chaves comuns que aparecem em todos os registros JSON:

  • osxcollector_incident_id: Um ID exclusivo compartilhado por cada registro.
  • osxcollector_section: A seção ou tipo de dados que esse registro contém.
  • osxcollector_subsection: A subseção ou descritor mais detalhado do tipo de dados que esse registro mantém.

Registros de arquivo
Para registros que representam arquivos, existem várias chaves úteis:

  • atime: O tempo de acesso ao arquivo.
  • ctime: A hora de criação do arquivo.
  • mtime: O horário da 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 representando arquivos baixados:

  • xattr-wherefrom: Uma lista que contém os URLs de origem e de referência do arquivo baixado.
  • xattr-quarantines: Uma sequência que descreve qual aplicativo baixou o arquivo.

Registros SQLite
Para registros que representam uma linha de um banco de dados SQLite:

  • osxcollector_table_name: O nome da tabela da qual 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ário


Registros de data e hora O OSXCollector tenta converter registros de data e hora em seqüências de data / hora legíveis por humanos no formato YYYY-mm-dd hh:MM:ss. Ele usa heurísticas para identificar automaticamente vários registros de data e hora:

  • segundos desde a época
  • milissegundos desde a época
  • segundos desde 01-01-2001
  • segundos desde 1601-01-01

versionSeção Seções
A versão atual do OSXCollector. 

system_infoseção
Coleta informações básicas sobre o sistema:

  • nome do sistema
  • nome do nó
  • liberação
  • versão
  • máquina

kextseção
Coleta as extensões do Kernel de:

  • /System/Library/Extensions
  • /Library/Extensions

startupseção
Coleta informações sobre os LaunchAgents , LaunchDaemons, ScriptingAdditions, StartupItems e outros itens de logon em:

  • /System/Library/LaunchAgents
  • /System/Library/LaunchDaemons
  • /Library/LaunchAgents
  • ~/Library/LaunchAgents
  • /Library/LaunchDaemons
  • /System/Library/ScriptingAdditions
  • /Library/ScriptingAdditions
  • /System/Library/StartupItems
  • /Library/StartupItems
  • ~/Library/Preferences/com.apple.loginitems.plist

Mais informações sobre a inicialização do Max OS X podem ser encontradas aqui: http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf 

applicationsseção
Hashes aplicativos instalados e reúne o histórico de instalações de:

  • /Applications
  • ~/Applications
  • /Library/Receipts/InstallHistory.plist

quarantinesseção
Quarentena são basicamente as informações necessárias para mostrar a mensagem ‘Tem certeza de que deseja executar isso?’ quando um usuário está tentando abrir um arquivo baixado da Internet. Para obter mais detalhes, consulte a explicação do Suporte da Apple para quarentenas: http://support.apple.com/kb/HT3662
Esta seção também coleta informações da verificação de malware baseado em hash XProtect para arquivos de quarentena. A lista está em: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist
XProtect também adiciona versões mínimas para plug-ins da Internet. Essa lista está em:/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist

downloadsseção
Hashes arquivos baixados de todos os usuários em:

  • ~/Downloads
  • ~/Library/Mail Downloads
  • ~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads

chromeseção
Coleta as seguintes informações do navegador Google Chrome:

  • História
  • História arquivada
  • Biscoitos
  • Extensões
  • Dados de login
  • Melhores sites
  • Dados da Web

Esses dados são extraídos da ~/Library/Application Support/Google/Chrome/Default

firefoxseção
Coleta informações dos diferentes bancos de dados SQLite em um perfil do Firefox:

  • Biscoitos
  • Transferências
  • Histórico do formulário
  • História
  • Signons
  • Permissões
  • Addons
  • Extensões
  • Preferências de Conteúdo
  • Relatório de saúde
  • Loja Webapps

Essas informações são extraídas de ~/Library/Application Support/Firefox/Profiles
Para obter mais detalhes sobre a pasta de perfil do Firefox, consulte a seção http://kb.mozillazine.org/Profile_folder_-_FirefoxColeta informações dos diferentes plists e bancos de dados SQLite em um perfil do Safari:

safari

  • Transferências
  • História
  • Extensões
  • Bases de dados
  • Armazenamento local

accountsseção
Coleta informações sobre as contas dos usuários:

  • administradores do sistema: /private/var/db/dslocal/nodes/Default/groups/admin.plist
  • usuários do sistema: /private/var/db/dslocal/nodes/Default/users
  • contas sociais: ~/Library/Accounts/Accounts3.sqlite
  • itens recentes dos usuários: ~/Library/Preferences/com.apple.recentitems.plist

mailseção
Hashes arquivos nos diretórios do aplicativo de email:

  • ~/Library/Mail
  • ~/Library/Mail Downloads

full_hashseção
Hashes todos os arquivos no disco. Todos eles. Isso não é executado por padrão. Deve ser acionado com:

$ sudo osxcollector.py -s full_hash

Análise manual básica A análise
forense é um pouco de arte e um pouco de ciência. Todo analista verá uma história um pouco diferente ao ler a saída do OSXCollector. Isso faz parte do que torna a análise divertida. 
Geralmente, a coleta é realizada em uma máquina de destino porque algo é hinky: o antivírus encontrou um arquivo que não gosta, a inspeção profunda de pacotes observou uma chamada, o monitoramento do ponto de extremidade notou um novo item de inicialização. Os detalhes desse alerta inicial – um caminho de arquivo, um carimbo de data / hora, um hash, um domínio, um IP etc. – são suficientes para prosseguir. Registros de

data e hora
Simplesmente cumprimentar alguns minutos antes e depois de um registro de data e hora funciona muito bem:

$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'

Histórico do navegador
Está lá. Uma ferramenta como o jq pode ser muito útil para obter resultados sofisticados:

$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'

Um único usuário

$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'

Análise automatizada
O projeto OSXCollector Output Filters contém filtros que processam e transformam a saída do OSXCollector. O objetivo dos filtros é facilitar a análise da saída do OSXCollector. 

Dicas de Desenvolvimento
A funcionalidade do OSXCollector é armazenado em um único arquivo:osxcollector.py. O coletor deve ser executado em uma instalação simples do OS X sem nenhum pacote ou dependência adicional. 
Certifique-se de que todos os testes do OSXCollector sejam aprovados antes de editar o código-fonte. Você pode executar os testes usando:make test
Após fazer alterações no código-fonte, executemake testnovamente para verificar se suas alterações não interromperam nenhum dos testes. 

Licença
Este trabalho está licenciado sob a GNU General Public License e uma derivação dehttps://github.com/jipegit/OSXAuditor 

Postagem no blog

Apresentações

Apresentações externas

Recursos
Deseja saber mais sobre a análise forense do OS X?

Algumas outras ferramentas interessantes:

  • KnockKnock – KnockKnock é um script python de linha de comando que exibe binários persistentes do OS X configurados para serem executados automaticamente em cada inicialização.
  • Grr – Google Rapid Response: análise forense remota ao vivo para resposta a incidentes
  • osquery – instrumentação, monitoramento e análise de sistema operacional com SQL

Baixar Osxcollector

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.