Páginas

10 junio, 2012

Tipos de Firewall de red: Stateless, Stateful, SPI, AIC, DPI, NIDS, IDS/IPS - IDPS y Proxy

En el blog de Oscar Gerometta me encontré un estupendo artículo donde habla de los tipos de firewalls y en que se basan los firewalls con y sin estado, SPI, AIC, DPI, IDS/IPS - IDPS y Proxy.
Después algunos apuntes a mayores que anoté y editarlo un poco comparto el artículo como apunte personal y para quien le interese.

¿Qué es un firewall?

Un firewall es un sistema que fuerza la implementación de políticas de control de acceso entre 2 o más dominios de seguridad.

Es decir, un sistema (hardware, software, combinación de ambos o simplemente implementación en un dispositivo no dedicado) que facilita la aplicación de políticas de inspección y acceso entre 2 áreas de la red que tienen diferente política de seguridad.
 
Firewall puede ser entonces un dispositivo (hardware dedicado que corre un software especialmente diseñado para este propósito), un software implementado sobre un dispositivo no dedicado a ese propósito, lo que serían firewall ISR (Integrated Services Router), o una implementación de recursos o herramientas que permiten realizar este tipo de tareas, un conjunto de ACLs (Access Control List) en un router de acceso.

Hay que tener en cuenta que la implementación de Firewalls, a cuento más bajo nivel (en las capas del modelo OSI) se implementen, mucho mejor y más seguro. Ya que los accesos/bloqueos/filtrados serán más dificiles de eludir.

Tipos de Firewal

De acuerdo a las técnicas de filtrado de tráfico que se implementan, los firewalls pueden clasificarse en diferentes tipos.

Filtrado de paquetes stateless (sin estado)

Es la forma más básica de filtrado de tráfico.Usualmente se aplica en dispositivos de capa de red e implementa conjuntos de reglas estáticas que examinan los encabezados de cada paquete para permitir o denegar el tráfico, sin ninguna relación con los flujos de tráfico precedentes. Trabajan bien cuando el objetivo filtra aplicaciones basadas en TCP que no utilizan negociación dinámica de puertos.

Filtrado de paquetes stateful (con estado)

Es un método de filtrado de paquetes que trabaja a nivel de flujo o conexión, con ocasionales intervenciones a nivel de la aplicación.

Mantienen una tabla de estado que hace seguimiento de las sesiones que atraviesan el firewall y en función de ella hace inspección de cada paquete que atraviesa el dispositivo.
El mecanismo asume que si se permite el inicio de la conexión, cualquier conexión adicional que requiera esa aplicación será permitida. Es un mecanismo confiable para filtrar tráfico de red entre dominios de seguridad.

Filtrado de paquetes stateful con inspección SPI (Stateful Packet Inspection) y control de aplicaciones

Se trata de firewalls stateful que incorporan motores de análisis de tráfico que suman servicios adicionales que reciben la denominación de AIC (Application Inspection and Control) o DPI (Deep Packet Inspection).

Estos sistemas reensamblan en memoria las sesiones de capa de transporte para realizar inspección de protocolos de capa de aplicación y decodifican los protocolos de capa de aplicación para permitir filtrado de protocolos y contenidos. Pueden verificar los protocolos de capa de aplicación para eliminar paquetes que no se conformen con el funcionamiento estándar del protocolo.

Sistemas de prevención de intrusos en la red: NIPS (Network Intrusion Prevention Systems)

También conocidos como IDS/IPS o IDPS (Intrusion Detection Prevention System). Son sistemas que analizan el tráfico de la red con el propósito de bloquear tráfico malicioso conocido. Se asienta en una base de datos de ataques que debe ser actualizada periódicamente.

Son mecanismos permisivos y usualmente no pueden detectar amenazas nuevas a menos que hayan sido incluidas en las actualizaciones.

Gateways de aplicaciones (proxy)

Es un sistema de software diseñado para actuar como intermediario y reenviar requerimientos de capa de aplicación y respuestas entre los clientes y los servidores. En términos de control de acceso, permite un filtrado y seguimiento muy granular tanto de las solicitudes como de las respuestas.

Brindan opciones de control de acceso confiables para los protocolos soportados. Sin embargo, hay que tener presente que no hay proxy disponibles para todas las aplicaciones corporativas y no se aplican a aplicaciones de tiempo real.

