Basta solo con dejar un RDP (Escritorio remoto) publicado en internet para que a los minutos recibamos miles de ataques automatizados. Hoy en día los escaners automáticos están a la orden del día. Un puerto abierto es una posibilidad de ser vulnerado y un riesgo alto para la integridad y confidencialidad de la información de tu empresa y, porqué no, personal.
Un tema que toqué hace poco cursando la certificación MTCTCE es la detección de escaneo de puertos, un feature que trae RouterOS. Como en la oficina tengo un Cisco ASA y un Cisco FTD también probé estas capacidades en estos dispositivos(por ahora solo en un laboratorio).
Cómo funcionan los escaneos de puertos?
Los escaners de puertos son programas que «revisan» secuencialmente los diferentes puertos del protocolo IP hasta encontrar servicios escuchando en estos. Una vez localizados se listan y se muestran al usuario.
Muchos de estos escaneres de puertos también muestran los servicios corriendo, versiones de estos, sistemas operativos funcionando y hasta vulnerabilidades publicadas para los mismos.
Las aplicaciones que escanean puertos actualmente son mucho más completas que solo toc toc, quién es?. Hoy es posible analizar puertos abierto con técnicas más avanzadas, sin embargo la forma más comun siguiendo siendo el «port scanning».
Empezamos el laboratorio?
Este será nuestro LAB. Si ya leiste https://www.nerdadas.com/blog/conexion-basica-de-un-router-mikrotik-a-internetnatpatdhcpdmz/ me voy a ahorrar explicarte generalidades de los comandos de Mikrotik. Igualmente, cada comando tiene su menú con el mismo nombre y mismas opciones. Pasamos a las configuraciones del router R1.
#R1
#Configuro Nombre
system identity set name=R1
#Interfaz de administración
ip dhcp-client/add interface=ether1 comment="Interfaz de Administración"
#WAN
ip address add interface=ether2 address=200.200.200.201/24 comment="WAN"
#Default Route
ip route add dst-address=0.0.0.0/0 gateway=200.200.200.202
#LAN
ip address add interface=ether3 address=192.168.10.1/24 comment="LAN"
#Configuramos DHCP
ip dhcp-server/setup
Select interface to run DHCP server on
dhcp server interface: ether3
Select network for DHCP addresses
dhcp address space: 192.168.10.0/24
Select gateway for given network
gateway for dhcp network: 192.168.10.1
Select pool of ip addresses given out by DHCP server
addresses to give out: 192.168.10.2-192.168.10.254
Select DNS servers
dns servers: 192.168.10.1
Select lease time
lease time: 1800
#Configuro el DNS
ip dns/set servers=8.8.8.8,8.8.4.4 allow-remote-requests=yes
#Nat para internet
ip firewall/nat/add chain=srcnat out-interface=ether2 action=masquerade
Con esta configuración ya lo sacamos andando. Le pusimos nombre, configuramos las interfaces y dejé un acceso NAT para poder acceder al winbox en gns3.
La WAN es la interfaz ether2 y la LAN ether3. Ahí correré un DHCP (192.168.10.0/24) donde daré ip a los equipos de la red. La WAN tendrá una ip dentro del mismo rango del Hacker! para hacerle las cosas más fáciles y que nuestro lab sea productivo y rápido.
Como estamos preparando un firewall vamos a configurarlo como tal y también vamos a dejar unos puertos abiertos para darle comida a nuestro Hacker.
#Segurizamos deshabilitando servicios innecesarios
ip service/disable telnet
ip service/disable api
ip service/disable www
ip service/disable api-ssl
ip service/disable ssh
ip service/disable ftp
#Redirecciono puertos a un equipo de nuestra lan(192.168.10.254)
ip firewall/nat/add chain=dstnat in-interface=ether2 protocol=tcp port=80 action=dst-nat to-addresses=192.168.10.254 to-ports=80
ip firewall/nat/add chain=dstnat in-interface=ether2 protocol=tcp port=23 action=dst-nat to-addresses=192.168.10.254 to-ports=23
ip firewall/nat/add chain=dstnat in-interface=ether2 protocol=tcp port=22 action=dst-nat to-addresses=192.168.10.254 to-ports=22
#Metemos reglas de Firewall para el exterior
#Descarto paquetes inválidos
ip firewall/filter/add chain=input connection-state=invalid protocol=tcp action=drop
#Reglas para los puertos con PAT
ip firewall/filter/add in-interface=ether2 protocol=tcp chain=input port=22 action=accept
ip firewall/filter/add in-interface=ether2 protocol=tcp chain=input port=23 action=accept
ip firewall/filter/add in-interface=ether2 protocol=tcp chain=input port=80 action=accept
#Dejamos que nos hagan ping
ip firewall/filter/add in-interface=ether2 protocol=icmp chain=input action=accept
#DNS
ip firewall/filter/add chain=input in-interface=ether2 protocol=udp port=53 action=accept
#Al final de todo bloqueamos lo que no nos interesa
ip firewall/filter/add chain=input in-interface=ether2 action=drop
Listo, ahora configuramos la PC de nuestro Hacker. Él usará un debian 12 con tan solo NMAP instalado(Este Hacker es peligroso con poco).
Para los que no conocen Nmap es un escaner de puertos muy poderoso.
#Contenido del archivo con la config de redes. Nuestro adaptador es el ens4
~$ cat /etc/network/interfaces
auto ens4
iface ens4 inet static
address 200.200.200.202
netmask 255.255.255.0
gateway 200.200.200.201
Vamos a verificar conectividad
Listo, ahora tenemos que escanear los puertos de nuestro equipo antes de defenderlo para ver como funciona de esa manera. El comando para un escaneo rápido de puertos es:
~$ nmap -sF <IP>
No se olviden de ejecutarlo como root o Administrador local.
Perfecto. Podemos ve clarament que nuestro router/firewall tiene los puertos 22, 23 y 80 abiertos. Cerrados en realidad!. O sea.. están abiertos pero del otro lado no hay servicios escuchando ya que no configuré un servidor detrás. A nuestro propósito el escaner funcionó, nos muestra que esos puertos están esperando que alguien les hablé.
Y ahora qué?
Acabamos de comprobar que están abiertos y el escaner los detectó. Ahora, vamos a defendernos de este hacker. Vamos a detectar quién escanea nuestros puertos y agregarlo a una lista.
Luego, vamos a bloquear(DROP) todo lo que tenemos en esa lista de Hackers y escaneadores de puertos compulsivos.
La regla de detección se ve algo así… (Y luego explicamos)
En una nueva regla de firewall(Que moveremos al principio de nuestro Firewall) configuramos que todo lo que sea «INPUT» (Si tenés dudas podés ir a: https://www.nerdadas.com/blog/firewall-basico-mikrotik/) y cumpla con el apartado PSD (Port Scanner Detection) se agregue a la Address List Hacker!
Que nos dice el apartado PSD?.
El PSD de Mikrotik funciona de la siguiente manera:
- Primero asigna valores a los puertos del router ( del 0 al 1024 pesan en este caso 3... 3 algo[kilos, puntos, lo que quieras]). Mayores del 1024 al 65535 = 1.
- Luego revisa los «hits» de cada puerto. O sea… si alguien «revisó» ese puerto hizo un «hit». Si hizo más de un hit en menos de 3 segundos(Delay Threshold) ya puedo sospechar que alguien está escanendo puertos.
- Si la suma de los valores de esos puertos(que ya catalogamos con puntaje), escaneados en menos de 3 segundos uno del otro, llega al valor de 21(Weight Threshold) ya lo catalogo como «Amenaza». Así que… en este caso particular, lo pongo en una lista.
Luego voy a tratar esa lista, en este caso, voy a descartar cada paquete que venga de esa ip.
El firewall nos quedaría algo así.
Ahora vamos a escanear de nuevo desde el equipo de nuestro Hacker y veamos que sucede.
En este momento el escaner no detectó nada abierto y no solo bloqueamos al atacante sino que ya sabemos quién es. Lo tenemos agendado.
Solucionado, pudimos frenarlo correctamente, ahora con la ip podemos iniciar un reporte de incidente de ciberseguridad y aplicar un tratamiento un poco más extenso.
Conclusiones
Los escaneos de puertos son el punto de partida de numeros ataques contra la infraestructura. Si bien muchas veces no es necesario hacerlo la mayoría de las veces y scripts automatizados inician de esta manera.
Hice los laboratorios para Cisco ASA pero este documento se volvió extenso. Se los debo… y también probarlo un poco más.
La idea de este documento es solo se un puntapie para la investigación. Les dejo la wiki de Firewalls de Mikrotik y espero sus comentarios o conclusiones. https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filter
Y ya sabés, si tenés dudas de como implementarlo o si necesitas ayuda, acá estoy para darte una mano.
[…] Hace un tiempo hicimos un laboratorio de como detectar y bloquear escaneos de puertos (https://www.nerdadas.com/blog/bloquear-un-escaneo-de-puertos/) […]