Páginas

22 noviembre, 2012

Elevación de privilegios de una ventana explorer en Windows XP cuando tenemos instalado IE8

En Windows 7 no existe este problema gracias al UAC (User Account Control), pero...
Cuando en un equipo con Windows XP y con un usuario local administrador (con los privilegios totales) y un usuario local o de dominio pero con privilegios rasos o invadido por GPOs y este tiene instalado como navegador Internet Explorer 6 con esta versión de IE no tenemos problemas para "ejecutar como" administrador este y desde la barra de direcciones acceder a directorios de las ventanas explorer.

Pero si en este tiene instalado Internet Explorer 8 o 9 en Windows XP, nos surge el mítico problema de:

¿Cómo elevar privilegios de administrador local para gestionar una ventana Explorer, sin acceder mediante la barra de direcciones de IE6 ya que tenemos IE8?.

Ya que a partir de la versión IE8 inclusive y en adelante al intentar "ejecutar como" otro usuario este no nos va realizar ninguna acción y la barra de navegación la interpretará como un buscador online y no como un path para navegar entre directorios de Windows, como hacía IE6 por ejemplo.

Aunque para modificar opciones elevando privilegios para ciertas características del panel de control podemos realizar sobre el fichero a ejecutar: SHIFT + Botón derecho > Ejeuctar como…”, y ahí introducimos las credenciales oportunas.

Pero cuando tenemos que ejecutar una ventana del explorador de Windows con IE8 aunque este lo ejecutemos con privilegios administrativos la barra de direcciones nos interpretará una búsqueda en el navegador en vez de lo que desearíamos abrir, que sería por ejemplo: C: o una path de un directorio cualquiera.

Para solucionar esto SIN tener que salir de la sesión del usuario sin privilegios.
Abrimos una terminal (Tecla Windows + R > escribimos: cmd) y hacemos uso del comando RunAS.
Un ejemplo sería:
runas /user:NOMBRE_EQUIPO\administrador explorer
Donde "Nombre_Equipo" es el nombre del equipo local en cuestión.
El explorer lo interpreta sin más, no es necesario añadir extensión ni ruta del fichero. Si queremos ejecutar algo más específico deberíamos introducir entre “ ” (comillas) la ruta del fichero + extensión a ejeuctar.

Figura 1: Ejecución de RunAS dentro de un usuario sin privilegios para abrir un nvegador de carpetas explorer.exe

Si esto no funciona de entrada (que seguramente sea lo más probable), es porque aun falta un detalle por configurar que es, marcar un checkbox en las “Opciones de carpeta”.

Entraríamos al equipo con la sesión de administrador local > Abrimos una ventana explorer > Herramientas > Opciones de carpeta > marcamos“Abrir ventanas de carpeta en un proceso independiente.

Una vez hecho esto, agilizaremos las futuras administraciones de los equipos. Y no tendremos que volver a loguearnos como administrador sino que simplemente ejecutaremos el comando RunAS como se mostraba anteriormente en el ejemplo.

Figura 2: Configuración de Opciones de carpeta, "Ventanas de carpeta en procesos independientes".

Un ejemplo de ello se observa en la siguiente screenshot donde se muestran los dos procesos explorer.exe (las ventanas "Explorador de Windows" abiertas) de manera independiente, una ejecutada con el usuario logueado actualmente y sin privilegios (tuve que difuminar el nombre real "usuariored") y otro usuario "Administrador" de la máquina local.

Figura 3: Ejecución del explorer.exe en dos usuarios distintos en la misma instalación de sesión de un mismo usuario.

Saludos!

15 octubre, 2012

Renombrar o borrar perfiles locales de usuarios de dominio en Windows 7

Empezamos por decir a groso modo que; cuentas de usuario y perfiles de usuario NO es lo mismo, ya que la cuenta vamos a decir y/o entender de algún modo que son las credenciales del usuario y el perfil el contenido en un equipo de este.
En este caso me centro en los perfiles locales creados por el inicio de sesión de usuarios de Active Directory con cuentas de usuario de dominio.

Perfiles dañados

En algunos casos ocurre que los perfiles locales de alguna cuenta de usuario de dominio o locales pueden estar afectando al mal funcionamiento de este; ya sea por alguna aplicación, por corromperse los ficheros de referencia en el registro de este usuario (los ficheros NTUSER, que hacen referencia a los parámetros o preferencias del usuario en el sistema) o simplemente por fallos que solo ocurren con dicho usuario en un equipo concreto.
 
Un fallo muy habitual en usuarios de dominio por lo que tengo comprobado es encontrarnos con el siguiente aviso cuando iniciamos sesión de usuario: "Error en el inicio de sesión del servicio de perfil de usuario".

Cuando estos perfiles se corrompen, pueden hacerlo sin más y quedar tal cual están o puede darse el caso en el que cada vez que iniciemos sesión con el perfil de usuario dañado este no cargue bien el perfil y se inicie de "modo temporal", esto lo que hará es que si el perfil original se llama "Pepe", no iniciará como Pepe, si no que lo hará a través de un "Temp" la cual es una carpeta creada en la que podremos verla en 'Documents and Senttings' (WinXP) o 'Usuarios' (WinVista/7).
 
Esta carpeta representa la instancia actual de sesión iniciada del perfil que se quiso iniciar pero por causa de estar dañado generó un perfil temporal. Este perfil NO almacena ninguna información ni de configuración ni de datos relacionada con el perfil original afectado. Nos sorprenderemos si pensábamos que habíamos perdido los datos de nuestro sistema!, pero no es así.

Independientemente de si se genera una carpeta temporal 'Temp' o no. Puede darse también el caso, de que se genere una carpeta del estilo: NombreUsuario.NombreEquipo. Suponiendo que mi equipo se llama "PC-Portatil" y cogiendo el ejemplo anterior, mi usuario es "Pepe", quedaría algo tal que así: Pepe.PC-Portatil, esto es muy típico verlo en entornos de equipos unidos a un dominio, equipos corporativos. Ya que al fallar la autentificación o simplemente que no carguen de manera adecuada ciertos servicios de red-dominio en el usuario de dominio a conectarse, Windows genera un perfil con el nombre de ese usuario de forma local. O si no, formamos parte de un equipo de dominio y nos ocurre esto, es por que al igual que el anterior caso del perfil temporal, este lo genera de este modo.

