Python para el pentest: Introducción

Si estás interesado, aquí puedes encontrar un listado exhaustivo de cursos de Python: CourseDuck Python courses


Ya se ha hablado varias veces en este blog de las bondades que nos ofrece Python, se han recomendado lecturas y algunas librerías útiles en el mundo de la seguridad, pero como me considero una persona organizada y me gusta tener todo centralizado, inicio mis andadurías por este blog con una serie de artículos dedicados al uso de Python en el pentest.

De python hay que destacar principalmente su facilidad de aprendizaje y uso incluso para alguien sin nociones o con unas muy bajas de programación. El código es multiplataforma y solo requiere del intérprete instalado en el sistema. En sistemas Linux suele venir preinstalado y contiene un ecosistema muy amplio y variado de paquetes que nos facilitarán cualquier tarea, bien nativas en Python o bindings que permiten el uso de la librería en C.

La gestión de paquetes se puede realizar fácilmente por medio del gestor de paquetes nativo del sistema o por medio de gestores de paquetes específicos para Python, como pueden ser pip o easy_install. También como ultimo recurso podremos descargarnos la librería del repositorio oficial e instalarla manualmente, por medio de install.py o instalar el .egg con uno de los gestores de paquetes específicos de Python. Para ver la cantidad de paquetes “oficiales” de la que disponemos podemos echarle un vistazo a PyPI.

En esta serie de posts trataré de cubrir temas como:

  • Obtención de inteligencia de fuentes abiertas (OSINT).
  • Tratamiento de la OSINT obtenida.
  • Manipulación en la capa de red.
  • Y algo de Wireless.

Algunos de los paquetes que me gusta tener siempre a mano y que son imprescindibles en seguridad son:

  • Pypcap: Un binding para libpcap.
  • Pymongo: Driver para el uso de la base de datos no relacional “MongoDB”.
  • Python-wifi: Modulo que permite el uso de interfaces Wireless usando “Linux Wireless Extensions”.
  • Scapy: Paquete para la manipulación de paquetes de red.
  • Scrapy: “Web crawling framework” que permite obtener estructuras de datos de sitios web.

Para preparar un entorno de pruebas, evitar conflictos entre paquetes y mantener el sistema limpio recomiendo correr cada proyecto en un entorno virtual diferente. Para configurarlo usaremos la herramienta virtualenv, que debemos primero instalar.

# Debian, Ubuntu:
$ sudo aptitude install python-virtualenv

# Arch Linux
$ sudo pacman -S python2-virtualenv

Y para crear el entorno nada más fácil que:

# Creamos el proyecto entorno_prueba
virtualenv entorno_prueba

# Entramos en la carpeta
cd entorno_prueba

Si listamos los archivos veremos que se habrá creado la siguiente estructura de 
directorios:

entorno_prueba/
├── bin
├── include
├── lib
└── local

Para activar el entorno:

$ source bin/activate
(entorno_prueba)$ 

Como podemos observar el prompt ha cambiado, señal de que ya estamos en el entorno. Aquí ya podremos usar pip o easy_install sin tener que preocuparnos de conflictos entre paquetes. Para desactivar el entorno solo debemos escribir:

$ deactivate

En cuanto a la ubicación del código, es indiferente, mientras tengamos el entorno virtual activo tendremos acceso a los paquetes instalados en él.

Espero que esta serie pueda ser de utilidad a alguien que esté iniciándose en el arte del Pentest o con curiosidad y ganas de “trastear”. Un saludo y hasta el próximo post, que será en el que ya entremos en materia, y esperando que al final acabe incluido en “El manual de armamento”, –Armamento, capitulo 2, párrafo 9 a 21– ;)

(Imagen por Ian Leino, de la que se puede adquirir una camiseta)

Comments

  1. Genial, me viene bien este tipo de información y siempre he sentido curiosidad por Python debido a su practicidad.
    Saludos

  2. Hola, agradezco su trabajo, pero resulta que al parecer la liga de PyPl presenta problemas.

  3. José González says

    Hola Darìo, me alegro que te parezca interesante, el enlace funciona bien. No obstante una rápida búsqueda en google te devolverá este enlace: https://pypi.python.org/pypi que es el mismo al que se apunta en el post ;).

    Un saludo.

  4. Gracias por tu respuesta, y ya todo funciona bien, sobre todo cuando descubrì que el problema era mìo Jo!!!! :P

  5. Que bien Gran tutorial hermano

Trackbacks

  1. […] con la serie Python para el Pentest vamos hoy a hablar de una herramienta desarrollada por los integrantes del grupo ENIGMA […]