
Script PowerShell que ajuda os respondedores de incidentes a descobrir potenciais mecanismos de persistência de adversários.
O Trawler é um script PowerShell projetado para ajudar Respondentes de Incidentes a descobrir potenciais indicadores de comprometimento em hosts Windows, focado principalmente em mecanismos de persistência, incluindo Tarefas Agendadas, Serviços, Modificações no Registro, Itens de Inicialização, Modificações Binárias e mais.
Atualmente, o trawler pode detectar a maioria das técnicas de persistência especificamente mencionadas pela MITRE e Atomic Red Team, com mais detecções sendo adicionadas regularmente.
Basta baixar e executar o trawler.ps1 a partir de um prompt PowerShell/cmd Administrativo - quaisquer detecções serão exibidas no console e também gravadas em um CSV ('detections.csv') no diretório de trabalho atual. O CSV gerado conterá Nome da Detecção, Fonte, Risco, Metadados e a Técnica MITRE relevante.
Ou use este one-liner a partir de um terminal PowerShell Administrativo:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/joeavanzato/Trawler/main/trawler.ps1'))
Certas detecções possuem listas de permissão integradas para ajudar a remover ruído das configurações padrão do Windows (10/2016/2019/2022) - Tarefas Agendadas, Serviços, etc. esperados. Claro, é sempre possível que atacantes sequestrem diretamente esses itens e se masqueradem com grande detalhe como um processo padrão do SO - tenha cuidado ao usar múltiplas formas de análise e detecção ao lidar com adversários habilidosos.
Se você tiver exemplos ou ideias para detecções adicionais, sinta-se à vontade para enviar uma Issue ou PR com detalhes técnicos/referências relevantes - a base de código está um pouco bagunçada agora e será limpa com o tempo.
Além disso, se você identificar falsos positivos óbvios, por favor me avise abrindo uma issue ou PR no GitHub! Os culpados óbvios para isso serão COMs, Serviços ou Tarefas não padrão.
-scanoptions : Navegue pelas possíveis detecções usando Tab e selecione um subconjunto usando termos delimitados por vírgula (ex.: .\trawler.ps1 -scanoptions Services,Processes) ou pule para fazer todas as detecções
-quiet : Suprime a saída de Detecção no console
-snapshot : Caminho para uma saída JSON anterior do trawler para usar como lista de permissão.
-outpath : Define um caminho de arquivo personalizado para salvar a saída de detecção (padrão é "$PSScriptRoot\detections.csv")
-drivetarget : Define a variável para uma unidade alvo montada (ex.: .\trawler.ps1 -targetdrive "D:") - (padrão é o sistema local)
-daysago : Define quantos 'dias atrás' queremos considerar para detecções baseadas em tempo (padrão é 45)
-hashmode : Define qual algoritmo de hash queremos usar para as detecções suportadas - suporta sha1, md5 ou sha256 (padrão é sha1)
-evtx : Habilita a criação de uma Fonte de Log de Eventos e Gravação de Detecções no log de eventos do Aplicativo sob Source=trawler com EID=9001 (padrão desabilitado)
PersistenceSniper é uma ferramenta incrível - já usei bastante no passado - mas há alguns pontos-chave que diferenciam essas utilidades
No geral, essas ferramentas são extremamente semelhantes, mas abordam o problema de ângulos ligeiramente diferentes - PersistenceSniper fornece todas as informações de volta ao analista para revisão, enquanto Trawler tenta limitar o que é retornado apenas a resultados que provavelmente são potenciais mecanismos de persistência do adversário. Como tal, existe a possibilidade de falsos negativos com trawler se um adversário imitar completamente um item da lista de permissão.
Como exemplo - PersistenceSniper retornará todos os Serviços Windows 'não seguros', enquanto trawler retornará apenas aqueles que correspondem a uma regra de detecção específica, etc.
Trawler suporta carregar uma lista de permissão a partir de um 'snapshot' - para fazer isso são necessários dois passos.
É isso - todas as detecções relevantes usarão então o arquivo de snapshot como uma lista de permissão para reduzir ruído e identificar quaisquer mudanças potenciais na imagem base que possam ter ocorrido.
(A lista de permissão é implementada para a maioria das verificações, mas não todas - ainda está sendo implementada ativamente)
Frequentemente durante uma investigação, analistas podem acabar montando uma nova unidade que representa um dispositivo Windows imageado - Trawler agora suporta parcialmente a varredura dessas unidades montadas através do uso do parâmetro '-drivetarget'.
Em tempo de execução, Trawler redirecionará variáveis temporárias de nível de script para uso na verificação de artefatos baseados em arquivo e também tentará carregar Hives de Registro relevantes (HKLM\SOFTWARE, HKLM\SYSTEM, NTUSER.DATs, USRCLASS.DATs) abaixo de HKLM/HKU e prefixados por 'ANALYSIS_'. Trawler também tentará descarregar esses hives temporariamente carregados ao finalizar o script.