Renombrar o borrar perfiles dañados o corruptos

En Windows XP esto era una tarea fácil, ya que solo bastaba con renombrar el perfil del usuario. Por ejemplo, si el usuario es "PEPE" podrías renombrar con "_PEPE" y listo. Al iniciar sesión de nuevo con este usuario se generaría un nuevo perfil "PEPE" cogido de la referencia del perfil "Default User".

Pues en Windows 7 esto no funciona de igual modo, en este caso a parte de hacer lo anterior (renombrar manualmente el perfil) también necesitamos modificar el registro de Windows, eliminando ciertas subclaves que hacen referencia al perfil local de usuario en el sistema. Esto es si lo queremos hacer de forma manual.

Aunque existe una tool recomendada por Microsoft para realizar borrados de perfiles la cual se interactúa mediante consola de comandos llamada Delprof, el cual podemos consultar sus parámetros y modo de empleo en la ayuda del comando (delprof /?) o en la propia descarga se nos adjunta un fichero mht de ayuda.

Pero lo que miraremos es como hacerlo de forma manual:

Para ello nos iríamos a la path que contiene la lista de perfiles actuales en el sistema:
HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList
Esta clave contiene diferentes subclaves por cada perfil de usuario, donde su nombre apunta a un SID (Security IDentifier) de la cuenta.
El valor de ProfileImagePath es la ruta de NTUSER.DAT para ese perfil de usuario. ProfileList no contiene un valor a la sección SID_Classes, sin embargo HKLM\SYSTEM\CurentControlSet\Control\hivelist contiene un valor por cada sección en HKLM y HKU que el sistema está actualmente utilizando. La diferencia entre los valores ProfileList y HiveList son en que:
  • ProfileList: Contiene una lista de todos los perfiles de usuario de los que Windows tiene constancia de su existencia.
  • HiveList: Contiene una lista de todas las secciones actualmente cargadas.
Lo que tendremos que hacer después de renombrar o eliminar la carpeta del perfil de usuario es eliminar la subclave entera del registro que apunta a dicho perfil. De modo que al iniciar sesión de nuevo en el equipo este vuelva a cargar las configuraciones del usuario y cree valores por defecto del perfil de referencia "Default User" y genere un nuevo SID para este usuario y que así vuelva apuntar a este de forma correcta.

También podremos eliminar el perfil a través de la opción "correcta" que nos ofrece Windows en: "Ejecutar -> sysdm.cpl" (Equipo -> Propiedades -> Configuración avanzada del sistema) -> Opciones avanzadas -> Perfiles de usuario -> Configuración -> Seleccionamos el perfil afectado -> Eliminar.

En el caso de NO ver claramente el nombre del perfil afectado, nos podremos encontrar algo como "Cuenta desconocida", esto ocurre por lo hablado anteriormente donde comentaba los "Perfiles dañados".

Si solo nos aparece una de estas cuentas la eliminamos sin piedad, si vemos más cuentas de este estilo, podemos eliminarlas igualmente ya que deben ser cuentas dañadas en un pasado, o si queremos dejarlas "por si a caso" y solo borrar el perfil dañado actual, podemos fijarnos en la "fecha de modificación" o el "tamaño del perfil" como referencia.

Antes mencionaba que esta sería la opción correcta de borrar un perfil. Por qué?.
Porqué Windows lo que hace es eliminar la carpeta de perfil y el SID del registro en un mismo paso, excepto el nombre de cuenta de usuario lo podemos ver en: (Ejecutar -> lusrmgr.msc).

Personalmente si todo está bien, los borro de este último modo, pero si los perfiles están corruptos prefiero hacerlo todo de manera manual.

Si la carpeta del perfil ya está borrada y simplemente se nos crea un TEMP cuando iniciamos con el usuario afectado, entrando en el registro de Windows vemos que aparece un SID con la terminación .bak lo que haremos será renombrar ese SID, QUITANDO esa extensión .bak. Quedando solo la clave con el identificador a mostrar.

Nos fijaremos al entrar en cada clave el valor del "ProfileImagePath", este nos mostrará el usuario relacionado con ese SID.

Figura 1: Eliminando SID de usuario con problemas del registro de Windows 7.

Ahora bien, si solo vemos una carpeta con el SID de usuario y solo ese SID tiene un .bak al final y no hay ningún otro TEMP, ni ningún SID del mismo usuario duplicado, simplemente nos bastaría con poner a 0 los contadores. Estos contadores son valores del registro de esa clave en en ese SID en cuestión.

Podríamos a "0" los valores: RefCount y State.

Más info. de este último caso: http://support.microsoft.com/kb/947215/es

Con esto solucionaremos la mayoría de problemas de este tipo y estaremos renombrando perfiles locales de usuarios de cuentas de dominio de la manera que yo conozco más adecuada y fiable.

Otra forma de borrar perfiles de usuario de dominio de forma más gráfica

Esto SOLO BORRAR (no renombrar), según "lo aconseja Microsfot" y también igualmente válida y "limpia", es directamente borrar o eliminar un perfil de usuario tanto la carpeta de perfil como la clave de registro SID en ProfileList que apunta a el, esto se puede hacer directamente desde las propiedades de sistema (sysdm.cpl), en la pestaña de Opciones avanzadas > Configuración... 

Figura 2: Configuración para perfiles de usuario en: Opciones avanzadas de propiedades del sistema.

Una vez situados aquí, podremos seleccionar el perfil afectado y directamente eliminarlo. Esto hará que se borre completamente la carpeta de usuario creada en el sistema así como la clave de registro SID que apunta a el.

Lo que no será borrado es la cuenta local (en el caso de que sea local y no de dominio) de usuario creada (podemos verla en lusrmgr.msc) y digo cuenta de usuario, no perfil de usuario.

Lo cual esto dependerá de si lo queremos borrar definitivamente tendríamos que borrar también la cuenta a parte, o si solo queremos eliminar el perfil y volver iniciar sesión con dicho usuario local creado, de forma que se solucione algún problema en concreto.

Figura 3: Eliminación de la carpeta local del perfil + SID de ProfileList del registro de Windows.

