Archive

Posts Tagged ‘scan nmap’

Escaneos en profundidad con ZMap

julio 7, 2015 1 comentario

Probablemente muchos de los lectores de este blog conocen bastante bien el funcionamiento de Nmap y los principales tipos de escaneos que se pueden llevar a cabo con esta potente herramienta. Se trata de una utilidad muy especial en el arsenal de cualquier hacker o pentester, aunque sin duda lo es más, entender cuándo y en qué momento se debe lanzar un escaneo de un tipo determinado contra un objetivo, es decir, contar con el conocimiento sobre el modelo OSI y cómo se comunican los ordenadores entre si. Si bien Nmap permite cosas que otras herramientas similares no soportan, como por ejemplo sus capacidades de scripting por medio del motor NSE, es interesante conocer otras soluciones y proyectos que van por la misma línea de Nmap. Una de estas herramientas es “Zmap” un escáner de puertos muy interesante, especialmente desde el punto de vista de un investigador de seguridad. Lo que diferencia a este escáner de otros tan conocidos como Hping, Nmap, Queso, entre otros, es que cuenta con varias opciones para lanzar escaneos contra el espacio de direcciones IPv4 completo. Esto se traduce a que con “Zmap” es posible analizar de forma sistemática, todas las direcciones IPv4 que se encuentran disponibles en Internet. Dicho esto, hay que tener en cuenta ciertas limitaciones, especialmente relacionadas con la capacidad de computo del ordenador con el que se lanza la herramienta y la velocidad de la conexión a Internet. Evidentemente en la mayoría de los casos es mucho más interesante realizar escaneos específicos contra un segmento de red en Internet o en una Intranet en lugar de hacerlo contra el rango completo de direcciones IP, para ello Zmap también permite especificar subnets en formato CIDR y controlar la velocidad con la que se envían los paquetes de datos al objetivo del escaneo. Por defecto, la herramienta se encarga de realizar un escaneo del tipo TCP SYN sin realizar el TCP handshake completo contra el objetivo. Además, intenta hacerlo con la tasa de transferencia más rápida posible. Este comportamiento por defecto también se puede personalizar por medio de una serie de interruptores que se encuentran disponibles en la herramienta para cambiar el número de direcciones IP que se deben analizar, el tipo de escaneo, la velocidad de transferencia, listado de puertos, entre otras.

Instalación y uso de Zmap

Se puede instalar directamente sobre un sistema basado en Debian utilizando la herramienta “apt-get” o en sistemas basados en RedHat con la herramienta “yum”, sin embargo, en este tipo de herramientas suele ser más interesante descargar la última versión de su repositorio de fuentes y posteriormente compilar e instalar manualmente. El repositorio del proyecto se encuentra en la siguiente ruta y para instalarlo basta con ejecutar los siguientes comandos.

>git clone https://github.com/zmap/zmap.git

>sudo apt-get install build-essential cmake libgmp3-dev libpcap-dev gengetopt byacc flex libjson-c-dev

>cd zmap
>cmake -DENABLE_DEVELOPMENT=OFF
>make && make install

 

Una vez instalado, se puede comenzar a ejecutar el comando “zmap” y qué mejor forma que hacerlo utilizando el interruptor “–help” para ver las opciones de configuración que se encuentran disponibles en la herramienta.

>zmap –help

Los argumentos básicos para utilizar zmap son “-p”, “-o”, “-b”, “-w” y “-f”. A continuación se explica su uso mediante ejemplos.

>sudo zmap -p 80

>sudo zmap -p 80 192.168.0.0/16

>sudo zmap -p 80 192.168.0.0/16 -B 10M
>sudo zmap -B 10M -p 80 -n 10000 -o results.csv

Loa anteriores son ejemplos básicos sobre el uso de la herramienta, en donde el interruptor “-p” permite especificar el listado de puertos que serán escaneados en el objetivo, “-B” permite establecer un límite máximo en la velocidad de transferencia, “-n” permite establecer un límite máximo en el número total de máquinas que se deben analizar y “-o” permite establecer un fichero en el que se escribirán los resultados arrojados por la herramienta. Finalmente, la herramienta recibe por argumento un listado de subnets que serán analizadas, aunque también es posible omitir dicho argumento y en tal caso, el escaneo se realizará contra el rango completo de direcciones IPv4, algo que como he comentado anteriormente, no es el mejor de los escenarios, no solamente por cuestiones de rendimiento y uso de los recursos del ordenador, sino porque es posible que algún objetivo “se queje” y denuncie de un posible ataque contra sus infraestructuras por realizar un escaneo de puertos sin autorización.

