Red de conocimiento informático - Consumibles informáticos - Prefacio a la programación en Python para hackers e ingenieros inversos

Prefacio a la programación en Python para hackers e ingenieros inversos

"¿Está hecho?", esta puede ser la frase más frecuente en Immunity Company. Es posible que escuche preguntas como esta en escenarios como: "Estoy a punto de desarrollar un nuevo cargador ELF para Immunity Debugger". Después de un momento de pausa, "¿Está listo?" o "Acabo de descubrir IE. Un error en". ¡El servidor!" Después de otro momento de silencio, "¿Se ha realizado el exploit?" En los proyectos de seguridad diarios, necesitamos crear o reescribir nuestras propias herramientas de seguridad casi todo el tiempo, y siempre estamos involucrados en estas actividades frecuentes. El ritmo de desarrollo de alta velocidad ha hecho que Python se convierta gradualmente en una estrella en este escenario. Puede elegir Python como su herramienta de desarrollo para su próximo proyecto de seguridad. Quizás lo use para crear un descompilador especial o desarrollar un depurador completo.

Cuando entro en Ace Hardware (una cadena de ferreterías estadounidense) en South Miami Beach y camino por el pasillo lleno de destornilladores, a menudo me siento mareado. Verá casi 50 tamaños diferentes de destornilladores ordenados en los estantes. Cada tamaño de destornillador tiene diferencias pequeñas pero importantes con respecto al destornillador que se encuentra inmediatamente al lado. No soy un reparador calificado, por lo que no puedo decir exactamente dónde se usa idealmente cada destornillador, pero estoy bastante seguro de que lo mismo se aplica a nuestro software de herramientas de seguridad. Especialmente cuando realiza auditorías de seguridad en aplicaciones de tipo Web u otros tipos de aplicaciones altamente personalizadas, encontrará que cada tarea de auditoría requiere un "destornillador" especial para resolver el problema. Debe saber que poder ensamblar a tiempo algunos dispositivos de seguridad, como los enlaces de funciones de la API de SQL, ha salvado al equipo de Immunity más de una vez. Por supuesto, estas herramientas no solo son adecuadas 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 anormales sospechosas en tiempo real e informarlas a su empresa cliente de manera oportuna. Proporciona correcciones para proteger contra ataques de piratas informáticos persistentes.

Conseguir que cada uno de los investigadores de seguridad se convierta realmente en parte del equipo es muy complicado. Muchos investigadores de seguridad, sin importar el tipo de problema al que se enfrenten, tienen demasiado entusiasmo para empezar desde cero e intentar reescribir por completo la biblioteca de herramientas en la que necesitan confiar. Por ejemplo, si Immunity descubre una vulnerabilidad de seguridad en un demonio SSL, lo siguiente que probablemente sucederá es que de repente descubra que uno de sus investigadores de seguridad está intentando escribir un cliente SSL desde cero. La explicación habitual que dan para esto es "todas las bibliotecas SSL que puedo encontrar son feas".

Debes hacer todo lo posible para evitar que esto suceda. El hecho no es que la biblioteca SSL existente sea fea; simplemente no está diseñada con el estilo preferido de ningún investigador de seguridad en particular. Lo que realmente debemos hacer es poder analizar en profundidad una gran cantidad de código existente, descubrir rápidamente el problema y modificarlo para adaptarlo a nuestras propias necesidades. Sólo entonces podremos crear una biblioteca SSL utilizable de manera oportuna y utilizarla. para desarrollar La clave de un exploit que todavía está en su vida útil. Para hacer esto, debe permitir que sus investigadores de seguridad trabajen como un verdadero equipo. Un investigador de seguridad que domina Python tiene un arma poderosa, tal vez igual que aquellos que dominan Ruby. Pero lo que hace que Python sea verdaderamente único es que cuando los fanáticos de Python trabajan juntos, se vuelven tan poderosos como un superorganismo de alta velocidad. Al igual que el ejército de hormigas en tu cocina, cuando hay suficientes para formar un calamar gigante, matarlas será mucho más complicado que matar un solo calamar. Y esto es exactamente lo que este libro intenta decirle.

Es posible que hayas encontrado algunas herramientas para lo que quieres hacer. Quizás pregunte: "Ya tengo un conjunto de Visual Studio, que viene con un depurador, ¿por qué necesito escribir un depurador dedicado para mí?" o "¿No tiene WinDbg una interfaz de complemento?" Con seguridad.

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 digas: "Diablos, sería genial si pudiera conectarme con 5.000 usuarios de WinDbg para que podamos intercambiar nuestros resultados de depuración". Si elige Python desde el principio, solo necesita escribir unas 100 líneas de código para crear un cliente y un servidor XML-RPC. Luego, todo el equipo podrá trabajar sincrónicamente y todos podrán disfrutar de los resultados y la información de los demás de manera oportuna. .

