Amenazas en Linea: "Hackers" de Sombrero Negro

Body

Los “Hackers de sombrero negro” (Black Hat), son generalmente personas con habilidades muy sofisticadas en tecnologías. Su principal propósito es invadir las redes privadas e irrumpir en los dispositivos de cómputo de otras personas o empresas, para robar información personal, o para realizar otros actos maliciosos. Muy diferente de los “Hackers de sombrero blanco”, quienes realizan acciones proactivamente para llamar la atención sobre las vulnerabilidades en los sistemas, y consecuentemente estas puedan ser arregladas.

Generalmente explotan vulnerabilidades a nivel del sistema operativo, programas instalados en el sistema, o diversos tipos dispositivos de red, con el objetivo de ganar acceso no autorizado. Pudiendo instalar un programa para capurar de las pulsaciones hechas en un teclado (keylogger), o instalar un caballo de troya para mantener el acceso, robar información, o espiar las actividades del usuario.

Otro propósito de los “Hackers de sombrero negro” es obtener ganancias a nivel personal o económico. El esparcir malware es una buena manera para robar datos, especialmente información financiera o personal, como también credenciales. Pero no únicamente pueden buscar esto, sino también modificar o destruir lo datos.

Fuentes:

https://en.wikipedia.org/wiki/Black_hat_(computer_security)

Amenazas en Linea: Malware

Body

Malware es un acrónimo para “malicious software o por su traducción al idioma español;” “software malicioso”. Este es el termino utilizado para cualquier software o código el cual puede dañar el dispositivo de cómputo o robar información confidencial, sin su consentimiento. Existen diferentes tipos de malware; como virus, spyware, rootkits, gusanos, ransomware, scareware, caballos de troya, puertas traseras y adware.

Los programas también son considerados malware, si secretamente actúan en contra de los intereses del usuario del computador. Como instalar un rootkit en las computadoras con la intención de evitar copias ilegales, pero el cual también reporta los hábitos de los usuario, y no intencionalmente crean vulnerabilidades adicionales de seguridad.

Existen diferentes sitios webs los cuales ofrecen muestras libres de código malicioso (malware), para cualquier persona o profesional interesado. En la parte final de la presente publicación se detalla un sitio web en el cual se puede encontrar un extenso listado de sitios web sugeridos a visitar.

A continuación; a modo de ejemplificar su propósito; se mencionan únicamente a dos de los diversos sitios web existentes de este tipo.

VirusShare es un repositorio con muestras de malware, el cual proporciona a los investigadores de seguridad, profesionales en respuesta de incidentes, análisis forense y cualquier persona curiosa, con acceso hacia muestras de código malicioso vivo.

VirusTotal inspecciona elementos con más de 70 escáneres antivirus, y servicios de listas negras para dominios y URLs, además de una diversidad de herramientas para extraer señales desde el contenido estudiado.

Existen diversas estrategias para tratar de defenderse del malware, como software antivirus, firewalls, y otros. Siendo en primera instancia su propósito detectar la presencia del malware, y de ser posible, recuperarse de la actividad maliciosa y ataque del malware.

Fuentes:

https://en.wikipedia.org/wiki/Malware
https://virusshare.com/
https://www.virustotal.com/gui/home
https://virusscan.jotti.org/en-US/scan-file
https://zeltser.com/malware-sample-sources/

Sintaxis de iptables e ip6tables

Body

Los comandos “iptables” e “ip6tables”, son utilizando para manipular tablas, cadenas y reglas. Su opción “-t tabl” indica sobre cual tabla operar (por defecto “filter”).

Comandos

