Cuando Firewall de Windows está activado y un programa del equipo intenta aceptar conexiones de Internet o de una red, el servidor de seguridad lo impide y muestra un mensaje que ofrece al usuario la opción de desbloquear el programa. Por ejemplo, suponga que configuró el equipo para participar en un juego con otros jugadores a través de Internet. Puesto que el servidor de seguridad impide que el juego acepte conexiones de Internet, el juego no podrá recibir la información de otros jugadores que necesita para funcionar correctamente. Aparecerá un mensaje donde se pregunta qué acciones habría que tomar.
Mantener bloqueado: Sirve para impedir que el programa acepte conexiones sin su permiso.
Desbloquear: Únicamente en el caso de que sepa por qué el programa le pide que acepte las conexiones o si sabe que es de confianza. (En el ejemplo anterior del juego, ésta es la opción que elegiría.) Preguntarme más adelante, si no sabe si bloquear o desbloquear permanentemente el programa. Esta opción mantiene bloqueado el programa (para que la seguridad sea mayor) y volverá a aparecer este mensaje la próxima vez que lo inicie.
Si elige desbloquear el programa, Firewall de Windows crea una excepción para ese programa con el fin de permitir que se comunique a través del servidor de seguridad. El servidor de seguridad no le informará cuando el programa desee recibir conexiones más adelante. Cuando cierre el programa, la apertura temporal en el servidor de seguridad también se cierra.
Tomado del Centro de Ayuda y Soporte Técnico de Microsoft Windows.
Aquí se menciona algo importante: «Firewall de Windows crea una excepción para ese programa con el fin de permitir que se comunique a través del servidor de seguridad», pues es aqui donde existe la vulnerabilidad.
Efectivamente esta opcion no está activa en muchos casos, como por ejemplo en equipos conectados a un Dominio con políticas establecidas ya sea por un Active Directory o controladas por un ISA Server, y otro caso en equipos con sesiones donde el administrador ha establecido Politicas de Grupo.
Como ya mencionamos Windows valida los programas para que pueden recibir conexiones en función de una lista blanca que crea el firewall de windows, entonces es allí donde nos aprovechamos de ello.
1era forma de saltar el firewall: Esta lista blanca guarda la dirección del archivo ejecutable y el nombre del mismo, «pero» no valida que el archivo ejecutable sea el archivo ejecutable que dice ser. Entonces podemos reemplazar un ejecutable que este en lista blanca por un archivo nuestro y el firewall ni se enterará de lo que está ocurriendo.
Aqui vemos un ejemplo. Se reemplazó el ejecutable del PowerDVD un programa muy común en muchos equipos restringidos actualmente.
2da forma de romper el muro: La 2da forma de romper el muro es a través de la modificación de la lista blanca propiamente dicha a través de código (realizando un programa). Aqui vemos en el ejemplo un fragmento de una aplicación hecha en Microsoft Visual Basic 6.0 donde la aplicación se pone a escuchar paquetes en el puerto 1001
Esta es la interfaz gráfica de la aplicación de ejemplo, donde el boton «salir» lo denominamos Bo_Salir y el boton «Aceptar» es Bo_Server:
Este ejemplo es sólo una aplicación sencilla con sólo dos command button pero que para el firewall de windows representa una amenaza ya que al contener un control winsock (llamado aquí tcpServer) escuchando por un puerto de nuestro equipo (puerto 1001 en el ejemplo) un atacante remoto podría descargar datos o peor aun subir programas y ejecutarlos.
Aqui vemos que si ejecutamos dicha aplicación el firewall nos dispara una alerta de que el programa esta siendo bloqueado.
Con sólo 3 líneas de código ( y la inserción de un modulo ) podemos saltarnos la protección del firewall creando valores en la lista blanca del firewall usando Visual Basic 6.0 (o cualquier lenguaje de programación que lo permita), podemos crear valores estandar en dicha lista como se muestra en las siguientes fotos:
, y hasta ofuzcar los nombres de nuestras aplicaciones. como se muestra en esta otra:
hemos puesto un círculo rojo indicando donde debería aparecer el nombre de la aplicación, y un círculo azul el cual muestra tres puntos suspensivos «…» lo que nos hace pensar que algo no está bien.
Tambien podemos deshabilitar las notificaciones para evitar que se percate de la existencia de nuestra aplicación. Esto lo podemos hacer en esta opción:
Es importante mencionar que sería útil en caso de no querer que nadie se entere que modificamos algo para correr nuestra aplicación, poder borrar el registro de todas las actividades del firewall. esto lo hacemos simplemente borrando este archivo:
C:\WINDOWS\pfirewall.log
Las técnicas anteriormente mencionadas son válidas para Microsoft Windows XP y Vista con o sin ServicePack Activos y son de carácter educacional. El autor no se hace responsable del uso de las mismas.
A continuación les dejo parte de las aplicaciones que se pueden reemplazar (Si la carpeta no está protegida)
Programas a Reemplazar
Asistencia Remota
C:\WINDOWS\System32\sessmgr.exe
CyberLink PowerDVD
C:\Archivos de programa\CyberLink\PowerDVD\PowerDVD.exe
iTunes
C:\Archivos de programa\iTunes\iTunes.exe
Java(TM)Platform SE binary
C:\Archivos de programa\Java\jre6\bin\javaw.exe
Speed
C:\Archivos de programa\EA GAMES\Need For Speed Underground\Speed.exe
Windows Live Call
C:\Archivos de programa\Windows Live\Messenger\wlcsdk.exe
Windows Live Messenger
C:\Archivos de programa\Windows Live\Messenger\msnmsgr.exe
… y muchísimas más.
Referencias:
HackerClaus Team © Artículo: Saltando el Muro. ¡ Gracias y Saludos!
Centro de Ayuda y Soporte Técnico de Microsoft Windows
Jonathan Maderos. Consultor Independiente de Seguridad
@Jtmaderos