La Red de Conocimientos Pedagógicos - Currículum vitae - Python Grey Hat: un prefacio a la programación en Python para hackers e ingenieros inversos

Python Grey Hat: un prefacio a la programación en Python para hackers e ingenieros inversos

"¿Terminaste?" Esta es probablemente la frase más común en inmunidad. Es posible que escuche esta pregunta en un escenario como: "Me estoy preparando para desarrollar un nuevo cargador ELF para Immunity Debugger". Después de una breve pausa, "¿Ya está hecho?" o "¡Acabo de encontrar un error en IE!". Después de otro momento de silencio, "¿Se completó el exploit?". En los proyectos de seguridad diarios, casi siempre preguntamos La necesidad de crear o reescribir sus propias herramientas de seguridad en cada momento y mantener un ritmo de desarrollo de alta velocidad en medio de estas actividades frecuentes ha hecho que Python se convierta gradualmente en una estrella en este escenario. Para su próximo proyecto de seguridad, puede elegir Python como herramienta de desarrollo. Quizás lo utilices para crear un descompilador especial o desarrollar un depurador completo.

Cuando entro a Ace Hardware en South Miami Beach y camino hacia el altar con un destornillador, a menudo me siento mareado. Verá casi 50 especificaciones diferentes de destornilladores cuidadosamente expuestas en los estantes. Cada tamaño de destornillador tiene diferencias pequeñas pero muy importantes con respecto a su vecino. No soy un reparador calificado y no puedo decir exactamente cuál es el caso de uso ideal para cada destornillador, pero estoy seguro de que se puede aplicar una situación similar a nuestro software de herramientas de seguridad. Especialmente cuando realiza auditorías de seguridad de aplicaciones de tipo Web u otras aplicaciones altamente personalizadas, encontrará que cada tarea de auditoría requiere un "destornillador" especial para resolver el problema. Ya sabes, poder reunir a tiempo algunos dispositivos de seguridad, como los enlaces de funciones de la API SQL, ha salvado al equipo de Immunity más de una vez. Por supuesto, estas herramientas no son sólo para tareas de auditoría de seguridad. Una vez que pueda utilizar funciones de enlace para interceptar las API de SQL, podrá escribir fácilmente una herramienta para detectar consultas SQL sospechosas y anormales en tiempo real y proporcionar soluciones de reparación oportunas a las empresas clientes para resistir los ataques de piratas informáticos obstinados.

Todos sabemos que lograr que cada uno de sus investigadores de seguridad se convierta realmente en parte del equipo puede ser complicado. No importa el problema al que se enfrenten, muchos investigadores de seguridad comienzan con entusiasmo desde cero, intentando reescribir por completo las bibliotecas de herramientas que necesitan. Por ejemplo, si Immunity descubre una vulnerabilidad de seguridad en el demonio SSL, lo siguiente que probablemente suceda es que de repente descubra que uno de sus investigadores de seguridad está intentando escribir un cliente SSL desde cero. Y su explicación habitual para esto es "todas las bibliotecas SSL que puedo encontrar son feas".

Debes intentar evitar esta situación. De hecho, la biblioteca SSL existente no es fea; simplemente no está diseñada en el estilo que prefieren los investigadores de seguridad. Lo que realmente debemos hacer es analizar en profundidad una gran cantidad de código existente, encontrar problemas rápidamente y modificarlos según nuestras propias necesidades. Esto es clave para establecer una biblioteca SSL que funcione de manera oportuna y utilizarla para desarrollar un exploit que aún esté fresco. Para hacer esto, necesita que sus investigadores de seguridad trabajen como un equipo real. Un investigador de seguridad que domina Python tiene un arma poderosa, tal vez igual que aquellos que dominan Ruby. Pero lo que realmente distingue a Python es que cuando los fanáticos de Python trabajan juntos, son tan poderosos como un súper individuo corriendo a altas velocidades. Al igual que un ejército de hormigas en tu cocina, cuando hay suficientes para formar un calamar gigante, matarlas es mucho más difícil que matar un solo calamar. Esto es lo que este libro intenta decirle.

Es posible que hayas encontrado algunas herramientas para lo que quieres hacer. Quizás pregunte: "Ya tengo Visual Studio que viene con un depurador, ¿por qué debería escribir un depurador para mi propio uso?" o "¿No tiene WinDbg una interfaz de complemento?". WinDbg proporciona interfaces de complemento y, poco a poco, puede crear algo útil a través de esas API. Hasta que un día probablemente dirás: "Diablos, sería genial si pudiera conectarme con 5000 usuarios de WinDbg para que podamos intercambiar nuestros resultados de depuración.