Si se utiliza el interruptor “-o”, por defecto solamente incluye las direcciones IP únicas que han contestado correctamente a un paquete del tipo SYN/ACK, sin embargo se pueden utilizar reglas sobre los campos que se deben incluir en el reporte final utilizando “-f”. Para conocer todos los filtros que se pueden aplicar con este interruptor, se puede ejecutar zmap con “–list-output-fields”

>zmap –list-output-fields

saddr string: source IP address of response

saddr-raw int: network order integer form of source IP address

daddr string: destination IP address of response

daddr-raw int: network order integer form of destination IP address

ipid int: IP identification number of response

ttl int: time-to-live of response packet

sport int: TCP source port

dport int: TCP destination port

seqnum int: TCP sequence number

acknum int: TCP acknowledgement number

window int: TCP window

classification string: packet classification

success int: is response considered success

repeat int: Is response a repeat response from host

cooldown int: Was response received during the cooldown period

timestamp-str string: timestamp of when response arrived in ISO8601 format.

timestamp-ts int: timestamp of when response arrived in seconds since Epoch

timestamp-us int: microsecond part of timestamp (e.g. microseconds since ‘timestamp-ts’)

Para conocer en detalle las combinaciones que se pueden aplicar con estos campos, se recomienda leer la sección correspondiente en la documentación oficial: https://zmap.io/documentation.html#outputfilter

Por otro lado, además del uso básico de Zmap con los interruptores anteriormente explicados, también existen algunos ficheros de configuración que permiten controlar el comportamiento de la herramienta y jugar con diferentes escenarios. Uno de los más importantes es el “blacklist.conf”, el cual permite especificar un listado de direcciones IP en formato CIDR que serán ignoradas del proceso de escaneo. Se recomienda incluir en dicho fichero, direcciones que no son objeto de análisis, tales como direcciones de broadcast/multicast y otras direcciones reservadas. Para especificar un fichero de “blacklist” personalizado se utiliza el interruptor “-b”.

Para establecer ciertas configuraciones personalizadas se puede crear un fichero de configuración que será utilizado por Zmap para establecer algunos valores por defecto cuando se arranca la herramienta, algunos de esos valores incluyen cosas como la interfaz de red por defecto que se utilizará, direcciones IP y MAC de origen de las peticiones, tiempo de espera antes de pasar a la siguiente dirección IP a analizar, entre otras cosas interesantes. Existe un fichero de configuración por defecto que se encuentra ubicado en “/etc/zmap/zmap.conf” o en “<ZMAP_INSTALL>/conf/zmap.conf” dependiendo de si se ha instalado desde el código fuente o utilizando apt-get/yum. Para especificar un fichero de configuración personalizado se utiliza el interruptor “-C”. Un ejemplo del contenido que puede tener un fichero de configuración de Zmap puede ser el siguiente

target-port 443

rate 10000

bandwidth 1M # 1mbps

blacklist-file “/etc/zmap/blacklist.conf”

summary

Como se puede apreciar, son opciones que se encuentran disponibles en la herramienta en la forma de interruptores, pero en este caso, se puede indicar un valor por defecto en el fichero de configuración y omitir el uso del interruptor en cuestión, algo que facilitará mucho las cosas.

>sudo zmap -C /etc/zmap/zmap.conf 62.81.210.0/16

Configuración avanzada en Zmap

En primer lugar, existen una serie de interruptores que permiten controlar los escaneos que se realizan contra las direcciones IP analizadas. Dichas opciones permiten establecer cosas tales como:
-B: La tasa de bits por segundo enviados por la herramienta (utilizando los sufijos K, M y G para especificar diferentes medidas).

-e: Establecer una semilla para la permutación de direcciones IP en el escaneo, algo realmente útil si se desea ejecutar Zmap desde consolas separadas y definiendo diferentes rangos ordenados.
–shards: Particionar el escaneo para ejecutar en diferentes instancias de Zmap, actuando de forma similar al uso de las semillas explicado antes.

