jueves, 30 de agosto de 2012

Introducción a nMap (II)

 En la anterior entrega vimos como scanear con nMap una red, localizar las IP's de las máquinas y ver que puertos estaban abiertos.
En esta entrega intentaremos  sacar más información  sobre las maquinas identificadas.
Pero antes hagamos una reflexiones.
Un sistema de scan de redes puede tener lugar a lo largo de varios días (o semanas), como es el caso de esta serie de artículos que se irán confeccioando en distintos momentos.
Por eso una buena práctica es guardar todos los resultados de cada sesión pues la redes son dinámicas y los terminales pueden encenderse y apagarse, además de otras consideraciones que iremos analizando en posteriores capítulos.

Nos ponemos en nuestro puesto y ejecutamos nuestro scan de direcciones ip
##nmap -sP 192.168.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 17:21 ope
Nmap scan report for 192.168.1.1
Host is up (0.031s latency).
MAC Address: 50:67:F0:7F:8F:8D (Unknown)
Nmap scan report for 192.168.1.10
Host is up (0.047s latency).
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Nmap scan report for 192.168.1.33
Host is up.
Nmap scan report for 192.168.1.34
Host is up (0.046s latency).
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Nmap scan report for 192.168.1.36
Host is up (0.016s latency).
MAC Address: A4:5C:27:EE:49:6E (Nintendo Co.)
Nmap done: 256 IP addresses (5 hosts up) scanned in 5.63 seconds

 Si lo comparamos con el primer artículo de esta serie vemos que tenemos una máquina activa más. Sin investigar demasiado veo que el quinto puesto parece ser una Nintendo. Esto me da una pista muy importante: Alguien ha encendido la Nintendo sin haber acabado sus deberes del colegio. (En un análisis de redes hemos de aprender a extraer cualquier tipo de información que nos pueda ser útil y no limitarnos a la información técnica.)

Por no diversificarnos sigamos centrados en los dos puestos que teníamos identificados como Linux (192.168.1.10) y Windows(192.168.1.33)

Para obtener una información más detallada vamos a ejecutar nmap con la opción -sV (V de versión).
##nmap -sV 192.168.1.10

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 17:38 ope
Nmap scan report for 192.168.1.10
Host is up (0.019s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE VERSION
2022/tcp open  ssh     OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0)
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Service Info: OS: Linux

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.92 seconds

Una vez más podemos observar cierta falta de concordancia con los datos obtenidos en la anterior prueba, pues solo encontramos abierto el puerto 2022. Y vuelvo a repetir en cada momento ni todas las máquinas de una red están conectadas ni tienen que tener los mismo servicios en ejecución.

Analizando la entrada vemos que en el puerto 2022 tenemos un servidor ssh OpenSSH con versión incluida y todo.
Y, además, confirmamos que tenemos una máquina con Linux, tal y como habiamos deducido en el post anterior.

Repetimos la operación para la máquina que suponemos que es Windows.

