Python Black Hat. Programación para Hackers y Pentesters - Tim Arnold - E-Book

Python Black Hat. Programación para Hackers y Pentesters E-Book

Tim Arnold

0,0

Beschreibung

Cuando se trata de crear herramientas de hackeo potentes y eficaces, Python es el lenguaje elegido por la mayoría de los analistas de seguridad. En este libro explorarás el lado más oscuro de las capacidades de Python: todo, desde escribir sniffers de red, robar credenciales de correo electrónico y acceder a directorios y carpetas por la fuerza hasta crear fuzzers de mutación, investigar máquinas virtuales y crear troyanos sigilosos. Todo el código de este libro ha sido actualizado a Python 3.x. También encontrarás información nueva sobre desplazamiento de bits, código limpio y análisis forense ofensivo con Volatility Framework, así como explicaciones más extensas de las bibliotecas ctypes, struct, lxml y BeautifulSoup de Python, y estrategias de hackeo ofensivo como la división de bytes, el aprovechamiento de las bibliotecas de visión por ordenador y el scraping de sitios web. Cuando se trata de seguridad ofensiva, hay que ser capaz de crear herramientas potentes sobre la marcha. Aprende cómo con Python Black Hat. Programación para Hackers y Pentesters. 2ª Actualización.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 281

Veröffentlichungsjahr: 2025

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



A mi preciosa esposa, Clare. Te quiero.

—Justin

Agradecimientos

Tim da las gracias a su mujer, Treva, por su apoyo incondicional. Si no hubiera sido por varios incidentes imprevistos, no habría tenido la oportunidad de trabajar en este libro. Agradece a la AISS de Raleigh, especialmente a Don Elsner y Nathan Kim, por apoyarle y animarle a dar una clase en su barrio utilizando la primera edición de este libro. Impartir esa clase y trabajar con sus alumnos le hizo enamorarse del libro. Y da las gracias a su comunidad local de hackers, en particular a la gente de Oak City Locksport, por sus ánimos, y por servirle de caja de resonancia para sus ideas.

Justin quiere dar las gracias a su familia (su bella esposa, Clare, y sus cinco hijos, Emily, Carter, Cohen, Brady y Mason), por todo el ánimo y la tolerancia mostrada mientras pasaba un año y medio de su vida escribiendo este libro. Los quiere mucho a todos. A todos sus amigos de la comunidad cibernética y OSINT que comparten copas, risas y tweets: gracias por dejarle refunfuñar y quejarse con vosotros a diario.

Otro enorme agradecimiento a Bill Pollock, de No Starch Press, y a nuestra paciente editora, Frances Saux, por ayudarnos a mejorar tanto este libro. Gracias al resto del equipo de No Starch, incluidos Tyler, Serena y Leigh, por todo el esfuerzo que han dedicado a este título y al resto de la colección. Ambos lo apreciamos. También nos gustaría dar las gracias a nuestro revisor técnico, Cliff Janzen, que nos proporcionó un apoyo absolutamente increíble durante todo el proceso. Cualquiera que esté escribiendo un libro sobre seguridad de la información debería contar con él; fue mucho más que increíble.

Sobre los autores

Justin Seitz es un reputado profesional de la ciberseguridad y la inteligencia de código abierto y es cofundador de Dark River Systems Inc., una empresa canadiense de seguridad e inteligencia. Su trabajo ha aparecido en las revistas Popular Science, Motherboard y Forbes. Justin es autor de dos libros sobre el desarrollo de herramientas de hacking informático. Creó la plataforma de formación AutomatingOSINT.com y Hunchly, una herramienta de recopilación de inteligencia de código abierto para investigadores. Justin es también colaborador del sitio de periodismo ciudadano Bellingcat, es miembro de la Junta de Asesoramiento Técnico del Tribunal Penal Internacional y también del Centro de Estudios Avanzados de Defensa de Washington D.C.

Tim Arnold es actualmente programador profesional de Python y estadístico. Pasó gran parte de sus primeros años de carrera en la Universidad Estatal de Carolina del Norte como respetado conferenciante internacional y como educador. Entre sus logros se puede citar que se ha asegurado de que las herramientas educativas sean accesibles para las comunidades desatendidas de todo el mundo, por ejemplo, dando acceso a personas ciegas a documentación matemática.