Por último decir que esta última opción en ocasiones (en un pequeño porcentaje), no funciona correctamente ya que nos puede saltar algún tipo de error en la eliminación de perfil, en ese caso lo haremos de forma manual como expliqué más arriba de este artículo.

Espero que tanto la solución manual como esta última, la más gráfica, las dos propuestas por Microsoft, sea de utilidad a muchos para realizar esta tarea.

Saludos!

11 septiembre, 2012

Habilitar o deshabilitar los recursos compartidos administrativos por defecto de Windows sin eliminarlos completamente (C$ ADMIN$)

Windows crea una serie de recursos compartidos por defecto que están "ocultos", pero que en realidad pueden ser accesibles de una forma muy sencilla mediante una ruta UNC tipo \\nombreDeEquipo o dirección IP\nombreRecursoCompartido$. Por ejemplo para acceder al disco local del equipo remoto \\192.168.1.12\c$. Si en el equipo hay definido un usuario con password nos solicitará estas credenciales para poder acceder.

En entornos corporativos bajo un dominio Active Directory es habitual que el personal de TI use estos recursos compartidos administrativos para una gestión y administración de las máquinas. En equipos personales (que no estén unidos a un dominio) recomiendo deshabilitar los recursos compartidos administrativos si no son necesarios.

El símbolo $ en Windows establece que ese recurso compartido se mantiene oculto al resto de la red y que solamente conociendo el nombre del recurso compartido podríamos acceder a el.

Recursos compartidos administrativos

  • LetraUnidad$: El volumen compartido de forma completa, normalmente C:\ pero a cualquier unidad de medio extraíble conectada al equipo se le crearía un recurso compartido por defecto.
  • ADMIN$: Se utiliza durante la administración remota de un equipo.
  • IPC$: Comparte las canalizaciones con nombre que debe tener para la comunicación entre programas. Este recurso no puede eliminarse.

En Windows Server también encontramos

  • PRINT$: Permite la administración remota de impresoras.
  • FAX$: Utilizado por los clientes de fax, durante la transmisión de fax.

Recursos compartidos administrativos especiales en Windows Domain Controllers

  • NETLOGON: Procesa las solicitudes de inicio de sesión de dominio.
  • SYSVOL: Controla la replicación de Active Directory, GPOs, etc.
Estos recursos compartidos los encontramos en la consola de administración de carpetas o recursos compartidos fsmgmt.msc (File System ManaGeMenT). También podremos acceder a través de la consola de componentes de administrador de equipos compmgmt.msc (Component Management).

Figura 1: Consola de Microsoft de Recursos compartidos fsmgmt.msc.

Deshabilitar los recursos compartidos administrativos por seguridad

Un posible atacante que de algún modo conozca unas credenciales de acceso válidas o pueda realizar un bypass de esta autenticación a través de alguna vulnerabilidad existente en la máquina podría lograr acceso a estos recursos.

Hay que tener en cuenta que ciertas aplicaciones de bases de datos y/o servidores de correo pueden trabajar con estos recursos compartidos para su correcto funcionamiento. Si utilizamos alguna aplicación que puede estar utilizando estos recursos lo mejor es que ya no toquemos nada, igualmente en la mayoría de este tipo de situaciones suelen ocurrir dentro de organizaciones corporativas.

Habilitar o deshabilitar recursos compartidos administrativos: C$ y ADMIN$

Abrimos la consola de recursos compartidos locales fsmgmt.msc, manualmente podemos dejar de compartir estos recursos, pero en el caso de que los necesitemos en un futuro no los podríamos volver a restaurar de forma automática. Dejarlos sin compartir o eliminarlos manualmente no sería una buena práctica, lo aconsejable sería deshabilitarlos y tener la posibilidad de recuperarlos en un futuro si fuese necesario.

Lo podemos hacer mediante el registro de Windows regedit. Nos situamos en la siguiente ruta.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  1. Creamos un valor tipo DWORD 32 bits
  2. Llamado AutoShareWks.
  3. Asignamos el valor 0.
0 = Deshabilita los recursos compartidos administrativos.
1 = Habilita los recursos compartidos administrativos.

Para aplicar los cambios podemos reiniciar la máquina o simplemente reiniciar el servicio "Servidor" LanmanServer.

Podemos reiniciarlo también a través de una consola cmd.
net stop lanmanserver
net start lanmanserver
Figura 2: Servicio "Servidor" LanmanServer.

Restaurar recursos compartidos administrativos NETLOGON y SYSVOL en un controlador de dominio Windows Server

Microsoft recomienda que no se elimine ni modifique estos recursos compartidos especiales en el caso de NETLOGON y SYSVOL en un controlador de dominio Windows Server. Si se eliminaron los recursos compartidos administrativos predeterminados o si la creación automática de estos recursos compartidos está desactivada, para restaurar los recursos compartidos de modo que se creen automáticamente en un controlador de dominio Windows Server.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  1. Creamos un valor tipo DWORD 32 bits
  2. Llamado AutoShareServer.
  3. Asignamos el valor 1.
Con valor 1 creará los recursos automáticamente. Con valor 0 se deshabilitaría la creación automática de recursos compartidos especiales.


Saludos!

30 julio, 2012

Verificar la integridad de ficheros comprobando sus hashes MD5 y SHA

Cómo se genera un hash de verificación para comprobar la integridad de un fichero?

Sin entrar en cálculos matemáticos, básicamente una función hash o función resumen de un fichero se genera en base a un cálculo algorítmico obtenido por sus bytes. Según una palabra escrita o un fichero estos ocupan y están formados por un determinado grupo de bytes que serán los que se usen para calcular la codificación del tipo de hash que sea.
 
Por ejemplo en el caso de ser un hash de checksum MD5 este está formado por 32 dígitos hexadecimales el cual será el valor resultante de la codificación de salida del fichero tratado.

Existen múltiples algoritmos usados para la comprobación de checksum de ficheros, hoy en día los más usados son:
  • CRC: Cyclic Redundancy Check.
  • MD4/MD5: Message-Digest Algorithm 4/5.
  • SHA-1/SHA-2/SHA-3: Secure Hash Algorithm 1/2/3.
Más información sobre como se calcula un hash:

¿Por qué es importante verificar los checksum MD5 o SHA-1 de los ficheros que descargamos de Internet?