"Si elige Python desde el principio, puede crear un cliente y un servidor XML-RPC escribiendo aproximadamente 100 líneas de código, y luego todo el equipo puede trabajar en sincronización, de modo que todos puedan disfrutar de los resultados y la información de los demás en un de manera oportuna.

Hackear nunca es lo mismo que ingeniería inversa: su objetivo no es recuperar el código fuente de toda la aplicación. Su objetivo es comprender el sistema de software más profundamente que los propios desarrolladores del sistema una vez que pueda. Esto, no importa en qué forma aparezca el objetivo, eventualmente lo penetrará con éxito y tendrá una excelente oportunidad para explotarlo. Esto también significa que debe tener conocimientos de visualización, sincronización remota, teoría de grafos, resolución de ecuaciones lineales y análisis estático. Tecnología, etc. Expertos en muchos aspectos, así que Immunity decidió estandarizarlos en la plataforma Python, de modo que una vez que escribamos un algoritmo de teoría de grafos, sea común en todas nuestras herramientas.

En el Capítulo 6. , Justin le muestra cómo usar un gancho para robar nombres de usuario y contraseñas ingresadas en el navegador Firefox. Esto es exactamente lo que hacen los autores de malware; como se puede ver en algunos informes anteriores, los autores de malware generalmente usan un lenguaje de alto nivel para. escriba este tipo de programa. Sin embargo, también puede usar Python para escribir un programa de muestra en 15 minutos para mostrar a sus desarrolladores que las suposiciones de seguridad que hacen sobre sus productos no sostienen el dinero para proteger los datos internos del software. Afirman problemas de seguridad, de hecho, lo que hacen a menudo es simplemente implementar algunos mecanismos de protección de derechos de autor y gestión de derechos digitales.

Eso es lo que este libro intenta enseñarle: La capacidad de crear herramientas de seguridad rápidamente. Debería poder aprovechar esta capacidad para lograr el éxito para usted o para todo su equipo. Este es el futuro del desarrollo de herramientas de seguridad: implementación rápida, modificación rápida e interconexión rápida. La pregunta podría ser: “¿Terminaste? ”

Dave Aitel, fundador y director de tecnología de Immunine

Febrero de 2009, Miami Beach, Florida, EE. UU.

Gracias

Me gustaría aprovechar esta oportunidad para agradecer a mi familia por su comprensión y apoyo mientras escribía este libro, y a mis cuatro maravillosos hijos: Emily, Carter, Cohen y Brady. Le dio a mi padre una razón para completar este libro. Estoy muy feliz de tenerte. También quiero agradecer a mis hermanas y hermanos por su aliento en este proceso. Habéis experimentado el rigor y las dificultades de escribir un libro. Yo. Te amo, es muy útil. También quiero decirle a mi papá que tu sentido del humor me ayuda a superar esos días en los que no puedo seguir escribiendo. Te amo, papá, no dejes de dejarlo pasar. te ríes

Este libro creció gracias a la ayuda de muchos excelentes investigadores de seguridad a lo largo del camino: Jared Dermott, Pedrom Amini. Gracias a tu ayuda, no solo me he convertido en un niño de Python, sino también. También son un verdadero desarrollador e investigador de seguridad. Nico y Dami se tomaron el tiempo extra para ayudarme a resolver este problema y están muy agradecidos. Mi editor técnico, Dave Aitel, hizo que el libro siguiera adelante y se aseguró de que fuera lógico y legible. Muchas gracias a otro Dave Len, muchas gracias por revisar este libro para mí. Me impresionaron los asombrosos errores, la heroicidad de salvar mi computadora portátil en CanSecWest y su increíble conocimiento de redes como asistente.

Finalmente, la última persona a la que siempre tengo que agradecer es al equipo editorial de Nostarch al que Taylor y yo pasamos por todo el proceso de publicación de este libro (créame, Taylor será el tipo más paciente que jamás haya conocido, Bill). me dio una voz alentadora, lindas tazas de café y hojas de trucos de Perl, y Megan me ahorró muchos problemas al final del proceso de creación del libro, al igual que el resto del equipo que trabajó detrás de escena para publicarlo. Gracias. ¡Aprecio todo lo que has hecho por mí! Este discurso de agradecimiento es casi tan largo como un discurso de aceptación de los Grammy.

Finalmente, me gustaría agradecer a todos los amigos que me han ayudado nuevamente, pero tal vez se me haya olvidado mencionar: ya sabes lo mucho que significas para este libro.

Justin Seitz