24 feb 2014

Python más allá con The Hacker Way

En los últimos años, la comunidad de Python ha crecido exponencialmente y  cada vez son más las personas que deciden utilizar Python para el desarrollo de sus proyectos. Sin embargo, no solamente los desarrolladores de software valoran muy positivamente este potente lenguaje de programación, también lo hacen profesionales y entusiastas de la seguridad informática en todo el mundo. Un claro ejemplo de este hecho es la cantidad proyectos, herramientas y librerías que se han desarrollado en Python con un alto nivel de madurez y estabilidad. El objetivo de este corto artículo, es simplemente listar algunas de las librerías y herramientas escritas en Python que han tenido un fuerte impacto en la forma en la que hoy en en día, se desarrollan las herramientas enfocadas a la seguridad informática.

ENTORNOS WEB

1.                  urllib, urllib2, httplib, httplib2, urllib3 y requests:
Librerías que permiten realizar conexiones a servidores HTTP utilizando los métodos disponibles en el protocolo. Cuando hablamos de urllib, urllib2 y httplib, nos encontramos con librerías que han sido utilizadas ampliamente por una enorme cantidad de proyectos, sin embargo en la actualidad, la librería requests implementa mejoras sustanciales para crear clientes HTTP, soportando íntegramente las características que deben soportar tanto clientes como servidores que implementan el protocolo HTTP1.1. Ademas, se trata de una librería que es fácil de usar para cualquier desarrollador, requiere muy pocas lineas de código y es compatible con las versiones de Python 2 y 3.

urllib:                          http://docs.python.org/2/library/urllib.html
urllib2:                        http://docs.python.org/2/library/urllib2.html
httplib:                                    http://docs.python.org/2/library/httplib.html
httplib2:                      https://github.com/jcgregorio/httplib2
urllib3:                        http://urllib3.readthedocs.org/en/latest/
requests:                     http://docs.python-requests.org/en/latest/


2.                  Mechanize, Selenium Python Binding:
Librerías útiles cuando necesitamos crear un programa que pueda interactuar con un sitio web del mismo modo que lo hacemos con un navegador web. Mechanize y Selenium son las principales librerías  para llevar a cabo la interacción con sitios web ya que permiten activar botones, recuperar datos de formularios, mantener el estado de las cookies enviadas por el sitio web, activar enlaces, seguir redirecciones, entre otras cosas.

Mechanize:                 http://wwwsearch.sourceforge.net/mechanize/
Selenium:                    http://selenium.googlecode.com/svn/trunk/docs/api/py/index.html


3.                  BeautifulSoup:
XML, JSON, HTML y prácticamente todos los contenidos web, son elementos que siguen un esquema concreto y que deben ser parseados para poder extraer información útil. BeautifulSoup en una reconocida librería en Python que permite analizar contenidos web y generar una estructura de datos fácil de manejar por un desarrollador. Altamente recomendada para realizar tareas de extracción de datos.

BeautifulSoup:           http://www.crummy.com/software/BeautifulSoup/


4.                  Scrapy:
Framework que permite realizar labores de web crawling sobre sitios web y extraer datos estructurados de las páginas analizadas.

Scrapy:                       http://scrapy.org/


5.                  Django:
Django es uno de los frameworks para desarrollo web más conocidos en el mundo de Python. Cuenta con múltiples herramientas y librerías que permiten el desarrollo ágil de sitios web robustos y escalables. Muchas de las utilidades incluidas en este framework, son utilizadas por herramientas enfocadas a la seguridad informática.

Django:                       https://www.djangoproject.com/


ENTORNOS DE RED

6.                  Dpkt, Scapy
Librerías que permiten la captura y el tratamiento de paquetes en un segmento de red. Se utilizan en herramientas enfocadas a la detección de intrusos y maleware, así como también en herramientas que permitan automatizar ataques contra ordenadores conectados en un segmento de red. Scapy es probablemente, la librería más utilizada dado que soporta una considerable cantidad de protocolos de red y cuenta con una API que es fácil de utilizar.

Dpkt:                          http://code.google.com/p/dpkt/
Scapy:                         http://www.secdev.org/projects/scapy/


