Coleta e analisa logs de autenticação do AD e Azure AD para detectar ataques de movimento lateral usando detecção de anomalias baseada em grafos, visualizando padrões suspeitos com linhas do tempo interativas e GIFs.
A ferramenta de análise de movimento lateral (LATMA) coleta logs de autenticação do domínio e ambientes Azure AD e procura por potenciais ataques de movimento lateral e atividades suspeitas. O movimento lateral pode ocorrer no ambiente AD ou entre a nuvem e o ambiente local. A ferramenta visualiza os resultados com diagramas que representam os padrões de movimento lateral. Esta ferramenta contém dois módulos, um que coleta os logs e outro que os analisa. Você pode executar cada um dos módulos separadamente; o coletor de logs de eventos deve ser executado em uma máquina Windows em um ambiente de domínio do Active Directory com Python 3.8 ou superior. O analisador pode ser executado em uma máquina Linux ou Windows.
O Coletor de Logs de Eventos possui duas funcionalidades: escanear controladores de domínio por logs de autenticação NTLM bem-sucedidos e endpoints por logs de autenticação Kerberos bem-sucedidos, além de coletar logs de login do Azure AD. Coletar logs do ambiente AD requer acesso às portas LDAP/S 389 e 636 e RPC 135 ao controlador de domínio e clientes. Além disso, requer privilégios de administrador de domínio ou um usuário no grupo de Leitores de Log de Eventos, ou alguém com permissões equivalentes. Isso é necessário para extrair logs de eventos de todos os endpoints e controladores de domínio. Para a coleta de logins, você precisa ter um aplicativo em seu ambiente Azure AD e fornecer as informações relevantes no arquivo de configuração. Certifique-se de que o usuário usado para a coleta de logins não esteja configurado com 2FA.
O coletor reúne logs NTLM do evento 8004 nos controladores de domínio e logs Kerberos do evento 4648 nos clientes. Ele gera como saída um arquivo no formato CSV delimitado por vírgulas com todo o tráfego de autenticação disponível. A saída contém os campos: host de origem, destino, nome de usuário, tipo de autenticação, SPN e timestamps no formato %Y/%m/%d %H:%M. O coletor requer credenciais de um usuário válido com privilégios de visualizador de eventos em todo o ambiente e consulta os logs específicos para cada protocolo.
Verifique se os protocolos Kerberos e NTLM estão auditados em todo o ambiente usando política de grupo:
O coletor reúne logins bem-sucedidos apenas de dispositivos híbridos ou associados ao Azure AD. Esses logins representam movimentos bem-sucedidos entre os ativos do ambiente Azure AD e o ambiente local ou vice-versa. O coletor requer as seguintes informações para coletar dados:
O Analisador recebe como entrada uma planilha com dados de autenticação formatados conforme a estrutura de saída do Coletor. Ele procura por atividades suspeitas com o algoritmo de análise de movimento lateral e também detecta IoCs adicionais de movimento lateral. A origem e o destino da autenticação devem ser formalizados com nomes NetBIOS, não endereços IP.
LATMA recebe um lote de solicitações de autenticação e envia um alerta quando encontra ataques suspeitos de movimento lateral. Definimos o seguinte:
Grafo de Autenticação: Um grafo direcionado que contém informações sobre o tráfego de autenticação no ambiente. Os nós do grafo são computadores e as arestas são autenticações entre os computadores. As arestas do grafo possuem os atributos: tipo de protocolo, data da autenticação e a conta que enviou a solicitação. Os nós do grafo contêm informações sobre o computador que representam, detalhadas abaixo.
Grafo de Movimento Lateral: Um subgrafo do grafo de autenticação que representa o movimento do atacante. O grafo de movimento lateral nem sempre é um caminho no subgrafo; em alguns ataques, o atacante segue em muitas direções diferentes.
Alerta: Um subgrafo que o algoritmo suspeita fazer parte do grafo de movimento lateral.
LATMA realiza várias ações durante sua execução:
Coleta de informações: LATMA monitora o comportamento normal dos usuários e máquinas e os caracteriza. O aprendizado é usado posteriormente para decidir quais solicitações de autenticação se desviam do comportamento normal e podem estar envolvidas em um ataque de movimento lateral. Durante um período de aprendizado de três semanas, LATMA não emite nenhum alerta, apenas aprende o ambiente. O aprendizado continua após essas três semanas.
Construção do grafo de autenticação: Após o período de aprendizado, toda autenticação relevante é adicionada ao grafo de autenticação. É fundamental filtrar apenas autenticações relevantes; caso contrário, o número de arestas que o grafo pode conter pode ser muito grande. Filtramos pelos seguintes tipos de protocolo: NTLM e Kerberos com os serviços "rpc", "rpcss" e "termsrv".
Adicionar uma autenticação ao grafo pode desencadear um processo de alerta. Em geral, uma nova aresta pode criar um novo alerta, juntar-se a um alerta existente ou mesclar dois alertas.
Cada solicitação de autenticação monitorada pelo LATMA é usada para aprendizado e armazenada em uma estrutura de dados dedicada. Primeiro, identificamos sinks e hubs. Definimos sinks como máquinas acessadas por muitas (pelo menos 50) contas diferentes, como um portal da empresa ou servidor Exchange. Definimos hubs como máquinas das quais muitas contas diferentes (pelo menos 20) autenticam, como proxies e VPNs. Autenticações para sinks ou a partir de hubs são consideradas benignas e, portanto, removidas do grafo de autenticação.
Além da classificação básica, o LATMA faz correspondência entre contas e máquinas das quais elas se autenticam frequentemente. Se uma conta se autenticar a partir de uma máquina em pelo menos três dias diferentes em um período de três semanas, significa que essa conta corresponde à máquina e qualquer autenticação desta conta a partir dessa máquina é considerada benigna e removida do grafo de autenticação.
Os IoCs de movimento lateral são:
Bengala Branca – Contas de usuário autenticando de uma única máquina para múltiplas em um período relativamente curto.
Ponte – Conta de usuário X autenticando da máquina A para a máquina B e, em seguida, da máquina B para a máquina C. Este IoC potencialmente indica um atacante realizando um avanço real a partir de seu ponto de apoio inicial (A) para uma máquina de destino que melhor atende aos objetivos do ataque.
Ponte Alternada – Conta de usuário X autenticando da máquina A para a máquina B, seguida pela conta de usuário Y autenticando da máquina B para a máquina C. Este IoC potencialmente indica um atacante que descobre e compromete uma conta adicional ao longo de seu caminho e usa a nova conta para avançar (um exemplo comum é a conta X sendo um usuário de domínio padrão e a conta Y sendo um usuário administrador).
Mudança de Peso – Bengala branca (veja acima) da máquina A para as máquinas {B1,…, Bn}, seguida por outra Bengala branca da máquina Bx para as máquinas {C1,…, Cn}. Este IoC potencialmente indica um atacante que determinou que a máquina B atenderia melhor aos propósitos do ataque e, a partir de então, usa a máquina B como fonte para pesquisas adicionais.
Explosão – Conta de usuário X autenticando da máquina A para múltiplas máquinas em um período muito curto. Um exemplo comum é um atacante que implanta/executa ransomware em um grande número de máquinas simultaneamente.
Saída:
O analisador gera vários arquivos diferentes:
Uso
O Coletor
Argumentos obrigatórios:
Uso Binário Abra o prompt de comando e navegue até a pasta do binário. Execute o executável com os argumentos especificados acima.
Nos arquivos de exemplo, você tem várias amostras de ambientes reais (alguns contêm ataques de movimento lateral e outros não), que podem ser fornecidos como entrada para o analisador.
Exemplo de uso