Principalmente por integridad de la información por si el fichero se encuentra dañado y después por seguridad, ya que nos dirá si un archivo descargado de Internet a sido modificado o no. 

Muchas veces cuando descargamos una aplicación esta viene acompañada al lado del enlace de descarga (normalmente) un código de comprobación, lo que sería un checksum. Lo que nos viene diciendo es que el fichero de la aplicación que nos descargamos tiene ese código checksum y si cuando descargamos el fichero y comprobamos el este código checksum y NO concuerda quiere decir que ese fichero que nos descargamos a sido modificado por alguien o de algún otro modo pero lo que está claro es que no del propio desarrollador. Lo cual habría que tener cuidado o directamente borrarlo ya que pudo ser modificado para hacer la función de algún tipo de malware y este tener la capacidad de poder ejecutar código arbitrario en nuestro equipo local.

Existen infinidad de tools para poder comprobar los checksums de los ficheros, como puede ser:
openssl dgst -md5 <Nombre_Fichero>
Pero en esta entrada me centré en FCIV ya que es propietaria de Microsoft y no está de más saber que también cuenta con su propia herramienta para esto.

En HashCheck Shell Extension el cual es muy cómodo y nos permite realizar un comprobación de integridad de los ficheros de forma rápida.

File Checksum Integrity Verifier (FCIV) es una utilidad propietaria de Microsoft y que funciona bajo línea de comandos, calcula y comprueba los valores hash de cifrado de archivos. FCIV puede calcular MD5 o SHA-1 los más típicos valores hash criptográficos.

Estos valores se pueden visualizar en la pantalla o almacenarse en una base de datos de archivo XML para su posterior uso y verificación.

Un ejemplo, creamos un fichero de imagen de formato JPG. Ahora comprobaremos su checksum MD5 del siguiente modo: Nos vamos a donde tenemos el ejecutable que descargamos de la herramienta FCIV.exe. Y la sintaxis del comando para esto sería la siguiente:
fciv -both pruebaMD5.jpg
Donde -both especifica que se muestren los dos hashes tanto MD5 como SHA-1 que se generó para esta imagen cuando la guardé. En vez de -both podríamos especificar los atributos "-md5 -sha1" seguido dle fichero, ambas sintaxis se interpretarían de igual forma.

pruebaMD5.jpg: Sería el nombre del fichero si no está en el mismo path, lo indicaremos.

Figura 1: Generación de hashes MD5 y SHA-1 para una imagen.

En el siguiente ejemplo vemos la integridad del fichero descargable del software Notepad++ v6.8.3 release.

Nuevamente la orden en línea de comandos en la misma que la anterior, con la única diferencia de la especificación del fichero .exe en cuestión.

Figura 2: Comprobación de integridad del hash SHA-1 en Notepad++.

Para más información sobre el uso de FCIV: https://support.microsoft.com/en-us/kb/841290

Otra alternativa más cómoda es: HashCheck Shell Extension, una utilidad que se añade como una pestaña en las propiedades de cualquier fichero la cual nos permite comprobar la integridad checksum de ese fichero en cuestión de forma rápida. CRC-32, MD4, MD5, SHA-1. Ya sea de un único fichero que estemos analizando o de una carpeta que agrupe un conjunto de ficheros.

Figura 3: HashCheck comprobando la integridad de un fichero de imagen .iso.


Otra funcionalidad de HashCheck Shell Extensión es que nos permite crear un checksum MD5, haciendo botón derecho sobre el fichero veremos la opción de "Crear archivo checksum...".

Otra alternativa similar a la anterior pero con más posibilidades de comprobación de hashes es: HashTab en la que podemos seleccionar entre múltiples funciones resumen las cuales queremos comprobar y mostrar, dispone de una larga lista de funciones, entre ellas SHA-2 y SHA-3.

Figura 4: HashTab comprobando función resumen de SHA-3 de un fichero .iso.

Saludos!

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!

26 mayo, 2012

Ataques MITM: ARP Spoofing/Poisoning sobre IPv4 - Parte 2 de 2

¿Cómo prevenir o evitar ataques MITM - ARP Spoofing/Poisoning?

Una de las maneras para prevenir el ARP Spoofing de manera manual, es el uso de tablas de caché ARP de forma estáticas, de forma que no existe caché dinámica, cada entrada de la tabla mapea una dirección MAC con su correspondiente dirección IP.

Para añadir rutas estáticas ARP a la tabla caché se pueden realizar de diferentes formas, dependiendo el OS que utilicemos. Abrimos una consola con privilegios administrativos.

Windows o Linux:
arp -s [IP Address] [MAC Address]
arp -s 192.168.1.1 00:11:22:33:44:55
Windows (usando netsh):
netsh > interface > ipv4 > add neighbords "[NombreDeLaConexiónDeRed]" [IP Address] [MAC Address]
netsh > interface netsh interface> ipv4
netsh interface ipv4> add neighbords "Conexión de área local" 192.168.1.1 00:11:22:33:44:55
El inconveniente de añadir rutas estáticas a la caché de la tabla ARP es que al reiniciar el PC las direcciones estáticas se eliminan. Para mantener esta tabla podríamos generar un script .vbs o .bat (el cual le daríamos privilegios administrativos) y que este se ejecute en el inicio del sistema, ya bien podemos incluirlo en la carpeta "Inicio" o hacer uso del editor de directivas de grupo local.

gpedit.msc > Configuración de Windows > Scripts (inicio o apagado) > Inicio > Agregar... > buscamos la ruta del fichero .vbs o .bat. Esto lo añade por defecto en la ruta: C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup

¿Cómo detectar ataques MITM - ARP Spoofing/Poisoning?

Si empezamos a notar alguna anomalía mientras navegamos.
  • Que un página que debería llevar un protocolo HTTPS está como HTTP.
  • Que aún siendo HTTPS se nos caiga la conexión con el servidor de dicha página o nos deniege el acceso ya que detecta que la entidad certificadora CA que emite el certificado para la conexión no es el original o un entidad emisora legítima.
  • Que una dirección DNS que sabemos a donde nos lleva y como es la página web de esta, se nos muestra una página web similar o nos encamina a otra página web distinta.
En cualquiera de los casos anteriores sería entonces donde podría consultar la tabla ARP con el comando arp -a y comprobar la existencia de direcciones MAC clonadas correspondientes a distintas direcciones IP.

