SmartLoader clona el MCP del anillo Oura para ejecutar un ataque a la cadena de suministro
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
SmartLoader utilizó cuentas falsas de GitHub y un servidor MCP clonado de Oura Ring para contaminar registros MCP. El servidor troyanizado luego entregó el infostealer StealC, diseñado para robar credenciales de desarrolladores, datos de billeteras de criptomonedas e información de salud. La actividad muestra cómo las integraciones de salud habilitadas por IA pueden convertirse en un punto de apoyo en la cadena de suministro.
Investigación
Los investigadores mapearon al menos cinco perfiles fabricados de GitHub que bifurcaron el repositorio real de Oura MCP y publicaron imitaciones. Se subió un fork malicioso bajo una nueva cuenta y se envió a los registros MCP. El análisis dinámico encontró payloads basados en LuaJIT almacenados en la carpeta AppData del usuario y persistencia a través de tareas programadas que simulan controladores de audio Realtek.
Mitigación
Auditar los inventarios del servidor MCP, aplicar verificaciones de procedencia antes de la instalación y alertar sobre tareas programadas que inicien ejecutables desde AppData. Aplicar controles de salida y bloquear el tráfico hacia endpoints conocidos de criptomonedas y C2. Validar el historial de contribuyentes de GitHub y el linaje de repositorios durante la aprobación.
Respuesta
Al detectar, aislar la estación de trabajo, terminar las tareas maliciosas, eliminar ejecutables no autorizados de AppData y rotar credenciales y claves API expuestas. Revisar forénsicamente el servidor MCP comprometido y fortalecer la verificación de dependencias para prevenir reinfecciones.
graph TB %% Definiciones de Clase classDef action fill:#99ccff classDef malware fill:#ffcc99 classDef process fill:#ff9999 classDef file fill:#cccccc classDef technique fill:#c0c0c0 %% Definiciones de Nodos action_supply_chain[«<b>Acción</b> – <b>T1195.001 Supply Chain Compromise</b><br/><b>Descripción</b>: Un adversario compromete una cadena de suministro de software para distribuir código malicioso.»] class action_supply_chain action malware_trojanized_server[«<b>Malware</b> – <b>Nombre</b>: Trojanized Oura MCP Server<br/><b>Propósito</b>: Entregado mediante paquete comprometido.»] class malware_trojanized_server malware action_developer_install[«<b>Acción</b> – <b>Instalar Paquete</b><br/><b>Descripción</b>: El desarrollador instala el paquete MCP comprometido.»] class action_developer_install action file_resource_txt[«<b>Archivo</b> – <b>Nombre</b>: resource.txt<br/><b>Técnicas</b>: T1027 Archivos Ofuscados, T1059 Intérprete de Comandos y Scripts»] class file_resource_txt file malware_luajit_script[«<b>Malware</b> – <b>LuaJIT Script</b><br/><b>Técnicas</b>: T1027, T1059»] class malware_luajit_script malware process_odmw[«<b>Proceso</b> – <b>Nombre</b>: ODMw.exe (intérprete LuaJIT)»] class process_odmw process process_odmy[«<b>Proceso</b> – <b>Nombre</b>: ODMy.exe (intérprete LuaJIT)»] class process_odmy process tech_T1053[«<b>Técnica</b> – T1053 Tarea/Trabajo Programado<br/><b>Descripción</b>: Crea tareas programadas para persistencia.»] class tech_T1053 technique process_task_odmw[«<b>Proceso</b> – <b>Tarea Programada</b>: RealtekAudioManager_ODMw»] class process_task_odmw process process_task_odmy[«<b>Proceso</b> – <b>Tarea Programada</b>: AudioManager_ODMy»] class process_task_odmy process malware_socket3[«<b>Malware</b> – <b>Nombre</b>: socket3.lua (payload C2)»] class malware_socket3 malware tech_T1102[«<b>Técnica</b> – T1102 Servicio Web<br/><b>Descripción</b>: Usa un servicio web basado en HTTP para comando y control.»] class tech_T1102 technique tech_T1041[«<b>Técnica</b> – T1041 Exfiltración a través del Canal C2<br/><b>Descripción</b>: Envía datos robados a través del canal C2.»] class tech_T1041 technique malware_stealc[«<b>Malware</b> – <b>Nombre</b>: StealC Infostealer»] class malware_stealc malware tech_T1555_003[«<b>Técnica</b> – T1555.003 Credenciales en Archivos: Contraseñas/Cookies del Navegador<br/><b>Descripción</b>: Roba credenciales guardadas del navegador.»] class tech_T1555_003 technique tech_T1552_001[«<b>Técnica</b> – T1552.001 Credenciales en Archivos: Almacenes de Contraseñas<br/><b>Descripción</b>: Roba tokens de Discord, billeteras de criptomonedas, claves SSH y credenciales API.»] class tech_T1552_001 technique %% Conexiones que muestran el flujo del ataque action_supply_chain –>|entrega| malware_trojanized_server malware_trojanized_server –>|instalado por| action_developer_install action_developer_install –>|crea| file_resource_txt file_resource_txt –>|contiene| malware_luajit_script malware_luajit_script –>|suelta| process_odmw malware_luajit_script –>|suelta| process_odmy process_odmw –>|usa| tech_T1053 process_odmy –>|usa| tech_T1053 tech_T1053 –>|crea| process_task_odmw tech_T1053 –>|crea| process_task_odmy process_task_odmw –>|ejecuta| process_odmw process_task_odmy –>|ejecuta| process_odmy process_odmw –>|lanza| malware_socket3 process_odmy –>|lanza| malware_socket3 malware_socket3 –>|se comunica vía| tech_T1102 malware_socket3 –>|exfiltra vía| tech_T1041 malware_socket3 –>|despliega| malware_stealc malware_stealc –>|roba| tech_T1555_003 malware_stealc –>|roba| tech_T1552_001
Flujo de Ataque
Detecciones
Tarea Programada Sospechosa (vía auditoría)
Ver
IOCs (DestinationIP) para detectar: SmartLoader Clona Oura Ring MCP para Desplegar Ataque a la Cadena de Suministro
Ver
IOCs (SourceIP) para detectar: SmartLoader Clona Oura Ring MCP para Desplegar Ataque a la Cadena de Suministro
Ver
Ejecución Sospechosa del Intérprete LuaJIT en AppData [Creación de Procesos de Windows]
Ver
Detección del Ecosistema Falso de GitHub de SmartLoader [Servidor Web]
Ver
Ejecución de Simulación
Prerequisito: Se debe haber aprobado la Verificación Previa de Telemetría y Línea Base.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica adversaria (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa reflejan directamente las TTPs identificadas y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa del Ataque y Comandos:
Un atacante hospedando un repositorio falso de GitHub (por ejemplo,https://github.com/SiddhiBagul/MCP-oura) copia el payload legítimo de SmartLoader, lo reetiqueta y lo hace públicamente accesible. Un host interno comprometido luego ejecuta un script que descarga el repositorio malicioso víacurl. Esta acción produce una solicitud HTTP GET registrada por el proxy, coincidiendo con una de las URLs indicadoras en la regla. -
Script de Prueba de Regresión:
#!/usr/bin/env bash # Simulación de descarga falsa de SmartLoader de GitHub – desencadena la regla Sigma MALICIOUS_URLS=( "https://github.com/SiddhiBagul/MCP-oura" "https://github.com/YuzeHao2023/MCP-oura" "https://github.com/punkpeye/MCP-oura" "https://github.com/dvlan26/MCP-oura" "https://github.com/halamji/MCP-oura" "https://github.com/yzhao112/MCP-oura" ) for url in "${MALICIOUS_URLS[@]}"; do echo "[+] Obteniendo repositorio malicioso: $url" # La bandera -L sigue redirecciones; -s silencia el progreso; -o descarta la salida. curl -s -L -o /dev/null "$url" done echo "[+] Simulación completa." -
Comandos de Limpieza:
# No se persistieron archivos, pero limpia el historial del shell de las URLs history -d $(history | grep -n "github.com" | cut -d: -f1) echo "[+] Limpieza completada – URLs removidas del historial."