¿De qué hablan los sombreros grises de pitón?
Introducción
"Python Grey Hat" es un libro escrito por Justin Seitz, un senior black hat de la conocida agencia de seguridad Immunity Inc., sobre cómo es el lenguaje de programación Python. Muy utilizado por hackers y libros de hackers en el campo de la ingeniería inversa. Dave Aitel, un hacker veterano y fundador y director de tecnología (CTO) de Immunity Inc, fue el editor técnico de este libro. La mayor parte del libro se centra en dos temas duraderos en el campo de la tecnología de piratería: la ingeniería inversa y el descubrimiento de vulnerabilidades, y presenta a los lectores varios escenarios de problemas que casi todos los ingenieros inversos o investigadores de seguridad enfrentan en su trabajo diario, que incluyen: cómo diseñar y. cree sus propias herramientas de depuración, cómo automatizar tediosas tareas de análisis inverso, cómo diseñar y construir sus propias herramientas de fuzzing, cómo utilizar pruebas de fuzzing para encontrar vulnerabilidades de seguridad en productos de software, algunas pequeñas técnicas como la aplicación de ganchos y técnicas de inyección, así como introducciones detalladas a algunas herramientas de seguridad de Python convencionales, como PyDbg, Immunity Debugger, Sulley, IDAPython, PyEmu, etc. El autor utiliza Python, un lenguaje de programación popular en la comunidad de hackers actual, para guiar a los lectores a crear scripts sofisticados para abordar los problemas anteriores uno por uno. Una parte considerable de los ejemplos de código Python que aparecen en el libro se basan o provienen directamente de algunos excelentes proyectos de seguridad de código abierto, como Paimei de Pedram Amini. A partir de esto, los lectores pueden apreciar cómo los investigadores de seguridad integran elegantemente el arte de la tecnología de ingeniería y piratería. para resolver problemas. Esas preguntas difíciles.
Recomendaciones relacionadas: "Tutorial de Python"
Acerca del autor
Justin Seitz es un investigador senior de seguridad en Immunity. Ha pasado mucho tiempo en su. Trabajo anterior Dedique mucho tiempo a investigar el descubrimiento de vulnerabilidades, realizar ingeniería inversa, escribir exploits y escribir código Python.
Tabla de contenido
Capítulo 1 Configuración de un entorno de desarrollo 1
1.1 Requisitos del sistema operativo 1
1.2 Obtención e instalación de Python 2.5 2
p>
1.2.1 Instalar Python 2 en Windows
1.2.2 Instalar Python 2 en Linux
1.3 Instalar Eclipse y PyDev 4
1.3.1 Amigo del hacker: biblioteca ctype 5
1.3.2 Uso de la biblioteca de enlaces dinámicos 6
1.3.3 Construcción del tipo de datos C 8
1.3.4 Presione Pasar parámetros por referencia 9
1.3.5 Definir estructuras y uniones 9
Capítulo 2 Principio y diseño del depurador 12
2.1 General- registros de propósito 13
p>2.2 Pila 15
2.3 Evento de depuración 17
2.4 Punto de interrupción 18
2.4.1 Punto de interrupción suave 18
2.4.2 Puntos de interrupción de hardware 20
2.4.3 Puntos de interrupción de memoria 22
Capítulo 3 Cree su propio depurador de Windows 24
3.1 Depurado, atreverse a preguntar dónde se encuentra 24
3.2 Obtener información del estado del registro 33
3.2.1 Enumeración de hilos 34
3.2.2 Integración de funciones 35
3.3 Implementación de rutinas de manejo de eventos de depuración 39
3.4 Puntos de interrupción omnipotentes 44
3.4.1 Puntos de interrupción suaves 44
3.4.2 Puntos de interrupción de hardware 49
3.4.3 Puntos de interrupción de memoria 55
3.5 Resumen 59
Capítulo 4 PyDbg: depurador de Python puro en Windows 60
4.1 Rutina de procesamiento de puntos de interrupción extendida 60
4.2 Rutina de procesamiento de operaciones de memoria ilegal 63
4.3 Instantánea del proceso 66
4.3.1 Obtención de instantáneas del proceso 67
4.3.2 Resumen y integración 70
Capítulo 5 Immunity Debugger: la mejor opción para un mundo bipolar 74
5.1 Instalar Immunity Debugger 74
5.2 Immunity Debugger 101 75
5.2.1 PyCommand 76
5.2.2 PyHooks 76
5.3 Desarrollo del programa de exploits 78
5.3.1 Búsqueda de comandos aptos para exploits 78
5.3.2 Filtrar caracteres "malos" 80
5.3.3 Omitir el mecanismo DEP de Windows 82
5.4 Romper las rutinas anti-depuración en malware 87 p>
5.4.1 IsDebuugerPresent 87
5.4.2 Rompiendo rutinas de enumeración de procesos 88
Capítulo 6 El arte de los ganchos 90
6.1 Utilice PyDbg para implementar ganchos suaves 90
6.2 Usar Immunity Debugger para implementar ganchos duros 95
Capítulo 7 Inyección de DLL y tecnología de inyección de código 101
7.1 Crear subprocesos remotos 101 p>
7.1.1 Inyección de DLL 102
7.1.2 Inyección de código 105
p>7.2 Escape a la oscuridad 108
7.2.1 Ocultación de archivos 109
7.2.
2 Construyendo una puerta trasera 110
7.2.3 Uso de py2exe para compilar código Python 114
Capítulo 8 Fuzzing 117
8.1 Varios tipos de errores comunes 118
8.1.1 Desbordamiento de búfer 118
8.1.2 Desbordamiento de enteros 119
8.1.3 Ataque de cadena de formato 121
8.2 File Fuzzer 122
8.3 Estrategias de mejora posteriores 129
8.3.1 Cobertura de código 129
8.3.2 Análisis estático automatizado 130
Capítulo 9 Sulley 131
9.1 Instalar Sulley 132
9.2 Tipos de datos básicos en Sulley 132
9.2.1 Cadena 133
9.2 Delimitador 133
.9.2.3 Tipos de datos estáticos y aleatorios 134
9.2.4 Datos binarios 134
9.2.5 Entero 134
9.2.6 Bloques y grupos 135
9.3 Assassination of WarFTPD 136
9.3.1 FTP 101 137
9.3.2 Crear marco de descripción del protocolo FTP 138
9.3 .3 Sesión de Sulley 139
9.3.4 Monitoreo de procesos y redes 140
9.3.5 Prueba de fuzzing e interfaz web de Sulley 141
Capítulo 10 Tecnología de prueba de fuzzing para Controladores de Windows 145
10.1 Conceptos básicos de la comunicación del controlador 146
10.2 Uso de Immunity Debugger para pruebas de Fuzzing a nivel de controlador 147
10.3 Driverlib: herramienta de análisis estático orientada al controlador 151
10.3.1 Encontrar nombres de dispositivos 152
10.3.2 Encontrar rutinas de envío IOCTL 153
10.3 3 Buscar códigos de control IOCTL válidos 155
10.4 Construya un controlador Fuzzer 157
Capítulo 11 IDAPython: programación de scripts Python en el entorno IDA PRO 162
11.1 Instale IDAPython 163
11.2 Funciones de IDAPython 164
11.2.1 Funciones de dos herramientas 164
11.2.2 Segmento 164
11.2.3 Función 165
11.2.4 Cruz referencia 166
11.2.5 Gancho del depurador 166
11.3 Ejemplo de script 167
11.3.1 Búsqueda de código cruzado de funciones peligrosas 168
11.3.2 Detección de cobertura de funciones 169
11.3.3 Detección del tamaño de variable de pila 171
Capítulo 12 Capítulo PYEmu - Emulador controlado por script 174
12.1 Instalación PyEmu 174
12.2 Descripción general de PyEmu 175
12.2.1 PyCPU 175
12.2.2 PyMemory 176
12.2.3 PyEmu 176
12.2.4 Ejecución de instrucciones 176
12.2.5 Modificador de memoria y modificador de registro 177
1
2.2.6 Rutina de procesamiento (Handler) 177
12.3 IDAPyEmu 182
12.3.1 Simulación de funciones 184
12.3.2 PEPyEmu 187
12.3.3 Empaquetador de archivos ejecutables188
12.3.4 Empaquetador UPX188
12.3.5 Utilice PEPyEmu para eliminar el empacador UPX189