Aftermath é uma estrutura de resposta a incidentes de código aberto e baseada em Swift.
As consequências podem ser aproveitadas pelos defensores para coletar e posteriormente analisar os dados do host comprometido. O Aftermath pode ser implantado a partir de um MDM (idealmente), mas também pode ser executado independentemente da linha de comando do usuário infectado.
O Aftermath primeiro executa uma série de módulos para coleta. A saída será gravada no local de sua escolha, por meio da opção -o
ou --output
, ou, por padrão, será gravada no diretório /tmp
.
Assim que a coleta for concluída, o arquivo zip/archive final poderá ser extraído do disco do usuário final. Este arquivo pode então ser analisado usando o argumento --analyze
apontado para o arquivo compactado. Os resultados disso serão gravados no diretório /tmp
. O administrador pode então descompactar esse diretório de análise e ver uma visão analisada dos bancos de dados coletados localmente, uma linha do tempo de arquivos com a criação do arquivo, último acesso e datas da última modificação (se estiverem disponíveis) e um enredo que inclui o arquivo metadados, alterações no banco de dados e informações do navegador para potencialmente rastrear o vetor de infecção.
Para construir o Aftermath localmente, clone-o do repositório
git clone https://github.com/jamf/aftermath.git
cd
no diretório Aftermath
cd < path_to_aftermath_directory >
Construir usando Xcode
xcodebuild -scheme " aftermath "
cd
na pasta Release
cd build/Release
Corra depois
sudo ./aftermath
O Aftermath precisa ser root, bem como ter acesso total ao disco (FDA) para ser executado. O FDA pode ser concedido ao aplicativo Terminal no qual está sendo executado.
O uso padrão do Aftermath é executado
sudo ./aftermath
Para especificar determinadas opções
sudo ./aftermath [option1] [option2]
Exemplos
sudo ./aftermath -o /Users/user/Desktop --deep
sudo ./aftermath --analyze < path_to_collection_zip >
Os usuários têm a capacidade de passar ao Aftermath um arquivo de texto de predicados de log unificados usando os argumentos --logs
ou -l
. O arquivo que está sendo 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 de dicionário. A chave no dicionário será o que o usuário deseja chamar desse 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 rescaldo termina. Por causa disso, a última linha do arquivo eslogger json ou do arquivo pcap gerado a partir do tcpdump pode ser truncada.
Há um Aftermath.pkg disponível em Releases. Este pacote é assinado e autenticado. Ele instalará o binário posterior em /usr/local/bin/
. Esta seria a forma ideal de implantação via MDM. Como isso está instalado em bin
, você pode executar o resultado como
sudo aftermath [option1] [option2]
Para desinstalar o binário posterior, execute AftermathUninstaller.pkg
nas versões. Isso desinstalará o binário e também executará aftermath --cleanup
para remover os diretórios posteriores. Se algum diretório posterior residir em outro lugar, ao usar o comando --output
, é responsabilidade do usuário/administrador remover esses diretórios.
--analyze -> analyze the results of the Aftermath results
usage: --analyze <path_to_aftermath_collection_file>
--collect-dirs -> specify locations of (space-separated) directories to dump those raw files
usage: --collect-dirs <path_to_dir> <path_to_another_dir>
--deep or -d -> perform a deep scan of the file system for modified and accessed timestamped metadata
WARNING: This will be a time-intensive, memory-consuming scan.
--disable -> disable a set of aftermath features that may collect personal user data
Available features to disable: browsers -> collecting browser information | browser-killswitch -> force-closes browers | -> databases -> tcc & lsquarantine databases | filesystem -> walking the filesystem for timestamps | proc-info -> collecting process information via TrueTree and eslogger | slack -> slack data | ul -> unified logging modules | all -> all aforementioned options
usage: --disable browsers browser-killswitch databases filesystem proc-info slack
--disable all
--es-logs -> specify which Endpoint Security events (space-separated) to collect (defaults are: create exec mmap). To disable, see --disable es-logs
usage: --es-logs setuid unmount write
--logs -> specify an external text file with unified log predicates (as dictionary objects) to parse
usage: --logs /Users/<USER>/Desktop/myPredicates.txt
-o or --output -> specify an output location for Aftermath collection results (defaults to /tmp)
usage: -o Users/user/Desktop
--pretty -> colorize Terminal output
--cleanup -> remove Aftermath folders from default locations ("/tmp", "/var/folders/zz/)
Este projeto aproveita o projeto TrueTree de código aberto, escrito e licenciado por Jaron Bradley.