Detectar sistema operativo utilizado por equipo remoto

nullLejos de buscar explotar vulnerabilidades asociadas a determinado sistema operativo para conseguir acceso a un equipo conectado a la red me gustaría dejar constancia de cómo conseguir dicha información.

El motivo es que esta mañana hemos perdido una hora a la caza y captura de un “ventanuco” díscolo en el instituto que tenía activado el servicio DHCP y que cada vez que se conecta provoca fallos espúreos en la subred de profesores.

Procedimiento a seguir

Una vez que contamos con la dirección IP del equipo cuyo sistema operativo queremos conocer bastará hacer uso de nuestro querido nmap ejecutando desde la terminal un

sudo nmap -O NN.NN.NN.NN

donde

  • NN.NN.NN.NN es la dirección IP del equipo cuyo sistema operativo deseamos conocer.

Así de sencillo y así de fácil pero la verdad es que resulta de utilidad a la hora de discernir el sistema operativo que se encuentra ejecutándose en cada máquina evitando paseos innecesarios por los pasillos ni molestar a los compañeros mientras trabajan.

Pregunta de trivial

Lo mismo cuando termine de escribir este artículo me ponga a buscar la solución y, con un poco de suerte, puede que la encuentre y todo pero, no me resisto a pediros ayuda.

¿Alguien sabe cómo detectar los servicios que ofrece determinada máquina a partir de la IP de la misma?

La idea es no tener que visitar los distintos equipos “sospechosos” de estar ofreciendo el servicio DHCP (que entra en conflicto con el servidor “oficial”) y poder descartarlos cómodamente desde el sillón del departamento.

Imagino que la respuesta podría ir en base al puerto utilizado por DHCP y la comprobación de puertos abiertos en las máquinas remotas pero si alguien puede confirmarlo y/o desmentirlo se lo agradecería enormemente.

Voy a investigar un rato, si encuentro la respuesta (y os interesa) prometo publicar un post sobre el tema.

17 comentarios en “Detectar sistema operativo utilizado por equipo remoto

  1. Hola,

    Lo que describes se puede hacer con nmap, de hecho, esa es su función.

    – Identifica puertos abiertos en una computadora objetivo.
    – Determina qué servicios está ejecutando la misma.

    Si has de hacerlo en Windows, puedes usar la herramienta gratuita de Radmin, Advanced Port Scanner v1.3.

    http://www.radmin.es/download/utilities.php

    Recuerda que por que un servidor tenga el puerto 22 abierto, no quiere decir que tenga un servidor de ssh, por ahí puede tener un servidor de correo, http o voz.

    Es una mala práctica asociar números de puerto a servicios, lo mejor es asegurarse por si la máquina que estás “espiando” no es “standard”.

    Saludos

  2. Hola,

    Lo que describes se puede hacer con nmap, de hecho, esa es su función.

    – Identifica puertos abiertos en una computadora objetivo.
    – Determina qué servicios está ejecutando la misma.

    Si has de hacerlo en Windows, puedes usar la herramienta gratuita de Radmin, Advanced Port Scanner v1.3.

    http://www.radmin.es/download/utilities.php

    Recuerda que por que un servidor tenga el puerto 22 abierto, no quiere decir que tenga un servidor de ssh, por ahí puede tener un servidor de correo, http o voz.

    Es una mala práctica asociar números de puerto a servicios, lo mejor es asegurarse por si la máquina que estás “espiando” no es “standard”.

    • Toda la razón del mundo compañero (tanto por la sugerencia en el uso de nmap como por la afirmación de que determinado servicio no tiene por que estar ligado a un puerto fijo)

      No obstante, y más en “mundo ventanuco” (por la tendencia de los “administradores” de estas máquinas a usar el siguiente, siguiente en las instalaciones) suele ser práctica habitual encontrar una correspondencia directa entre servicio y puerto.

      Tendré en cuenta que es una “condición necesaria pero no suficiente” y me aseguraré convenientemente del tema.

      ¿Conocemos alguna herramienta que automáticamente te diga el servicio que “escucha” en cada puerto? (preferiblemente para Linux que ya no tengo, ni quiero, “ventanuco”)

  3. No se si no nos entendemos…

    Si lo que quieres es una lista de puertos abiertos de una máquina, junto con los servicios que está usando en cada puerto, la herramienta es nmap.

    El funcionamiento supongo que será como el de la mayoría:

    nmap -options ip_remota

    Con esto obtendrás algo parecido a esto:

    Bash$ nmap 192.168.0.2

    Starting nmap 3.70 ( http://www.insecure.org/nmap/ ) at 2004-10-20 02:13 CEST
    Interesting ports on 192.168.0.2:
    (The 1654 ports scanned but not shown below are in state: closed)
    PORT STATE SERVICE
    9/tcp open discard
    13/tcp open daytime
    22/tcp open ssh
    37/tcp open time
    80/tcp open http
    349/tcp filtered mftp
    6000/tcp open X11

    Nmap run completed — 1 IP address (1 host up) scanned in 2.529 seconds

    creo que queda bastante claro)

    Si eres más de los de entorno gráfico(no lo probé, pero parece bueno):

    apt-get install nmapfe

    Y si así no te convence, siempre puedes(en este caso) espiar la red con Wireshark mientras haces una petición dhcp en la red(si te llega un dhcpoffer con una ip que no corresponde al servidor, ya tienes el “topo”).

    Pd: Vigila con las máquinas virtuales que hay mucho listo que hace pruebas 😉

    Saludos

    • Perfectamente compañero.

      Simplemente se me fué la pinza pues no recordaba la salida de nMap (no se encuentra entre las herramientas del día a día y mi cabeza no anda fina últimamente 😦 )

      Muchas gracias por las molestias que te has tomado y disculpa el “despistazo”

  4. Pues si el nivel de la “audiencia” es como el tuyo me van a empezar a temblar las piernas 😉

    Visto el control que tienes sobre redes te “fichaba” ahora mismo para publicar artículos sobre el tema en el blog jejejeje

  5. Si a eso unimos que admite indicar el puerto que me interesa escanear ( para agilizar el proceso y a riesto de que @Surrealist se nos pueda enfadar por asumir puerto UDP 67=DHCP 😉 ) sería una buena forma de tratar de localizar la dichosa máquina.

    Gracias @lorquiana

  6. Según Moco$oft (no digo que sean ellos los que han establecido ESTE estándar) así debería ser. Por si te hace ilusión la solicitud de los clientes es a través del UDP 68 😛

    Por cierto… gracias por el ofrecimiento sobre todo teniendo en cuenta tu adversión a la publicación (una pena teniendo en cuenta tu valía 😉 )

  7. Yo para evitarme problemas, si tengo dudas sobre un protocolo intento buscar el RFC(Request For Comments).

    En este caso, nos interesa el RFC2131(Dynamic Host Configuration Protocol), del que extraigo:

    “DHCP messages from a client to a server are sent to the ‘DHCP server’ port (67), and DHCP messages from a server to a client are sent to the ‘DHCP client’ port(68).”

    Y ya de paso que lo he mirado….

    – Web oficial RFC: http://www.rfc-editor.org/
    – Web RFC español: http://www.rfc-es.org/index.php

    Saludos

    • Lo dicho, eres un “crack” (y, aunque no te lo creas, es complicado que yo diga esas cosas).

      Gracias por la bibliografía detallada de DHCP y el consejo sobre el uso de RFC para futuras investigaciones.

  8. lorquiana dijo:

    En mi instituto pasa exactamente igual, debe de haber por ahí alguna máquina corriendo un servidor dhcp que sirve ip’s y máscaras erróneas por dhcp que no tienen salida a internet. Y es más evidente cuando a veces sirve el dhcp bueno y coges red y otras veces el dhcp malo y no coges red. Debe tener en cuenta que quizás no sea una máquina en particular sino alguno de los switchs o de los routers de las aulas. No se, no conozco muy bien la topología de los instituos andaluces, como alumno no me han dejado cotillear demasiado.

  9. esta entrada ya es algo antigüa pero aún así me anímo a comentar:

    la opción del nMap que buscas es -sV para saber los servicios que corren en una ip determinada….

    #nmap -sV -PO -p xxx nnn.nnn.nnn.nnn

    donde:
    nnn.nnn.nnn.nnn es la ip
    xxx el puerto deseado

    ejemplo… tomaré la web miarroba.com:

    #nmap -sV -PO -p 80 miarroba.com
    PORT STATE SERVICE VERSION
    80/tcp open http Apache httpd

    como podemos ver tiene un servidor Apache corriendo en el puerto 80

    más información: $nmap –help

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s