Malware Encontrado en Repositorio Popular de Hugging Face
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Investigadores de HiddenLayer descubrieron código malicioso alojado en el repositorio de Hugging Face Open-OSS/privacy-filter que imita un proyecto legítimo de OpenAI. El repositorio contenía un script loader.py que obtenía un comando PowerShell de jsonkeeper.com, que descargaba un archivo por lotes de segunda etapa y un infostealer basado en Rust. La carga útil exfiltra credenciales, datos del navegador, archivos de billeteras de criptomonedas y capturas de pantalla, después se autodestruye tras una ejecución programada de una sola vez.
Investigación
El análisis identificó seis etapas desde el señuelo inicial hasta el infostealer de Rust final, incluyendo una ejecución oculta de PowerShell, un descargador que recupera el update.bat desde api.eth-fastscan.org, y un archivo por lotes que crea un script de ejecución temporal y una tarea programada transitoria. Se observó tráfico de red a un dominio C2 recargapopular.com y a un dominio relacionado welovechinatown.info. Se encontraron múltiples repositorios de Hugging Face bajo el usuario anthfu reutilizando el mismo cargador y URL de C2.
Mitigación
Bloquee los dominios y URLs maliciosos listados en el perímetro de la red, y deshabilite la ejecución de scripts PowerShell no firmados en los terminales. Elimine cualquier archivo descargado de los repositorios comprometidos y revoque cualquier credencial que pueda haber sido recolectada. Implemente un monitoreo estricto para la creación de tareas programadas sospechosas y para líneas de comando de PowerShell anormales.
Respuesta
Aísle cualquier host que haya ejecutado el cargador o start.bat, trátelo como completamente comprometido y reconstruya el sistema. Rote todas las contraseñas almacenadas, cookies de sesión, tokens OAuth y credenciales de billeteras de criptomonedas. Busque conexiones históricas a los dominios maliciosos y la presencia de las rutas de archivo y nombres de tareas programadas indicadas.
"graph TB %% Definiciones de Clase classDef action fill:#99ccff classDef tool fill:#cccccc classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef malware fill:#ff6666 classDef credential fill:#ccffcc classDef exfil fill:#c0c0c0 classDef operator fill:#ff9900 %% Definiciones de Nodo malicious_repo["<b>Recurso</b> – <b>Repositorio de Hugging Face</b><br/>Contiene start.bat y loader.py maliciosos"] class malicious_repo file action_user_execution_link["<b>Acción</b> – <b>T1204.001 Ejecución de Usuario: Enlace Malicioso</b><br/>La víctima hace clic en un enlace al repositorio malicioso"] class action_user_execution_link action file_start_bat["<b>Archivo</b> – start.bat<br/>Script por lotes invocado por la víctima"] class file_start_bat file file_loader_py["<b>Archivo</b> – loader.py<br/>Cargador de Python que verifica la suma de comprobación y desactiva la verificación SSL"] class file_loader_py file action_user_execution_file["<b>Acción</b> – <b>T1204.002 Ejecución de Usuario: Archivo Malicioso</b><br/>La víctima ejecuta loader.py"] class action_user_execution_file action action_proxy_execution["<b>Acción</b> – <b>T1127 Ejecución de Proxy de Utilidades de Desarrollador Confiable</b><br/>loader.py lanza PowerShell con bypass y ventana oculta"] class action_proxy_execution action process_powershell["<b>Proceso</b> – PowerShell<br/>Ejecuta línea de comandos remota"] class process_powershell process action_taint_shared_content["<b>Acción</b> – <b>T1080 Contaminación de Contenido Compartido</b><br/>Una línea de PowerShell descarga update.bat desde api.ethu2011fastscan.org"] class action_taint_shared_content action file_update_bat["<b>Archivo</b> – update.bat<br/>Script por lotes que añade exclusiones de Defender y crea una tarea programada"] class file_update_bat file action_hide_artifacts["<b>Acción</b> – <b>T1564.012 Ocultar Artefactos: Exclusiones de Archivo/Ruta</b><br/>Añade exclusiones de Microsoft Defender para los archivos de carga útil"] class action_hide_artifacts action action_hijack_execution["<b>Acción</b> – <b>T1574 Secuestro de Flujo de Ejecución</b><br/>Crea una tarea programada de una sola vez MicrosoftEdgeUpdateTaskCore para ejecutar la carga útil como SYSTEM"] class action_hijack_execution action process_scheduled_task["<b>Proceso</b> – Tarea Programada<br/>Ejecuta la carga útil de Rust con privilegios de SYSTEM"] class process_scheduled_task process malware_rust_payload["<b>Malware</b> – Carga Útil de Rust<br/>Realiza comprobaciones anti-análisis y desactiva AMSI/ETW"] class malware_rust_payload malware action_credential_collection["<b>Acción</b> – <b>T1555 Credenciales desde Tiendas de Contraseñas</b><br/>El infostealer extrae credenciales de Chromium, Firefox, Discord y carteras"] class action_credential_collection credential action_credential_files["<b>Acción</b> – <b>T1552.001 Credenciales No Seguras: Credenciales en Archivos</b><br/>Recolecta archivos semilla de SSH, FTP, VPN y carteras"] class action_credential_files credential action_os_credential_dump["<b>Acción</b> – <b>T1003 Volcado de Credenciales de SO</b><br/>Recupera claves de navegador cifradas"] class action_os_credential_dump credential action_screen_capture["<b>Acción</b> – <b>T1113 Captura de Pantalla</b><br/>Captura capturas de pantalla de múltiples monitores"] class action_screen_capture malware action_data_encoding["<b>Acción</b> – <b>T1132 Codificación de Datos</b><br/>Empaqueta datos en JSON comprimido con gzip"] class action_data_encoding malware action_exfiltration["<b>Acción</b> – <b>T1567.002 Exfiltración a través de Servicio Web</b><br/>Publica datos codificados vía HTTPS a recargapopular.com"] class action_exfiltration exfil %% Conexiones malicious_repo –>|contiene| file_start_bat malicious_repo –>|contiene| file_loader_py action_user_execution_link –>|conduce_a| file_start_bat action_user_execution_link –>|conduce_a| file_loader_py file_start_bat –>|ejecutado_por| action_user_execution_file file_loader_py –>|ejecutado_por| action_user_execution_file action_user_execution_file –>|activa| action_proxy_execution action_proxy_execution –>|lanza| process_powershell process_powershell –>|descarga| file_update_bat file_update_bat –>|ejecuta| action_hide_artifacts action_hide_artifacts –>|crea| action_hijack_execution action_hijack_execution –>|genera| process_scheduled_task process_scheduled_task –>|ejecuta| malware_rust_payload malware_rust_payload –>|realiza| action_credential_collection malware_rust_payload –>|realiza| action_credential_files malware_rust_payload –>|realiza| action_os_credential_dump malware_rust_payload –>|realiza| action_screen_capture malware_rust_payload –>|codifica| action_data_encoding action_data_encoding –>|exfiltra| action_exfiltration "
Flujo de Ataque
Detecciones
Llamar Métodos Sospechosos de .NET desde PowerShell (vía PowerShell)
Ver
IOCs (HashSha256) para detectar: Malware Encontrado en el Repositorio de Hugging Face «Open-OSS/privacy-filter»
Ver
IOCs (SourceIP) para detectar: Malware Encontrado en el Repositorio de Hugging Face «Open-OSS/privacy-filter»
Ver
IOCs (DestinationIP) para detectar: Malware Encontrado en el Repositorio de Hugging Face «Open-OSS/privacy-filter»
Ver
Detección de Comunicación C2 Maliciosa en Repositorio de Hugging Face [Conexión de Red de Windows]
Ver
Actividad Oculta de PowerShell y CMD para Ejecuciones Maliciosas [Creación de Procesos de Windows]
Ver
Ejecución de Simulación
Prerrequisito: El Chequeo de Pre-vuelo de Telemetría y Línea Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.
-
Narrativa y Comandos del Ataque:
El atacante ha obtenido un punto de apoyo en una estación de trabajo Windows y desea ejecutar una carga útil maliciosa con derechos elevados manteniéndose invisible al usuario. Ellos:- Elaboran una línea única de PowerShell que genera un shell CMD oculto (
/k) y lo escalan inmediatamente usandoStart-Process -Verb RunAs. - Ejecutan esta línea única desde una sesión de PowerShell existente, asegurando que el árbol de procesos contenga tanto una instancia de PowerShell oculta and una instancia CMD lanzada con
/k. - El CMD elevado puede entonces utilizarse para descargar y ejecutar la carga útil final.
- Elaboran una línea única de PowerShell que genera un shell CMD oculto (
-
Script de Prueba de Regresión:
# --------------------------------------------------------- # Script simulado del adversario – PowerShell Oculta + CMD Ejecutado con RunAs # --------------------------------------------------------- $maliciousCmd = "cmd.exe /k echo El atacante ha escalado && ping -n 5 127.0.0.1" $psCommand = "-ExecutionPolicy Bypass -WindowStyle Hidden -Command `"Start-Process -FilePath 'powershell.exe' -ArgumentList `"$maliciousCmd`" -Verb RunAs`"" # Lanzar PowerShell oculto que a su vez ejecuta el CMD elevado Start-Process -FilePath "powershell.exe" -ArgumentList $psCommand -WindowStyle Hidden -
Comandos de Limpieza:
# Terminar cualquier proceso CMD elevado residual generado por la prueba Get-Process -Name "cmd" -ErrorAction SilentlyContinue | Where-Object { $_.StartInfo.Arguments -match "/k echo El atacante ha escalado" } | Stop-Process -Force # Opcionalmente eliminar cualquier archivo temporal si se creó (ninguno en esta demostración simple)