Como prueba sobre dos Windows 7 Ultimate x64 instalados en máquinas virtuales. Aunque como ya dijera en la primera entrega el OS no influye para este tipo de ataques ya que se tratan a nivel de red local en la Capa 2 (enlace de datos o acceso) del modelo OSI.

Para que se pueda ver de una manera más clara hice uso del sniffer de red Wireshark. Que hace uso de WinPcap que son librerías necesarias para capturar el tráfico de transmisión de datos en una red, y que trabaja a nivel de núcleo.

En las capturas de pantalla que muestro a continuación se ocultan parte de lo que forman las direcciones, esto lo hago por seguridad. Pero un detalle que quiero aclarar es que en una dirección MAC lo normal sería ocultar los últimos tres bloques hexadecimales ya que estos identifican la dirección con relación a los tres primeros que identifican el proveedor o fabricante del adaptador de red. 
En este caso yo oculte los 4 primeros bloques hexadecimales manteniendo visibles los 2 últimos, la razón es por que al estar trabajando en máquinas virtuales las direcciones que identifican al fabricante eran las mismas y entonces no se podría ver la diferencia. Igualmente oculto el cuarto bloque de la dirección MAC completa que correspondería el primero que identifica dicha dirección MAC.

El escenario para este ejemplo sería.

Atacante:
  • IP Address: 10.0.0.15
  • MAC Address: xx:xx:xx:xx:09:27
  • Gateway: 10.0.0.1 (MAC xx:xx:xx:xx:66:00)
Víctima:
  • IP Address: 10.0.0.14
  • MAC Address: xx:xx:xx:xx:A6:38
  • Gateway: 10.0.0.1 (MAC xx:xx:xx:xx:66:00)

Usando Wireshark

La víctima es la que detectará el ARP Spoofing del atacante, capturando tráfico y así ver modificaciones de falseos/clonados/suplantaciones de direcciones MAC en las tramas ARP Request y ARP Reply.

Figura 1: Detectando trama MAC duplicada filtrando por el protocolo ARP en Wireshark.

Vemos como un host anuncia su dirección MAC sin que nadie se lo pida. Después un host solicita la dirección MAC y hay dos respuestas con la misma dirección IP pero diferente dirección MAC.

Finalmente, Wireshark detecta el ARP Spoofing, que lo describe como: "duplicate use of 10.0.0.1 detected" "Detectado el duplicado del uso de la 10.0.0.1" es decir, la puerta de enlace o gateway.

Pero sería muy tedioso, tener que abrir y poner a capturar tráfico de tramas ARP cada vez que encendemos nuestro PC y nos ponemos a navegar por internet, y que por encima al final del día paremos la captura y analicemos la .pcap para detectar si fuimos víctimas de un ataque Man In The Middle.

Por lo que para esto ya existen muchas y diversas aplicaciones, tanto para OS Windows como para OS Linux y compatibles con sus distribuciones, que de manera automática y transparente para el usuario, sin necesidad de que este realice ninguna acción, estas detectan si están ocurriendo modificaciones de la caché de la tabla ARP y que monitorean el tráfico de tramas ARP Request y ARP Reply.

Usando DecaffeinatID (Windows)

Para Windows podremos encontrar DecaffeinatID, es una pequeña aplicación desarrollada por IronGeek.com y que después de instalarla se carga en la taskbar de Windows ejecutándose de manera background y automatizada. Nos avisa de cambios producidos a tiempo real en la caché de la tabla ARP del PC.

Nos dice que la dirección IP de la gateway a cambiado mostrándonos la dirección MAC original por la falseada.

Figura 2: Detectando suplantación de direcciónes MAC con DecaffeinatID.

Usando ArpWatch (Linux)

Para Linux podremos encontrar ArpWatch, que usa libpcap (es igual que Winpcap, pero de código abierto y que son las librerías que son usadas por sistemas Linux) y monitorea los cambios de direcciones IP y direcciones MAC. Estos avisos podemos modificarlos para que nos alerte a nuestra dirección de correo, y lógicamente ver mensajes de logs.

Después de descargar el .gz e instalarlo. Escribimos los siguientes comandos y parámetros para su uso.
sudo arpwatch -i eth0
Este comando ejecuta Arpwatch, así cuando detecte un cambio de direcciones IP-MAC nos mostrará un mensaje de log en el directorio /var/log/syslog.

Saludos!

14 mayo, 2012

Ataques MITM: ARP Spoofing/Poisoning sobre IPv4 - Parte 1 de 2

En que consiste un ataque MITM ARP "Man in the middle"?

Los tipos de ataque "Man in the middle" (MITM) o también conocidos como "Hombre en el medio", consisten en realizar una técnica de ataque pasivo, denominada: ARP Spoofing, ARP Poisoning o ARP Poison Routing (APR), y se lleva a cabo en redes LAN (Local Area Network) y WLAN (Wireless Local Area Network).
 
Estando conectados en la misma red, este ataque nos permite capturar todo el tráfico dirigido de uno o varios hosts de la red a la puerta de enlace configurada (Gateway) y viceversa.

Consiste en "engañar" o más bien envenenar la caché de la tabla ARP de la víctima (lo que se conoce como: ARP Cache Poison - APR).
 
De modo que la dirección MAC Address (Media Access Control Address) de la puerta de enlace de la víctima no sea la verdadera, si no que sea la dirección MAC del atacante. Así cuando la víctima realice consultas hacía internet que serán requests para su gateway antes pasaran por el host del atacante, este lo dejará pasar al router el router devolverá la respuesta al atacante de nuevo y este a la víctima. De esta manera que la víctima no se dará de cuenta de lo que está pasando.
Para que quede más claro:

Figura 1: Esquema de ataque MITM.

Un detalle a tener en cuenta es que si en vez de envenenar la caché de la tabla ARP de la víctima con la MAC del atacante se envenenara con otra MAC falsa (por ejemplo: 00:11:22:33:44:55) a la victima le provocaremos una de denegación de servicio DOS (Denial Of Service).

Diferencias entre Modo Promiscuo (Promiscuous Mode) y Modo Monitor (Monitor Mode)

