
Framework de resposta a incidentes para macOS baseado em Swift para coletar e analisar artefatos do host, incluindo timestamps do sistema de arquivos, dados do navegador, logs unificados, mecanismos de persistência e árvores de processos, com análise integrada e geração de timeline.

Aftermath é um framework de resposta a incidentes de código aberto baseado em Swift.
Aftermath pode ser utilizado por defensores para coletar e posteriormente analisar dados de um host comprometido. Pode ser implantado a partir de um MDM (idealmente), mas também pode ser executado de forma independente a partir da linha de comando do usuário infectado.
Aftermath primeiro executa uma série de módulos para coleta. A saída será gravada no local de sua escolha, através da opção -o ou --output, ou, por padrão, no diretório /tmp.
Uma vez concluída a coleta, o arquivo zip/archive final pode ser extraído do disco do usuário final. Esse arquivo pode então ser analisado usando o argumento --analyze apontado para o arquivo. Os resultados serão gravados no diretório /tmp. O administrador pode então descompactar esse diretório de análise e ver uma visão interpretada dos bancos de dados coletados localmente, uma linha do tempo dos arquivos com as datas de criação, último acesso e última modificação (se disponíveis), e uma narrativa que inclui metadados de arquivos, alterações no banco de dados e informações do navegador para potencialmente rastrear o vetor de infecção.
Para compilar o Aftermath localmente, clone-o do repositório
git clone https://github.com/jamf/aftermath.git
cd para o diretório do Aftermath
cd <caminho_para_o_diretório_aftermath>
Compile usando Xcode
xcodebuild -scheme "aftermath"
cd para a pasta Release
cd build/Release
Execute o aftermath
sudo ./aftermath
Aftermath precisa ser executado como root e ter acesso total ao disco (FDA) para funcionar. O FDA pode ser concedido ao aplicativo Terminal no qual está sendo executado.
O uso padrão do Aftermath é
sudo ./aftermath
Para especificar certas opções
sudo ./aftermath [opção1] [opção2]
Exemplos
sudo ./aftermath -o /Users/user/Desktop --deep
sudo ./aftermath --analyze <caminho_para_o_zip_de_coleta>
Os usuários têm a capacidade de passar para o Aftermath um arquivo de texto com predicados de log unificado usando os argumentos --logs ou -l. O arquivo passado para o Aftermath deve ser um arquivo de texto e cada predicado precisa ser separado por nova linha. Além disso, cada item de linha será um objeto dicionário. A chave no dicionário será o que o usuário desejar chamar este predicado. Por exemplo, se você quiser ver todos os eventos de login, criaremos um predicado e o intitularemos login_events.
login_events: processImagePath contains "loginwindow" and eventMessage contains "com.apple.sessionDidLogin
tcc: process == "tccd"
Como eslogger e tcpdump são executados em threads adicionais e o objetivo é coletar o máximo de dados possível deles, eles são encerrados quando o aftermath é finalizado. Por isso, a última linha do arquivo json do eslogger ou do arquivo pcap gerado pelo tcpdump pode estar truncada.
Há um Aftermath.pkg disponível em Releases. Este pkg está assinado e notarizado. Ele instalará o binário aftermath em /usr/local/bin/. Esta seria a forma ideal de implantar via MDM. Como está instalado em bin, você pode então executar o aftermath como
sudo aftermath [opção1] [opção2]
Para desinstalar o binário aftermath, execute o AftermathUninstaller.pkg a partir de Releases. Isso desinstalará o binário e também executará aftermath --cleanup para remover os diretórios do aftermath. Se houver diretórios do aftermath em outros locais, devido ao uso do comando --output, é de responsabilidade do usuário/administrador removê-los.
--analyze -> analisar os resultados da coleta do Aftermath
uso: --analyze <caminho_para_o_arquivo_de_coleta_aftermath>
--collect-dirs -> especificar locais (separados por espaço) de diretórios para despejar esses arquivos brutos
uso: --collect-dirs <caminho_para_dir> <caminho_para_outro_dir>
--deep ou -d -> realizar uma varredura profunda do sistema de arquivos em busca de metadados com timestamp de modificação e acesso
AVISO: Esta varredura consumirá muito tempo e memória.
--disable -> desabilitar um conjunto de recursos do aftermath que podem coletar dados pessoais do usuário
Recursos disponíveis para desabilitar: browsers -> coletar informações do navegador | browser-killswitch -> forçar fechamento de navegadores | databases -> bancos de dados tcc e lsquarantine | filesystem -> percorrer o sistema de arquivos para timestamps | proc-info -> coletar informações de processos via TrueTree e eslogger | slack -> dados do slack | ul -> módulos de log unificado | all -> todas as opções mencionadas
uso: --disable browsers browser-killswitch databases filesystem proc-info slack
--disable all
--es-logs -> especificar quais eventos do Endpoint Security (separados por espaço) coletar (padrões são: create exec mmap). Para desabilitar, veja --disable es-logs
uso: --es-logs setuid unmount write
--logs -> especificar um arquivo de texto externo com predicados de log unificado (como objetos dicionário) para analisar
uso: --logs /Users/<USUÁRIO>/Desktop/meusPredicados.txt
-o ou --output -> especificar um local de saída para os resultados da coleta do Aftermath (padrão é /tmp)
uso: -o Users/user/Desktop
--pretty -> colorir a saída do Terminal
--cleanup -> remover pastas do Aftermath de locais padrão ("/tmp", "/var/folders/zz/")
Este projeto utiliza o projeto de código aberto TrueTree, escrito e licenciado por Jaron Bradley.