Las principales opciones para interactuar con las cadenas son las siguientes:

    -L cadena: Lista las reglas en la cadena Esto es comúnmente utilizado con la opción “-n” para deshabilitar la resolución de nombres (por ejemplo, iptable -N -L INPUT mostrará las reglas relacionadas con los paquetes entrantes).

    -N cadena: Crea una nueva cadena. Se pueden crear nuevas cadenas para diversos propósitos, incluyendo probar un nuevo servicio de red, o defenderse de un ataque de red.

    -X cadena: Borra una cadena vacía o no utilizada (por ejemplo, iptables -X ddos-attack).

    -A cadena regla: Añade una regla al final de la cadena definida. Recordar las reglas son procesadas desde la parte superior hacia la inferior, por lo tanto tener esto en consideración cuando se añadan reglas.

    -l cadena rule_num regla: Inserta un regla antes del número de regla rule_num. Como con la opción -A, tener en consideración el orden de procesamiento cuando se inserten nuevas reglas en la cadena.

    -D cadena rule_num (o -D cadena regla): Borra una regla en una cadena; la primera sintaxis identifica la regla a ser borrada por su número (iptables -L --line-numbers mostrará estos números), mientras lo posterior lo identifica por su contenido.

    -F cadena: Drena una cadena (borra todas sus reglas). Por ejemplo, para borrar todas las reglas relacionadas con paquetes salientes, se ejecuta iptables -F OUTPUT. Si no se define la cadena, todas las reglas en la tabla serán borradas.

    -P cadena acción: Define la acción por defecto o “política” para una cadena definida; notar únicamente cadenas estándar pueden tener una política de este tipo. Para descartar todo el tráfico entrante por defecto, se debe ejecutar iptables -P INPUT DROP.

Reglas

Cada regla es expresada como “condiciones -j acción opciones_accion”. Si muchas condiciones son descritas en la misma regla, entonces el criterio es la conjunción ((AND) Y lógico ) de las condiciones, lo cual es al menos tan restrictivo como cada condición individual.

La condición “-p protocolo” coincide el campo del protocolo del paquete IP. Los valores más comunes son tcp, udp, icmp, e icmp6. Esta condición puede ser complementada con condiciones sobre los puertos TCP, con clausulas como “--source-port puerto” y “--destination-port puerto”.

Las condiciones “-s dirección” o “-s red/mascara” coinciden con la dirección fuente de paquete. Correspondientemente “-d dirección” o “-d red/mascara” coincide con la dirección destino.

La condición “-i interfaz” selecciona paquetes viniendo desde una interfaz de red definida, “-o interfaz” selecciona paquetes saliendo sobre una interfaz específica.

La condición “--state estado” coincide el estado de un paquete en un conexión (esto requiere el módulo del kernel “ipt_conntrack”, para rastreo de conexiones). El estado NEW describe un paquete iniciando una nueva conexión, ESTABLISHED coincide paquetes correspondientes hacia una conexión ya existente, y RELATED coincide paquetes iniciando una nueva conexión relacionada hacia una existente (lo cual es útil para la conexión ftp-data en el modo “activo” del protocolo FTP).

Existen muchas opciones disponibles para iptables e ip6tables, dominarlos todos requiere una gran cantidad de estudio y experiencia. Sin embargo, una de las opciones a utilizar más frecuentemente es una para bloquear tráfico malicioso de red desde un host o rango de hosts. Por ejemplo tráfico entrando desde la dirección IP10.10.1.5 y el la subred de clase C 31.13.74.0/24.

# iptables -A INPUT -s 10.0.1.5 -j DROP
# iptables -A INPUT -s 31.13.74.0/24 -j DROP
# iptables -n -L INPUT

Otro comando iptables comúnmente utilizado es para permitir tráfico de red para un servicio específico o puerto. Para permitir los usuarios conectarse hacia SSH, HTTP , e IMAP, se debe ejecutar los siguientes comandos:

# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
# iptables -n -L INPUT

Se considera una buena higiene de computadora limpiar todas las reglas antiguas e innecesarias. La manera más fácil de borrar reglas iptables es referenciar las reglas es por el número de línea lo cual puede ser obtenido con la opción “--line-numbers”. Sin embargo tener cuidado, descartar una regla enumerará nuevamente toda las reglas en la parte inferior de la cadena.