Ya que este ataque es utilizado en redes cableadas que se encaminan mediante dispositivos switch, el tráfico no se transmite por un medio abierto (como pueden ser las transmisiones inalámbricas), por lo que para capturar este tipo de tráfico en uno o varios hosts es necesario realizar este tipo de técnicas como los ARP Spoofing.

Con la tarjeta en modo promiscuo (Promiscuous Mode - termino utilizado para redes cableadas) ya que modo monitor (Monitor Mode) sería el término apropiado para redes inalámbricas y poder capturar todo los IVs (Initialization Vectors). Estos modos tanto promiscuo como monitor se refieren a lo mismo (pero cada uno aplicándolo en su término adecuado, dependiendo el área en el que se esté utilizando o tratando) y en lo que consisten es poder capturar TODOS los paquetes que circulan por la red, aunque no vayan dirigidos al host que solicito la petición.

¿Cómo se modifica la trama Ethernet para realizar un ARP Cache Poison?

Toda trama MAC se compone en su header (o cabezera) de una dirección MAC origen y una dirección MAC destino (al final de la cabezera también muestra el tipo de Ethernet), el payload (o cuerpo) compuesto por datos y el trailer (o cola) que muestra un CRC (Cyclic Redundancy Check, comprobación de errores) o cheksum (Suma de verificación) o FCS (Frame Check Sequence), este verifíca si la trama a llegado correctamente a su destino o no.

La forma más habitual de crear un ARP Spoofing es creando una "condición de carrera" (Race Condition) que consiste en la distribución de respuestas ARP no solicitadas (por las víctimas), las cuales son almacenadas en la cache ARP de las víctimas o clientes.

¿Por qué es posible este ataque MITM-Man in the middle?

Tanto los paquetes “ARP request” como los “ARP reply” no proporcionan ninguna validación de identificación en la transacción. Por este motivo este ataque se hace transparente al usuario ya que la trama no se verifica en ninguno de los sentidos con alguna marca identificativa (ID) de integridad.

Un caso práctico y secillo de realizar el ataque con Windows.
El escenario para esta práctica es el siguiente:
Gateway:
IP: 10.0.0.1
MAC: xx:xx:xx:xx:66:00

Víctima:
IP: 10.0.0.4
MAC: xx:xx:xx:xx:96:0E - GW: 10.0.0.1
O.S.: Windows XP Professional SP3 (x86)

Atacante:
IP: 10.0.0.3
MAC: xx:xx:xx:xx:1F:71
GW: 10.0.0.1
O.S.: Windows 7 Ultimate SP1 (x64)

En esta técnica no influye el tipo de sistema operativo ni la arquitectura que se utilice ya que esto es a nivel de comunicación de redes. 

[1] - Antes de realizar el ataque consultaremos como está el escenario de los equipos de la red. Primero vamos consultar la dirección MAC del atacante con el comando en Windows ipconfig /all o simplemente getmac y veremos que la MAC del atacante es: xx:xx:xx:xx:1F:71, si realizamos un ping a la dirección IP de la víctima (10.0.0.4) y después consultamos la caché de la tabla ARP del atacante, con el comando arp -a así obtendremos la MAC de la víctima (xx:xx:xx:xx:96:0E) y la MAC del gateway o puerta de enlace (en este caso un dispositivo Router: xx:xx:xx:xx:66:00) como se puede ver en la siguiente screenshot.

Figura 2: Consultando tabla ARP del equipo atacante comprobando las direcciones MAC reales.

[2] - Ahora consultamos como están las cosas por la parte de la víctima, tanto su IP address como su MAC Address, y la caché de la tabla ARP.


Figura 3: Comprobando dirección IP y dirección MAC de la víctima.
Figura 4: Consultando la tabla ARP de la víctima con las direcciones MAC originales.

Podemos ver como en la caché de la tabla ARP de la Víctima figura la dirección IP del atacante con su correspondiente MAC y lo mismo pasa con los datos de la gateway.

Ahora empezaremos el ataque, para ello utilizaremos una tool para Windows: Cain & Abel.

Una vez instalemos y ejecutemos Cain en el PC del atacante (deshabilitar antes el antimalware que tengamos ejecutándose en el PC), veremos que con esta herramienta podremos hacer casi de todo tipo de ataques. Pero me centraré especialmente en el ataque mencionado APR (ARP Poison Routing).

[3] - Nos dirigimos a la pestaña "Sniffer" y dentro de esta en el apartado "Hosts", activamos el icono de la tarjeta de red (configurada previamente para "modo promiscuo" y así poder capturar tráfico que obtendremos aunque los paquetes request y reply no vayan dirigidos al ordenador del atacante) (1), activamos el icono que se muestra con una imagen "+" (en azul) para definir el rango a escanear, en este caso voy a tiro fijo definiendo un rango de clase C (mascara de red de una longitud de 24 bits) comprendido de los hosts 10.0.0.1 hasta 10.0.0.20, pulsamos en OK (3).

Vemos que la IP y MAC de la gateway y el atacante coinciden con los datos anteriores consultados.

Figura 5: Escaneando un rango de red con Cain.

[4] - Dentro de la pestaña "Sniffer", nos dirigimos en al apartado APR (1), y seleccionamos APR en el panel izquierdo (2), para que se nos habilite la opción de poder añadir los host para realizar APR pinchamos en la la zona vacía o "blanca" del panel superior-derecho y pulsamos en el icono con una imagen "+" (en azul) (3), Se nos abrirá una ventana (4) en la que diremos que todo e tráfico de 10.0.0.4 (víctima) (5) que vaya dirigido a la 10.0.0.1 (gateway) (6) pase antes por la máquina en la que se ejecuta Cain, que es la máquina del atacante 10.0.0.3 y finalmente pulsamos OK (7).

Figura 6: Enrutando el tráfico del equipo de la víctima hacía la dirección MAC del equipo atacante con Cain.

[5] - Para finalizar el ataque, simplemente pulsamos en el botón con la imagen de icono amarillo y veremos como la víctima (10.0.0.4) está siendo poisoning (evenenada) por un tráfico ARP reply no proveniente del gateway con la MAC de este (xx:xx:xx:xx:6600), si no con la MAC del atacante (xx:xx:xx:xx:1F:71), suplantando así esta dirección en la caché de la tabla ARP de la víctima.

Figura 7: Iniciando el evenenamiento ARP de suplantación MAC con Cain.