r: Permite establecer la tasa de envío de paquetes por segundo.

-T: Número de hilos concurrentes que utilizará la herramienta para el envío de paquetes. Por defecto, solamente utiliza un único hilo.

Además de estas opciones, también existen otros interruptores que se centran más en la estructura de los paquetes y otros parámetros de red que serán empleados para que Zmap construya los paquetes de datos que se enviarán al objetivo de una forma determinada. Algunos de dichos interruptores se listan a continuación:

-s: Puerto de origen de los paquetes enviados al destino.

-S: Dirección IP de origen de los paquetes enviados al destino.

-i: Nombre de la interfaz de red utilizada para el proceso de escaneo.

Con todas estas opciones, se pueden hacer algunas pruebas del funcionamiento de la herramienta y analizar su comportamiento.

1. Se especifica que Zmap debe intentar enviar 1 Gigabyte de datos cada segundo en el proceso de escaneo

>sudo zmap -B 1G 62.168.1.0/16 -p 443

2. Se especifica que Zmap debe intentar enviar 1 Gigabyte de datos cada segundo en el proceso de escaneo con una taza máxima de 20 paquetes por segundo.

>sudo zmap -B 1G 62.168.1.0/16 -r 20 -p 443

3. Se especifica que Zmap paquetes de datos con una taza máxima de 20 paquetes por segundo.

>sudo zmap -r 20 62.168.1.0/16 -p 443

4. Define el valor 555 como puerto de origen de los paquetes enviados al destino y “192.168.20.112” como dirección IP de origen.

>sudo zmap -s 555 -S 192.168.20.112 62.168.1.0/16 -p 443

5. Ejecuta el escaneo anterior utilizando un nombre de interfaz de red distinto (“eth4”) y 20 hilos concurrentes.

>sudo zmap -s 555 -S 192.168.20.112 62.168.1.0/16 -i eth4 -T 20 -p 443

Una de las características más interesantes que tiene Zmap, es la posibilidad de crear y utilizar módulos preexistentes, los cuales permiten la generación de paquetes de pruebas para enviar y procesar respuestas desde los hosts escaneados. Es un concepto bastante similar al motor NSE que existen en Nmap, sin embargo a la fecha de redactar este artículo, existen solamente 3 módulos para realizar pruebas y evidentemente, no son tan robustos como los que se encuentran incluidos en Nmap para la detección de vulnerabilidades o recolección de información, pero desde luego va por muy buen camino. Para listar los módulos disponibles se utiliza el interruptor “–list-probe-modules”

>sudo zmap –list-probe-modules

tcp_synscan

icmp_echoscan

udp

icmp_echoscan:
Este módulo permite ejecutar peticiones ICMP request contra cada uno de los objetivos del escaneo e incluir entre los resultados, el paquete ICMP reply que ha devuelto cada uno de los objetivos.

>sudo zmap 62.168.1.0/16 -T 20 -M icmp_echoscan -p 443

udp:

Con este módulo, la herramienta se encargará de enviar un datagrama UDP a cada uno de los destinos del escaneo. Las respuestas en este caso por parte de los destinatarios pueden ser, o bien un paquete UDP en el caso de que el host se encuentre activo en el puerto especificado y que funcione sobre UDP o un paquete ICMP del tipo “Unreachable host”. También es posible utilizar el interruptor “–probe-args” para especificar opciones adicionales a los módulos y en el caso concreto del módulo “udp” se pueden utilizar 4 tipos diferentes de payloads que serán enviados junto con los datagramas UDP. Dichos argumentos son: “text”, “hex”, “file” y “template”. Por ejemplo:

>sudo zmap -M udp -p 1434 –probe-args=text:HELO -N 100 -f saddr,data

Zmap es una herramienta muy flexible que merece la pena utilizar con más frecuencia y que desde luego, tiene méritos de sobra para hacer parte de la “caja de herramientas” de un hacker.

Un saludo y Happy Hack!
Adastra.

 

Hacking con Python Parte 14 – Utilizando NMAP desde Python

mayo 6, 2014 2 comentarios

