ÍNDICE ACERCA DEL AUTOR PRÓLOGO CAPÍTULO 1. INTRODUCCIÓN CAPÍTULO 2. MOTIVOS PARA REALIZAR UN ANÁLISIS DE MALWARE CAPÍTULO 3. INGENIERÍA INVERSA DE SOFTWARE 3.1 INTRODUCCIÓN 3.2 FUNDAMENTOS DE PROGRAMACIÓN 3.2.1 Código fuente 3.2.2 Código máquina 3.2.3 Código ensamblador 3.2.4 Entornos de ejecución de software y bytecodes 3.2.5 Construcciones básicas de código 3.2.6 Herencia 3.2.7 Variables 3.2.8 Estructuras de datos 3.2.9 Listas 3.2.10 Control de flujo 3.3 ARQUITECTURA X86 3.3.1 Tipos de datos 3.3.2 Registros 3.3.3 Memoria 3.3.4 Representación complemento a dos 3.3.5 Formato de instrucciones 3.3.6 Modos de direccionamiento 3.3.7 Interrupciones 3.3.8 Funciones (functions) 3.3.9 Módulos (modules) 3.3.10 La pila (stack) 3.3.11 El heap. 3.3.12 Secciones de datos ejecutables 3.3.13 Modos de operación de los procesadores 3.3.14 Instrucciones en ensamblador x86 3.3.15 Control de flujo en ensambladoR 3.4 ANÁLISIS DE CÓDIGO DE 64 BITS 3.4.1 Introducción 3.4.2 Registros de propósito general en x86 de 64 bits 3.4.3 Convención de llamadas a funciones 3.4.4 Modos de direccionamiento 3.4.5 Instrucciones x64 3.4.6 Transferencia de datos en x64 CAPÍTULO 4. FUNDAMENTOS DE LOS SISTEMAS OPERATIVOS MICROSOFT WINDOWS 4.1 BREVE HISTORIA 4.2 CARACTERÍSTICAS DE WINDOWS NT 4.3 COMPATIBILIDAD HARDWARE 4.4 GESTIÓN DE MEMORIA 4.4.1 Direccionamiento virtual de memoria 4.4.2 Memoria de kernel y memoria de usuario 4.4.3 Objetos de seccióN 4.4.4 Árboles VAD 4.4.5 Asignaciones en modo usuario 4.4.6 Símbolos 4.4.7 Funciones de la API para la gestión de memoria 4.5 OBJETOS Y HANDLES 4.5.1 Generalidades 4.5.2 Objetos con nombre (named objects) 4.6 PROCESOS E HILOS 4.6.1 Procesos 4.6.2 Hilos 4.6.3 Cambio de contexto 4.6.4 Objetos de sincronización 4.6.5 Atoms y tablas atom 4.6.6 Secuencia de inicialización de un proceso 4.7 API 4.8 FORMATO DE FICHERO PECOFF 4.8.1 Generalidades 4.8.2 Secciones de imagen 4.8.3 Dynamically Linked Libraries 4.8.4 Cabeceras de fichero 4.8.5 Sección Table (cabeceras de sección) 4.8.6 Sección DatA 4.8.7 Sección .drectvE 4.8.8 Sección .edatA 4.8.9 Sección .idatA 4.8.10 Sección .pdata 4.8.11 Sección .reloc 4.8.12 Sección .tls 4.8.13 Sección .rsrc. 4.8.14 Sección .cormeta 4.8.15 Sección .sxdatA 4.8.16 Cálculo del hash Authenticode de la imagen PE 4.9 ENTRADA/SALIDA 4.9.1 Generalidades 4.9.2 El sistema de E/S 4.9.3 Subsistema Win32. 4.10 STRUCTURED EXCEPTION HANDLING. CAPÍTULO 5. VIRTUALIZACIÓN Y SANDBOXING 5.1 VIRTUALIZACIÓN 5.2 SANDBOXING. CAPÍTULO 6. CRIPTOLOGÍA 6.1 INTRODUCCIÓN 6.2 DEFINICIONES 6.3 PRINCIPIOS DE LA CRIPTOGRAFÍA CLÁSICA 6.4 PRINCIPIOS DE CRIPTOGRAFÍA MODERNA 6.5 CRIPTOGRAFÍA DE CLAVE SIMÉTRICA 6.6 CRIPTOGRAFÍA DE CLAVE ASIMÉTRICA 6.7 CIFRADO HÍBRIDO 6.8 ALGORITMOS RESUMEN (HASHING) 6.9 ALGORITMOS DE LÓGICA DIFUSA (FUZZY HASHING) Y RESÚMENES DE SIMILITUD (SIMILARITY DIGESTS) 6.10 EMPLEO DE CIFRADO Y OFUSCACIÓN POR EL MALWARE 6.10.1 Generalidades 6.10.2 Cifrado CésaR 6.10.3 Codificación Base64. 6.10.4 Codificación XOR 6.10.5 Codificación mediante rotación 6.10.6 Técnicas de cifrado del malware 6.10.7 Técnicas de cifrado y codificación personalizadas 6.10.8 Cifrado de ficheros y volúmenes 6.11 PROTOCOLOS DE CIFRADO DE RED Y ANONIMIZACIÓN DE LAS COMUNICACIONES CAPÍTULO 7. VECTORES DE INFECCIÓN DE UN SISTEMA 7.1 PROPAGACIÓN DEL MALWARE 7.2 DISTRIBUCIÓN DE MALWARE A TRAVÉS DE LA WEB CAPÍTULO 8. CAPACIDADES DEL MALWARE 8.1 VIRUS Y GUSANOS 8.2 TROYANOS (TROJAN HORSES) 8.3 ADWARE/SPYWARE 8.4 SCAREWARE 8.5 WIPER 8.6 RANSOMWARE 8.7 DOWNLOADERS Y LAUNCHERS 8.8 PUERTAS TRASERAS (BACKDOORS) 8.8.1 Reverse shell 8.8.2 Windows Reverse Shell 8.8.3 Herramienta de acceso remoto (RAT) 8.8.4 Botnet. 8.9 ROOTKITS 8.10 MALWARE DE EXFILTRACIÓN DE INFORMACIÓN 8.11 ROBO DE CREDENCIALES 8.11.1 Interceptación GINA 8.11.2 Volcado de hashes 8.11.3 Registro de pulsaciones de teclado (keylogging) 8.12 MALWARE A NIVEL BIOS/FIRMARE CAPÍTULO 9. COMPONENTES DEL MALWARE 9.1 FUNCIONALIDAD MODULAR 9.2 MALWARE DE MÚLTIPLES ETAPAS 9.3 EXPLOIT KITS CAPÍTULO 10. MECANISMOS DE PERSISTENCIA DEL MALWARE 10.1 INTRODUCCIÓN 10.2 PERSISTENCIA EN LAS CARPETAS DE INICIO DE MICROSOFT WINDOWS 10.3 PERSISTENCIA EN LAS TAREAS PROGRAMADAS 10.4 PERSISTENCIA EN EL REGISTRO DE MICROSOFT WINDOWS 10.4.1 AppInit_DLLs 10.4.2 Valor Notify de Winlogon 10.4.3 Librerías SvcHost 10.5 TROYANIZACIÓN DE BINARIOS DEL SISTEMA 10.6 SECUESTRO DEL ORDEN DE CARGA DE LAS LIBRERÍAS 10.7 PERSISTENCIA EN MEMORIA DEL MALWARE 10.7.1 Inyección de shellcode 10.7.2 Inyección Reflexiva (Reflective DLL injection) 10.7.3 Módulo de memoria (memory module) 10.7.4 Process hollowing 10.7.5 Process Doppelgänging 10.7.6 Sobrescritura de módulo (module overwriting) 10.7.7 Gárgola (gargoyle) 10.8 FILELESS MALWARE CAPÍTULO 11. ESCALADA DE PRIVILEGIOS 11.1 INTRODUCCIÓN 11.2 AUTORIZACIÓN EN SISTEMAS MICROSOFT WINDOWS 11.3 LOCALIZANDO EL OBJETO TOKEN 11.4 SEDEBUGPRIVILEGE CAPÍTULO 12. TÉCNICAS DE OCULTACIÓN DE MALWARE 12.1 TÉCNICAS EVASIVAS 12.2 EMPAQUETADORES (PACKERS) 12.3 CIFRADORES (CRYPTERS) 12.4 PROTECTORES (PROTECTORS) 12.5 INYECCIÓN DE CÓDIGO 12.6 ROOTKITS 12.7 API HOOKING. 12.7.1 Generalidades 12.7.2 SSDT hooking 12.7.3 IRP hooking. 12.7.4 IAT hooking. 12.7.5 Inline hooking 12.7.6 Hooking en controladores 12.8 DKOM 12.8.1 Generalidades 12.8.2 Ocultación de procesos 12.8.3 Ocultación de controladores del sistemA 12.8.4 Elevación privilegio de token y de grupo con DKOM. 12.9 TAXONOMÍA DE LOS ROOTKITS 12.10 DETECCIÓN DE ROOTKITS 12.10.1 Detección basada en firma (signature based detection) 12.10.2 Detección basada en heurística/comportamiento (heuristic/behavioral detection) 12.10.3 Detección basada en visión transversal (cross view based) 12.10.4 Detección basada en integridad. 12.10.5 Path profiling en tiempo de ejecución (runtime execution profiling) 12.10.6 Detección manual de rootkits CAPÍTULO 13. IDENTIFICACIÓN Y EXTRACCIÓN DEL MALWARE 13.1 INTRODUCCIÓN 13.2 DETECCIÓN DE LA CONFIGURACIÓN 13.3 MODELADO 13.4 INDICADORES 13.5 COMPORTAMIENTO DE LA AMENAZA . 13.6 COMPARACIÓN DE LAS DIFERENTES APROXIMACIONES DE DETECCIÓN DE LA AMENAZA 13.7 INDICADORES DE QUE SE HA PRODUCIDO UNA BRECHA DE SEGURIDAD CAPÍTULO 14. ETAPAS DEL ANÁLISIS DE MALWARE 14.1 INTRODUCCIÓN 14.2 ANÁLISIS COMPLETAMENTE AUTOMATIZADO 14.3 ANÁLISIS ESTÁTICO DE PROPIEDADES 14.4 ANÁLISIS INTERACTIVO DE COMPORTAMIENTO 14.5 INGENIERÍA INVERSA MANUAL DEL CÓDIGO 14.6 COMBINANDO LAS ETAPAS DE ANÁLISIS DE MALWARE CAPÍTULO 15. TÉCNICAS DE ANÁLISIS DE MALWARE 15.1 INTRODUCCIÓN 15.2 ANÁLISIS ESTÁTICO DE MALWARE 15.3 ANÁLISIS DINÁMICO DE MALWARE 15.4 ESTABLECIENDO UN ENTORNO DE ANÁLISIS DE MALWARE CAPÍTULO 16. TÉCNICAS BÁSICAS DE ANÁLISIS ESTÁTICO DE MALWARE 16.1 EMPLEO DE HERRAMIENTAS ANTIVIRUS 16.2 RESÚMENES COMO HUELLA DIGITAL DE MALWARE 16.3 BÚSQUEDA DE CADENAS DE TEXTO 16.4 BÚSQUEDA DE MUTEXES 16.5 BÚSQUEDA DE PATRONES CON YARA 16.6 IDENTIFICACIÓN DE LAS DEPENDENCIAS DE FICHEROS 16.7 ATOMS Y TABLAS ATOM 16.8 MALWARE EMPAQUETADO Y OFUSCADO 16.9 BÚSQUEDA DE LA INFORMACIÓN DE PE 16.10 DESENSAMBLADO DE CÓDIGO CAPÍTULO 17. TÉCNICAS BÁSICAS DE ANÁLISIS DINÁMICO DE MALWARE 17.1 INTRODUCCIÓN 17.2 MONITORIZACIÓN DE INSTALACIÓN DE APLICACIONES 17.3 MONITORIZACIÓN DE PROCESOS 17.4 MONITORIZACIÓN DE FICHEROS Y CARPETAS 17.5 MONITORIZACIÓN DEL REGISTRO DE WINDOWS 17.6 MONITORIZACIÓN DEL TRÁFICO DE RED DE LAS CAPAS DE RED Y TRANSPORTE 17.7 MONITORIZACIÓN/RESOLUCIÓN DNS 17.8 MONITORIZACIÓN DE TRÁFICO DE RED EN LA CAPA APLICACIÓN 17.9 MONITORIZACIÓN DE LAS LLAMADAS A LA API DE MICROSOFT WINDOWS 17.10 MONITORIZACIÓN DE CONTROLADORES DE DISPOSITIVOS 17.11 MONITORIZACIÓN DE PROGRAMAS AL INICIARSE MICROSOFT WINDOWS 17.12 MONITORIZACIÓN DE SERVICIOS EN MICROSOFT WINDOWS CAPÍTULO 18. INTERACCIÓN CON SITIOS WEB E INFRAESTRUCTURA MALICIOSA 18.1 ANONIMIZACIÓN DE LAS COMUNICACIONES 18.2 SISTEMAS Y HERRAMIENTAS DEL ANALISTA CAPÍTULO 19. ANÁLISIS DE DOCUMENTOS MALICIOSOS 19.1 METODOLOGÍA GENERAL DE ANÁLISIS DE DOCUMENTOS 19.2 ANÁLISIS DE SCRIPTS PARA POWERSHELL. 19.2.1 Generalidades 19.2.2 Análisis de comandos/scripts PowerShell. 19.2.3 Utilización de los atacantes de PowerShell 19.2.4 Weaponización de PowerShell 19.3 DESOFUSCACIÓN DE SCRIPTS UTILIZANDO DEPURADORES 19.4 DESOFUSCACIÓN DE SCRIPTS UTILIZANDO INTERPRETADORES388 19.5 FICHEROS HTA 19.6 ANÁLISIS DE DOCUMENTOS DE MICROSOFT OFFICE 19.7 ANÁLISIS DE FICHEROS MSG 19.8 ANÁLISIS DE DOCUMENTOS RTF 19.9 ANÁLISIS DE DOCUMENTOS PDF 19.10 ANÁLISIS DE SHELLCODE CAPÍTULO 20. TÉCNICAS AVANZADAS DE ANÁLISIS DINÁMICO DE MALWARE 20.1 ANÁLISIS DE MALWARE EMPAQUETADO 20.2 DEPURACIÓN DE CÓDIGO EMPAQUETADO 20.3 ANÁLISIS DE MALWARE QUE UTILIZA MÚLTIPLES TECNOLOGÍAS 20.4 ANÁLISIS FORENSE DEL CONTENIDO DE LA MEMORIA RAM CAPÍTULO 21. ANÁLISIS DE MALWARE QUE INCORPORA TÉCNICAS ANTIVIRTUALIZACIÓN 21.1 INTRODUCCIÓN 21.2 TÉCNICAS ANTIVIRTUALIZACIÓN 21.2.1 Detección de entornos de virtualizacióN 21.2.2 Artefactos de entornos de virtualización 21.2.3 Instrucciones vulnerables 21.2.4 Técnica antivirtualización Red Pill. 21.2.5 Técnica antivirtualización No Pill 21.2.6 Interrogación del puerto de comunicación I/O como técnica antivirtualización 21.2.7 Instrucción STR como técnica antivirtualizacióN 21.2.8 Otras técnicas antivirtualizacióN 21.2.9 Técnicas de escape del entorno virtualizado 21.3 MEDIDAS ANTI-ANTIDETECCIÓN DE ENTORNOS DE ANÁLISIS DEMALWARE CAPÍTULO 22. ANÁLISIS DE MALWARE QUE INCORPORA TÉCNICAS ANTIDESENSAMBLADO 22.1 INTRODUCCIÓN 22.2 ALGORITMOS DE DESENSAMBLADO 22.2.1 Desensamblado lineal 22.2.2 Desensamblado orientado a flujo 22.3 TÉCNICAS ANTIDESENSAMBLADO 22.3.1 Introducción 22.3.2 Instrucciones de salto que apuntan al mismo objetivo 22.3.3 Instrucción de salto con una condición de constantE 22.3.4 Funciones de bifurcación 22.3.5 Desensamblado imposiblE 22.4 TÉCNICAS ANTIANÁLISIS DE LA PILA CAPÍTULO 23. ANÁLISIS DE MALWARE QUE IMPLEMENTA TÉCNICAS DE OFUSCACIÓN DE FLUJO DE EJECUCIÓN 23.1 INTRODUCCIÓN 23.2 PUNTEROS A FUNCIONES 23.3 EXPLOTACIÓN DE LA INSTRUCCIÓN CALL 23.4 EXPLOTACIÓN DEL PUNTERO DE RETORNO 23.5 EXPLOTACIÓN DE SEH CAPÍTULO 24. ANÁLISIS DE MALWARE QUE IMPLEMENTA TÉCNICAS ANTIDEPURACIÓN 24.1 INTRODUCCIÓN 24.2 DETECCIÓN DE ENTORNOS DE DEPURACIÓN 24.3 TÉCNICAS BASADAS EN LLAMADAS A LA API DE MICROSOFT WINDOWS 24.3.1 Introducción 24.3.2 Comprobación manual de la bandera BeingDebugged. 24.3.3 Comprobación de la bandera ProcessHeap 24.3.4 Comprobación de la bandera NtGlobalFlag. 24.3.5 Comprobación de rastros de depuración en el sistemA 24.3.6 Otras medidas anti-antidepuracióN 24.4 IDENTIFICANDO EL COMPORTAMIENTO DEL DEPURADOR 24.4.1 Introducción 24.4.2 INT scanning 24.4.3 Cálculo de checksums del código 24.4.4 Comprobaciones de paso del tiempo 24.4.5 Empleo de la Instrucción RDTSC 24.4.6 Empleo de las funciones QueryPerformanceCounter y GetTickCount. 24.5 INTERFIRIENDO EL FUNCIONAMIENTO DEL DEPURADOR 24.5.1 Introducción 24.5.2 TLS callbacks 24.5.3 Empleo de excepciones 24.5.4 Inserción de interrupciones 24.5.5 Inserción de la interrupción INT 3 24.5.6 Inserción de la interrupción INT 2D. 24.5.7 Inserción de ICE 24.6 VULNERABILIDADES EXISTENTES EN LOS DEPURADORES CAPÍTULO 25. ANALIZANDO MUESTRAS PROGRAMADAS EN .NET 25.1 INTRODUCCIÓN 25.2 INTRODUCCIÓN A .NET. 25.2.1 Generalidades 25.2.2 Código gestionado 25.2.3 Lenguajes de programación .NET 25.2.4 CTS 25.3 EL LENGUAJE IL 25.3.1 Pila de evaluación 25.3.2 Registros de activacióN 25.3.3 Instrucciones IL 25.4 ENSAMBLADOS .NET 25.5 DECOMPILADORES 25.6 PROTECCIÓN DE CÓDIGO EN .NET 25.7 OFUSCADORES EN .NET. 25.8 EMPAQUETADORES EN .NET 25.8.1 Renombramiento de símbolos 25.8.2 Ocultación de código CIL 25.8.3 Técnicas exclusivas de .NET. 25.9 ANÁLISIS DE MUESTRAS MALICIOSAS EN .NET. 25.10 INGENIERÍA INVERSA DE CÓDIGO OFUSCADO 25.10.1 API 25.10.2 Cadenas de usuario 25.10.3 LoadAssembly. CAPÍTULO 26. COMPRENDIENDO LOS CIBERATAQUES 26.1 AGENTES DE LA AMENAZA 26.1.1 Cibercriminales 26.1.2 Hacktivistas 26.1.3 Atacantes con apoyo estatal. 26.1.4 La amenaza interna (insider threat) 26.1.5 Otras posibles clasificaciones 26.2 CATEGORIZACIÓN DE LA CIBERAMENAZA 26.3 DEFENSA DE RED BASADA EN INTELIGENCIA 26.4 PASOS PARA LA EJECUCIÓN DE UN CIBERATAQUE (CYBER KILL CHAIN) 26.4.1 Reconocimiento (Reconnaissance) 26.4.2 Preparación de la operación (Weaponize) 26.4.3 Envío (Deliver) 26.4.4 Explotación (Exploit) 26.4.5 Instalación en la víctima (Installation) 26.4.6 Control remoto del malware (Command and Control) 26.4.7 Acciones sobre los objetivos (Actions on objectives) 26.5 CURSOS DE ACCIÓN 26.6 RECONSTRUCCIÓN DE UNA INTRUSIÓN 26.7 ANÁLISIS DE CAMPAÑA 26.8 MODELO EN DIAMANTE DE ANÁLISIS DE INTRUSIÓN 26.9 MODELO ATT&CK FOR ENTERPRISE 26.10 MODELO DE FIREEYE PARA EL CICLO DE VIDA DE UN CIBERATAQUE
Se considera malware cualquier tipo de software dañino contra el normal funcionamiento de un dispositivo, aplicación o red. Dentro del término malware se engloban virus, troyanos, gusanos, backdoors, rootkits, scareware, spyware, keyloggers, ransomware, etc. En general, un malware moderno incluirá varios de estos comportamientos. Esta obra compila y desgrana las principales TTP (Tácticas, Técnicas y Procedimientos) empleadas actualmente por los atacantes. Parte de estas TTP están diseñadas para comprometer la CIA (confidencialidad, integridad y disponibilidad) del sistema víctima o de la información almacenada en él. En cambio, técnicas como la ofuscación, el anti desensamblado, la anti depuración y el anti sandboxing, son específicamente implementadas por los desarrolladores de malware para impedir o dificultar la detección de la muestra maliciosa mediante la utilización de herramientas automatizadas y su análisis manual. El contenido de este libro describe una amplia metodología de análisis estático y dinámico de muestras maliciosas desarrolladas con las técnicas más actuales y avanzadas para entornos Windows sobre IA-32/64 bits. Estos conocimientos permitirán al lector: ? Analizar, caracterizar y contextualizar muestras maliciosas. ? Determinar el alcance del incidente. ? Eliminar los artifacts maliciosos del sistema infectado. ? Contribuir a la mejora de las defensas y elevar el nivel de resiliciencia del sistema. ? Fortalecer su capacidad para gestionar ciberincidentes relacionados con malware. Dado que se incluye el soporte teórico necesario relativo a sistemas operativos Microsoft Windows, arquitectura de computadores IA-32/IA-64 y programación (ensamblador y .NET), se trata de una obra ideal tanto para aquellos que quieran introducirse profesionalmente en el análisis de malware como un libro de referencia para analistas avanzados.