Archivo de la categoría: Herramientas

Nmap: Primeros pasos y consejos útiles

nmap

Pruebas realizadas desde: GNU/Linux Debian “Wheezy” (7.2)

Definitivamente Nmap es de las herramientas consagradas cuando se habla de temas de seguridad, utilizada por millones de personas para la administración de redes, inventarios y auditorías de seguridad, es tan popular que incluso ha aparecido en varias películas (The Matrix Reloaded, Die Hard 4, etc).

Como dato histórico, la herramienta fue desarrollada por Gordon “Fyodor” Lyon, y fue liberada en la revista Phrack ed. 51 art. 11, el 1ero de septiembre de 1997. Ver artículo: http://phrack.org/issues.html?issue=51&id=11#article

Podemos descargarlo desde la página oficial: http://nmap.org/download.html

Si estamos en Windows, bastaría con bajar el instalador (en el apartado Microsoft Windows Binaries) y ejecutarlo. Si estamos en un sitema tipo Debian, podemos instalarlo desde los repositorios ejecutando:

# aptitude install nmap

O bien, podemos bajarnos los archivos fuente de Nmap y compilarlo nosotros mismos.

Para correr un escaneo en Nmap bastaría con ejecutar desde la terminal (Ojo! la mayoría de escaneos interesantes requieren permisos de root/Administrador):

# nmap x.x.x.x

x.x.x.x -> Dirección IP, ej: 192.168.1.10

En la IP, Nmap también soporta notación CIDR, ej.:

# nmap 192.168.1.0/24

Un escaneo de éste tipo realizaría un SYN scan a 255 direcciones (de 0 a 255)

Otro formato soportado es el siguiente:

# nmap 192.168.1.1-254

Realiza el escaneo del host 1 al 254.

Con Nmap tendremos una gran cantidad de posibilidades para el análisis de una red, de manera genérica, podemos definir los pasos de un escaneo (3) de la siguiente manera y que podemos llevar a cabo con Nmap:

Paso 1: Identificar los sistemas activos

Por decir, podríamos hacer un Ping Sweep, ésto es, un barrido de pings, a un rango de IPs. Para hacerlo podemos ejecutar desde la terminal:

# nmap -sP 192.168.1.0/24

El resultado arrojaría la lista de dispositivos que responden al ping (activos). Sin embargo, un escaneo de éste tipo es algo ruidoso y no es 100% confiable (por la capacidad de los equipos para deshabilitar los pings). Hay una segunda opción que podemos considerar, el List Scan, el cual solo hace una resolución DNS inversa para obtener los nombres de hosts de las IPs haciendo la petición al servidor DNS default o alguno especificado por nosotros, ejemplo:

# nmap -sL 192.168.1.0/24

Haría una resolución DNS de 255 hosts en la red de máscara natural. Toma el servidor DNS default de nuestra máquina, si estamos en un GNU/Linux como Debian, podemos revisar cuál es el valor default en el archivo resolv.conf :

$ cat /etc/resolv.conf
# Generated by NetworkManager
domain lan
search lan
nameserver 192.168.1.254

Si queremos especificar un servidor DNS podríamos hacer algo como:

# nmap -sL yahoo.com --dns-server 8.8.8.8

Lo cual es una resolución del nombre de dominio yahoo.com (si, Nmap no solo acepta IPs, si no también nombres de host/dominio) a través del servidor DNS de Google (8.8.8.8).

nmap0

Paso 2: Descubrir puertos abiertos

Una vez que conocemos qué dispositivos están activos en nuestra red, podemos proceder a hacer un análisis más detallado de cada host, en el segundo paso del escaneo intentaremos obtener la lista de puertos que tiene activos un host, lo podemos hacer ejecutando:

# nmap -sS -v -T4 x.x.x.x

x.x.x.x -> Dirección IP (192.168.1.10), rango de red (192.168.1.0/24), nombre de host (yahoo.com) y variantes

-sS -> Cuando pasamos el parámetro -sS especificamos que el escaneo a realizar es un SYN Scan, ésto es, recordando el Three-Way-HandShake, que Nmap mandará un paquete TCP con la bandera SYN activada, si el puerto está abierto recibirá como respuesta del host un SYN+ACK y si está cerrado un RST, es un escaneo Half-Open por que se corta en éste punto la comunicación y no se termina de completar el Three-Way-HandShake. Otros tipos de escaneos disponibles son: -sT (Full TCP Connect), -sX (XMAS Scan), -sF (FIN Scan), -sA (ACK Scan), etc.

-v -> Opción “verbose”, con este parámetro le indicamos que nos arroje en pantalla más información de los proceso que realiza durante el escaneo, podemos utilizar -vv para indicar que sea “very verbose”

-T4 -> La opción -T# nos permite aumentar o disminuir el tiempo de espera entre el envío de cada sonda (paquete) que manda Nmap al host, las opciones van de 0 (paranoid, cuando estamos en redes muy lentas o queremos evitar activar sistemas IDS, un escaneo de éste tipo es muy tardado) a 5(insane, útil cuando estamos en redes de alta velocidad), podemos dejarlo en -T4 (aggressive) cuando estamos en una red relativamente rápida.

nmap1

Paso 3: Identificar el Sistema Operativo y los servicios

