5. Cliente se pone en contacto con
CSIRT-SCC en junio de 2019:
• Muchos equipos han empezado a reiniciarse sin causa aparente.
• Antivirus corporativo ha detectado un ejecutable ‘swaqp.exe’ como
sospechoso.
6. Infección
Primeros datos y suposiciones
• Nombre sospechoso
• Poco detectado
• Buena señal Falso positivo
• Mala señal Malware recién salido del horno
• Baja entropía
• Descarga un ejecutable desde un dominio desconocido…
• … pero está firmado por Microsoft
• … que resulta ser una actualización LEGÍTIMA: KB3033929
• ¿Software del departamento de IT para automatizar tareas?
• Muy “ruidoso” para ser malware
7. Infección
Posible dropper
IP local
Nombre de dominio
Equipo usa NAT
Versión del SO
¡Tarjeta gráfica!
Recopilación
RESULTS
ANALYSISInsertado por los ¿atacantes? en
una tarea programada a través de
una infección anterior
No crea persistencia
ObtainUserAgentString
Envío de información del equipo infectado
8. Comunicación procesos - driver
• Versión del SO < Windows 7 o Windows Server 2008 R2
• No se continúa la ¿infección? ejecución
• Si la versión de ‘crypt32.dll’ no es la que el malware espera:
• Instalación de KB3033929
• Reinicio del sistema
• Descarga de un ejecutable con firmas SHA-1 y SHA-256
legítimas de Lizas Limited
• Antiguas versiones de ‘crypt32.dll’ no daban el soporte a SHA-256.
• Crea servicio asociado al ejecutable firmado descargado
Posible dropper
10. Análisis del Driver
• Información del ejecutable muestra que se trata
de un driver
• De nuevo, baja entropía
• Doble desempaquetado
• Después del primer desempaquetado empieza a
aparecer código útil que interactúa con el código
del segundo desempaquetado
• Comprueba si es instalado para ejecutarse al
arranque (BOOT)
• Si no, se copia se instala con otro nombre y con
arranque ‘on boot’. Borra el actual servicio.
12. Comunicación procesos - driver
• Escritura en ciertos valores del registro (Antes IOCTL)
• Basada en comandos
• Cuando un proceso quiere comunicarse con el rootkit, tiene que escribir en el
registro cumpliendo las siguientes condiciones:
• Clave: HKLMSYSTEM
• Valor: THID del hilo que está escribiendo
• Datos:
• Tipo :BINARY
• Tamaño: ≥ 4 bytes
• Simulación de
escritura
13. Comunicación procesos - driver
• Algunos comandos solicitan información
• La buscarán en un valor del registro con su mismo Thread ID pero
precedido por una ‘o’ (¿output?)
15. Comunicación usuario-driver
Código Acción
0x224014 Obtener información básica del rootkit:
Hora de instalación, número de ejecuciones, nombre...
0x22402c Obtener Ejecutable a inyectar en userSpace
0x224030 Obtener un duplicado del HANDLE del evento de actualización del
rootkit
0x224054 Obtener S03 (Lista negra de procesos)
0x224078 Eliminación / Actualización de S04 (Lista negra de entidades
firmantes)
0x2240A0 Eliminación / Actualización de S05 (Lista negra VERSION)
0x2240A4 Obtener S05 (Lista negra VERSION)
0x228000 Finalizar ejecución
0x228004 Actualización del propio rootkit
16. Comunicación usuario-driver
Código Acción
0x22800C Añadir Hilo a la lista de hilos infectados
0x228010 Quitar Hilo de lista de hilos infectados
0x228028 Actualización de código infectado en services.exe
0x228034 Actualización de un parámetro de configuración no usado
0x228038 Inyección de ejecutable. Copia el contenido del ejecutable malicioso en la
memoria del proceso víctima y después se modifica el EntryPoint de ésta.
Se utiliza infectProcess_changesEP para llevar a cabo la infección.
0x22803C Inyección de ejecutable. Copia el contenido del ejecutable malicioso en la
memoria del proceso víctima y después se crea un hilo remoto al código
inyectado.
0x2280F0 Añadir PID a listaPIDsProtegidos
0x2280F4 Eliminar PID de listaPIDsProtegidos
17. Almacenamiento
• Almacenamiento de información persistente en el registro
• Información cifrada con AES
• HKLMSystemCurrentControlSetServices<service name>
• Binarios
• S01: Binario del rootkit
• S02: DLL inyectada en modo usuario
• Información de la instalación (¿MaaS?)
• S07: Hora y fecha de instalación
• S08: Número de veces que el driver ha sido iniciado
18. Almacenamiento
• Registro
• S06: Valores de registro protegidos
• Listas negras
• S03: Nombres de proceso (137 -> +700)
• S04: Texto de firmas (33 -> 150~)
• S05: Texto recurso VERSION (Nueva: 75)
• S11: Nombres de archivo Caso Real (Forense)
29. Técnicas de protección
Conceptos Previos
• Lista de procesos protegidos
• Proceso Cómplice
• Funciones de Callback
• Funciones legítimas del sistema
• Patchguard x64
NTSTATUS ExCallbackFunction(
PVOID CallbackContext,
PVOID Argument1, // REG_NOTIFY_CLASS-typed value
// Qué operación se ha producido
PVOID Argument2 // Tipo según Arg1
// Identifica la clave / valor
)
30. • CmRegisterCallback
• Protección de claves de Registro
• Recepción de comandos
Técnicas de protección
Registro
NTSTATUS ExCallbackFunction(
PVOID CallbackContext,
PVOID Argument1,
// REG_NOTIFY_CLASS-typed value
// Qué operación se ha producido
PVOID Argument2
// Estructura relacionada
con la operación
// Identifica la clave / valor
)
33. • ObRegisterCallback sobre creación o duplicado de HANDLEs de procesos
o hilos
• Se comprueba si el HANDLE es para un proceso o un hilo
Técnicas de protección
Procesos protegidos
Se impide a procesos no
confiables operar sobre
procesos que forman parte
del ataque
34. Técnicas de protección
Evasión contra herramientas antimalware
Interceptación de
nuevos binarios en
memoria
Decisión sobre
parcheado
Comprobación de sus
propiedades contra las
blacklists
Parcheado del
binario
Ejecución normalEjecución MZ modificado
35. Técnicas de protección
Evasión contra herramientas antimalware (Modo usuario)
• PsSetCreateProcessNotifyRoutineEx
• KeStackAttachProcess
• Acceso a la memoria del proceso de usuario
• Se comprueba si el proceso debe ser ejecutado
36. Técnicas de protección
Evasión contra herramientas antimalware (Modo usuario)
Muchos drivers y componentes del sistema pueden registrar
funciones de notificación sobre creación de procesos, como son
PsSetCreateProcessNotifyRoutine(Ex, Ex2) [...] Estas funciones
además permiten deshabilitar o bloquear la creación de
procesos. Esto provee a los fabricantes de
soluciones antimalware una manera
de añadir mejoras de seguridad al
sistema operativo, ya sea mediante blacklists de hashes u
otras técnicas.
~Windows Internals, 7th Ed.
40. Técnicas de protección
Proceso cómplice (Inyección)
• Se mantiene un proceso cómplice en modo usuario
• Services.exe o Lsass.exe
• Buffer XOREADO que oculta el código del proceso cómplice
• Se crea un hilo remoto desde modo
kernel
• KeStackAttachProcess
• NtCreateThreadEx
41. • Lorem ipsum dolor sit
amet, consectetur
adipiscing elit. Donec
sollicitudin dolor a ex
rhoncus pharetra.
PsSetCreateProcessNotifyRoutineEx
Monitorización de nuevos procesos
Técnicas de protección
Proceso cómplice (Inyección)
43. No podemos parar
el proceso
Remediación
Consideraciones
El compromiso se
produce en ring 0
Los equipos
funcionan con
normalidad
No podemos parar
el servicio
No podemos
borrar el archivo
El driver también
se carga en MODO
SEGURO
No podemos
ejecutar
herramientas
antimalware
44. No podemos parar
el proceso
Remediación
Consideraciones
El compromiso se
produce en ring 0
Los equipos
funcionan con
normalidad
No podemos parar
el servicio
No podemos
borrar el archivo
El driver también
se carga en MODO
SEGURO
No podemos
ejecutar
herramientas
antimalware
No podemos hacer
nada!!
50. Conclusiones
Extracción de lista
de comandos
completa y
actualizada
Se persigue el
beneficio
económico
Desarrollo de
herramientas
En el incidente
fue un minero,
pero…