# iptables -n -L INPUT –line-numbers
# iptables -D INPUT 2
# iptables -D INPUT 1
# iptables -n -L INPUT --line-numbers

Existen condiciones más específicas, dependientes de las condiciones genéricas descritas anteriormente. Para mayor información consultar iptables(8) e ip6tables(8).

Fuentes:

https://kali.training/downloads/Kali-Linux-Revealed-1st-edition.pdf
https://linux.die.net/man/8/iptables
https://linux.die.net/man/8/ip6tables

Comportamiento de Netfilter

Body

Netfilter utiliza cuatro diferentes tabas, las cuales almacenan reglas regulando tres tipos de operaciones sobre los paquetes:

  • filter: Relacionado a reglas para filtrado (aceptar, rechazar, o ignorar un paquete)
  • nat (Network Address Translation): Relacionado a la traducción de direcciones origen y destino, como también puertos de los paquetes.
  • mangle: Relacionado a otros cambios hacia el paquete IP (incluyendo el campo ToS - Type of Service y otras opciones)
  • raw: Permite otras modificaciones manuales sobre los paquetes, antes de estos alcancen el sistema para el seguimiento de conexiones.

Cada tabla contiene una lista de reglas llamadas cadenas. El firewall utiliza cadenas estándar para manejar los paquetes basado en circunstancias previamente definidas. El administrador puede crear otras cadenas, la cual podría únicamente ser utilizada cuando sean referidas por una de las otras cadenas estándar (ya sea directamente o indirectamente).

La tabla de nombre “filter” tiene tres cadenas estándar:

  • INPUT: Relacionado a paquetes cuyo destino es el firewall por si mismo.
  • OUTPUT: Relacionado a paquetes emitidos por el firewall.
  • FORWARD: Relacionado a paquetes pasando a través del firewall (el cual no es ni su origen ni su destino)

La tabla de nombre “nat” también tiene tres cadenas estándar:

  • PREROUTING: Para modificar los paquetes tan pronto como lleguen.
  • POSTROUTING: Para modificar los paquetes cuando están listos para tomar su ruta.
  • OUTPUT: Para modificar los paquetes generados por el firewall por si mismo.

Estas cadenas son ilustradas en la siguiente imagen:

Cada cadena tiene una lista de reglas; cada regla es un conjunto de condiciones y una acción a realizar cuando se cumpla la condición. Cuando se procesa un paquete, el firewall escanea la cadena apropiada, una regla después de otra, y cuando las condiciones para una regla se cumplen, salta (debido a la opción “-j” en el comando) hacia la acción especificada para continuar el procesamiento. Los comportamientos más comunes son acciones estandarizadas y dedicadas para estos. Tomar una de estas acciones estandarizadas interrumpe el proceso de la cadena, pues el destino de los paquetes ya esta sellado (salvo una excepción mencionada a continuación). A continuación se listan las acciones de Netfilter:

  • ACCEPT: Permite el paquete siga su camino.
  • REJECT: Rechaza el paquete con un paquete de error ICMP (La opción “--reject-with type” de iptables determina el tipo de error a enviar).
  • DROP: Borra (ignora) el paquete.
  • LOG: Registra (mediante syslogd) un mensaje con una descripción del paquete. Notar esta acción no interrumpe el procesamiento, y la ejecución de la cadena continúa a la siguiente regla, es por ello el registro de paquetes rechazados requiere una regla LOG y REJECT/DROP. Los parámetros asociados con el registro incluye:
    • --log-level: Con el valor por defecto “warning” indica el nivel de severidad de “syslog”.
    • --log-prefix: Permite especificar un prefijo “texto” para diferenciar entre mensajes registrados.
    • --log-tcp-sequence, --log-tcp-options, y –log-ip-options: indican datos adicionales a ser integrados dentro del mensaje: respectivamente, el número TCP de secuencia, opciones TCP, y opciones IP.
  • ULOG: Registra un mensaje mediante “ulogd”, el cual puede ser mejor adaptado y más eficiente a syslogd para el manejo de un gran número de mensajes; notar esta acción, como LOG, también retorna el procesamiento hacia la siguiente regla en la cadena.
  • chain_name: Salta hacia la cadena definida y evalúa sus reglas.
  • RETURN: Interrumpe el procesamiento de la cadena actual, y retorna hacia la cadena original; en caso la cadena actual es una estándar, no existe cadena original, así la acción por defecto (definida con la opción “-P” de iptables) es ejecutada en su lugar.
  • SNAT (Unicamente la tabla “nat”). Aplica SNAT. Opciones adicionales describen los cambios exactos a aplicar, incluyendo la opción “--to-source address:port”, lo cual define una nueva dirección IP y/o puerto origen.
  • DNAT (Unicamente la tabla “nat”). Aplica SNAT. Opciones adicionales describen los cambios exacto a aplicar, incluyendo la opción “--to-destination address:port”, lo cual define la nueva dirección y/o puerto destino.
  • MASQUERADE (Unicamente la table “nat”): Aplica enmascaramiento (un caso especial de SNAT)
  • REDIRECT (Unicamente la table “nat”): Redirige transparentemente un paquete hacia un puerto definido del firewall; esto puede ser utilizada para configurar un proxy web transparente, el cual funcione sin configuración en el lado del cliente, pues los clientes piensan se conectan al destinatario, mientas las comunicaciones realmente pasan a través del proxy. La opción “--to-ports port(s)” indica el puerto, o rango de puertos, donde los paquetes deben ser dirigidos.

