viernes, 5 de junio de 2009

Analizando redes: nmap

Hola. El otro día tuve una gran duda, y encontré una GRAN solución. Debido a mi trabajo, anteriormente utilizaba un programa llamado "iptools", para analizar redes, puertos, etc. En fin, un sniffer. El otro día tenía que descubrir un PC en la red de mi empresa (hay gente que te ponen una mula en la red y se creen que no te darás cuenta, jeje ;) ) y pensé que habría alguna solución para Linux, y aquí está. El comando nmap (Network Mapping). Primero comentar que hay dos interfaces, la de linea de texto, y la gráfica. Sólo explicaré la de línea de texto, por ser la más potente, la más configurable, y la que menos recursos utiliza. Si quieres instalar la gráfica, escribe sudo aptitude install zenmap y en pocos segundos la tendrás instalada. Pasamos a cosas serias.

Instalación: como siempre, sencillísima.

sudo aptitude install nmap

una vez instalado, nos vamos a la consola. Cuantos más ordenadores tengas en la red, más te vas a divertir, jeje ;). La sistaxis básica del programa es:

nmap [tipo de escaneo] [opciones]

Por ejemplo, podríamos poner un nmap 192.168.1.1. Con esto estaríamos escaneando el router, para saber los puertos abiertos (más vale que sea sólo el 80). También podemos escanear nuestro PC con nmap localhost . Nmap nos sacará algo como esto por pantalla:

tazz@sys-209:~$ nmap 192.168.68.70

Starting Nmap 4.76 ( http://nmap.org ) at 2009-06-05 15:16 CEST
Interesting ports on 192.168.68.70:
Not shown: 991 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1077/tcp open unknown
1078/tcp open unknown
3389/tcp open ms-term-serv
8192/tcp open unknown
8193/tcp open unknown
8194/tcp open unknown

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


Tenemos los típicos puertos de máquinas Windows abiertos (netbios, SSID, etc). Y luego otros puertos "desconocidos". Si quisiéramos escanear todo el rango de IP's, pondríamos:


nmap 192.168.68.0/24

También deberíamos poder saber el Sistema Operativo de la máquina que estamos escaneando. Esto se hace con la opción -O, y con privilegios de sudo, y nos daría un resultado como éste:


tazz@sys-209:~$ sudo nmap -O 192.168.68.70
[sudo] password for tazz:

Starting Nmap 4.76 ( http://nmap.org ) at 2009-06-05 15:32 CEST
Interesting ports on 192.168.68.70:
Not shown: 991 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1077/tcp open unknown
1078/tcp open unknown
3389/tcp open ms-term-serv
8192/tcp open unknown
8193/tcp open unknown
8194/tcp open unknown
MAC Address: 00:13:F7:65:DE:38 (SMC Networks)
Device type: general purpose
Running: Microsoft Windows XP
OS details: Microsoft Windows 2000 SP4, Windows XP SP2 or SP3, or Windows Server 2003
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 2.77 seconds


Aquí, aparte de la información anterior, nos está diciendo la MAC (muy importante si eres el administrador del servidor DHCP) y el SO del equipo que estás escaneando (importante si te tienes que conectar remotamente a él).

También puede que nos interese, simplemente, el número de PC's conectados a nuestra reed, y sus IP's. Para eso está la opción -sP (scanning by Ping). Paso la salida:

tazz@sys-209:~$ nmap -sP 192.168.68.0/24

Starting Nmap 4.76 ( http://nmap.org ) at 2009-06-05 15:36 CEST
Host 192.168.68.1 appears to be up.
Host 192.168.68.3 appears to be up.
Host server-ad02.xxxxxxxx (192.168.68.5) appears to be up.
Host 192.168.68.10 appears to be up.
Host 192.168.68.70 appears to be up.
Host 192.168.68.74 appears to be up.
Host 192.168.68.75 appears to be up.
Host 192.168.68.83 appears to be up.
Host adp-161.xxxxxxxxx.es (192.168.68.200) appears to be up.
Host jaumejr.xxxxxxxxx.es (192.168.68.206) appears to be up.
Host 192.168.68.215 appears to be up.
Host 192.168.68.219 appears to be up.
Host 192.168.68.220 appears to be up.
Host 192.168.68.221 appears to be up.
Host rafa.xxxxxxxx (192.168.68.253) appears to be up.
Nmap done: 256 IP addresses (15 hosts up) scanned in 2.47 seconds


Éste es el resultado de las máquinas encendidas en mi red un viernes por la tarde (sin comentarios). Destacar que no necesitamos privilegios de sudo para este comando. También podríamos guardar en un documento el resultado del escaneo, con el comando -oN (output normalized). Con esto podemos enviar el resultado donde queramos. Por ejemplo, a un fichero:

nmap -sP 192.168.68.0/24 -oN escaneo.20090605.txt

Si quieres la información más detallada del escaneo de un host, lo haríamos con el comando -v :

nmap -v 192.168.68.70

Hay muuuuuuuuuchas opciones más, como por ejemplo, poder ver el software y la versión que hay detrás de cada puerto (muy interesante si quieres saber si te han puesto una mula), poder ocultar tu IP para que el host no sepa quién le solicita, incluso podemos hacer que crea que es otro ordenador de la red el que está haciendo el ping. Si os interesa este tema, tenéis un extenso manual aquí y el más extenso que podéis encontrar está aquí. espero que os guste.

Un saludo a tod@s, y recordad que no cuesta nada comentar los post ;-)