[6] - Si ahora, con la APR ya en ejecución y la caché de la tabla ARP de la víctima ya envenenada realizamos una consulta arp -a podremos ver en el PC de la víctima que la dirección IP de la gateway (10.0.0.1) y la dirección IP del atacante (10.0.0.3) se mapea o redirige a una única misma dirección MAC, que es la del atacante (xx:xx:xx:xx:1F:71).
 
Figura 8: Consultando la tabla ARP de la víctima una vez suplantada.

Una vez realizado el ataque Man in the middle utilizaremos un sniffer de paquetes de red como puede ser Wireshark.

[7] - Con Wireshark a la escucha de la transmisión de paquetes de la red, y filtrando solo tráfico HTTP con consultas a métodos POST (de envio) en su URL. Para así caputar inicios de sesión y obtener en texto plano (Plain Text) el nombre de usuario y contraseña de páginas NO cifradas HTTP. En este ejemplo muestro un user y password del login de la página web oficial de "es.Wikipedia.org" como ejemplo.
http.request.method == "POST". 
Podemos ver que el user es "AdrianLois" y la password es "zonasystem123".

Figura 9: Filtrando tráfico con Wireshark desde el equipo atacante para interceptar las credenciales.

[8] - Filtrando el tráfico capturado por el protocolo MSNMS (MSN Messenger Service) podremos ver la dirección de correo de la víctima como también la dirección email del usuario que establece la conexión con la víctima.
  • La dirección de email de la víctima es la dirección destino 10.0.0.4, que se muestra como "xxxx...5[at]hotmail[dot]com".
  • La dirección de email del usuario/a con la que establece comunicación la víctima es la dirección destino que figura como 64.4.44.26 y que vemos como "xxxx...a[at]hotmail[dot]com".
Figura 10: Filtrando por el protocolo MSNMS para capturar la dirección e-mail de la víctima.

[9] - Las conversaciones que se establecen mediante el protocolo MSNMS utilizado para las conversaciones a tiempo real por medio de mensajería instantánea (IM - Instant Menssaging) con MSN Messenger. Estas conversaciones pueden ser capturadas en texto claro, ya que este protocolo NO cifra las comunicaciones.
Así podemos observar como la dirección IP de la víctima (10.0.0.4) envió un mensaje instantáneo con el escrito "ola q tal".
 
Figura 11: Interceptando conversación de MSN messenger.

En la segunda entrega de esta entrada, explicaré un poco: usos no adecuados o con malos fines, usos legítimos y como prevenirse de técnicas y tools de este tipo de ataques Man in the middle y la suplantación de direcciones MAC.

Saludos!

29 abril, 2012

DNS Cache Snooping con nslookup: Saber que páginas web visitan los usuarios de una organización

nslookup (Name System Lookup) podemos saber que organizaciones tienen configurado un name server (ns) y que páginas web visitan sus usuarios consultando de forma no recursiva la caché DNS del servidor de nombres.

Cuando un usuario desde su máquina quiere resolver un nombre de dominio mediante un petición DNS, éste pregunta al servidor DNS que tiene configurado. Si este tiene activada la caché, la busca y devuelve la la consulta a la máquina del usuario, si el servidor no la tiene disponible en sus caché DNS, que por defecto la almacena con un TTL (Time to live o Tiempo de vida) de unos 3.600 segundos (1 hora) aunque este tiempo es configurable en la administración del servidor DNS.

Si no la tiene en su caché la solicita por medio de un sistemas de consultas recursivas, que es la capacidad que tiene un sistema de nombre de dominios de reenviar la petición a otro servidor DNS si no disponen de la dirección solicitada en su caché DNS o en un pasado la tuvo pero ya caducó dicho dirección. Una vez resuelta la petición el servidor la almacena en su caché DNS y devuelve el resultado a la máquina que solicitó la petición.

Conociendo este funcionamiento, si alguien quiere saber si se ha resuelto un determinado dominio, simplemente tendremos que realizar las consultas anulando la resolución recursiva en el servidor DNS. De este modo, conseguiremos realizar las consultas solo a la caché del DNS. Si se ha pedido en un tiempo reciente, al indicado anteriormente por defecto en el TTL, se obtendrá la resolución, por lo contrario obtendremos una respuesta negativa de resolución.

Para hacer esta prueba, basta con que te conectes al servidor NS de una organización, selecciones el tipo de consulta como norecurse y empieces a probar nombres de dominio. En la siguiente imagen se puede ver como los clientes del DNS de Renfe se conectan a facebook pero no a mi blog.

[1] - Abrimos una shell y entramos en el modo del comando: nslookup
[2] - Ahora, establecemos un tipo de consulta para un name server (NS) escribiendo: set type=ns
[3] - A continuación ya podremos poner la website a solicitar la petición. Por ejemplo:
[4] - Seleccionamos el name server 1 (por ejemplo: ns1.correos.es), para realizar las consultas sobre este lo establecemos como servidor actual: server ns1.correos.es
[5] - Una vez seleccionado indicamos una consulta para que se nos muestre información de un host conectado a la red mediante: set type=a
[6] - Ahora lo más importante, indicamos que sobre la consulta obtengamos información NO recursiva con los argumentos: set norecurse
[7] - Y finalmente, realizamos los nombres de dominio a consultar, en mi caso escogí: www.facebook.com y mi blog (www.zonasystem.com). Si el nombre domino está en la caché DNS del servidor ns1 que seleccionamos, entonces veremos que nos responde obteniendo información de esa caché y que no realiza más preguntas a otros server DNS para resolver el nombre, por lo contrario, si pregunta a otros servidores DNS es que dicho nombre no estaba disponible en su caché actual.

En la siguiente screenshot se puede ver que www.marca.com a sido visitado recientemente (dependiendo el TTL de la caché DNS configurado para este servidor), sin embargo, www.zonasystem.com no a sido visitado recientemente, ya que como podemos observar pregunta a servidores g.gtld... para resolver el nombre de dominio.

Figura 1: Ejemplo de comprobación de la caché de los servidores ns de correos.es
Podremos obtener más información si consultamos la ayuda del comando nslookup y a su vez los argumentos tipo: set type=[opción].

Tipos de consultas de registros para los servidores DNS