Otras acciones, particularmente aquellas relacionadas a la tabla “mangle”, están fuera del alcance del presente texto. Las páginas de manual para iptables(8) e ip6tables(8) tienen un completo listado.

Fuentes:

https://kali.training/downloads/Kali-Linux-Revealed-1st-edition.pdf
https://linux.die.net/man/8/iptables
https://linux.die.net/man/8/ip6tables

Firewall o Filtrado de Paquetes en Kali Linux

Body

Un firewall es una pieza de equipo de cómputo con hardware, software, o ambos, el cual interpreta los paquetes de red entrantes o salientes (viniendo o dejando la red), y únicamente permite atraviesen aquellos coincidentes con ciertas condiciones previamente definidas.

Una pasarela de red para filtrado, es un tipo de firewall el cual protege una red completa. Es usualmente instalada sobre máquinas dedicadas, configuradas como una pasarela para la red, de tal manera interprete todos los paquetes entrando y saliendo de la red. Alternativamente, un firewall local es un servicio software el cual se ejecuta en una máquina particular, para poder filtrar o limitar el acceso hacia algunos servicios de la máquina, o posiblemente para prevenir conexiones salientes de software no autorizado, el cual podría un usuario voluntariamente haber o no instalado.

El kernel de Linux incorpora el firewall Netfilter. No existe una solución “llave en mano” para configurar un firewall, pues los requerimientos de la red y el usuario difieren. Sin embargo, se puede controlar Netfilter desde el espacio del usuario con los comandos “iptables” e “ip6tables”. La diferencia entre estos dos comandos es uno funciona para redes IPv4, mientras el otro funciona sobre IPv6. Debido a las dos pilas de protocolos de red podrían probablemente existir durante muchos años, ambas herramientas deberán utilizarse en paralelo. También se puede utilizar la excelente herramienta basada en GUI de nombre FwBuilder, la cual proporciona una representación gráfica de las reglas de filtrado.

Independientemente de como se decida configurarlo, Netfilter es la implementación del firewall de Linux, de tal manera se necesita profundizar en este.

Fuentes:

https://www.kali.org/
https://kali.training/downloads/Kali-Linux-Revealed-1st-edition.pdf
https://netfilter.org/
http://fwbuilder.sourceforge.net/

Asegurar Servicios de Red en Kali Linux

Body

En general es una buena idea deshabilitar los servicios de red no utilizados. Kali Linux hace esto fácil, pues la mayoría de servicios de red están deshabilitados por defecto.

