miércoles, 9 de enero de 2013

Nmap, escaneando la red

La herramienta que quiero tratar hoy es una de las mas importantes y eficaces en cuanto al fingerprint se refiere. Cuando se quiere hacer una prueba de seguridad (pentest) en una red el primer paso suele ser recabar información de nuestro objetivo, a esto se le llama information gathering o fingerprint. Debemos saber a que nos enfrentamos, que servicios se ejecutan en la máquina que tenemos por víctima, los puertos abiertos, que sistema está corriendo en ella etc... Aquí es donde entra Nmap. Nmap es un escáner de redes que puede facilitarnos increíblemente esta tarea mandando determinados paquetes de verificación cuyas respuestas serán interpretadas dándonos detalles tipo que puertos y servicios se están ejecutando, sistema operativo, versiones... Además, nos solo se que ahí ya que esta herramienta tiene un poderoso motor de scripts que puede ir desde opciones para intentar un bruteforce hasta
Para empezar, podemos instalarlo directamente de los repositorios de Ubuntu con un:
sudo apt-get install nmap
O bien podemos descargarnos la última versión de código fuente desde aquí. En esa página también aparecen las instrucciones para su instalación así que no las escribiré aquí.

Nmap requiere privilegios de root así que lo primero que haremos será un sudo su para no repetir cada sudo. EN principio es fácil de usar, no requiere mas que una llamada al programa seguido del objetivo a escanear, que puede ser un ip: 127.0.0.1 varias separadas por un espacio (127.0.0.1 192.168.0.100) o un rango de estas (192.168.0-1.*). También admite nombres de dominio (google.com, localhost).
  El comando nmap localhost cargaría un análisis básico sobre nuestra máquina local cuya salida solamente marcará los puertos abiertos de uso mas común con los servicios que corren en ellos. Ahora bien, si añadimos parámetros podemos hacer que nmap nos detalle más su búsqueda. Por ejemplo, añadiremos -A para detallar el sistema operativo, las versiones y un traceroute, -T5 para habilitar un método mas rápido y ruidoso y ampliaremos el rango de puertos TCP al máximo con -p 1-65535, a ver que sucede.
nmap -A -p 1-65535 -T5 localhost
La información de salida se ha ampliado enormemente, dándonos lo indicado por medio de los flags extra. Aquí dejo una guía con todos los argumentos de nmap y su uso. Aunque la mayoría de las veces solo usaremos un puñado, conviene darles un repaso.

TÉCNICAS BÁSICAS DE SCANEO:
·                     Escanear un solo objetivo - nmap [target]
·                     Escanear múltiples objetivos - nmap [target1,target2,etc]
·                     Escanear una lista de objetivos - nmap -iL [list.txt]
·                     Escanear un rango de hosts - nmap [range of IP addresses]
·                     Escanear una subred completa - nmap [IP address/cdir]
·                     Explorar hosts aleatorios - nmap -iR [number]
·                     Excluyendo los objetivos de un scan - nmap [targets] –exclude [targets]
·                     Excluyendo los objetivos mediante una lista - nmap [targets] –excludefile [list.txt]
·                     Realizar una exploración agresiva - nmap -A [target]
·                     Escanear un objetivo IPv6 - nmap -6 [target]


OPCIONES AVANZADAS DE SCANNEO:
·                     TCP SYN Scan - nmap -sS [target]
·                     TCP connect scan - nmap -sT [target]
·                     UDP scan - nmap -sU [target]
·                     TCP Null scan - nmap -sN [target]
·                     TCP Fin scan - nmap -sF [target]
·                     Xmas Scan - nmap -sX [target]
·                     Escaneo TCP ACK - nmap -sA [target]
·                     Custom TCP scan - nmap -scanflags [flags] [target]
·                     Exploración protocolo IP - nmap -sO [target]
·                     Enviar paquetes Ethernet - nmap -send-eth [target]
·                     Enviar paquetes IP - nmap -send-ip [target]