##nmap -sV 192.168.1.34

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 18:26 ope
Nmap scan report for 192.168.1.34
Host is up (0.0067s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE      VERSION
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds Microsoft Windows XP microsoft-ds
2869/tcp closed icslap
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Service Info: OS: Windows

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.19 seconds

Obtenemos un poco más de información sobre el puerto 445 y la confirmación de que se trata de un equipo Windows.

El siguiente paso que vamos a realizar es tratar de fijar con el máximo detalle la versión del sistema operativo. Para ello nos olvidamos del scan  (parámetro -s) y usaremos el parámetro -O.
Mientras que la técnica hasta aquí usada era relativamete sencilla el parámetro -O usa una técnica bastante mas compleja basada en la comparación de las huella digital (finger print) del sistema operativo.

El concepto es el siguiente: lanzar contra la maquina una serie de paquetes de protocolo con diversas variantes (una muy importante es un control de los tiempos de inactividad). Estos paquetes se lanzan tanto contra puertos abiertos como cerrados. Las especificaciones del protocolo TCP/IP no llegan a tal nivel de detalle y por lo tanto dejan las respuestas de los sistemas ante tales situaciones abiertas.
Parece lógico pues que cada sistema (incluso cada versión) no responda de manera exactamente igual ante esta prueba.

La información obtenida forma un bloque de información, (finger print), que se compara con las que nMap tiene en una base de datos y nos da el porcentaje de concordancia de la huella obtenida.

Veamos los ejemplos prácticos en nuestros equipos.

##nmap -O 192.168.1.34

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 19:27 ope
Nmap scan report for 192.168.1.34
Host is up (0.0041s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds
2869/tcp closed icslap
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Device type: general purpose
Running: Microsoft Windows 2000|XP
OS details: Microsoft Windows 2000 SP4, Microsoft Windows XP SP2 or SP3
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.31 seconds

Ya sabemos con más exactitud lo que está corriendo en esa máquina.

Y vayamos a la supuesta máquina linux.

##nmap -O 192.168.1.10

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 19:32 ope
Nmap scan report for 192.168.1.10
Host is up (0.00094s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
2022/tcp open  down
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.51%D=8/30%OT=2022%CT=1%CU=44288%PV=Y%DS=1%DC=D%G=Y%M=00301B%TM=
OS:503FB1D5%P=i686-pc-windows-windows)SEQ(SP=FE%GCD=1%ISR=106%TI=Z%CI=Z%II=
OS:I%TS=8)SEQ(SP=FE%GCD=1%ISR=106%TI=Z%CI=Z%II=I%TS=9)SEQ(CI=Z%II=I)SEQ(SP=
OS:FE%GCD=1%ISR=106%TI=Z%CI=Z%TS=9)OPS(O1=M5B4ST11NW4%O2=M5B4ST11NW4%O3=M5B
OS:4NNT11NW4%O4=M5B4ST11NW4%O5=M5B4ST11NW4%O6=M5B4ST11)OPS(O1=NNT11%O2=NNT1
OS:1%O3=NNT11%O4=NNT11%O5=NNT11%O6=M5B4ST11)OPS(O1=NNT11%O2=NNT11%O3=NNT11%
OS:O4=NNT11%O5=NNT11%O6=NNT11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W
OS:6=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW4%CC=Y%Q=)ECN(R=Y%DF=Y%T=40%W
OS:=3908%O=%CC=N%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T1(R=Y%DF=Y%T=40
OS:%S=O%A=O%F=AS%RD=0%Q=)T1(R=Y%DF=Y%T=40%S=O%A=O%F=A%RD=0%Q=)T2(R=N)T3(R=Y
OS:%DF=Y%T=40%W=3890%S=O%A=S+%F=AS%O=M5B4ST11NW4%RD=0%Q=)T3(R=Y%DF=Y%T=40%W
OS:=3890%S=O%A=O%F=AS%O=M5B4ST11NW4%RD=0%Q=)T3(R=Y%DF=Y%T=40%W=3890%S=O%A=O
OS:%F=A%O=NNT11%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%
OS:DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%
OS:O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=4
OS:0%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.05 seconds

Bueno, pues parece en este caso, no solo no hemos ampliado la información si no que parece que ni siquiera podemos estar seguro de que es una máquina Linux.

Saquemos provecho de este inconveniente y veamos lo que podemos aprender, que es de lo que se trata.

Ese bloque de información que nMap no ha sido capaz de cuadrar es la huella digital. Nos invita gentilmente a enviar esta información junto con la identificación del Sistema Operativo al equipo de nMap para aumentar la base de datos.

No vamos  alargar más por hoy el artículo y en el próximo veremos porque no ha sido posible obtener una información más detallada de la máquina 192.168.1.10  e interaremos hacer un resumen de lo hecho hasta ahora.


domingo, 26 de agosto de 2012

Introducción a nMap (I)

Nmap es una herramienta de código abierto que se usa para el mapeo de redes (Network map). Se trata de una de las herramientas más potentes que hay para scanear redes y además al ser de código abierto es gratuitas. Buena y barata.

Existen versiones de Nmap para Linux y Windows que podremos descargarnos desde el sitio oficial.

Lo más duro de esta herramienta es empezar. Tiene tantos parámetros, alguno de los cuales tan parecidos, que para los recien llegados se vuelve todo un poco confuso. A lo largo de este post y los dos siguientes voy a tratar de explicar a través de unos procesos simples un método de trabajo usando algunas de las opciones más básicas de este programa.
Con este método estaremos en condiciones de sacar información de redes sencillas (SOHO - Small office Home office) y nos dejara con los conocimientos necesarios para abordar otros entornos más complejos.

Para ello deberemos disponer de una Red de Área Local con al menos dos equipos. No necesariamente tienen que ser Windows o Linux. Si bien uno de ellos ha de serlo forzosamente para ejecutar nmap el otro puede ser cualquier consola de juegos (Nintendo, Wii, Xbox, ...) que tenga conexion wifi.

No sólo debemos pensar en ordenadores, con las redes wi-fi es normal enganchar consolas de juegos, smartphones, etc.

Cuantos más cacharros tengamos más variedad de resultados tenemos y más podremos aprender.

En estos artículos obviaré ciertos pasos y trabajaré con conceptos que entiendo necesarios para abordar un estudio de este tipo.

Aunque Nmap tiene una interfaz gráfica en estos artículos trabajaremos exclusivamente en la interfaz de comandos (CLI) por lo que  abriremos una ventana de DOS desde la que trabajaremos

Partiremos de una red sencilla:
  • Un router ADSL con wifi
  • 1 Ordenador desde el que ejecutaremos el nmap conectado por cable
  • 2 Ordenadores (1 con Windows y otro con Linux) conectados por cable
  • 2 Consolas (Wii y Nintendo)
  • Direcciones de red:  192.168.1.0/25  (192.168.1.1 - 192.168.1.255)
  • Máscara de red: 255.255.255.0
  • Router por defecto: 192.168.1.1
  • Dirección de Broadcast: 192.168.1.44
Es la configuración normal que traen los router ADSL domésticos.



 Las tareas que vamos a realizar son las siguientes:

Identificar los equipos conectado.
Scanear los puertos abiertos
Identificar que se está ejecutando en cada puerto
Identificar el sistema operativo de cada máquina.

Para identificar los equipos usaremos el siguiente comando: nmap -sP 192.168.1.0/24
El parámetros -s significa scan y va acompañado de otros parámetro que indica que tipo de scan vamos a realizar.
En este caso -sP quiere decir "hazme un scan del tipo ping". Con este comando es como si realizaramos un comando ping contra todos y cada uno de las direcciones permitidas en nuestra red:

##nmap -sP 192.168.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-25 16:41 ope
Nmap scan report for 192.168.1.1
Host is up (0.016s latency).
MAC Address: 50:67:F0:7F:8F:8D (Unknown)
Nmap scan report for 192.168.1.10
Host is up (0.016s latency).
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Nmap scan report for 192.168.1.33
Host is up.
Nmap scan report for 192.168.1.34
Host is up (0.016s latency).
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Nmap done: 256 IP addresses (4 hosts up) scanned in 10.20 seconds
##

Podemos ver que nos ha localizado 4 equipos.

192.168.1.1
192.168.1.10
192.168.1.33
192.168.1.34

El equipo 192.168.1.1 es el router ADSL y por el momento no nos dedicaremos a él.  De los otros equipos uno es el equipo desde donde estamos trabajando y los otros  se corresponden a los dos equipo. (No tenemos encendidas las consolas).

Con el comando ipconfig vemos que estamos trabajando desde la dirección 192.168.1.33 y tampoco vamos centrarnos en él. Nos quedan pues los equipos 192.168.1.10 y 192.168.1.34.

Veremos que podemos obtener de ellos. Siguendo el método lo siguiente será ver que puertos nos presenta.

Esto lo haremos con el parámetros -sS, la opción S dice a nmap que realice un scan de SYN, que es es inicio de toda conexión TCP (three way handsake).

Lanzaremos este scan contra cada una de las máquinas objetivos:

##nmap -sS 192.168.1.10

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-26 09:04 ope
Nmap scan report for 192.168.1.10
Host is up (0.0048s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
2022/tcp open  down
5901/tcp open  vnc-1
6001/tcp open  X11:1
MAC Address: 00:30:1B:B0:22:0F (Shuttle)

Nmap done: 1 IP address (1 host up) scanned in 4.92 seconds

##nmap -sS 192.168.1.34

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-26 09:05 ope
Nmap scan report for 192.168.1.34
Host is up (0.00s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds
2869/tcp closed icslap
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)

Nmap done: 1 IP address (1 host up) scanned in 6.26 seconds


Empezamos a ver cosas interesantes. La máquina .10 tiene tres puertos abiertos: 2022, 5901, 6001. Nmap intenta por el número de puerto identificar que servicio está escuchando en cada puerto. Por supuesto que el administrador de cada máquina es muy libre de salirse de los estandares de puertos y ponerlos como quiera por lo que esta información deberemos tomarla con reservas. El servicio X11 (X-Windows)  nos puede hacer pensar que estamos en ante una máquina *NIX con un servidor VNC. El puerto 2022 parace menos común por lo que por el momento no nos sirve de mucho.

En la siguiente máquina tampoco nos es difícil ver que se trata de un equipo Windows con ficheros compartidos.

Esto es todo por ahora. En la próxima entrega intentaremos conocer con más detalle qué está corriendo en cada puerto y que sistema operativo hay en cada máquina con precisión.