systemadmin.es > Seguridad > nmap y firewalls… fight!

nmap y firewalls… fight!

A raíz de un comentario en twitter de AlbertoTICote sobre los puertos abiertos de un site respondí que el nmap reportaba datos falsos. Como que con 140 caracteres es difícil de explicar, mejor una entrada en el blog.

Partiendo de un TCP SYN scan sin ninguna opción veremos que tenemos muchos puertos abiertos:

# nmap -sS www.doña-evil.es 

Si repetimos los escaneos:

# nmap -sS www.doña-evil.es  > nmap.1
# nmap -sS www.doña-evil.es  > nmap.2

Y los comparamos, veremos que no son iguales:

# head nmap.1 

Starting Nmap 5.00 ( http://nmap.org ) at 2013-04-25 05:04 CEST
Interesting ports on 1.2.3-21.customers.failalia.com (1.2.3.4):
Not shown: 189 closed ports
PORT      STATE SERVICE
1/tcp     open  tcpmux
4/tcp     open  unknown
9/tcp     open  discard
13/tcp    open  daytime
17/tcp    open  qotd
# head nmap.2

Starting Nmap 5.00 ( http://nmap.org ) at 2013-04-25 05:04 CEST
Interesting ports on 1.2.3-21.customers.failalia.com (1.2.3.4):
Not shown: 189 closed ports
PORT      STATE SERVICE
3/tcp     open  compressnet
4/tcp     open  unknown
6/tcp     open  unknown
7/tcp     open  echo
13/tcp    open  daytime

Esto se debe que nmap, por defecto, escanea los puertos con un orden aleatorio, no secuencial. Si añadimos la opción -r, lo hará secuencialmente:

# nmap -sS -r www.doña-evil.es 

Comparando de nuevo los scaneos veremos que ahora sí son iguales:

# head nmap.3 

Starting Nmap 5.00 ( http://nmap.org ) at 2013-04-25 05:06 CEST
Interesting ports on 1.2.3-21.customers.failalia.com (1.2.3.4):
Not shown: 386 closed ports
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
25/tcp    open  smtp
53/tcp    open  domain
80/tcp    open  http
# head nmap.4

Starting Nmap 5.00 ( http://nmap.org ) at 2013-04-25 05:06 CEST
Interesting ports on 1.2.3-21.customers.failalia.com (1.2.3.4):
Not shown: 519 closed ports
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
25/tcp    open  smtp
53/tcp    open  domain
80/tcp    open  http

Aún así, nos esta reportando muchos puertos como abiertos que no es cierto, para poder evitar que el firewall o el IDS/IDP de turno detecte el scaneo y nos mande SYN-ACK falsos deberemos reducir la velocidad de escaneo. Esto lo podemos hacer mediante las opciones -T:

-T<0-5>: Set timing template (higher is faster)

El valor por defecto es el 3, por lo que podemos probar con la opción -T2 para ver si es suficiente para evadir-lo:

# nmap -sS -T2 www.doña-evil.es  > nmap.5
# cat nmap.5 

Starting Nmap 5.00 ( http://nmap.org ) at 2013-04-25 05:10 CEST
Interesting ports on 1.2.3-21.customers.failalia.com (1.2.3.4):
Not shown: 983 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
106/tcp  open  pop3pw
110/tcp  open  pop3
143/tcp  open  imap
406/tcp  open  imsp
443/tcp  open  https
465/tcp  open  smtps
993/tcp  open  imaps
995/tcp  open  pop3s
2005/tcp open  deslogin
3306/tcp open  mysql
6646/tcp open  unknown
8443/tcp open  https-alt

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

Podemos ver que el nmap tarda mucho más, en este caso han sido casi 7 minutos. Una vez vistos los resultados, podemos ver que aun que no todos los puertos estaban abiertos a internet, AlbertoTICote sí tenía razón que hay cosas feas. Podemos ver que tienen el puerto de MySQL abierto:

# telnet www.doña-evil.es  3306
Trying 1.2.3.4...
Connected to www.doña-evil.es  (1.2.3.4).
Escape character is '^]'.
4
5.0.95?q|'Gq%_1s,rcyV$K/H]zm7

Bad handshakeConnection closed by foreign host.

4 comments to “nmap y firewalls… fight!”

  1. Entonces no es confiable nmap o hay que saber como usarlo????

  2. Se debe saber como funciona para analizar los resultados y sacar las conclusiones adecuadas. No es un problema de nmap, se debe entender que se esta haciendo con él

  3. Hola!

    pero en muchos casos, los desarrolladores o jefes de proyecto necesitan o piden conectarse al MySQL de turno por el puerto 3306 (sea produccion o pre).

    ¿Qué hacemos? ¿Limitar el acceso 3306 según alguna IP estática?

    Saludos

  4. Rubén :

    Eso es según como establezcas la seguridad.
    Podés publicarlo, poniendo un IDS tipo fail2ban monitoreando el log.
    Podés publicarlo, para una ip específica.
    Podés publicarlo, a través de una VPN.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>