OPCIONES DE SCANNEO DE PUERTOS:
·                     Realizar un análisis rápido - nmap -F [target]
·                     Escanear puertos específicos - nmap -p [Puertos] [target]
·                     Escanear puertos por nombre - nmap -p [nombre del puerto] [target]
·                     Escanea los puertos de protocolo - nmap -sU-sT-p U: [puertos], T: [puertos] [target]
·                     Analizar todos los puertos - nmap -p "*" [target]
·                     Escanea los puertos principales - nmap -top-ports [número] [target]
·                     Realice un escaneo de puertos secuencial - nmap -r [target]

OPCIONES DE DESCUBRIMIENTO:
·                     Realizar solamente una exploración de ping - nmap-sP [target]
·                     No hacer ping - nmap -PN [target]
·                     TCP SYN Ping - nmap -PS [target]
·                     Ping TCP ACK - nmap -PA [target]
·                     UDP ping - nmap -PU [target]
·                     Ping SCTP ​​Init - nmap -PY [target]
·                     Eco ICMP ping - nmap -PE [target]
·                     Ping ICMP Timestamp - nmap -PP [target]
·                     Ping ICMP de máscara de dirección - nmap -PM [target]
·                     Ping protocolo IP - nmap -PO [target]
·                     ARP ping - nmap -PR [target]
·                     Traceroute - nmap -traceroute [target]
·                     Fuerza resolución DNS inversa - nmap -R [target]
·                     Deshabilitar resolución DNS inversa - nmap -n [target]
·                     Alternative DNS lookup - nmap -system-dns [target]
·                     Especifique manualmente los servidores DNS - nmap -dns-servers [servers] [target]
·                     Crear una lista de host - nmap -SL [target]



DETECCIÓN DE VERSIÓN:
·                     Detección del sistema operativo - nmap -O [target]
·                     Enviar Fingerprints TCP/IP - www.nmap.org/submit/
·                     Tratar de adivinar un desconocido - nmap –osscan-guess [target]
·                     Servicio de detección de versión - nmap -sV [target]
·                     Solución de problemas de las exploraciones versión - nmap -sV-version-trace [target]
·                     Realizar un análisis RPC - nmap -sR [target]

Para el usuario mas acostumbrado a las unidades gráficas, o que sienta que todo esto le supera, quizá pueda facilitar el habituarse a estas opciones el uso de Zenmap, descargable desde la misma web de nmap.
Antes de concluir, voy a donar un pequeño script en bash que hace un año ideamos un par de colegas y yo y que es bastante útil a la hora de hacer escáneres masivos buscando un servicio concreto para vulnerarlo o lo que sea:
     #/bin/bash
   
    menumsg() {
   
         echo -n "Inroduce Subnet (Ex: 192.168.1.0/24)"
         read target
     echo "Introduce el proceso a olisquear"
     read proceso
     echo "Introduce el puerto sobre el que deseas buscar el proceso"
     read puerto
         echo "Deseas olisquear:$target en busca de $proceso ? [y/n]"
         read proceed
   
    }
   
    menumsg
   
    if [ $proceed = yes ] || [ $proceed = y ] ; then
   
       
         exec nmap -p $puerto  $target -oG - | grep open > primerpaso
         awk '{ printf $2; }' primerpaso > primeralista
         echo "Primer Paso ejecutado, continuamos[y/n]?"
         read continuamos
         
            if [ $continuamos = yes ] || [ $continuamos = y ] ; then
   
              nmap -v -p $puerto -sV -iL primeralista -oG - | grep $proceso > segundopaso
              awk '{ printf $2; }' segundopaso > segundalista
              cp segundalista Resultado.txt
         
            elif [ $continuamos = no ] || [ $continuamos = n ] ; then
                    cp primeralista Resultado.txt
                 
            fi    
    elif [ $proceed = no ] || [ $proceed = n ] ; then
       
         menumsg
    fi    
   
    echo "Revisa Resultado.txt para revision"
   
    exit



Es bastante simple de entender, no obstante, lo que hace es pedir un objetivo (Ips) un servicio y puerto. Pasa el nmap sobre ese puerto y genera, primero una lista con los resultados de puerto abierto y una segunda filtrando las ip con el proceso.

Por hoy es todo. Hasta la próxima!

No hay comentarios:

Publicar un comentario