Ingeniería inversa
Cayetano de Juan
Área: Ingenierías, Libros, Sistemas e Informática
Editorial: Ediciones de la U
Coedición: Ra-ma Editorial
ISBN: 9789587925210
Precio en Dólares: USD$ 21.94
*Este valor puede ser aproximado y podrá variar al momento del pago.
Descripción
La Ingeniería Inversa, se refiere al estudio detallado de las funciones de cualquier archivo binario, paso a paso, con el fin de descubrir cuál es el código responsable por su funcionamiento. Es una de las disciplinas más gratificantes dentro de la seguridad informática.
Esta obra te explica de forma secuencial como poner en práctica esta materia a través de explicaciones claras y didácticas, acompañados de ejemplos y ejercicios de autoevaluación.
En la primera parte aprenderás el lenguaje de más bajo nivel legible que existe, el lenguaje Ensamblador, y lo harás comenzando desde cero con este orden:
- A moverte por el mundo de las API de Windows.
- A enlazar Ensamblador con lenguajes de alto nivel como Python y VB.Net.
- A crear su propia Shell Inversa en Ensamblador y conectarla con Python.
- A crear sus propias DLL.
En la segunda parte asimilarás a interpretar los programas compilados y aprenderás:
- A interpretar FIcheros Binarios PE.
- A poner puntos de ruptura.
- A crear sus propios parches o cambios en un binario.
- A cifrar texto por XOR.
- A reconstruir código intermedio.
- A analizar un binario contaminado por Malware real.
Tabla de contenido
ACERCA DEL AUTOR
PRÓLOGO
INTRODUCCIÓN
PARTE 1. LENGUAJE ENSAMBLADOR
CAPÍTULO 1. CONCEPTOS BÁSICOS Y
EXPECTATIVAS DEL CURSO
1.1 FUNCIONAMIENTO DE WINDOWS, MENSAJES Y EVENTOS
1.2 ¿PARA QUÉ PODEMOS USAR EL LENGUAJE ENSAMBLADOR?
1.3 NUMERACIÓN Y CÁLCULO ARITMÉTICO
1.3.1 Números hexadecimales
1.3.2 Conversiones decimal – hexadecimal
1.3.3 Números negativos
1.3.4 Bits, bytes, palabras y sistema binario
1.3.5 Registros como variables
1.4 RESUMEN AUTOEVALUACIÓN
1.5 EJERCICIOS
1.5.1 Resultados
CAPÍTULO 2. LENGUAJE ENSAMBLADOR
2.1 EJERCICIO
2.1.1 Resultados
2.2 DESCARGA E INSTALACIÓN DE MASM32 / EASY CODE
2.2.1 Descarga Masm32
2.2.2 Descarga Easy Code
2.2.3 Configuración Easy Code
2.3 REGISTROS DEL SISTEMA 32BITS
2.4 DIRECTIVAS DEL LENGUAJE, ESTRUCTURA DEL PROGRAMA
2.4.1 Ejercicio guiado hola mundo. de Debug a Microsoft Windows 32bits
2.4.2 Ejercicio
2.5 TIPOS DE DATOS
2.5.1 DB
2.5.2 DW/Word
2.5.3 DD/DWord
2.5.4 DQ/QWord
2.5.5 DT
2.6 INTRODUCCIÓN A LAS API’S DE WINDOWS
2.6.1 Donde buscar información sobre API
2.6.2 Como Agregar API (DLL) A Su Proyecto
2.7 MOVER DATOS A REGISTROS Y VICEVERSA
2.7.1 Instrucción Mov
2.8 OPERACIONES MATEMÁTICAS SIMPLES
2.9 OPERACIONES DE PILA
CAPÍTULO 3. LENGUAJE ENSAMBLADOR: PROCEDIMIENTOS,
DEFINICIÓN Y USO
CAPÍTULO 4. LENGUAJE ENSAMBLADOR: OPERADORES Y DIRECTIVAS
RELACIONADAS CON LOS DATOS
4.1 OFFSET
4.2 ADDR
4.3 PTR
4.4 TYPE
4.5 SIZEOF
CAPÍTULO 5. LENGUAJE ENSAMBLADOR: OPERACIONES CON
BANDERAS
CAPÍTULO 6. LENGUAJE ENSAMBLADOR: INSTRUCCIONES DE
DESPLAZAMIENTO
6.1 MULTIPLICAR POR DESPLAZAMIENTO
6.1.1 SHL, desplazamiento lógico a la izquierda
6.1.2 SHR, desplazamiento lógico a la derecha
CAPÍTULO 7. LENGUAJE ENSAMBLADOR: INSTRUCCIONES DE
TRANSFERENCIA DE CONTROL
7.1 INCONDICIONALES
7.1.1 JMP
7.1.2 Invoke
7.1.3 RET
7.2 CONDICIONALES TRADICIONALES
7.3 CONDICIONALES MASM32
7.4 ITERATIVAS TRADICIONALES
7.5 ITERATIVA MASM32
CAPÍTULO 8. LENGUAJE ENSAMBLADOR: INSTRUCCIONES MANEJO
DE CADENAS
8.1 PREFIJOS DE REPETICIÓN
8.2 MOVER CADENAS
8.2.1 LEA, cargar dirección efectiva
8.3 COMPARAR CADENAS
8.4 BUSCAR EN CADENAS
8.5 TRANSFERENCIAS ENTRE CADENAS Y REGISTROS
8.5.1 Incrementar Y Decrementar en Uno
CAPÍTULO 9. MODOS DE DIRECCIONAMIENTO
CAPÍTULO 10. RESUMEN Y FASE DE VIDEO TALLERES
10.1 EJERCICIOS VARIOS PARA MASM32
10.1.1 Resultados
10.2 PROYECTO FINAL MASM32
10.2.1 Resultado
CAPÍTULO 11. ANEXO I. INTEGRACIÓN CON LEGUAJES DE
ALTO NIVEL
11.1 COMO REALIZAR DLL EN ENSAMBLADOR
11.1.1 Creación de DLL en ensamblador
11.1.2 Creación De DLL en ensamblador función para VB.NET
11.1.3 Creación de DLL en ensamblador función para Python
11.1.4 Creación de DLL en ensamblador funciones a exportar
11.2 PYTHON INTEGRACIÓN
11.3 LA COMUNIDAD DE PYTHON
11.3.1 Creando su propia biblioteca – Shell inversa para Windows desde
Python
11.4 VB.NET INTEGRACIÓN
PARTE 2. INGENIERÍA INVERSA
CAPÍTULO 12. INTRODUCCIÓN
12.1 ¿QUÉ ES EL REVERSING O INGENIERÍA INVERSA
12.2 ¿QUÉ ES UN COMPILADOR?
12.2.1 Código fuente
12.2.2 Código intermedio
12.2.3 Código objeto
12.3 LIMITACIONES
12.4 ¿QUÉ DICE LA LEY, RESPECTO AL REVERSING
12.5 EJERCICIOS
12.6 RESULTADOS
CAPÍTULO 13. INTRODUCCIÓN A OLLYDBG
13.1 DESENSAMBLADOR/CÓDIGO
13.2 REGISTROS
13.2.1 Registros Del Procesador
13.2.2 Flag O Banderas
13.2.3 Registros de punto flotante
13.3 DUMP
13.4 PILA/STACK
13.5 RELACIÓN DE TECLAS Y BOTONES MÁS USADOS
CAPÍTULO 14. RECONSTRUCCIÓN DE CÓDIGO NATIVO
14.1 CÓDIGO NATIVO, VARIABLES Y ESTRUCTURAS
14.1.1 Variables
14.2 EJECUTANDO CÓDIGO NATIVO, CON OLLYDBG
14.2.1 Ejecución completa
14.2.2 Ejecución Línea a Línea
14.2.3 Pasar por encima, ejecutar funciones sin entrar dentro de ellas
14.3 CÓDIGO NATIVO, VARIABLES Y ESTRUCTURAS II
14.3.1 Variables II, sumando
14.3.2 Puntos de ruptura
14.3.3 Estructuras
14.3.4 Buscando en la memoria, sección del Dump
14.4 PROCEDIMIENTOS Y VARIABLES LOCALES
14.5 ESTRUCTURAS DE CONTROL CONDICIONALES
14.5.1 Instrucciones De Transferencia De Control Según los Flag
14.6 ESTRUCTURAS DE CONTROL ITERATIVAS
14.7 ESTRUCTURAS DE CONTROL REPETITIVAS
14.8 FORMULARIOS
14.9 FICHEROS BINARIOS PE
14.9.1 Diseño
14.9.2 Tabla de secciones
14.9.3 Tabla IMPORT
14.9.4 Relocalizaciones
CAPÍTULO 15. API’S SIGNIFICATIVAS
CAPÍTULO 16. PRACTICAS CON SUPUESTOS EN CÓDIGO NATIVO
16.1 BUSCANDO CADENA EN CÓDIGO NATIVO
16.2 PONIENDO PARCHES (“PATCHES”)
16.3 EJERCICIO
16.4 CIFRADO DE TEXTO POR XOR
16.4.1 Cifrado mediante XOR
16.5 ANULAR OBJETIVO POR API (INTERMODULAR CALLS)
16.6 EJERCICIOS
16.7 ANALIZANDO SHELLTER, UN MALWARE REAL
16.7.1 Analizando la calculadora de Windows sin infectar, mapa memoria...
16.7.2 Analizando la calculadora de Windows infectada, mapa memoria
16.7.3 Analizando la calculadora de Windows sin infectar, hilos
16.7.4 Analizando la calculadora de Windows infectada, hilos
16.7.5 Analizando la calculadora De Windows Infectada, Hilo Principal
Shellter
CAPÍTULO 17. RECONSTRUCCIÓN DE CÓDIGO INTERMEDIO
17.1 MICROSOFT INTERMEDIATE LANGUAGE
17.2 ANALIZANDO BINARIO DE CÓDIGO INTERMEDIO VB.NET
17.2.1 Analizando binarios VB.NET, con OllyDBG
17.2.2 Ejercicio
17.3 EXEINFOPE
17.4 INTRODUCCIÓN A .NET REFLECTOR
CAPÍTULO 18. PRÁCTICA CON SUPUESTO EN CÓDIGO INTERMEDIO
MATERIAL ADICIONAL
CAYETANO DE JUAN UBEDA
Técnico Superior en Informática de Gestión. Auditor sénior en ciberseguridad, colegiado como perito judicial en informática forense. Diferentes certificaciones,
como Cybersecurity Essentials por CISCO, CPHE (Certificado profesional de hacking ético). Cursos finalizados pendientes de certificación, PCAP (Programming Essentials In Python) por CISCO, CyberOps Associate por CISCO. EC Council Hacking y Ciberoperaciones por CISCO. Formador ocupacional por la Junta de Andalucía.
Formador de formadores en la especialidad de Teleformación. Programación VB.NET,
Python, lenguaje Ensamblador. Actualmente cursando el CEH.
Ha trabajado como consultor en The Security Sentinel, auditando empresas de nivel internacional como farmacéuticas y partidos políticos de gran relevancia, organismos oficiales como la Junta de Andalucía, Entidad Nacional de Acreditación. Ha trabajado como formador, impartiendo módulos al servicio Andaluz dSe Salud, Fundación O.N.C.E, etc. Su última formación fue por medio de la Fundación IL3 de La Universidad de Barcelona al PDI de Chile, edición 2022 (Estándares corporativos en protección de datos y detección y análisis de datos vulnerables).
En estos momentos dirige el departamento técnico auditor de The Security Sentinel,
compaginándolo con proyectos formativos a destacar ARELANCE, impartiendo curso
de ciberseguridad.