Detetar lateral movement com a ShimCache

4 min de leitura

TL;DR. Ferramentas de lateral movement (PsExec, wmic, at / schtasks, PowerShell remoto) deixam entradas na ShimCache no host de destino (o binário de serviço largado) e frequentemente no de origem. Fazer diff da AppCompatCache em muitos hosts faz emergir o caminho que o atacante percorreu.

A ShimCache é geralmente enquadrada como artefacto de um único host. O seu verdadeiro poder em resposta a incidentes é cross-host. As mesmas ferramentas, examinadas para compatibilidade em cada máquina onde tocam, deixam um rasto correlacionável. Eis como a uso efetivamente para reconstruir lateral movement.

Como o lateral movement se manifesta na cache

Técnicas de execução remota largam ou invocam um executável no destino. Cada uma deixa um caminho característico.

TécnicaIndício na ShimCache do destino
PsExec / execução de serviço por SMBC:\Windows\PSEXESVC.exe ou um binário de serviço com 8 caracteres aleatórios em C:\Windows\
sc \\host createBinário de serviço com nome do atacante, frequentemente em C:\Windows\ ou \PerfLogs\
WMI (wmic process call create)Caminho do payload em C:\Windows\Temp\ ou diretório com escrita do utilizador
Tarefa agendada (schtasks /s)Binário de ação da tarefa, frequentemente C:\Users\Public\
PowerShell remoto / WinRMpowershell.exe mais qualquer .exe que tenha staged
Impacket smbexec / wmiexec.bat e .exe com nomes aleatórios sob \Windows\Temp\

Um binário de serviço com nome aleatório em C:\Windows\ é um dos achados de ShimCache mais sinal-rico que existe. Coberto como regra de triagem em caçar malware com a ShimCache.

O lado do host de origem

O host originário mostra frequentemente entradas na ShimCache para as próprias ferramentas de ataque: PsExec.exe, wmic.exe usado interativamente, um mover personalizado, um loader de framework de pós-exploração. Emparelhar "ferramenta no host A" com "binário de serviço no host B" dentro de uma janela plausível é o núcleo da inferência de lateral movement.

Cruze com Sysmon Event ID 3 ligações de rede e Security 4624 logon type 3 para fechar o ciclo. O EVTX parser cobre os event IDs relevantes.

O workflow de diff cross-host

  1. Recolha hives SYSTEM de todos os hosts no âmbito. Veja adquirir uma hive SYSTEM. Ou use o Velociraptor para recolha em parque.
  2. Analise cada um e exporte para CSV. O AppCompatCacheParser de Eric Zimmerman é a resposta certa para trabalho em batch.
  3. Normalize caminhos e faça diff por binários partilhados e invulgares. O mesmo nome aleatório de serviço ou caminho de staging a aparecer em vários hosts é o caminho de movimento.
  4. Ordene os hosts por ordem de inserção, não por timestamp. O timestamp é o mtime do ficheiro, não uma hora de evento, portanto não sequencia hops por si só.
  5. Corrobore cada hop com Security 4624 (logon type 3), 4648 (credenciais explícitas), 7045 (instalação de serviço) e AmCache para atribuição por SHA-1.

Isto funde-se naturalmente numa timeline completa de execução de programas. Para reportar, mapeie as técnicas para ATT&CK T1021 (Remote Services) e T1570 (Lateral Tool Transfer).

Ressalvas

A ShimCache só descarrega em clean shutdown, portanto um host ainda em execução pode ainda não ter escrito a entrada decisiva. Verifique a memória (extração de um dump de memória) antes de concluir que um host não foi tocado. O timestamp nunca sequencia hops por si só; conte com a ordem de inserção mais EVTX e o USN journal para horas de eventos. Atacantes que limpam o valor deixam o seu próprio indício. Veja anti-forense de ShimCache.

Para fazer diff rápido de hives, analise cada uma com o Shimcache Parser e compare do lado do cliente. A exportação CSV da ferramenta do EZ alimenta diretamente o pandas ou o csvdiff para conjuntos maiores.

Leitura adicional

Artigos relacionados