A (Address): Se utiliza para traducir nombres de hosts del dominio a direcciones IP, es el valor predeterminado.
ANY (Cualquiera): Toda la información que exista.
CNAME (Canonical Name): Devuelve una lista de alias, si existen para el nombre verdadero (canonical).
NS (Name Server): Especifica el nombre para un dominio.
MX (Mail Exchange): Especifica el servidor encargado de recibir el correo electrónico para el dominio.
PTR (Pointer): Lo inverso del registro A, realiza la traducción de direcciones IP a nombres de host.
TXT (Text): Permite extraer información adicional a un dominio.

Saludos!

18 abril, 2012

Tipos de copias de seguridad

Normal o copia total: Una copia de seguridad normal, es una copia de seguridad total de todos los archivos y directorios seleccionados.

De copia: Este método es útil cuando desea realizar copias de seguridad de archivos entre copias de seguridad normales e incrementales, ya que no afecta a estas otras operaciones.

Diaria: Copia todos los archivos seleccionados que se hayan modificado el día en que se realiza la copia diaria. Los archivos incluidos en la copia de seguridad no se marcan como copiados (es decir, no se desactiva el atributo de modificado).

Diferencial: Copia los archivos creados o modificados desde la última copia de seguridad normal o incremental. Los archivos no se marcan como copiados (es decir, no se desactiva el atributo de modificado). Si realiza una combinación de copias de seguridad normal y diferencial, para restaurar los archivos y las carpetas es necesario la última copia de seguridad normal o total y de la última copia de seguridad diferencial.

Incremental o progresiva: Sólo copia los archivos creados o modificados desde la última copia de seguridad normal o incremental. Marca los archivos como copiados (es decir, se desactiva el atributo de modificado). Si usa una combinación de copias de seguridad normal e incremental, la restauración de los datos debe realizarse con la última copia de seguridad normal o total y todos los conjuntos de copia de seguridad incremental.


Saludos!

09 abril, 2012

No mostrar usuarios en el incio de sesión de la pantalla de bienvenida de Windows

Si tenemos varios usuarios en Windows y no queremos que se nos muestren dichos usuarios, en esta entrada explicaré como "ocultar" el avatar y nombre de estos usuarios que se nos muestra en la pantalla de Bienvenida de Windows. De modo que para iniciar sesión tendremos que escribir el usuario y la contraseña (si está establecida para el usuario en cuestión) para iniciar sesión en Windows.

Esta sería un ejemplo de la apariencia de la ventana de Bienvenida de inicio de sesión de Windows:

Figura 1: Ventan de Bienvenida de Windows con múltiples cuentas de usuarios.

Para ocultar todos estos usuarios y poder iniciar sesión en el sistema con ellos bastaría con aplicar una directiva.

[1] - Con privilegios administrativos: Inicio -> Ejecutar (o simplemente, Tecla Windows+R) -> y escribimos: secpol.msc

[2] - Una vez en la ventana de "Directivas de seguridad local". En el árbol, nos vamos a rama:
Directivas locales -> Opciones de seguridad -> y buscamos y habilitamos en el panel de la derecha la directiva:

Inicio de sesión interativo: No mostrar el último nombre de usuario Como ya dije, habilitamos esta directiva.

Figura 2: Consola de políticas de seguridad de Windows.

[3] - Una vez la habilitemos, podremos cerrar la ventana y cerramos sesión. Y se nos cargará una pantalla de Bienvenida con una ventana de inicio de sesión, tal como esta:

Figura 3: Ocultación del nombre de usuario. Login y password.

Ahora solo tendremos que introducir el nombre usuario y contraseña (si está establecida alguna para ese usuario), si no, tenemos contraseña solo introducimos el nombre de usuario.
Como en este caso no tengo ningún Dominio entrará por defecto en la máquina local, en caso de tenerlo, podríamos escribir:


- En caso de disponer de dominio: dominio\usuarioDelDominio.
- En caso de disponer de dominio, pero querer cambiar para entrar con un usuario local: nombreDeLaMaquina\usuarioLocal.

Si queremos podemos modificar otra GPO para que se muestre el usuario logueado (en el Winlogon) en el sistema en el momento que no cerramos sesión, sino que bloqueamos la sesión de nuestro usuario. En incio "Bloquear" o con el atajo de teclas: "Tecla Windows + L".

Para esto aplicamos la siguiente política o GPO:


En la misma consola msc, secpol.msc (Directiva de seguridad local). Nos vamos  a:
Directivas locales > Opciones de seguridad > Inicio de sesión interactivo: mostrar información del usuario cuando se bloquee sesión.

 
En esta marcamos en el menú desplegable: Nombre para mostrar del usuario, nombres de dominio y usuario. Aceptamos y listo.

Figura 4: Consola de Políticas de seguridad - directiva para no mostrar el nombre del usuario.

Ahora en el momento de bloquear sesión con nuestro usuario se nos guardará la información del siguiente modo.

Figura 5: Resultado de la directiva aplicada. Introducir solo password.

Por último, para añadirle un toque de seguridad y que no nos cierren sesión otros usuarios, si no solo cambiar de usuario pero no cerrar.

Podremos deshabilitar las opciones de: cierre de sesión, suspensión, hibernar y apagar nuestro equipo, que se nos muestra como un botón en la parte inferior-derecha del Winlogon en el inicio de sesión de Windows 7.

Para ello lo podremos hacer también mediante otra política o GPO. En la misma msc secpol.msc: Directivas locales > Opciones de seguridad > Apagado: permitir apagar el sistema sin tener que iniciar sesión. Esta política la deshabilitamos.

Figura 6: Directiva para deshabilitar el apagado del sistema en la pantalla de login de Windows.

Listo con esto ya no se nos mostrará dicha opción con el botón de apagado y de más opciones en el inicio de sesión de usuarios en Windows (Winlogon). Y como ya dije, evitaremos que se nos cierre sesión al usuario iniciado, pero manteniendo la opción (por defecto de Windows) de si poder cambiar de usuario.

Aclaro que para que hagan efecto estas directivas es necesario reiniciar el PC en el caso de esta última y bastaría con cerrar sesión en el caso de las dos primeras. Pero también podemos forzar las actualizaciones de las políticas, si escribimos en consola: gpupdate /force


Saludos!

Entradas Populares