¿Has oído hablar del tipo de malware conocido como fileless malware? El término «sin archivos» describe no la ausencia de rastros, sino la forma de ejecución. El código no se almacena en el disco como un módulo ejecutable habitual, sino que se descarga por la red, se descifra en un búfer y se ejecuta directamente en la memoria RAM. Aun así aparecen rastros: registros de scripts, cadenas de procesos inusuales, artefactos en el registro, suscripciones a eventos y zonas características en el espacio de direcciones. Analizaremos paso a paso el ciclo de vida de estos ataques, las técnicas usadas y medidas prácticas que realmente reducen el riesgo.
Qué significa realmente «sin archivos»
El ciclo clásico de «guardar y ejecutar» se reemplaza por la carga y ejecución en memoria. Como almacenamiento intermedio a menudo se utiliza el registro, el programador de tareas o la infraestructura WMI. Con frecuencia esto se combina con el enfoque de aprovechar utilidades del sistema —el atacante usa utilidades del propio sistema Windows, conocidas colectivamente como LOLBins, para ocultarse entre acciones legítimas.
Escenario desde la ejecución inicial hasta la persistencia
Punto de entrada. Un macro en un documento, un enlace malicioso, un script que usa ingeniería social, un exploit en una aplicación vulnerable o el lanzamiento de una utilidad del sistema confiable. El objetivo es la mínima visibilidad y un acceso rápido al servidor de control.
Entrega de la carga útil. Se descarga un módulo cifrado que se desempaqueta inmediatamente en memoria. Puede tratarse de un intérprete de comandos, un ensamblado .NET, código ejecutable propio o un script en JavaScript.
Ocultamiento y ejecución. La carga se inyecta en el espacio de direcciones de un proceso de confianza —navegador, aplicación ofimática o servicio del sistema—. A partir de ahí se ejecutan las tareas del ataque: recolección de credenciales, movimiento lateral, evasión de monitorización.
Reinicio persistente. La persistencia se logra mediante temporizadores, suscripciones WMI, entradas de inicio automático con un script compacto de una sola línea. Tras un reinicio ese fragmento vuelve a descargar el módulo en memoria y lo ejecuta.
Técnicas clave en Windows
PowerShell y carga de código .NET en memoria
Un esquema popular es entregar un array de bytes, convertirlo en un ensamblado .NET directamente en memoria y llamar al punto de entrada deseado. En el disco no aparece ni el ejecutable ni la biblioteca. Este enfoque lo han usado tanto frameworks de código abierto como herramientas comerciales. Los mecanismos de protección de Microsoft ofrecen buenas posibilidades de detección: la interfaz AMSI intercepta el contenido de los scripts antes de la ejecución, el modo Script Block Logging y el registro de módulos escriben fragmentos importantes en los logs, y el modo Constrained Language limita el acceso a interfaces peligrosas. Cualquier intento de desactivar AMSI o silenciar la telemetría es fácilmente detectable en las investigaciones y debe aumentar la prioridad del incidente.
Utilidades del sistema como contenedor de ejecución
Los binarios confiables se usan a menudo para lanzar código ajeno. Ejemplos típicos son rundll32, regsvr32, mshta, wscript y cscript, así como installutil. Estos componentes ayudan a eludir políticas simples y parecen legítimos a primera vista. En la práctica se convierten en transporte: descargan un script o un intérprete en memoria y luego el control pasa a la lógica maliciosa. Esto se gestiona mediante una lista blanca de aplicaciones. En la práctica es mejor adoptar el modelo Windows Defender Application Control o configurar AppLocker. También es útil el conjunto de reglas Attack Surface Reduction, que corta cadenas como «un documento de Office inicia un host de scripts» y bloquea comandos ofuscados.
Inyecciones y ejecución dentro de procesos ajenos
Para mezclarse con el ruido, el código se aloja dentro de una aplicación ya en ejecución. Son comunes la carga reflejada de bibliotecas, la sustitución de la imagen del proceso mediante hollowing, la creación forzada de un hilo remoto o el mapeo de secciones de memoria sin mapeo a archivo. Estas operaciones dejan rastros: páginas privadas con permisos de ejecución sin correspondencia con archivos, estructuras del formato PE en memoria, hilos nuevos en procesos que no suelen tenerlos. La caza basada en estos indicadores se realiza mediante la traza de eventos de Windows, la telemetría de carga de módulos, eventos de red y Sysmon con una configuración adecuada. En términos de MITRE ATT&CK, estas técnicas corresponden a T1055, T1218, T1546, T1112 y T1027.
Persistencia sin colocar archivos en disco
La persistencia se construye sobre mecanismos que ejecutan un script corto y vuelven a cargar en memoria. Lo más habitual son el programador de tareas, suscripciones WMI y las claves Run y RunOnce. A veces se usan plantillas en documentos, objetos COM o servicios que invocan el motor de scripts. No existe un ejecutable formal en disco, pero los eventos de inicio y los «ganchos» permanecen en los registros y en el registro de Windows.
Intentos de «cegar» la defensa y qué hacer al respecto
Los atacantes intentan eliminar los sensores. Contra AMSI se producen cambios en los códigos de retorno de funciones, sustitución de direcciones en tablas de importación y fuerte ofuscación. En la trazabilidad de eventos desactivan proveedores relevantes o parchean funciones clave. La política de seguridad debe considerar estas acciones como indicadores de compromiso por sí mismas. La práctica recomendada es: AMSI activado, los registros de PowerShell recopilan bloques de scripts y módulos, la versión antigua de PowerShell deshabilitada, WDAC o AppLocker en modelo de lista blanca, reglas ASR activadas, macros desde Internet bloqueadas, la etiqueta de procedencia MOTW aplicada y WMI y el programador bajo auditoría centralizada.
Cómo se ve en Linux y macOS
Linux
Con frecuencia se usa la combinación memfd_create y fexecve, lo que permite ejecutar una imagen sin dejar rastro en disco. Son habituales las inyecciones mediante ptrace y la sustitución de bibliotecas a través de la variable de entorno LD_PRELOAD. La persistencia suele apoyarse en timers de systemd, tareas cron o reglas udev. La entrega se hace mediante pipelines de shell. La detección se basa en el auditado de llamadas al sistema, sensores eBPF y el análisis de páginas ejecutables sin respaldo en archivos. Para análisis postincidente es útil el proyecto Volatility —ayuda a extraer de un volcado de memoria rastros de inyecciones, hilos ocultos y regiones no mapeadas.
macOS
En el ecosistema Apple se observan cargas de código mediante JXA y AppleScript, manipulaciones del runtime de Objective-C e inyecciones en procesos mediante interfaces cerradas. La persistencia se implementa vía LaunchAgents y LaunchDaemons, perfiles de configuración y plugins silenciosos que descargan scripts desde la red. El control lo proporcionan mecanismos de Endpoint Security y políticas basadas en perfiles. FileVault protege el volumen, pero no impide la ejecución en memoria en un sistema ya arrancado, por lo que la lógica de defensa es la misma que en otras plataformas.
Qué ve el equipo azul
- Parejas de procesos inusuales. Un editor ofimático inicia PowerShell, un navegador lanza una utilidad administrativa, un servicio de impresión establece una conexión externa.
- Páginas ejecutables sin correspondencia con un archivo. Áreas privadas de memoria con permisos de ejecución donde se detectan estructuras del formato PE, sin una imagen en disco.
- Intentos de silenciar la telemetría. Descarga de bibliotecas de monitorización, desactivación de trazas, intervención en AMSI.
- Actividad de red atípica en procesos «silenciosos». Sesiones largas cifradas, puertos extraños, dominios inesperados.
- Eventos sospechosos en WMI, el programador y el registro. Nuevas suscripciones a eventos del sistema, tareas que cargan scripts desde Internet, comandos de una sola línea en entradas de inicio automático.
Fuentes de datos y herramientas
Registros y trazado de eventos de Windows. Active el auditoría avanzada, la recolección de bloques de scripts de PowerShell, el registro de módulos y la captura de eventos de red. Centralice los logs en un SIEM.
Sysmon. Configure eventos para el árbol de procesos, conexiones de red, cambios en el registro, actividades WMI y la firma de imágenes. Es conveniente tomar configuraciones base y adaptarlas a las particularidades de la infraestructura. enlace
Volcados de memoria. Ante sospecha, capture un volcado de la memoria RAM y analícelo con Volatility versión 3. Busque secciones no mapeadas, cargas reflejadas de bibliotecas y hilos ocultos. enlace
Caza por comportamiento. Busque cadenas largas en Base64, reflexión en .NET, claves de inicio atípicas, scripts en carpetas de documentos y la carga de motores de scripting por binarios de confianza. Es útil mantener una lista de parejas permitidas «quién puede ejecutar a quién» y reaccionar ante desviaciones.
Medidas prácticas de protección
- Listas blancas de aplicaciones. Pase de un modelo de bloqueo a uno de permisos. Windows Defender Application Control o AppLocker cierran clases enteras de evasiones. Restrinja el acceso a utilidades del sistema que se usan frecuentemente como contenedor de código ajeno.
- Reglas Attack Surface Reduction. Active el conjunto que bloquea la ejecución de scripts desde documentos de Office, la creación de ejecutables desde aplicaciones de Office, comandos ofuscados y otros trucos comunes. enlace
- Política estricta de PowerShell. Deshabilite la versión 2, aplique Constrained Language donde no sea necesario el acceso completo a .NET, active los registros Script Block y de módulos, y habilite la transcripción de sesiones.
- Integridad de AMSI y telemetría. Cualquier intento de manipulación debe interpretarse como una señal grave. Añada reglas que eleven la prioridad de ese tipo de eventos.
- Control de WMI, el programador y el inicio automático. Implemente auditorías periódicas de suscripciones, tareas y claves Run. Reaccione ante scripts de una sola línea que descargan código desde Internet.
- Macros y etiqueta de procedencia. Prohíba contenido activo en documentos procedentes del exterior y verifique la correcta aplicación de la etiqueta MOTW. Forme al personal para reconocer señuelos comerciales.
- Segmentación y control de salidas a Internet. Restrinja las conexiones salientes desde puestos de trabajo, utilice proxy y políticas de control de egress para detectar túneles atípicos.
- EDR con análisis de memoria. Elija plataformas capaces de detectar páginas con permisos de ejecución sin respaldo en archivos, bibliotecas reflejadas y técnicas de hollowing.
Ideas para caza y verificación de hipótesis
Búsqueda de combinaciones de procesos extrañas en los registros de seguridad de Windows
# Evento 4688 en 24 horas. Buscamos pares "padre → hijo", atípicos para aplicaciones de oficina y navegadores
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688; StartTime=(Get-Date).AddDays(-1)} |
Where-Object {
$_.Properties[9].Value -match '(WINWORD|EXCEL|POWERPNT|Acrobat|chrome|msedge).exe' -and
$_.Properties[5].Value -match '(powershell|wscript|cscript|mshta|rundll32|regsvr32).exe'
} |
Select-Object TimeCreated,
@{n='Parent';e={$_.Properties[9].Value}},
@{n='Child'; e={$_.Properties[5].Value}},
@{n='Cmd'; e={$_.Properties[8].Value}} |
Format-Table -Auto
Sencilla idea para YARA sobre un volcado de memoria
// Detectamos signos de formato PE en una página privada sin vínculo a un archivo. // Aplicar solo en el marco de análisis forense de memoria autorizado
rule InMemory_PE_NoMapping {
strings:
$mz = { 4D 5A }
$pe = { 50 45 00 00 }
condition:
$mz at 0 and $pe in (0x40..0x200)
}
Parte legal y ética
Realice pruebas solo en equipos propios o con el consentimiento por escrito del propietario. El objetivo de este material es ayudar a los defensores a diseñar una arquitectura sólida y formular detecciones claras. No se ofrecen instrucciones para atacar.
Recordatorio breve
- Ataque sin archivos —es ejecución en memoria, no desaparición de rastros. Los registros y artefactos permanecen.
- Los principales aliados del defensor son AMSI, el registro avanzado de PowerShell, la traza de eventos de Windows, Sysmon y un modelo de ejecución basado en permisos.
- Las utilidades del sistema son útiles para administradores, pero sin restricciones se convierten en un entorno conveniente para código ajeno.
- Un EDR con análisis del espacio de direcciones detecta páginas con permisos de ejecución sin respaldo en archivos y técnicas de inyección.
- Las reglas ASR y las listas blancas reducen la superficie de ataque y eliminan clases enteras de evasiones.