OS X Auditor

OS X Auditor é uma ferramenta forense gratuita para Mac OS X.
O OS X Auditor analisa e gera hashes dos seguintes artefatos no sistema em execução ou em uma cópia de um sistema que você deseja analisar:
- as extensões do kernel
- os agentes e daemons do sistema
- os agentes e daemons de terceiros
- os itens de inicialização antigos e obsoletos do sistema e de terceiros
- os agentes dos usuários
- os arquivos baixados pelos usuários
- os aplicativos instalados
Ele extrai:
- os arquivos em quarentena dos usuários
- o histórico do Safari, downloads, topsites, LastSession, bancos de dados HTML5 e armazenamento local dos usuários
- os cookies, downloads, formhistory, permissions, places e signons do Firefox dos usuários
- o histórico e histórico arquivado, cookies, dados de login, top sites, web data, bancos de dados HTML5 e armazenamento local do Chrome dos usuários
- as contas sociais e de e-mail dos usuários
- os pontos de acesso Wi-Fi aos quais o sistema auditado foi conectado (e tenta geolocalizá-los)
Ele também procura por palavras-chave suspeitas nos próprios .plist.
Ele pode verificar a reputação de cada arquivo em:
- MHR da Team Cymru
- VirusTotal
- seu próprio banco de dados local
Ele pode agregar todos os logs dos seguintes diretórios em um zipball:
- /var/log (-> /private/var/log)
- /Library/logs
- o ~/Library/logs do usuário
Finalmente, os resultados podem ser:
- renderizados como um arquivo de log txt simples (para que você possa cat-pipe-grep neles… ou apenas grep)
- renderizados como um arquivo de log HTML
- enviados para um servidor Syslog
Autor
Jean-Philippe Teissier - @Jipe_ & al.
Status do desenvolvimento
OS X Auditor NÃO É MAIS MANTIDO - VOCÊ NÃO DEVE USÁ-LO
Suporte
O OS X Auditor começou como um projeto de fim de semana e não é mais mantido. Ele foi bifurcado pelos grandes caras da Yelp, que criaram o osxcollector.
Recomendo que você use o osxcollector (https://github.com/Yelp/osxcollector)
Como instalar
Apenas copie todos os arquivos do GitHub.
Dependências
Se você planeja executar o OS X Auditor em um Mac, terá suporte completo à análise de plist com o OS X Foundation através do pyobjc:
Se você não puder instalar o pyobjc ou se planeja executar o OS X Auditor em outro sistema operacional que não o Mac OS X, poderá encontrar alguns problemas com a análise de plist:
pip install biplist
pip install plist
Essas dependências serão removidas quando um módulo plist nativo funcional estiver disponível em Python.
Como executar
- O OS X Auditor funciona bem com Python >= 2.7.2 (2.7.9 está OK). Ele não funciona com uma versão diferente do Python ainda (devido ao pesadelo do plist).
- O OS X Auditor é mantido para funcionar na versão mais recente do OS X. Ele fará o possível em versões mais antigas do OS X.
- Você deve executá-lo como root (ou via sudo) se quiser usá-lo em um sistema em execução, caso contrário, não conseguirá acessar alguns arquivos do sistema e de outros usuários.
- Se você estiver usando chaves de API de variáveis de ambiente (veja abaixo), precisa usar o
sudo -E para usar as variáveis de ambiente do usuário.
Digite osxauditor.py -h para obter todas as opções disponíveis, depois execute-o com as opções selecionadas.
Ex: [sudo -E] python osxauditor.py -a -m -l localhashes.db -H log.html
Definindo Variáveis de Ambiente
VirusTotal API:
export VT_API_KEY=aaaabbbbccccddddeeee
Changelog
0.4.3
0.4.2
- CHANGE: chaves de API movidas do código para variáveis de ambiente
0.4.1
- CHANGE: busca por backdoors genéricos em LaunchAgentPlist
0.4
- NEW: extrai eventos (inicialização/desligamento, hibernação ativada/desativada, comandos sudo, dispositivos USB, ttys abertos/fechados, dos logs do sistema e cria uma linha do tempo (ainda não legível) (-e/eventlogs)
- NEW: extrai os LoginItems dos usuários
- NEW: extrai os RecentItems dos usuários
- NEW: extrai o LastSession dos artefatos do Safari
- NEW: extrai detalhes de grupos e usuários do sistema
- FIX: chamadas incorretas de os.path.join()
- FIX: bug no ParsePackagesDir() recursivo
0.3.1
- NEW: fornece o nome, versão e build do sistema auditado
- NEW: capacidade de analisar aplicativos instalados (-i/--installedapps)
- NEW: extrai o Histórico Arquivado dos artefatos do Google Chrome
- NEW: um relatório de log HTML legível por humanos :)
- FIX: HTMLLog() e SYSLOGLog() agora tratam exceções
- FIX: ParsePackagesDir() agora é recursivo e só tenta analisar aplicativos ou extensões do kernel. Alguma saída de DEBUG adicionada também
- FIX: GRANDE melhoria em UTF-8/UNICODE
- FIX: arquivos .DS_Store e .localized são ignorados em ParsePackagesDir()
0.3
- NEW: capacidade de analisar artefatos do Google Chrome (Histórico e histórico arquivado, Cookies, Login Data, Top Sites, Web Data, bancos de dados HTML5 e armazenamento local) com -b/--browsers
- NEW: capacidade de extrair os pontos de acesso Wi-Fi aos quais o sistema auditado foi conectado a partir das Preferências do Airport e tentar geolocalizá-los usando Geomena (-A/--airportprefs). Você deve usar -g/--wifiapgeolocate para habilitar a geolocalização (ou definir GEOLOCATE_WIFI_AP como True no código).
- NEW: capacidade de extrair contas sociais e de e-mail dos usuários (-U/--usersaccounts)
- FIX: capacidade de lidar com bancos de dados sqlite bloqueados, especialmente ao auditar um sistema ativo
- FIX: duplicatas de hashes removidas
- FIX: melhor identificação de md5 na saída HTML
- CHANGE: indica se uma seção (Itens de inicialização, Diretório de pacotes, Tabelas de banco de dados, etc.) está vazia para esclarecer a saída
- CHANGE: os artefatos de downloads (-d/--downloads) incluem os diretórios de download padrão antigos e novos do Mail.app
0.2.1
- CHANGE/FIX: implementa uma função BigFileMd5() para hashear arquivos muito grandes, evitar exceções de MemoryError e reduzir o uso de memória
- FIX: entradas UTF-8 de LSQuarantineEvent em ParseQuarantines()
0.2
- NEW: capacidade de enviar os resultados para um servidor syslog remoto (-S)
- NEW: capacidade de criar um zipball de todos os arquivos de log encontrados no sistema auditado (-z)
- CHANGE: a análise de artefatos de inicialização inclui os itens de inicialização antigos e obsoletos (StartupItems)
- CHANGE: a análise de artefatos de inicialização inclui as ScriptingAdditions
- CHANGE: a análise de artefatos em quarentena inclui o antigo QuarantineEvents para sistemas Mac OS X <= 10.6
- CHANGE: grande melhoria no manuseio de plist usando a ponte Python ⟷ Objective-C (PyObjC) e OS X Foundation
- CHANGE: algumas alterações nos parâmetros de opções (-t, -l)
- CHANGE: licença alterada de CC para GPL
- CHANGE: níveis de debug agora são mais consistentes nos logs de saída
- CHANGE: uma pequena alteração no CSS do Bootstrap
- CHANGE: a verificação no VirusTotal agora é feita em modo bulk
- FIX: um bug em ParseLaunchAgents() em arquivos plist contendo ambas as chaves Program e ProgramArguments
0.1
Design e Capacidades

Artefatos
Usuários
-
Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
-
Library/Preferences/com.apple.LaunchServices.QuarantineEvents
-
Library/Preferences/com.apple.loginitems.plist
-
Library/Mail Downloads/
-
Library/Containers/com.apple.mail/Data/Library/Mail Downloads
-
Library/Accounts/Accounts3.sqlite
-
Library/Containers/com.apple.mail/Data/Library/Mail/V2/MailData/Accounts.plist
-
Library/Preferences/com.apple.recentitems.plist
-
Firefox
- Library/Application Support/Firefox/Profiles/
- cookies.sqlite
- downloads.sqlite
- formhistory.sqlite
- places.sqlite
- signons.sqlite
- permissions.sqlite
- addons.sqlite
- extensions.sqlite
- content-prefs.sqlite
- healthreport.sqlite
- webappsstore.sqlite
- Library/Safari/
- Downloads.plist
- History.plist
- TopSites.plist
- LastSession.plist
- Databases
- LocalStorage
- Library/Application Support/Google/Chrome/Default/
- History
- Archived History
- Cookies
- Login Data
- Top Sites
- Web Data
- databases
- Local Storage
Sistema
- /System/Library/LaunchAgents/
- /System/Library/LaunchDaemons/
- /System/Library/ScriptingAdditions/
- /System/Library/StartupItems/Library/ScriptingAdditions/
- /System/Library/Extensions/
- /System/Library/CoreServices/SystemVersion.plist
- /Library/LaunchAgents/
- /Library/LaunchDaemons/
- /Library/StartupItems/
- /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
- /Library/logs
- /var/log
- /etc/localtime
- StartupParameters.plist
- /private/var/db/dslocal/nodes/Default/groups/admin.plist
- /private/var/db/dslocal/nodes/Default/users
TODO
- extrair informações do usuário de /private/var/db/dslocal/nodes/Default/users
Trabalhos relacionados
Disk Arbitrator
Disk Arbitrator é um utilitário forense para Mac OS X projetado para ajudar o usuário a garantir que procedimentos forenses corretos sejam seguidos durante a imagem de um dispositivo de disco. Disk Arbitrator é essencialmente uma interface de usuário para o framework Disk Arbitration, que permite a um programa participar do gerenciamento de dispositivos de armazenamento de bloco, incluindo a montagem automática de sistemas de arquivos. Quando ativado, o Disk Arbitrator bloqueará a montagem de sistemas de arquivos para evitar montagem como leitura e escrita, violando a integridade das evidências.
https://github.com/aburgh/Disk-Arbitrator
Volafox
volafox, também conhecido como 'Mac OS X Memory Analysis Toolkit', é desenvolvido em Python 2.x
https://code.google.com/p/volafox/
Mandiant Memoryze(tm) para Mac
Memoryze para Mac é um software forense de memória gratuito que ajuda os respondedores de incidentes a encontrar o mal na memória… em Macs.
Memoryze para Mac pode adquirir e/ou analisar imagens de memória. A análise pode ser realizada em imagens de memória offline ou em sistemas ativos.
http://www.mandiant.com/resources/download/mac-memoryze
Volatility MacMemoryForensics
https://code.google.com/p/volatility/wiki/MacMemoryForensics
Licença
OS X Auditor
Copyright (C) 2013-2015 Jean-Philippe Teissier
Este programa é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior.
Este programa é distribuído na esperança de que seja útil, mas SEM NENHUMA GARANTIA; sem mesmo a garantia implícita de COMERCIABILIDADE ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, consulte http://www.gnu.org/licenses/.
Bootstrap e JQuery possuem suas próprias licenças compatíveis com GPL.