Saludos!

02 junio, 2012

Tipos de DLL: Funcionamiento y la importancia de las DLL

DLL (Dynamic Link Library - Librerías de enlace dinámico) son librerías o bibliotecas que ejecutan rutinas y funciones necesarias para un correcto funcionamiento del sistema y de las aplicaciones que utilizamos.

Las mayoría de DLLs incluidas en un sistema MS Windows están ubicadas:
C:\Windows\System32 o %SYSTEMROOT%\System32
Cuando se realiza una instalación de OS Windows, este instala las librerías DLL necesarias pasa su uso y otras a mayores y comunes para el uso de aplicaciones, de este modo, para el programador o el desarrollador del software le permite reducir tamaño de peso en su código y así optimizar el rendimiento, el espacio en disco y a veces la sobrecarga de subrutinas de la aplicación. Ya que muchos programas llaman a las DLL que el desarrollador sabe que están predeterminadas en una instalación de Windows genuina o añadidas a posteriori en algún SP (Service Pack) de Windows.

Decir que no todas las extensiones de los ficheros tienen por que ser DLL, sino que también son: OCX (OLE (Object Linking and Embedding) Control Extension), DRV (librearías utilizadas para Drivers), VXD (Virtual Device Driver), un ejecutable .exe, etc.

DLL Compartidas

Muchos programas ejecutándose al mismo tiempo de manera concurrente, pueden estar utilizando las mismas DLL almacenadas en memoria durante la instancia de ejecución de las aplicaciones, estas lógicamente nos se utilizan al mismo tiempo. Es decir, por ejemplo, si una DLL es la que nos permite en un programa visualizar el cuadro desplegable "Opciones" de la barra de herramientas, y aunque tengamos dos aplicaciones abiertas que utilicen la misma DLL para esto, a la vez en el mismo tiempo, como es lógico solo podemos hacer clic en un botón no en dos sitios distintos a la vez ni en el mismo tiempo, por eso cada aplicación administra y gestiona ciertas reglas para el tiempo de ejecuciones de la utilización de la misma librería en diferentes espacios de tiempo y según las necesidades y peticiones del usuario a la aplicación determinada en el momento de uso, estas son: DLL compartidas.

Las DLL Hell (Infierno de las DLL)

Cuando un software gestiona de manera inadecuada sus librerías compartidas, pueden ocurrir errores de fallo con el correcto funcionamiento del software en cuestión.
También se pueden producir errores, al instalar un software que reemplaza a una versión posterior de una DLL del sistema, ya que aplicaciones que pueden utilizar una versión más vieja que la versión más reciente, esta ya no funcionaría de manera adecuada o ciertas opciones del programa fallarían.
Pasa lo mismo al desinstalar un software que use una librería compartida por otras aplicaciones, y estos otros dejen de funcionar o producir errores en alguna de sus funciones, en el momento de no poder encontrar las DLL necesarias.

Un detalle muy importante y a tener en cuenta es que las DLL pueden tener el mismo nombre pero ser de diferentes versiones. Para ver la versión de una DLL podemos hacer:
Clic derecho sobre la DLL en cuestión > Propiedades > Pestaña "Versión".

DLL Protegidas: WFP (Windows FIle Protection - Protección de archivos de Windows)

La tecnología WFP (Windows FIle Protection) evita que se borren, sobreescriban/sustituyan de manera inadecuada los ficheros DLL por medio de los agentes o wizards de instalación de las aplicaciones. Solamente los SP (Service Pack o Paquetes de Servicio, que nos son más que un conglomerado de actualizaciones) pueden actualizar las versiones de las DLL del sistema.
A estas librerías Microsoft les llama: DLL Protegidas.
WFP también intenta eliminar los errores de los archivos DLL y además minimiza los problemas causados por instalación y/o actualización de aplicaciones.

DLL Privadas o Únicas

Son DLL utilizadas específicamente por la aplicación instalada y que únicamente las puede utilizar dicha aplicación.
Por ejemplo, un software puede que utilice una DLL ya existente en el sistema operativo pero en una versión concreta y otra DLL que sea específica del programa que la utiliza o de terceros (un ejemplo de una DLL de terceros puede ser el uso de las bibliotecas: Winpcap (necesaria para interactuar con sockets de red y así poder utilizar rutinas para capturar tráfico de datos a bajos niveles)), por lo que en la instalación de la aplicación este realiza una copia en su directorio de instalación por defecto (que la ruta por defecto podría ser algo como: C:\Archivos de programa\APLICACIÓN\ (dependiendo la versión OS Windows que utilicemos)), ya que quizás utilice una versión determinada de la DLL, también otra específica de terceros o inclusive una propia y quiere que cuando se instale un Service Pack NO sustituya la versión de la DLL almacenada en el sistema.

Para instalar o desinstalar bibliotecas DLL, OCX, etc. Podemos hacer uso del comando para la consola de Windows: regsvr32. Para ver su ayuda: regsvr32 /?

También podemos simplemente descargar y ubicar en el path por defecto donde están almacenadas en Windows (mencionado al principio de esta entrada) y también ubicarla en la aplicación en la que se nos visualiza el mensaje de error por la necesidad de la búsqueda de una versión de una librería DLL determina y que quizás la utilice de manera Privada.

Existen infinidad de websites para descargar DLL. Dejo algunas referencias conocidas y bien posicionadas: es.dll-files.com

Saludos!

01 junio, 2012

Capturar tráfico de red con Wireshark dirigido a un equipo remoto de una misma red (rpcapd)

Si estamos en una red local y queremos capturar y analizar todo el tráfico de datos que vaya dirigido a otro equipo de nuestra red, lo podremos hacer de manera remota.
Con la utilidad de rpcapd.exe (documento de ayuda rpcapd) que está incorporado en las librerías de WinPcap y que nos permitirá capturar tráfico remoto que vaya dirigidos a otros hosts de la red. 

Lo primero que hay que hacer es instalar WinPcap en el equipo remoto. Desgraciadamente no existe una forma "silenciosa" para instalar esto de forma subyacente al usuario final. Y desde la Web oficial los desarrolladores comentan en que no habrá opción para esta tarea por problemas de compatibilidades de software. Por lo que tendremos que instalarlo manualmente en el equipo remoto con la GUI de instalación de WinPcap.

Después, haciendo uso de PsExec inlcuido en la suite de PsTools.
Ejecutamos una CMD remota, escribiendo esto desde nuestra CMD local:
psexec \\EquipoRemoto -u UserAdmin -p Password cmd.exe
EquipoRemoto: es el nombre o IP del equipo remoto al que nos queremos conectar.
UserAdmin: sería un usuario con privilegios de administrador.
Password: es la contraseña del usuario UserAdmin.

En el PC remoto en el que queremos capturar el tráfico de datos que va dirigido hacia este, tendremos que activar el servicio rpcapd. Para ello abrimos una shell de Windows, nos vamos al path donde está instalado WinPcap y escribimos:
rpcapd.exe -n -p 30000
Elegí el puerto 30000, pero podría ser otro cualquiera el cual sepamos que está libre y a que, por estandar, no sea de uso específico de algún protocolo.

Figura 1: Redirigiendo el tráfico al puerto 30000 para el servicio rpcapd de WinPcap.

Con rpcapd corriendo sobre el equipo en el que queremos capturar su tráfico, iniciamos Wireshark en el equipo que queremos ver el tráfico capturado.

En Wireshark configuramos nuestro adaptador de red para ello, nos vamos a: Capture -> Options
Seleccionamos la interface y la podremos en modo "Remote...". a continuación, se nos abrirá otra ventana en la que indicaremos la dirección IP y el puerto lógico donde queramos establecer la conexión (en este caso era el 30000).
Seguro que en el equipo remoto nos preguntará si queremos abrir este puerto en el Firewall de Windows, logicamente lo desbloqueamos para abrir dicho puerto.


Figura 2: Interface en remote para escuchar el tráfico por el puerto 30000 al host remoto.

Pulsamos en OK y Start y listo. Ahora recebiremos todo el tráfico que vaya dirigido hacia el host: 10.0.0.4
Esto es válido tanto para redes cableadas como para señales Wireless.

Podremos comprobar en el equipo remoto que realmente el puerto 30000 está establecido "Established".

Simplemente comprobando el estado de puertos con: netstat -a
En este caso se muestra un Windows XP, entre las pruebas que realizé, pero esto no influye sea un Windows XP/Vista o 7.


Figura 3: Comprobamos que la conexión entre puertos está establecida entre el host remoto y mi equipo local.

Saludos!

Entradas Populares