Mientras las servicios permanezcan deshabilitados no poseen ninguna amenaza para la seguridad. Sin embargo se debe tener cuidado cuando se los habilite, debido a lo siguiente:

  • No existe un firewall por defecto, por lo cual si los servicios escuchan en todas las interfaces de red, estarán disponibles públicamente.
  • Algunos servicios no tienen credenciales para la autenticación, y permiten ser configurados en el primero uso, otros tienen credenciales por defecto previamente definidos (y son ampliamente conocidos). Asegurarse de reiniciar cualquier contraseñas a algo propio y personalizado.
  • Muchos servicios se ejecutan como “root”, con privilegios completos de administrador, de tal manera las consecuencias de un acceso no autorizado o una brecha de seguridad, son por lo tanto muy graves.

Credenciales por defecto

No es posible listar todas las herramientas incluyendo credenciales por defecto, en lugar de esto se sugiere revisar el archivo de nombre “README.Debian” de los respectivos paquetes, como también el sitio web de documentación sobre Kali Linux, para ver cuales servicios necesitan un especial cuidado para ser asegurados.

Si se ejecuta en modo en vivo, la contraseña de la cuenta root es “toor”. Por lo tanto no se debería habilitar SSH sin antes cambiar la contraseña de la cuenta root, o sin antes haber deshabilitado la configuración para logins basados en contraseñas.

También anotar el proyecto BeEF, es también conocido por tener credenciales por defecto definidos en su archivo de configuración.

Fuentes:

https://www.kali.org
https://www.kali.org/download-kali-linux-revealed-book/
https://www.kali.org/docs/introduction/default-credentials/
https://www.kali.org/docs/introduction/kali-linux-default-passwords/

Utilizar el Script Firewall-bypass (NSE) de Nmap para Intentar Evadir un Firewall

Body

El script “firewall-bypass” detecta una vulnerabilidad en netfilter y otros firewalls, utilizando “helpers” o “ayudantes”, para de manera dinámica abrir puertos para protocolos como ftp o sip.

El script funciona falsificando un paquete desde un servidor destino, solicitando abrir una conexión relacionada hacia un puerto destino, lo cual será completamente realizado por el firewall a través del puerto auxiliar del protocolo adecuado. La máquina atacante debe estar en el mismo segmento de red del firewall para esto funcione. El script soporta ayudante “helper” de ftp, ya sea IPv4 o IPv6. Un filtro real de ruta es utilizado para prevenir estos ataques.

Entre los argumentos del script se tienen:

firewall-bypass.helper: El “ayudante” a utilizar. Por defecto para ftp. Ayudantes soportados: ftp (IPv4 e IPv6).

firewall-bypass.targetport: Puerto sobre el cual evaluar la vulnerabilidad. El puerto destino no debe estar abierto. Si no se define el script intentará encontrar un puerto filtrado o cerrado desde los resultados de un escaneo de puertos

firewall-bypass.helperport: Si no se utiliza el puerto por defecto del ayudante.

Para el siguiente ejemplo se utiliza un Windows Server 2013, con el firewall por defecto.

nmap -n -Pn -v –script firewall-bypass –script-args firewall-bypass.helper=”ftp”,firewall-bypass.target=22 192.168.0. 92

En caso el script tuviese un resultado exitoso, se presentaría un mensaje “Firewall vulnerable to bypass through ftp helper.”; o traducido al idioma español; “El Firewall es vulnerable a evasión mediante un ayudante ftp. Para el caso de este host no se presenta tal mensaje.

Fuentes:

https://nmap.org/nsedoc/scripts/firewall-bypass.html
http://home.regit.org/2012/03/playing-with-network-layers-to-bypass-fir…

Utilizar el Script Firewalk (NSE) de Nmap para Intentar Descubrir las Reglas de un Firewall

Body

El script (NSE) de nombre “firewalk”, intenta descubrir las reglas del firewall utilizando una técnica de expiración TTL de IP, conocida como firewalking.