Durante los últimos años, Tim ha trabajado en el SAS Institute como desarrollador principal de software, diseñando e implantando un sistema de publicación de documentación técnica y matemática. Ha formado parte de la junta de la AISS de Raleigh y ha sido consultor de la junta del Instituto Estadístico Internacional. Disfruta trabajando como educador independiente, poniendo los conceptos de seguridad de la información y Python al alcance de nuevos usuarios, y ayudando a progresar a aquellos con conocimientos más avanzados. Tim vive en Carolina del Norte con su mujer, Treva, y una malvada cacatúa llamada Sidney. Lo encontrarás en Twitter en @jtimarnold.

Sobre el revisor técnico

Desde los primeros días del Commodore PET y el VIC-20, la tecnología ha sido una compañía constante para Cliff Janzen y, a veces, una obsesión. Cliff pasa la mayor parte de su jornada laboral dirigiendo y tutelando a un gran equipo de profesionales de la seguridad, y se esfuerza por mantener su excelencia técnica abordando todo tipo de tareas, desde revisiones de políticas de seguridad y pruebas de penetración hasta respuesta a incidentes. Se siente afortunado de tener una carrera que es también su pasatiempo favorito y una esposa que lo apoya. Agradece a Justin por incluirle en la primera edición de este maravilloso libro y a Tim por llevarle a dar finalmente el paso a Python 3. Y da especialmente las gracias a la estupenda gente de No Starch Press.

Comentarios del libro

«Si trabajas como profesional de la seguridad informática y quieres programar en Python, este es, sin duda, el libro que no debe faltar en tu estantería».

—Craig Mullins, Data and Technology Today

«Si de verdad tienes mentalidad de hacker, una chispa es todo lo que necesitas para hacerlo tuyo y conseguir algo aún más increíble. Justin Seitz ofrece chispas en abundancia».

—Ethical Hacker

«Ya sea que estés interesado en convertirte en hacker de verdad o en un experto en seguridad informática, o bien sea que solo quieres saber cómo trabajan, este es el libro que tienes que leer. Intenso, técnicamente profundo y muy revelador».

—Sandra Henry-Stocker, IT World

«Sin duda, una lectura recomendada para el profesional de la seguridad técnica con una cierta exposición previa básica a Python».

—Richard Austin, IEEE Cipher

«Otro increíble libro de Python. Con uno o dos pequeños retoques, muchos de estos programas tendrán al menos una vida útil de diez años, y eso es raro tratándose de un libro sobre seguridad».

—Stephen Northcutt, presidente fundador del SANS Technology Institute

«Un estupendo libro que utiliza Python con fines de seguridad ofensiva».

—Andrew Case, desarrollador principal de Volatility y coautor de The Art of Memory Forensics

Índice de contenidos

Agradecimientos

Sobre los autores

Sobre el revisor técnico

Comentarios del libro

Prólogo

Prefacio

1. Configurar el entorno Python

Instalar Kali Linux

Configurar Python 3

Instalar un IDE

Código limpio

2. Herramientas básicas de red

La creación de redes en Python, explicada en un párrafo

Cliente TCP

Cliente UDP

Servidor TCP

Crear un sustituto de Netcat

Evaluando el código

Crear un proxy TCP

Evaluando el código

SSH con Paramiko

Evaluando el código

Túnel SSH

Evaluando el código

3. Escribir un sniffer

Creación de una herramienta de descubrimiento de anfitriones UDP

Interceptación de paquetes en Windows y Linux

Evaluando el código

Decodificación de la capa IP

El módulo ctypes

El módulo struct

Escribiendo el decodificador IP

Evaluando el código

Decodificar ICMP

Evaluando el código

4. Hacerte propietario de la red con Scapy

Robo de credenciales de correo electrónico

Evaluando el código

Envenenamiento de caché ARP con Scapy

Evaluando el código

Procesamiento pcap

Evaluando el código

5. Hackeo web

Utilizar bibliotecas web

La biblioteca urllib2 para Python 2.x

La biblioteca urllib para Python 3.x

La biblioteca requests

Los paquetes lxml y BeautifulSoup

Reconocimiento de instalaciones de aplicaciones web de código abierto

Reconocer la estructura de WordPress

Probando en un objetivo real

Evaluando el código

Forzar directorios y ubicaciones de archivos

Evaluando el código

Forzar la autenticación de formularios HTML

Evaluando el código

6. Usar las extensiones de Burp Proxy

Configuración

