30 mar 2014

Ejecutar Nmap desde Python

Nmap es probablemente una de las herramientas más conocidas y utilizadas en el mundo del pentesting y no es para menos, ya que se trata de un escaner que no solamente permite encontrar puertos abiertos en un máquina o segmento de red, sino que también permite ejecutar scripts NSE (Nmap Scripting Engine) para filtrar información o detectar vulnerabilidades sobre el objetivo.

Algunas de las características avanzadas que incluye Nmap y que son igualmente útiles para pentesters, administradores de sistemas y atacantes, se listan a continuación:
  • Implementación de técnicas de evasión de IDS/IPS y Firewalls
  • Permite ejecutar varias técnicas de escaneo, entre las que se incluyen escaneos del tipo XMAS, Null, Fin, Stealth, entre muchos otros.
  • Permite la fragmentación de paquetes a la hora de realizar el escaneo. La finalidad de esta técnica es la de dificultar la identificación del escaneo por parte de mecanismos como IDS o IPS
  • Generación aleatoria de hosts y señuelos como origen de los paquetes
  • Ejecución de scripts NSE, así como la posibilidad de crear scripts personalizados utilizando lenguaje LUA.
  • Capacidad de ejecutar "Idle scans" que permiten utilizar un host cuyo manejo del numero de secuencia de los paquetes IP es predecible. (ver: http://nmap.org/book/idlescan.html)
  • Estas son tan solo algunas de las características que convierten a Nmap en una herramienta que se debe de encontrar en el arsenal de cualquier pentester.
Sin embargo, en ocasiones es muy útil poder automatizar su uso por medio de scripts o rutinas externas. En el caso de Python, es posible hacerlo como con cualquier otro ejecutable, se puede crear un proceso utilizando la utilidad subprocess de Python y ejecutar Nmap con los argumentos adecuados. No obstante, hacerlo de esta forma puede resultar ineficiente, ya que seria necesario parsear los contenidos del canal estándar de salida (stdout) para que la información retornada por Nmap pueda ser útil desde un script. Una solución mucho más adecuada para este propósito y desde luego mucho más elegante, es utilizando una librería que se encargue de estos detalles y devuelva una estructura de datos consistente con los resultados devueltos por Nmap. Una de las mejores alternativas es python-nmap.

Leer en contenido completo en Flu-Project

Suscríbete a nuestro Boletín

1 comentario:

  1. ¿Pero no sería más práctico pasar la salida estandar de Nmap a XML? Particularmente, la mayoría de los scripts que trae pre-instalado Nmap ya tienen el sporte para pasar de forma transparante de salida de texto a XML (mediante un argumento dado al ejecutar el programa). Aunque bueno... faltaría crear el interpretador del XML

    ResponderBorrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!