Nmap utiliza técnicas como banner grabbing y OS Fingerprinting para lograr éste objetivo. La técnica para obtener banners puede ser tan sencilla como tratar de ejecutar una sesión telnet a una ip y puerto específico y revisar que mensaje (banner) nos regresa. El OS Fingerprinting, lo realiza observando el comportamiento y las respuestas del host analizado y relacionando ésto con una digamos “base de datos” de comportamiento particular que tienen los diferentes Sistemas Operativos existentes.

Si queremos saber qué servicios (y versiones) corre el host que estamos analizando en los puertos que tiene abiertos, podemos hacer un Version Scan (-sV) con OS detection (-O) activado:

# nmap -sV -O x.x.x.x

x.x.x.x -> Dirección IP, de red, etc.

nmap2

Como podemos ver en la imágen, dentro de mi red local, al escanear mi computadora, vemos que tengo el puerto 80 y el 111 abiertos, con los servicios de http (Apache 2.2.22 en Debian) y rcpbind respectivamente. Sin embargo, tuvo problemas para definir exactamente el tipo de Sistema Operativo.

Éstos son algunos puntos básicos sobre Nmap, espero hablar más a fondo en otras entradas del blog, por ahora lo dejaré en este punto para no hacer muy largo el post.

Debian: Instalar y configurar Wireshark

drivemeca-wireshark-logoDistro: GNU/Linux Debian “Wheezy” (7.2)

Wireshark es un analizador de protocolos muy importante, nos permite hacer el análisis de las tramas que corren por nuestra red, pero no solo nos permitirá ver el tráfico en vivo (o guardar las tramas para posterior análisis), si no que nos permitirá generar estadísticas, e inclusive, podreemos reensamblar flujos TCP, es una herramienta muy útil (y clásica) para administradores de red, al grado que hoy en día incluso existen libros completos y certificaciones del uso de la misma (Wireshark Certified Network Analyst).

Página Oficial: https://wireshark.org/

Pasos a seguir

Para instalar Wireshark en nuestro Debian, lo podremos hacer desde la terminal ya que el programa está disponible en los repositorios de Wheezy:

# su
# aptitude update
# aptitude install wireshark

Ok, ahora cabe hacer un señalamiento … cuando corremos Wireshark, es necesario tener permisos de administrador (root) para poder realizar la captura de paquetes, lo cual se logra al establecer nuestra la NIC (tarjeta de red, puede ser ethernet o wifi) en modo promiscuo. Podemos correr Wireshark desde la consola (aunque también se crea un enlace en eel menú de Aplicaciones > Internet):

# wireshark

Al correrlo por primera vez, es probable que nos encontremos con el siguiente error:

Running as user “root” and group “root”. This could be dangerous. If you’re running Wireshark this way in order to perform live capture, you may want to be aware that there is a better way documented at /usr/share/doc/wireshark-common/README.Debian

La razón es que correr un programa tan grande como lo es Wireshark, con permisos de root, no es una buena práctica y no es seguro. La solución la podemos encontrar si revisamos el manual al que nos enlaza el mensaje de error:

# pager /usr/share/doc/wireshark-common/README.Debian

La herramienta Wireshark en sí no es la que se encarga de hacer la captura de paquetes, lo hace a través de un programa aparte llamado dumpcap, el cual es un programa más ligero que Wireshark en sí.

———————

Método 1:

Entonces, la mejor práctica sería manejar permisos separados. Podemos ajustar ésta configuración ejecutando lo siguiente desde la terminal y como root:

# dpkg-reconfigure wireshark-common

Nos aparecerá un mensaje como el siguiente:

conf_paquetes

Seleccionamos <Sí> y tecleamos Enter, al hacer ésto se habrá creado el grupo de usuarios “wireshark”, el cual le brinda permisos de root a dumpcap, finalmente solo bastaría con asignar los usuarios que queramos puedan ejecutar Wireshark con éstos privilegios, para hacerlo desde la terminal ejecutamos:

# adduser wireshark nombreDeUsuario

ó

# usermod -a -G wireshark nombreDeUsuario

———————

Método 2:

Si queremos hacerlo un poco más manual (al final viene un enlace donde se analiza incluso un tercer método), podemos asignar los permisos y crear el grupo nosotros mismos, la idea es dar a dumpcap los permisos de root. Podemos hacer lo siguiente desde la terminal:

# groupadd wireshark

# usermod -a -G wireshark nombreDeUsuario

# chgrp wireshark /usr/bin/dumpcap

# chmod 4750 /usr/bin/dumpcap

Referencia: https://blog.wireshark.org/2010/02/running-wireshark-as-you/

———————

Una vez hechas éstas configuraciones, podemos correrlo como usuario normal ejecutando:

$ wireshark

Y listo, nuestro Wireshark ya está listo para utilizarse. Si queremos conocer nuestras interfaces de red, podemos ejecutar:

# ifconfig

Podríamos pasarle parámetros a Wireshark, por decir -i nos permitiría seleccionar la interfaz (tarjeta) que se utilizará para escuchar el tráfico, -k le indica a Wireshark que comience el escaneo inmediatamente y -f nos ayudaría a manejar filtros para el tráfico, digamos por decir, que queremos arrancar Wireshark en la interfaz wlan0 escuchando solamente el tráfico HTTP:

$ wireshark -i wlan0 -k -f "tcp port http"

wShar
Wireshark es una herramienta muy poderosa, en próximos posts espero escribir más sobre el uso de la misma. Por ahora dejaré el post hasta aquí 🙂