Para determinar una regla en una pasarela determinada, el escáner envía una prueba hacia una métrica localizada detrás de una pasarela, con un TTL mayor a la pasarela. Si la prueba es reenviada por la pasarela, entonces se puede esperar recibir una respuesta ICMP_TIME_EXCEEDED desde la pasarela siguiendo al router, o eventualmente la métrica por si misma si está directamente conectada conectada hacia la pasarela. De otra manera la prueba expirará.

Si se inicia con un TTL igual a la distancia de la meta. Si la prueba expira, entonces se reenvía con un TTL disminuido en uno. Si se obtiene un ICMP_TIME_EXCEEDED, entonces el escaneo finaliza par esta prueba.

Se prueban todos los puertos filtrados (Sin respuesta) TCP y UDP. Como para los escaneos UDP, este proceso puede ser bastante lento si muchos de los puertos son bloqueados por una pasarela cercana hacia el escáner.

Los parámetros pueden sen controlados utilizando los argumentos opcionales “firewalk.*”

Entre los argumentos del script se enumeran:

firewalk.max-probed-ports: Máximo número de puertos a probar por protocolo. Definirlo a -1 para escanear cada puerto filtrado.

firewalk.max-retries: Máximo número de retransmisiones permitidas.

firewalk.recv-timeout: La duración de los paquetes capturados en bucle (en milisegundos)

firewalk.max-active-priobes: Máximo número de pruebas activas en paralelo.

firewalk.probe-timeout: Periodo válido de una prueba (en milisegundos)

Para el siguiente ejemplo se utiliza el host scanme.nmap.org (El cual es parte del proyecto Nmap, y puede ser utilizado para realizar escaneos).

# nmap -n -Pn -v --script=firewalk –script-args=firewalk.max-probed-ports=5 --traceroute scanme.nmap.org

Los resultados de este primer escaneo no exponen resultados obtenidos por el script NSE de nombre “firewalk”.

Se procede realizar un segundo escaneo.

# nmap -n -Pn -v --script=firewalk –script-args=firewalk.max-probed-ports=5 --traceroute 121.186. X. Y


Los resultados obtenidos por este segundo escaneo, y puntualmente por el script NSE de nombre “firewalk”, muestran en el salto número 18 los puertos TCP bloqueados 1,3,4, 6 y 7.

Mencionar también la utilización de la opción “--traceroute” de Nmap, lo cual realiza y muestra un trazado de la ruta hacia el host escaneado.

Fuente:

https://nmap.org/nsedoc/scripts/firewalk.html
https://nmap.org/

Tratar de Evadir el Firewall con Escaneos a Direcciones IPv6

Body

Las direcciones IPv6 en la actualidad son más utilizadas a nivel mundial. Cuando una organización adopta este protocolo, algunas veces olvida bloquearlo adecuadamente, así como ocurre con IPv4. O tal vez lo pueda intentar, pero podría encontrar el hardware utilizado no es compatible con las reglas para filtrado de IPv6. Filtrar IPv6 puede ser algunas veces más critico en comparación a IPv4, pues el amplio espacio de direcciones frecuentemente permite la asignación de direcciones IPv6 hacia hosts, los cuales normalmente deberían de utilizar direcciones IPv4, especificados por el RFC 1918.

Para el siguiente ejemplo se utiliza el host scanme.nmap.org (El cual es parte del proyecto Nmap, y puede ser utilizado para realizar escaneos).

Se realiza un “SYN Scan” contra el host.

# nmap -n -Pn -v scanme. nmap.org

Este primer escaneo únicamente muestra tres puertos TCP en estado abierto, 22, 80, 9929 y 31337.

El realizar un escaneo IPv6 en lugar del escaneo por defecto IPv4, es frecuentemente tan fácil como añadir “-6” a la línea de comando.

# nmap -n -Pn -v -6 scanme. nmap.org

