Explica las técnicas comunes de inyección de procesos y las firmas de API y de comportamiento que las revelan.
Respuesta breve
La inyección de procesos ejecuta código malicioso dentro de otro proceso para ocultarse y heredar su confianza. La inyección remota clásica reserva memoria en un objetivo con VirtualAllocEx, escribe una carga útil vía WriteProcessMemory y la ejecuta con CreateRemoteThread. Las variantes incluyen la inyección de DLL vía LoadLibrary, el process hollowing que desmapea un proceso legítimo suspendido y reemplaza su imagen, la inyección APC que encola código en un hilo, y la carga reflexiva o mapeada manualmente que evita LoadLibrary por completo. Se detectan por las secuencias de API reveladoras, la memoria RWX en un proceso normalmente limpio, los hilos sin archivo de respaldo en disco y las anomalías padre-hijo.
La inyección de procesos permite al malware ejecutar su código dentro de otro proceso — para ocultarse de la inspección de la lista de procesos, para evadir las defensas que confían en el proceso anfitrión, y para acceder a la memoria de otro programa. Los entrevistadores preguntan esto a los sénior porque la inyección está en todas partes en el malware moderno, y reconocerla exige conocimiento real de los internals de Windows.
La técnica clásica
La inyección por hilo remoto sigue una secuencia de API reconocible:
OpenProcesspara obtener un handle del objetivo.VirtualAllocExpara reservar memoria en el objetivo — con frecuencia en RWX (legible, escribible, ejecutable).WriteProcessMemorypara copiar la carga útil dentro.CreateRemoteThread(oNtCreateThreadEx/QueueUserAPC) para ejecutarla.
Ver esta cadena en los imports o en tiempo de ejecución es una señal de inyección casi segura.
Variantes comunes
- Inyección de DLL. Escribir una ruta de DLL en el objetivo y llamar a
LoadLibraryvía un hilo remoto para que el loader mapee tu DLL. - Process hollowing. Iniciar un proceso legítimo suspendido (
CREATE_SUSPENDED), desmapear su imagen original, escribir una imagen maliciosa en su lugar, corregir el punto de entrada y reanudar — el proceso parece legítimo por su nombre pero ejecuta el código del atacante. - Inyección APC. Encolar una llamada a procedimiento asíncrono en un hilo alertable existente para que la carga útil se ejecute cuando ese hilo entre a continuación en una espera alertable.
- Carga reflexiva / mapeo manual. La carga útil se mapea a sí misma en memoria y resuelve sus propios imports, sin llamar nunca a LoadLibrary, derrotando las detecciones que enganchan el loader.
Cómo se detecta
A nivel de comportamiento: memoria privada RWX en un proceso que normalmente no la tiene, hilos sin archivo de respaldo en disco, una relación padre-hijo que no tiene sentido (p. ej. winword.exe generando cmd.exe), y las secuencias de API anteriores capturadas por el EDR o en un depurador. En forense de memoria, herramientas como malfind de Volatility marcan las regiones inyectadas. Una respuesta sénior empareja cada técnica con su huella de API y el artefacto que deja tras de sí.
Posibles preguntas de seguimiento
- ¿En qué se diferencia el process hollowing de la inyección clásica por CreateRemoteThread?
- ¿Por qué la memoria RWX sin archivo de respaldo es un fuerte indicador de inyección?
- ¿Cómo evade la carga reflexiva de DLL las detecciones que enganchan LoadLibrary?