Fuzzing con Burp

Evaluando el código

Utilizando Bing para Burp

Evaluando el código

Convertir el contenido web en un tesoro lleno de contraseñas

Evaluando el código

7. Mando y control con Github

Configurar una cuenta de GitHub

Creando módulos

Configurando el troyano

Creando un troyano específico para GitHub

Hackeando la funcionalidad de importación de Python

Evaluando el código

8. Tareas habituales con troyanos en Windows

Registrar pulsaciones de teclas por diversión

Evaluando el código

Haciendo capturas de pantalla

Ejecución del shellcode al estilo Python

Evaluando el código

Detección de entornos de pruebas

9. Diviértete con la exfiltración

Cifrar y descifrar archivos

Exfiltración con el correo electrónico

Exfiltración mediante transferencia de archivos

Exfiltración a través de un servidor web

Montémoslo todo

Evaluando el código

10. Escalada de privilegios en Windows

Instalando los requisitos previos

Creación del servicio BlackHat vulnerable

Creación de un monitor de procesos

Supervisión de procesos con WMI

Evaluando el código

Privilegios de token de Windows

Ganemos la carrera

Evaluando el código

Inyección de código

Evaluando el código

11. Análisis forense ofensivo

Instalación

Reconocimiento general

Reconocimiento de usuario

Reconocimiento de vulnerabilidades

La interfaz volshell

Complementos de Volatility personalizados

Evaluando el código

Sigamos adelante

Créditos

Prólogo

Han pasado seis años desde que escribí el prólogo de la exitosa primera edición de este libro. Mucho ha cambiado en el mundo durante este tiempo, pero una cosa no: sigo escribiendo muchísimo código Python. En el campo de la seguridad informática nos seguimos encontrando con herramientas escritas en lenguajes muy distintos, dependiendo de la tarea. Verás código C escrito para un kernel exploit, código para un fuzzer en JavaScript, o un proxy escrito en un lenguaje más «de moda» como Rust. Pero Python sigue siendo el caballo de batalla en esta industria; en mi opinión, es el lenguaje más fácil con el que empezar y, con el gran número de bibliotecas que ofrece, es el mejor para escribir rápidamente código que permita realizar tareas complejas de una manera sencilla. La mayoría de las herramientas y exploits de seguridad informática siguen estando escritos en Python, desde plataformas de explotación como CANVAS hasta fuzzers clásicos como Sulley.

Antes de la publicación de la primera edición de este título, yo había escrito muchos fuzzers y exploits en Python, incluyendo exploits contra Safari para Mac OS X, teléfonos iPhone y Android, e incluso Second Life (quizá tengas que buscar este último en Google).

En cualquier caso, desde entonces he escrito un exploit bastante especial, con ayuda de Chris Valasek, con el que conseguimos controlar remotamente un Jeep Cherokee de 2014 y otros coches. Por supuesto, este exploit fue escrito en Python, utilizando el módulo dbus-python. Todas las herramientas que escribimos, que finalmente nos permitieron controlar de forma remota la dirección, los frenos y la aceleración del vehículo, también fueron escritas en Python. Se podría decir, en cierto modo, que Python fue responsable de la retirada de 1,4 millones de vehículos Fiat Chrysler.

Si te interesa trastear con tareas de seguridad de la información, Python es un gran lenguaje para aprender debido al gran número de bibliotecas de ingeniería inversa y explotación que pone a tu disposición. Ahora, si los desarrolladores de Metasploit entraran en razón y cambiaran de Ruby a Python, nuestra comunidad estaría unida.

En esta nueva edición de lo que se ha convertido en un clásico muy querido, Justin y Tim han actualizado todo el código a Python 3. Personalmente me considero un dinosaurio que se aferra a Python 2 todo lo que puede, pero a medida que las bibliotecas útiles terminen de migrar a Python 3, incluso yo tendré que aprenderlo pronto. Esta edición habla sobre una amplia gama de temas que le vendrían muy bien para empezar a un joven hacker emprendedor, desde lo más básico, es decir, cómo leer y escribir paquetes de red, hasta todo lo necesario para auditar y atacar aplicaciones web.

En general, Python Black Hat es una lectura entretenida escrita por expertos con años de experiencia, que están dispuestos a compartir secretos aprendidos a lo largo del camino. Aunque probablemente no te convierta de inmediato en un espectacular hacker como yo, sin duda te permitirá empezar por el camino correcto.