7.                  Twisted:
Framework que permite implementar soluciones de red robustas utilizando Python. Con twisted es posible crear clientes, servidores y librerías que sigan con los estándares de protocolos de red tales como HTTP, SMTP, POP, IMAP, FTP, SSL/TLS, entre otros.

Twisted:                      https://twistedmatrix.com/trac/


8.                  FTPLib, SMTPLib, Paramiko:
Protocolos como FTP, SMTP o SSH evidentemente también tienen cabida en Python. En este caso, las librerías FTPLib (soporte clientes/servidores FTP), SMTPLib (soporte clientes/servidores SMTP) y Paramiko (soporte clientes/servidores SSH) implementan todas las características indicadas en cada uno de los protocolos mencionados.

FTPLib:                      http://docs.python.org/2/library/ftplib.html

SMTPLib:                   http://docs.python.org/2/library/smtplib.html
Paramiko:                   http://www.lag.net/paramiko/

FUZZING, MALEWARE ANALISYS Y REVERSING

9.                  Cuckoo:
Se trata de un sandbox que permite analizar maleware, exploits y virus en un entorno virtual independiente y separado de otras máquinas en el segmento de red, con lo cual es posible monitorizar elementos potencialmente peligrosos de una forma segura.



10.              Sulley Framework:
Framework destinado al desarrollo de casos de prueba (Fuzz Files) para la detección de vulnerabilidades en Software. Permite la ejecución de una máquina virtual que funciona como víctima y una máquina que funciona como atacante. En la máquina de la víctima, permite iniciar monitores de procesos y red, con el fin de detectar y registrar cualquier tipo de vulnerabilidad, así como reiniciar el software objetivo de forma automática para continuar con la ejecución de las pruebas.
11.              PyDBG:
Librería que permite implementar procesos de depuración y “hooking” de funciones. Es posible utilizar esta librería para detectar de forma automática, cualquier tipo de violación de acceso o fallo general sobre el programa analizado. Del mismo modo que cualquier depurador de software (como por ejemplo, WinDBG o Immunity Debugger) permite establecer puntos de interrupción ante un evento determinado.

PyDBG:                                             https://github.com/OpenRCE/pydbg


12.              Python API Immunity Debugger.
Immunity Debugger es un potente depurador para sistemas windows que permite, entre otras cosas, crear scripts en Python que permitan automatizar muchas de las tareas de depuración que frecuentemente se deben llevar a cabo de forma manual. Un ejemplo del uso de esta librería es el conocido script Mona.py desarrollado por el equipo de CoreLan.

Python API Immunity Debugger:     https://www.immunityinc.com/products-immdbg.shtml


13.              PyDASM:
Se trata de un wrapper de la librería LibDasm que permite desensamblar programas y recuperar los opcodes correspondientes a un programa de forma automatizada.

PyDASM:                                          https://code.google.com/p/libdasm/  


14.              PeFile:
Los ficheros ejecutables (.exe y .dll) en sistemas windows, siguen el formato PE (Portable Executable) que permite la compatibilidad del ejecutable en cuestión sobre diferentes versiones de Windows. Esta librería incluye todos los elementos necesarios para extraer información sobre cada una de las secciones incluidas en un fichero con formato PE.

PEFile:                                               https://code.google.com/p/pefile/


15.              PaiMei:
Framework  para realizar tareas de ingeniería inversa que esta conformado por  varios componentes extensibles (entre los que se incluye PyDBG) y que permite la detección de vulnerabilidades y el desarrollo de pruebas de concepto rápidas. 
 
PaiMei:                                               http://www.openrce.org/downloads/details/208/PaiMei


Se trata de una lista no exhaustiva de librerías, frameworks y herramientas que son ampliamente utilizadas en proyectos de software enfocados a la seguridad informática. La intención de este articulo ha sido simplemente enumerar dichas librerías y explicar brevemente en qué consisten y su importancia.
Estas y muchas otras, las puedes conocer en detalle en la serie de vídeos sobre Hacking con Python que comienzan desde aquí: http://thehackerway.com/2014/02/04/hacking-con-python-parte-1-banner-grabbing/

Saludos y Happy Hack!


Autor: Adastra
Blog: http://thehackerway.com

2 comentarios: