Aprendiendo a escanear puertos. ¿Quien esta conectado a tu wi-fi?

Bien. Esta es la tercera entrada del tutorial de Pen Testing Básico (Disclaimer: no se si me acaba de convencer el nombre). Por ahora hemos aprendido lo siguiente:

  • Hemos montado nuestro laboratorio de Ciberseguridad. Ya sabemos lo que es una máquina virtual, cómo funciona y hemos conocido al Linux preferido de todo Hacker Ético: Kali Linux!
  • Nos hemos dado una vueltecita por la Deep Weeb y de paso hemos comprendido lo importante que es el pasar desapercibido.

Ahora vamos a realizar un escaneo de puertos muy simple. Sabéis que siempre aparece el concepto “Escaneo” en todas las películas de Hackers. Bueno, pues mas o menos algo parecido.

Vamos a buscar los puertos abiertos en nuestra red, y de paso vamos a saber cuántos dispositivos tenemos conectados, a ver si nos llevamos una sorpresa y encontramos al vecino usando nuestro WiFi.

Todavía no vamos a usar ninguna de las herramientas que vienen con Kali, por ahora continuaremos con la línea de comandos. En este caso usaremos el comando nmap. Este comando es muy conocido y no pretenderemos hacer ningún ataque con el, pero para ir pillando el concepto es más que suficiente, y como mas soltura cojamos con la consola de linux, pues mejor que mejor.

Lo primero que vamos a hacer es ejecutar nmap sobre un dominio, una web de Internet. Para no meternos en problemas vamos a escanear una WEB que nos da permiso para ello: scanname.nmap.org

nmap scannames.nmap.org -vv 

el -vv le indica al comando que nos muestra por la consola todo lo que esté haciendo, si no lo ponemos no obtendremos ningún feedback hasta el final, y puede tardar un rato largo en realizarse.

resultado de escanear scannames.nmap.org
resultado de escanear scannames.nmap.org

Como podemos ver nos indica que puertos tiene abiertos y que servicio están usando. Ahora vamos a ver como podemos usar este comando para realizar un escaneo de nuestra red. Quien dice nuestra red puede decir cualquier red, pero aprendamos con la nuestra.

primero vamos a ver que rango tenemos que escanear, para ello usaremos el comando ifconfig:

ifconfig 

Resultado del ifconfig en mi maquina.

El resultado variara, pero nos mostrara cada uno de nuestros dispositivos de red, con la IP asignada y el rango disponible.

En mi caso nos fijamos en el dispositivo wlan0, que es el USB wifi que hemos comprado compatible con Kali Linux. En inet podemos ver la IP que está asignada, esta ip va cambiando, en broadcast podemos ver el rango máximo. Así que mi red va a lir de 192.168.1.0 hasta 192.168.1.255. En el momento de hacer esta prueba tengo la IP 192.168.1.105 asignada.

Si queremos escanear nuestra red tenemos que poner:

nmap -oG - 192.168.1.0-255 -vv

Pero esto realizara un escaneo de todos los puertos en todas las IP’s es decir unos 65535 puertos * 255 ip’s diferentes… seguramente va a tardar un rato largo, así que vamos a intentar hacer algo más inteligente usando la línea de comando de nuestro Kali.

Podríamos intentar lo siguiente:

nmap -oG - 192.168.1.0-255 -vv -p 22 > scan22.txt

Con esto solo escanearemos el puerto 22 y guardaremos el resultado en un fichero. No esta mal, lo hemos limitado mucho, pero quizás queremos escanear todos los puertos no solo el 22. Igualmente este paso nos es muy útil. Si miramos el resultado que se ha guardado en el fichero scan22.txt, veremos que nos da un listado de las IP’s detectadas. Es decir, nos muestra todas las IP’s que ha encontrado en nuestra red, tengan o no el puerto 22 abierto.

Podemos ver parte del listado de IP’s escaneadas con el comando nMap en mi red local.

Como se puede ver obtenemos un listado de todas las IP’s escaneadas, y nos diferencia las que están en uso de las que no, este dato nos va a ser muy útil. Lo que podemos hacer es obtener todas las IP’s que están en uso y realizar un escaneo completo de puertos solo a esas IP’s.

Nos ponemos a ello, usando, como no, unos comandos del terminal de nuestro querido Kali Linux. Ni se te ocurra cogerlas con copy paste, que eso es de cutres, y nosotros vamos para hackers.

Vamos a usar el pipeline ‘|'(o tubería), el comando grep (que busca caracteres) y el comando cat.

cat scan22.txt | grep Up > misips.txt

El comando cat lista el contenido, pero le aplicamos el pipeline con grep, que lo que hace es buscar el text Up en el contenido que le pasa cat. Con esto obtenemos todas las líneas que contienen ‘Up’ y las enviamos a un fichero que se llama misips.txt

¿Tengo cinco dispositivos conectados en mi red?

Bueno, aqui ya te puedes llevar, o no la primera sorpresa, la verdad es que para mi no lo es, si que puedo tener tranquilamente cinco dispositivos conectados a mi red, sin ningún problema. Pero este fichero aun tiene un problema, lo que realmente nos interesa son las IP’s, y nada más, tenemos que limpiarlo un poco, y para ello vamos a retocar el comando anterior, esta vez usando awp. No me seas cutre!!!! No Abras el fichero y lo borres a mano!! No!

cat scan22.txt | grep Up | awk -F “ “ ‘{print $2}’ > misips.txt

El comando awk es de lo mas potente que hay, sirve para tratar cadenas y tiene mil opciones. Aquí lo que le estamos diciendo es que el texto está limitado por espacios en blanco. Es decir, cada espacio en blanco indica que empieza un campo nuevo en la frase. En primera posición tendriamos el campo Host, después el campo Ip, después los paréntesis… a nosotros nos interesa la dirección Ip, pues le decimos que nos printe el campo número 2.

Por fin, un listado de todas las IP’s que hay en mi red.

Este Sí! Este fichero si que lo podemos usar como parametro de entrada del comando nmap que va a escanear todos los puertos de todos los dispositivos conectados a nuestra red. Ahora si que ya empezamos a ver un poco las posibilidades que se nos abren y a hacer cosas que salen en las películas.

nmap -p- -iL misips.txt -vv > resultados.txt

Este comando de nmap le indica a nuestro Kali que tiene que escanear todos los puertos (-p-) de las ip’s contenidas en el fichero misips.txt (-iL misips.txt) que trace el resultado de las operaciones (-vv) y lo deje en el fichero resultados.txt (> resultados.txt). En unos minutos, unos cuantos por que escanemaos muchos puertos, tendremos en ese fichero todos los puertos abiertos de nuestra red.

Escanear los 65000 puertos es muy lento, por esta razón nmap escanea por defecto solo 1000 puertos. Otra buena opción es usar el parámetro -F en lugar de -p- y escaneara tan solo los 100 puertos de uso más común.

...
Scanning 2 hosts [65535 ports/host]
Discovered open port 22/tcp on 192.168.1.1
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 7547/tcp on 192.168.1.1
Increasing send delay for 192.168.1.101 from 0 to 5 due to max_successful_tryno increase
Discovered open port 44401/tcp on 192.168.1.1
SYN Stealth Scan Timing: About 42.95% done; ETC: 10:10 (0:00:41 remaining)
Discovered open port 5431/tcp on 192.168.1.1
Completed SYN Stealth Scan against 192.168.1.1 in 37.38s (1 host left)
Increasing send delay for 192.168.1.101 from 5 to 10 due to max_successful_tryno increase 
...

Esta es una pequeña porción del fichero resultado de correr nmap en mi sistema. Nmap es una herramienta muy útil y tiene muchas opciones, muchas más de las que ahora se nos pueden ocurrir.

Resumiendo:

Vamos a poner aquí resumidos los comandos que necesitamos para escanear nuestra red:
Primero obtenemos el rango de nuestra red:

ifconfig 

Ahora que ya hemos identificado nuestra red, vamos a ver que direcciones están levantadas:

nmap -oG - 192.168.1.0-255 -vv -p 22 > scan22.txt

Estas direcciones tendremos que dejarlas en un fichero que pueda usarse como parámetro para nmap (Atentos a U de Up que es mayúscula):

cat scan22.txt | grep Up | awk -F “ “ ‘{print $2}’ > misips.txt

Ahora que ya tenemos las direcciones lanzamos el megaescaneo:

nmap -iL misips.txt

¿y qué pasa? ¿que obtenemos? Pues pruebalo, vas a tener una lista de todos los puertos abiertos de tu red.
nmap tiene diversas opciones, entre ellas una que te indica que sistema operativo puede ser el que está usando la máquina escaneada. La mejor hoja que he econtrado con las opciones de nmap es: nmap cheatset. Jugad con las opciones, estudiad vuestra red y ya veréis que vais a encontrar agujeros que ya aprovecharemos a medida que avancemos en el tutorial.

Por si os da pereza ejecutarlo en vuestra red, os dejo aquí una porción de lo que he obtenido al ajecutarlo en la mía:

Nmap scan report for 192.168.1.100
Host is up (0.0077s latency).
Not shown: 994 closed ports
PORT 	STATE SERVICE
7676/tcp open  imqbrokerd
8000/tcp open  http-alt
8001/tcp open  vcom-tunnel
8002/tcp open  teradataordbms
8080/tcp open  http-proxy
9999/tcp open  abyss

Vídeo del escaneo de puertos

Recordad que este post forma parte del tutorial de Hacking / Pen Testing Básico

Comentarios.