Los resultados de este escaneo IPv6 en comparación con IPv4, no muestra el puerto TCP 9929. Lo cual podría ser originado por una inadecuada implementación de las reglas en el firewall.

Fuentes:

https://nmap.org/book/firewall-subversion.html
https://tools.ietf.org/html/rfc1918

Manipular el Puerto Origen de un Escaneo con Nmap para Tratar de Evadir el Firewall de Windows

Body

Una configuración inadecuada sorprendentemente común, es confiar en el tráfico basándose únicamente en el número de puerto origen. Es fácil entender entonces como ocurre esto. Un administrador puede configurar un nuevo y brillante firewall, únicamente para ser inundado con reclamos de usuarios descontentos cuyas aplicaciones dejaron de funcionar. En particular DNS puede no funcionar, pues las respuestas UDP DNS desde servidores externos, no pueden ingresar hacia la red. FTP es otro ejemplo común. En las transferencias FTP, el servidor remoto intenta establecer una conexión de retorno hacia el cliente para transferir el archivo solicitado.

Las soluciones seguras a estos problemas existen, frecuentemente en la forma de un proxy a nivel de aplicación, o módulos del firewall para interpretar el protocolo. Desafortunadamente también existen soluciones más fáciles e inseguras de utilizar. Al notar una respuesta DNS proviene desde el puerto 53, y un FTP activo desde un puerto 20, muchos administrador caen en la trampa de simplemente permitir conexiones entrantes desde estos puertos. Pues frecuentemente asumen ningún atacante notará y explotará tal agujero en el firewall. En otros casos, los administradores consideran esto una medida provisional a corto plazo, hasta puedan implementar un solución más segura. Luego olvidan esta actualización de seguridad.

Administradores de red con exceso de trabajo no son los únicos quienes caen en esta trampa. Numerosos productos son entregados con estas reglas inseguras. Incluso Microsoft ha sido culpable. Los filtros IPsec entregados con Windows 2000 y Windows XP, contienen reglas explícitas permitiendo tráfico TCP y UDP desde un puerto 88 (kerberos). Los fanáticos de Apple no deberían sentirse demasiado satisfecho sobre esto, pues el firewall entregado con Mac OS X Tiger es igual de malo. Jay Beale descubrió incluso si no se tiene habilitado el recuadro “Block UDP Traffic” o Bloquear Tráfico UDP en la GUI del firewall, los paquetes proviniendo del puerto 67 (DHCP) y 5353 (Zeroconf) pasan correctamente. Otro ejemplo patético de esta configuración, es el firewall personal Zone Alarm (versiones hasta 2.1.25), permiten cualquier paquete UDP entrante con el puerto origen 53 (DNS) o 67 (DHCP).

Nmap ofrece las opciones “-g” y “--source-port” (son equivalentes) para explotar estas debilidades. Simplemente se debe proporcionar un número de puerto, y Nmap enviará los paquetes desde este puerto cuando sea posible. Nmap debe usar diferentes números de puertos, para las pruebas de detección del sistema operativo funcionen adecuadamente. La mayoría de escaneos TCP, incluyendo el escaneo SYN, soportan completamente la opción, así como el escaneo UDP.

Para el siguiente ejemplo se utiliza una máquina con Windows Server 2012 R2. Únicamente se utiliza por defecto el firewall de Windows.

En primera instancia se ejecuta un “SYN Scan” contra el host.

# nmap -n -Pn -v 192.168.0. 92

Notar como únicamente se reportan en estado abierto los puertos TCP, 80, 443, 49155, 49156, y 40159.

A continuación se realiza un “SYN Scan” contra el mismo host, pero definiendo al puerto TCP 53 como origen del escaneo.

# nmap -n -Pn -v --source-port 53 192.168.0. 92

En los resultados obtenidos ahora se incluye; además de los puertos descubiertos con el anterior escaneo realizado; al puerto TCP 53 descubierto en estado abierto.

Fuentes:

https://nmap.org/book/firewall-subversion.html