martes, 22 de febrero de 2011

Detección de vulnerabilidades y ataques a una red 3: Detección del sistema operativo

En este caso hay que diferenciar entre sistemas activos y pasivos, los primeros generan tráfico dirigido hacia el sistema a atacar y tratan de emplear sus respuestas para determinar el sistema operativo del mismo; los sistemas pasivos simplemente escuchan los paquetes que llegan a nuestro equipo debidos a un tráfico “normal” y en función del mismo tratan de compararlo con las firmas que tienen para determinar sistema operativo y versión.

3.1 – Detección activa del sistema operativo.

a.- nmap

Nuevamente podemos emplear nmap para ver la versión del sistema operativo empleado en el sistema probado, se puede emplear conjuntamente con las opciones vistas anteriormente, para detectar el sistema
operativo podemos emplear la opción “-O”:
nmap -O 80.103.112.96
image

como vemos le resulta difícil determinar el sistema operativo que está detrás del sistema, posiblemente porque haya puertos cerrados en el equipo y otros redirigidos a múltiples equipos. Para “facilitarlo” podemos emplear algún puerto que deje pasar tráfico, por ejemplo especificando el puerto 80 podemos encontrar el tipo de router de entre todos los posibles iniciales:
nmap -p 80 -O 80.103.112.96
image
vemos que finalmente nos dice que el sistema es un comtrend 5361 ADSL router

b.- xprobe2

Podemos emplear xprobe2 para determinar el sistema:
xprobe2 -v 80.103.112.96
[+] Host: 80.103.112.96 is up (Guess probability: 50%)
[+] Target: 80.103.112.96 is alive. Round-Trip Time: 0.07328 sec
[+] Selected safe Round-Trip Time value is: 0.14655 sec
[-] fingerprint:tcp_hshake Module execution aborted (no open TCP ports known)
[-] fingerprint:smb need either TCP port 139 or 445 to run
[-] fingerprint:snmp: need UDP port 161 open
[+] Primary guess:
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.15" (Guess probability: 83%)
[+] Other guesses:
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.11" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.7" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.3" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.18" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.16" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.12" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.8" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.16" (Guess probability: 83%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.2.12" (Guess probability: 83%)

También podemos determinar el puerto que deseamos probar:
xprobe2 -v -T 80 80.103.112.96
[+] Portscan results for 80.103.112.96:
[+] Stats:
[+] TCP: 1 - open, 0 - closed, 0 - filtered
[+] UDP: 0 - open, 0 - closed, 0 - filtered
[+] Portscan took 0.12 seconds.
[+] Details:
[+] Proto Port Num. State Serv. Name
[+] TCP 80 open www
[-] fingerprint:smb need either TCP port 139 or 445 to run
[-] fingerprint:snmp: need UDP port 161 open
[+] Primary guess:
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.5" (Guess probability: 86%)
[+] Other guesses:
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.6" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.7" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.8" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.9" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.10" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.11" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.12" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.13" (Guess probability: 86%)
[+] Host 80.103.112.96 Running OS: "Linux Kernel 2.4.14" (Guess probability: 86%)
También podríamos especificar el protocolo, el puerto y si está abierto o cerrado:
xprobe2 -p tcp:1863:open 80.103.112.96

3.2- Detección pasiva del sistema

Podemos realizar simplemente conexiones “normales” a un sistema mientras capturamos el tráfico y comprobamos después con un sniffer información como el TTL de salida, el tamaño de la ventana (windows size del sistema operativo), o preguntas cómo tiene el sistema operativo el bit no fragmentar activo.
Hay programas como p0f que nos permiten automatizar estas operaciones.

a.- p0f

Es un programa que está a la escucha de las conversaciones que mantengamos desde nuestro equipo e intenta determinar en base a las marcas de cada paquete que sale y llega a nuestro ordenador el sistema operativo de los equipos que intervienen en la conversación.
image
Podemos ver cómo ha detectado el sistema operativo de los equipos 192.168.0.16 (máquina virtual en la que he instalado honeyd) y 192.168.0.192 un sistema que en realidad tiene windows vista instalado.

Siguiente: enumeración

Para ver el resto de manuales puede acudir al índice de temas de seguridad en el enlace