Hackear no es lo mismo que ingeniería inversa: su objetivo no es restaurar el código fuente de toda la aplicación. Su objetivo es obtener una comprensión más profunda del sistema de software que la de los propios desarrolladores del sistema. Una vez que puedas hacer esto, no importa en qué forma aparezca el objetivo, eventualmente te infiltrarás exitosamente y obtendrás el exploit caliente. Esto también significa que debes convertirte en un experto en visualización, sincronización remota, teoría de grafos, resolución de ecuaciones lineales, técnicas de análisis estático y muchos otros aspectos. Por lo tanto, Immunity decidió estandarizar estas implementaciones en la plataforma Python, de modo que una vez que escribamos un algoritmo de teoría de grafos, este algoritmo 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 hace un autor de malware; como se puede ver en algunos informes anteriores, los autores de malware suelen utilizar algunos lenguajes de nivel superior para escribir dichos programas. Sin embargo, también puede utilizar Python para escribir un programa de muestra en 15 minutos para demostrar a sus desarrolladores que las suposiciones de seguridad que hicieron sobre sus productos no son ciertas. Algunas empresas de software ahora gastan mucho dinero en proteger los datos dentro del software por lo que afirman ser razones 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 rápidamente herramientas de seguridad. Debería poder utilizar esta capacidad para lograr el éxito para usted o para todo el equipo. Y este es también el futuro del desarrollo de herramientas de seguridad: implementación rápida, modificación rápida e interconexión rápida. Creo que la única pregunta que te quedará al final es: "¿Está hecho?"

Dave Aitel, fundador y CTO de Immunity Ine

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

Agradecimientos

Me gustaría aprovechar esta oportunidad para agradecer a mi familia por su comprensión y apoyo durante la escritura de este libro. Gracias a mis cuatro adorables hijos: Emily, Carter, Cohen y Brady. Le dieron a papá una razón para completar este libro. Me siento muy bendecida de tenerlos. También me gustaría agradecer a mis hermanas y hermanos por su aliento durante este proceso. Todos ustedes mismos han experimentado los rigores y dificultades de escribir libros. Es realmente beneficioso tener personas como usted que comparten la misma experiencia en la publicación técnica. Funciona mucho - Te amo. También quiero decirle a mi papá que tu sentido del humor me ayudó a superar esos días en los que me costaba escribir. Te amo papá y no dejes de hacer reír a quienes te rodean.

Gracias a la ayuda de muchos destacados investigadores de seguridad a lo largo del camino, este libro ha despegado. Ellos son: Jared DeMott, Pedram Amini, Cody Pierce, Thomas Heller (el legendario e invencible hombre Python) y Charlie Miller. - Les debo a todos un enorme agradecimiento. En cuanto al equipo de Immunity, no hay duda de que han sido generosos al apoyarme al escribir este libro. Gracias a su ayuda, no solo me convertí en un niño de Python, sino que también me convertí en un verdadero desarrollador y tecnología de seguridad. investigadores. Nico y Dami, por tomarse el tiempo extra para ayudarme con mi problema, estarían muy agradecidos. Me gustaría expresar mi profunda gratitud a Dave Aitel, mi editor técnico, por siempre completar este libro y garantizar que sea lógico y legible.

A otro Dave, Dave Falloon, muchas gracias por revisar este libro para mí, por los errores que me hicieron reír y llorar, por su acto heroico de salvar mi computadora portátil en CanSecWest y por su red mágica. El conocimiento me impresionó. Yo profundamente.

Finalmente, son esos chicos a quienes siempre se les agradece en último lugar: el equipo editorial de No Starch. Tyler y yo pasamos por todo el proceso de publicación de este libro (créame, Tyler es el tipo más paciente que jamás haya conocido), y Bill me dio sus palabras de aliento junto con esa linda taza de café con la hoja de trucos de Perl. . Megan me alivió de tantos dolores de cabeza en las etapas finales de la escritura de este libro, así como al resto del equipo que trabajó detrás de escena para publicar este libro. ¡Gracias! . Estoy muy agradecido por todo lo que has hecho por mí. Ahora bien, la duración de este reconocimiento es casi tan larga como el discurso de aceptación del Grammy. Finalmente, me gustaría agradecer nuevamente a todos esos amigos que me han ayudado pero que tal vez los he olvidado; ustedes saben lo importantes que son para esto. libro.

Justin Seitz