Recuerda, la diferencia entre los aprendices de hacker y los hackers profesionales es que los primeros utilizan las herramientas de otras personas.

Los segundos son capaces de escribir las suyas propias.

Charlie Miller

Investigador de seguridad

St. Louis, Missouri

Octubre de 2020

Prefacio

Hacker de Python o programador de Python. Cualquiera de estos términos es correcto para describirnos. Justin ha pasado mucho tiempo haciendo pruebas de penetración, lo que requiere la capacidad de desarrollar rápidamente herramientas Python, estando especialmente enfocado en la entrega de resultados (y no necesariamente en la belleza, optimización, o incluso en la estabilidad de la herramienta). El mantra de Tim es «hazlo funcionar, hazlo comprensible, hazlo rápido... En ese orden». Si tu código es legible, resulta comprensible para aquellos con los que lo compartes, pero también lo es para ti mismo al repasarlo transcurridos unos meses. A lo largo de este libro, aprenderás que así es como codificamos: el hacking es nuestro propósito final, y el código limpio y comprensible es el método que utilizamos para conseguirlo. Esperamos que esta filosofía y estilo de pensamiento te ayuden a ti también.

Desde que apareció la primera edición de este libro, han pasado muchas cosas en el mundo de Python. Python 2 llegó al final de su vida útil en enero de 2020. Python 3 se ha convertido en la plataforma recomendada para la codificación y la enseñanza. De ahí que, en esta segunda edición, el código esté rehecho y adaptado a Python 3, utilizando los últimos paquetes y bibliotecas. También se aprovechan en él los cambios de sintaxis ofrecidos por Python 3.6 y versiones superiores de Python 3, como por ejemplo, las cadenas Unicode, los gestores de contexto y las cadenas f. Por último, hemos actualizado esta edición con explicaciones adicionales de conceptos de codificación y redes, como el uso de gestores de contexto, la sintaxis Berkeley Packet Filter y una comparación de las bibliotecas ctypes y struct.

A medida que avances en el libro, te darás cuenta de que no profundizamos en ninguno de los temas por motivos de diseño. Queremos ofrecerte lo básico, con un pequeño toque, para que adquieras conocimientos fundamentales en el mundo del desarrollo de herramientas de hackeo. Pensando en esto, hemos distribuido explicaciones, ideas y tareas a lo largo del libro para que te inicies a tu manera. Te animamos a que explores estas ideas.

Como ocurre con cualquier libro técnico, los lectores de distintos niveles experimentarán su lectura de formas diferentes. Algunos se limitarán a leer los capítulos que sean pertinentes para su último trabajo de consultoría. Otros lo leerán de principio a fin. Si eres programador de Python principiante o intermedio, te recomendamos que empieces por el principio y leas los capítulos en orden. A lo largo del camino irás aprendiendo buenos elementos básicos.

Para empezar, en el capítulo 2 exponemos los fundamentos de las redes. Luego, poco a poco, nos vamos abriendo camino a través de los sockets sin procesar en el capítulo 3 y vemos el uso de Scapy en el capítulo 4 para crear algunas herramientas de red más interesantes. La siguiente sección del libro trata sobre hackear aplicaciones web, comenzando con tus propias herramientas personalizadas en el capítulo 5 y extendiendo la conocida Burp Suite en el capítulo 6. A partir de ahí, dedicaremos una gran parte de nuestro tiempo a hablar de troyanos, empezando por el uso de GitHub para mando y control en el capítulo 7, hasta el capítulo 10, donde veremos algunos trucos de elevación de privilegios en Windows. El capítulo final trata sobre la biblioteca de análisis forense de memoria Volatility, que te ayuda a entender cómo piensa el lado defensivo y te muestra cómo aprovechar sus herramientas para pasar a la ofensiva.

Intentamos que los ejemplos de código sean breves y concisos, al igual que las explicaciones. Si eres relativamente nuevo en Python, te animamos a que repases todas y cada una de las líneas para mantener en perfecto estado esa memoria de codificación. Todos los ejemplos de código fuente de este libro están disponibles para su descarga en la página web de Anaya Multimedia en https://anayamultimedia.es, en la opción Selecciona complemento que encontrará en la ficha correspondiente a este libro. También puede descargarlos de la página web del libro original en https://nostarch.com/black-hat-python2E/.

Allá vamos.