Rastreando uma Cadeia de Eliminação do Ransomware Akira Através de Logs de Perímetro e Endpoint
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O artigo descreve uma recente intrusão ligada à operação de ransomware Akira. Os atacantes obtiveram acesso inicial forçando a senha de uma conta desativada de SSL VPN local, então prosseguiram para descoberta de credenciais, Kerberoasting e movimento lateral via RDP. Antes de iniciar a criptografia, eles limparam logs e removeram cópias de sombra. Notavelmente, toda a sequência foi visível através dos dados de syslog do firewall e logs EVTX do Windows, sem depender de ferramentas de detecção de endpoint. O relatório destaca como a combinação de telemetria de perímetro e de endpoint pode expor atividades de ransomware em seus estágios iniciais.
Investigação
A investigação baseou-se exclusivamente em logs de firewall de SSL VPN e exportações de logs de eventos do Windows coletadas de controladores de domínio e servidores membros. IDs de eventos, incluindo 4624, 4688, 4769, 1102, e 7036 foram correlacionados para reconstruir toda a cadeia de ataque, desde o acesso inicial até o impacto final. As técnicas observadas incluíram enchimento de credenciais, descoberta de domínio, Kerberoasting, autenticação RDP, limpeza de logs e exclusão de cópias de sombra. Nenhuma imagem de memória ou telemetria de EDR foi necessária para mapear a intrusão.
Mitigação
O relatório recomenda aumentar a segurança de acesso remoto, aplicar MFA, remover contas desativadas das listas de acesso do firewall e reforçar as políticas de bloqueio de autenticação. Também aconselha habilitar auditoria detalhada de processos com o ID de Evento 4688 em todos os sistemas, aumentar a retenção de logs de segurança e encaminhar logs críticos para armazenamento externo. O conteúdo de detecção deve cobrir especificamente tickets Kerberos baseados em RC4, vssadmin exclusão de cópias de sombra, e comandos PowerShell inesperados utilizando -EncodedCommand. A sincronização de tempo consistente em toda a infraestrutura também é essencial para uma correlação confiável.
Resposta
Quando qualquer um dos indicadores identificados aparecer, os respondentes devem isolar imediatamente a conta VPN comprometida e colocar em quarentena os sistemas afetados. Os logs relevantes do firewall e EVTX devem ser preservados, as credenciais resetadas, contas comprometidas desativadas, e cópias de sombra restauradas a partir de backups limpos onde disponíveis. Uma revisão forense completa deve ser realizada para identificar qualquer atividade de persistência ou continuidade, enquanto os procedimentos de resposta a ransomware são ativados. As partes interessadas devem ser informadas prontamente, e a divulgação pública deve ser considerada quando necessário.
"graph TB %% Class definitions classDef phase fill:#ffcc99 classDef tool fill:#c2f0c2 %% Node definitions phase_initial_access["<b>Fase</b> – Acesso Inicial<br/><b>Técnica</b> – T1133 Serviços Remotos Externos<br/><b>Descrição</b>: Uso de preenchimento de credenciais contra SSL VPN, utilizando conta local comprometida."] class phase_initial_access phase tech_valid_accounts["<b>Técnica</b> – T1078 Contas Válidas<br/><b>Descrição</b>: Uso de credenciais roubadas para acessar a VPN."] class tech_valid_accounts phase phase_discovery["<b>Fase</b> – Descoberta<br/><b>Técnica</b> – T1482 Descoberta de Confiança de Domínio<br/><b>Descrição</b>: Enumerar confianças de domínio usando nltest."] class phase_discovery phase tech_account_discovery["<b>Técnica</b> – T1087 Descoberta de Contas<br/><b>Descrição</b>: Enumerar grupos e usuários via net.exe e whoami."] class tech_account_discovery phase phase_credential_access["<b>Fase</b> – Acesso a Credenciais<br/><b>Técnica</b> – T1558.003 Kerberoasting<br/><b>Descrição</b>: Solicitar tickets de serviço RC4 para quebrar senhas de contas de serviço."] class phase_credential_access phase phase_lateral_movement["<b>Fase</b> – Movimento Lateral<br/><b>Técnica</b> – T1021.001 Serviços Remotos Protocolo de Área de Trabalho Remota<br/><b>Descrição</b>: Usar RDP para mover lateralmente para servidores e controladores de domínio."] class phase_lateral_movement phase phase_persistence["<b>Fase</b> – Persistência e Escalação de Privilégios<br/><b>Técnica</b> – T1136 Criar Conta<br/><b>Descrição</b>: Criar uma nova conta de serviço em uma OU não padrão e adicioná-la a grupos privilegiados."] class phase_persistence phase phase_execution["<b>Fase</b> – Execução<br/><b>Técnica</b> – T1059.001 PowerShell<br/><b>Descrição</b>: Executar scripts do PowerShell com -EncodedCommand.<br/><b>Técnica</b> – T1059.003 Shell de Comando do Windows<br/><b>Descrição</b>: Usar cmd.exe para vários comandos."] class phase_execution phase phase_defense_evasion["<b>Fase</b> – Evasão de Defesa<br/><b>Técnica</b> – T1070.001 Limpar Logs de Evento do Windows<br/><b>Descrição</b>: Limpar logs de eventos do Windows.<br/><b>Técnica</b> – T1562 Comprometer Defesas<br/><b>Descrição</b>: Parar serviços de segurança usando sc.exe ou net stop."] class phase_defense_evasion phase phase_impact["<b>Fase</b> – Impacto<br/><b>Técnica</b> – T1490 Inibir Recuperação do Sistema<br/><b>Descrição</b>: Excluir cópias de sombra com vssadmin.<br/><b>Técnica</b> – T1565.001 Manipulação de Dados Armazenados<br/><b>Descrição</b>: Criptografar arquivos no disco."] class phase_impact phase tool_ssl_vpn["<b>Ferramenta</b> – Cliente SSL VPN"] class tool_ssl_vpn tool tool_nltest["<b>Ferramenta</b> – Utilitário nltest"] class tool_nltest tool tool_net["<b>Ferramenta</b> – Utilitário net.exe"] class tool_net tool tool_whoami["<b>Ferramenta</b> – Comando whoami"] class tool_whoami tool tool_powershell["<b>Ferramenta</b> – PowerShell"] class tool_powershell tool tool_cmd["<b>Ferramenta</b> – cmd.exe"] class tool_cmd tool tool_sc["<b>Ferramenta</b> – Comando sc.exe"] class tool_sc tool tool_vssadmin["<b>Ferramenta</b> – Utilitário vssadmin"] class tool_vssadmin tool %% Connections showing flow phase_initial_access –>|leads to| tech_valid_accounts tech_valid_accounts –>|leads to| phase_discovery phase_discovery –>|leads to| tech_account_discovery tech_account_discovery –>|leads to| phase_credential_access phase_credential_access –>|leads to| phase_lateral_movement phase_lateral_movement –>|leads to| phase_persistence phase_persistence –>|leads to| phase_execution phase_execution –>|leads to| phase_defense_evasion phase_defense_evasion –>|leads to| phase_impact %% Tool usage edges phase_initial_access –>|uses| tool_ssl_vpn phase_discovery –>|uses| tool_nltest phase_discovery –>|uses| tool_net phase_discovery –>|uses| tool_whoami phase_execution –>|uses| tool_powershell phase_execution –>|uses| tool_cmd phase_defense_evasion –>|uses| tool_sc phase_impact –>|uses| tool_vssadmin "
Fluxo de Ataque
Detecções
Possível Enumeração de Conta de Admin ou Grupo (via linha de comando)
Ver
Possível Enumeração ou Manipulação de Conta ou Grupo (via linha de comando)
Ver
Descoberta Suspeita de Confianças de Domínio (via linha de comando)
Ver
Atividade Suspeita de VSSADMIN (via linha de comando)
Ver
Detecção de Movimento Lateral Baseado em RDP e Escalação de Privilégio em Nível de Domínio [Log de Evento de Segurança do Microsoft Windows]
Ver
Detecção de Força Bruta de SSLVPN e Preenchimento de Credenciais [Firewall]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria e Base deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa e Comandos de Ataque:
- Reconhecimento (T1087): O atacante enumera nomes de usuário de um sistema interno comprometido e constrói uma lista de preenchimento de credenciais (por exemplo,
users.txt). - Loop de Força Bruta (T1021.001 / T1078.001): Usando um intervalo de IP externo comprometido pertencente a um provedor de hospedagem conhecido (por exemplo,
203.0.113.45), o atacante lança uma série rápida de tentativas de autenticação falhadas no SSLVPN (≥ 50) dentro de uma hora. Cada tentativa usa uma senha diferente da lista, visando uma única conta de vítima. - Preenchimento de Credenciais Bem-Sucedido: Após esgotar a lista, é encontrada uma senha correta; o atacante se loga com sucesso a partir do mesmo IP, satisfazendo a cláusula “successful_auth”.
- Evasão (Opcional – T1070.001): O atacante limpa o log de Segurança no equipamento VPN após o login bem-sucedido para esconder vestígios (não coberto por esta regra).
- Reconhecimento (T1087): O atacante enumera nomes de usuário de um sistema interno comprometido e constrói uma lista de preenchimento de credenciais (por exemplo,
-
Script de Teste de Regressão: Script Bash utilizando
curl(funciona em caixa atacante Linux). Ajustar variáveis para o ambiente real.#!/usr/bin/env bash # ------------------------------------------------------------------ # Simular força bruta/enchimento de credenciais em SSLVPN para acionar regra Sigma # ------------------------------------------------------------------ VPN_ENDPOINT="https://vpn.example.com/remote/auth" USERNAME="victim_user" PASSWORD_LIST="passwords.txt" # uma senha por linha SOURCE_IP="203.0.113.45" # deve ser roteável para o VPN # Função para realizar uma única tentativa de login attempt_login() { local pwd="$1" # Usando --silent para evitar desordem; --write-out para capturar código HTTP curl --silent --output /dev/null --write-out "%{http_code}" --user "$USERNAME:$pwd" "$VPN_ENDPOINT" } # 1. Gerar 55 tentativas falhadas (taxa ~1/segundo) echo "Iniciando tentativas falhadas..." count=0 while IFS= read -r pwd && [ $count -lt 55 ]; do http_code=$(attempt_login "$pwd") echo "Tentativa $((count+1)): HTTP $http_code (esperado 401)" ((count++)) sleep 1 # manter dentro da janela de 1 hora done < "$PASSWORD_LIST" # 2. Login bem-sucedido com senha correta (assume última linha no arquivo) echo "Realizando login bem-sucedido..." correct_pwd=$(tail -n1 "$PASSWORD_LIST") http_code=$(attempt_login "$correct_pwd") echo "Tentativa bem-sucedida: HTTP $http_code (esperado 200)" echo "Simulação concluída." -
Comandos de Limpeza: Remova quaisquer arquivos temporários e redefina o limite de taxa do firewall (se alterado).
#!/usr/bin/env bash # Limpeza após simulação de força bruta de SSLVPN # Excluir a lista de senhas temporária se foi criada em tempo real if [ -f passwords.txt ]; then shred -u passwords.txt echo "Deleted passwords.txt" fi # Opcionalmente, redefina quaisquer regras temporárias de iptables usadas para teste sudo iptables -D INPUT -s 203.0.113.45 -j DROP 2>/dev/null || true echo "Limpeza concluída."