Uso de python-nmap para realizar escaneos en segmentos de red con Nmap desde scripts en python.

Repositorio GIT de la serie:
https://github.com/Adastra-thw/pyHacks.git


Make a Donation Button

Intentando evadir mecanismos y restricciones de Seguridad – Burlando reglas de detección de Snort con NMAP – Parte VIII

febrero 27, 2012 Deja un comentario

En la entrada anterior se han establecido las bases para utilizar Nmap y ejecutar un ataque de reconocimiento de forma “sigilosa”, evadiendo mecanismos de seguridad en el objetivo y evitando ser detectados en nuestras acciones, en este orden de ideas, anteriormente se han definido algunas de las opciones disponibles en Nmap para este propósito, inclusive se utilizó una técnica muy efectiva conocida como Idle Scan.

En esta ocasión, se intentará evadir las reglas y preprocessors de Snort para que de este modo, el escaneo efectuado contra el objetivo, sea lo mas silencioso posible, tratando de no despertar sospechas ni levantar ninguna alarma de las definidas en Snort (con las reglas y opciones de los preprocessors correctamente configuradas). Con esto en mente, se intenta utilizar diferentes opciones de Nmap para realizar el escaneo a diferentes máquinas en el segmento de red (Snort se ejecutará como NIDS) de esta forma se medirá el nivel de eficiencia de Snort y las opciones de configuración disponibles ante las diferentes técnicas de evasión existentes en NMAP.

Leer más…

Intentando evadir mecanismos y restricciones de Seguridad – Escaneo con NMAP evadiendo Firewalls – Parte VII

febrero 24, 2012 5 comentarios

Existen distintas técnicas que permiten conocer cuales puertos se encuentran abiertos en una máquina remota, cada una estas técnicas utilizan distintos tipos de envío de paquetes y protocolos, sin embargo, cuando una máquina remota tiene un Firewall o un IDS instalado y correctamente configurado, lo más probable es que los escaneos sean infructuosos, dado que la salida más frecuente, será precisamente ver todos los puertos bloqueados. Por ejemplo, si ejecutamos un clásico escaneo de puertos contra una máquina windows sin un firewall activo, podríamos ver lo siguiente:

Leer más…

Payloads Basicos en MetaSploit FrameWork

mayo 1, 2011 2 comentarios

USANDO EXPLOITS, PAYLOADS Y AUXILIARIES PARA COMPROMETER UN SISTEMA

Es posible utilizar módulos auxiliares y scanners para realizar diferentes actividades relacionadas con el descubrimiento de puertos abiertos, servicios disponibles, etc. (similar a lo que frecuentemente se realiza con NMap pero desde MetaSploit) esto es útil para segmentar de una forma mucho mas efectiva el uso de determinados exploits y recolectar información sobre un objetivo determinado.

Leer más…

Nexpose con MetaSploit

marzo 23, 2011 Deja un comentario

Nexpose es una herramienta que permite ejecutar diferentes tipos de escaneos en búsqueda de vulnerabilidades en un host o red, permite la definición de determinadas opciones que nos permiten acceder a un escaneo mucho mas preciso con el uso de filtros por puertos, máquinas, segmentos de red, protocolos, etc.

El procedimiento de instalación es muy simple, solamente basta con descargar el software y navegar por la estructura de directorios hasta llegar al directorio nexpose/nsc, una vez allí ejecutar el fichero ./nsc.sh, esto nos permitira utilizar nexpose desde la interfaz web en la ruta https://localhost:3780/

Leer más…

Dradis Framework y MetaSploit

marzo 22, 2011 Deja un comentario

Dradis Framework permite almacenar y compartir información relacionada con los resultados de las pruebas de penetración en un equipo, es útil para tomar notas sobre cada uno de los resultados obtenidos en los test de penetración y para importar ficheros de resultados de escaneos con nmap o nessus, permite generar reportes en multiples formatos, soporta SSL y permite la conexión con repositorios externos (tales como bases de datos de vulnerabilidades).

Dradis tiene una consola Web y una consola de modo texto que permite la ejecucion de diferentes comandos (sin embargo esta ultima caracteristica se encuentra actualmente depreciada).

Leer más…

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.582 seguidores

A %d blogueros les gusta esto: