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. Por lo que, de entrada 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.

Añado 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.

Aclaro que, lo que si NO BORRARÁ será 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

Deshablilitar los recursos compartidos por defecto de Windows

Windows (XP, Vista o 7) crea una serie de recursos compartidos por defecto que están "ocultos", pero que en realidad pueden ser accesibles de una forma muy sencilla. La estructura sería:
\\nombreDeEquipo o dirección IP\nombreRecursoCompartido$. Un ejemplo sería: \\192.168.1.12\c$ para acceder al disco duro del equipo remoto. Aunque si en nuestro equipo tenemos definido un usuario con password, nos pedirá estas credenciales para poder acceder al %systemdrive% mencionado.

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

Estos recursos compartidos los cuales podemos ver si vamos a:

Mi PC > Botón derecho "Administrar" > Carpetas compartidas > Recursos compartidos. 
Aunque yo prefiero invocar directamente, a través de una ventana "Ejecutar" al fichero de consola que abre dicha ventana: fsmgmt.msc (File System ManaGeMenT). O sino abrir el administrador de equipos: compmgmt.msc (Component Management).

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

Estos recursos compartidos suelen apuntar a todas las unidades de disco que tengamos en nuestro equipo incluido unidades de almacenamiento medios extraibles, también al directorio de Windows (C:\Windows (%SYSTEMRROT%)), al spool de impresión donde se alojan los drivers de la o las impresoras, a la carpeta general de los perfiles de usuarios y por supuesto a todas aquellas carpetas compartidas que tengamos en nuestro sistema.

Esto quiere decir que cualquier individuo que pueda tener acceso a nuestra misma red local, podría acceder a las unidades de nuestra máquina.

Un detalle a tener en cuenta, es 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.

En caso de que no sea así y queramos protegernos un poco más y estar más seguros:
Para deshabilitar esto, (con privilegios adminsitrativos) podríamos hacer clic derecho y seleccionar la opción "Dejar de compartir" a cada una de nuestra unidades, pero las unidades aun pueden quedar de cierto modo accesibles... lo mejor sería deshabilitar esto por completo y creo que la única manera posible es a través de añadir un valor en una clave del registro de Windows.

Abrimos un registro de Windows: Tecla Windows + R y escribimos: regedit y pulsamos Aceptar.
Una vez en el registro, navegamos hasta la siguiente clave o ruta:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\lanmanserver\parameters
Una vez ahí creamos un valor DWORD (de 64 bits o 32 bits dependiendo la arquitectura de nuestro sistema Windows) le podremos como nombre: AutoShareWks y le asignamos un valor que sea 0.
Otra opción exactamente igual pero de forma más visual, sería DESHABILITAR el servicio de "Servidor" y a su vez sus dependencias (las cuales se nos notifican antes de deshabilitarlo).
En services.msc buscamos el servicio llamado "Servidor" el LanmanServer (LAN Manager Server) y simplemente los detenemos y lo deshabilitamos.


Figura 2: Servicio "Servidor" LanmanServer.

Saludos!

01 septiembre, 2012

Eliminar ficheros Thumbs.db de forma permanente [Windows thumbnail cache]

¿Que son los ficheros Thumbs.db?


Los archivos Thumbs.db también conocidos como "Windows Thumbnail Cache" forman parte del sistema Operativo Windows, son ficheros creados o generados cuando tenemos la vista en miniatura de las imágenes activa y de esta forma previsualizamos el contenido de la imagen o en el caso de utilizar la clasificación de "iconos grandes" poder ver como se muestra en el propio icono de una carpeta el contenido más reciente añadido a esta.

Los Thumbs.db son ficheros de caché que guardan información de las imágenes en la vista de miniaturas de la carpeta donde estás ubicado.

Esto acelera la visualización de las imágenes, de este modo al tratarse por ejemplo de muchas imágenes el procesador no es necesario que vuelva a recalcular todo, ya que este fichero al almacenar la información necesaria agiliza la operación de visualización del contenido.

Estos ficheros solo se visualizan cuando tenemos configurado en las "Opciones de carpeta" del Explorador de Windows, las opciones: 

  • Mostrar archivos, carpetas y unidades ocultos.
  • Y desmarcado el checkbox: Ocultar archivos protegidos del sistema operativo.

En seguridad estos ficheros pueden ser utilizados para análisis forenses, con los que se podrá saber si ciertas imágenes almacenadas en algún dispositivo fueron o no previsualizadas con anterioridad, entre otra información. 


¿Cómo eliminar definitivamente los ficheros caché thumbs.db?


Hay diversas maneras de hacerlo ya sea para Windows XP o Windows 7, comentaré las dos formas de realizarlo:

En Windows XP: Lo haremos mediante las Opciones de carpeta. Nos vamos a un Explorador de Windows (Tecla Windows + E) > En el menú Herramientas > Opciones. O Simplemente podemos realizar todo esto, abriendo una ventana Ejecutar (Tecla Windows + R) y escribimos: control folders, pulsamos Aceptar.

Ahora en la ventana de Opciones de carpeta nos vamos a la pestaña: Ver > marcamos: "No alojar en caché las vistas en miniatura" > Pulsamos Aceptar y listo.


Figura 1: No alojar caché de vistas en miniaturas en Windows XP.


En Windows 7: Lo haremos mediante el editor de directivas de grupo local (gpedit.msc).
Con privilegios administrativos, abrimos una ventana Ejecutar (Tecla Windows + R) y escribimos: gpedit.msc.

Una vez se nos abra la ventana de "Editor de directivas de grupo local", vamos al siguiente path: Configuración de usuario > Plantillas administrativas > Componentes de Windows > Explorador de Windows.
Buscamos la GPO: "Desactivar almacenamiento en caché de vistas miniaturas en archivos thumbs.db ocultos" y marcaremos la opción como "Habilitada".



Figura 2: Descactivar la directiva de almacenamiento de caché de vistas en miniatura (thumbs.db).

A partir de ahora nuestro sistema ya no creará nunca más ficheros "Thumbs.db".

Más información sobre el fichero Thumbs.db: http://en.wikipedia.org/wiki/Windows_thumbnail_cache


Saludos!

30 julio, 2012

Verificar la integridad de ficheros comprobando sus hashes

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


Sin entrar en cálculos mátematicos... 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:

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 linea 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 habitual:

Cree un fichero de imágen 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 linea 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, IDS/IPS - IDPS y Proxies

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 Proxies.
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 Firewall:


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 (proxies):


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 proxies 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

Las 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 logicamente 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 herramaientas, y aunque tengamos dos aplicaciones abiertas que utilizen la misma DLL para esto, a la vez en el mismo tiempo, como es lógico solo podemos hacer click 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 actulizaciones) 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 especificamente por la aplicación instalada y que únicamente las puede utilizar dicha aplicación.
Por ejemplo, un software puede que utilize 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 (necesria 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 direcctorio 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 alamacenada 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 ubicárlas 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 infinadad 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
Donde:
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 "Man in the middle [MITM]" (ARP Spoofing/Poisoning) sobre IPv4 - Parte II de II

 

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 XP o Linux:
arp -s [IP Address] [MAC Address]
Un ejemplo sería:
arp -s 192.168.1.1 00:11:22:33:44:55
Windows Vista o 7:
netsh > interface > ipv4 > add neighbords "[NombreDeLaConexiónDeRed]" [IP Address] [MAC Address]
Un ejemplo sería:
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 en el Editor de directivas de grupo local (Ejecutar > gpedit.msc) > Configuración de Windows > Scripts (inicio o apagado) > Inicio > Agregar... > y buscamos la ruta del fichero .vbs o .bat. Esto lo añade por defecto en la ruta: C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup

Dejo referencia hacía una entrada con más detalle: http://www.zonasystem.com/2017/08/como-protegerse-de-ataques-arp-spoofing.html

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


Si empezamos a notar alguna anomalía mientra navegamos por internet, como por ejemplo:

    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 certifacadora 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 (enre otros) 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, concretamente en la Capa 2 (enlace de datos o acceso) del modelo OSI).

Para que se puediera ver de una manera más clara, utilizé Wireshark, una herramienta sniffer gratuíta que nos permite captura tráfico de red. Que hace uso de Winpcap (en el caso de usarlo en Windows) que son librerías necesarias para capturar el tráfico de transmisión de datos en una red, y que trabaja a nivel de nucleo.

En las screenshots 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 úlimos, la razón es por que al estar trabanjando en máquinas virtuales las direcciones que indentifican 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 se presenta de la siguiente manera:

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.

En lo que se muestra en la screenshot de arriba, filtrando por el protocolo ARP y siguiendo el orden de tiempo.
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
Y 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 (para 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 (para 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 <Interface>
Por ejemplo:
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 direcctorio: /var/log/syslog.

Saludos!

14 mayo, 2012

Ataques "Man in the middle [MITM]" (ARP Spoofing/Poisoning) sobre IPv4 - Parte I de II



En que consiste un atanque "Man in the middle" [MITM]?


Los tipos de ataque "Man n 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ícitma. 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 dipositivos 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 targeta 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 propmiscuo 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.


Como 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)

Nota: 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 para Windows: 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 addres 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 direció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 que podemos descargar en su website oficial del proyecto: http://www.oxid.it/cain.html.

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 imágen "+" (en azul) para definir el rago 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 imágen "+" (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 imágen de icono amarillo representada por un símbolo "Tóxico" y veremos como la víctima (10.0.0.4) está siendo poisoning (evenedada) 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 caturador de paquetes de red, existen multitud de tools para esto, pero por excelencía Wireshark que podemos descargarlo en la página web oficial del proyecto: http://www.wireshark.org.

[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. Filter: 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] - Y como sabemos, las conversaciones que se establecen mediante el protocolo MSNMS utilizado para las conversaciones a tiempo real por medio de mensajería instantanea (IM - Instant Menssaging) con MSN Messenger. Estas conversaciones pueden ser capturadas en plain text, 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 instantaneo 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 mediantes técnicas y tools de este tipo de ataques Man in the middle y/o 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). Podremos saber que organizaciones, que tengan configurado un name server (ns), que páginas web visistan sus usuarios consultando de forma no recursiva la caché DNS del servidor.

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. Como hiba diciendo, 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 donimio 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 visistado 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!

14 abril, 2012

Fragmentación y desfragmentación de un disco duro (HDD)

 

Que es la fragmentación?

Figura 1: Diseño lógico de un plato o disco de un HDD.

La fragmentación de ficheros, son los espacios huecos de memoria de un dispositivo de almacenamiento mecánico-eléctrico, como es un disco duro o HDD (Hard Disk Drive).
Se produce principalmente, por la eliminación de archivos de nuestro disco duro. El sistema operativo junto a un formato de ficheros gestiona estos espacios. Los ficheros se almacenan de forma dividida (fragmentados) y repartidos por diversos clusters del disco duro.
Los clusters (o unidades de asignación y la parte más pequeña de almacenamiento) que son conjuntos contiguos de sectores de pista (los sectores de pista son la parte física más pequeña del disco duro, no de almacenamiento) son espacios contiguos de memoria en la que se almacenan los ficheros, un fichero puede estar almacenado y ocupar el tamaño de uno o varios clusters. El tamaño de este puede variar entre una asignación de 0'5KB a 64KB, aunque esto dependerá del valor del "tamaño de la unidad de asignación" y del formato de ficheros (NTFS o FAT32) que seleccionemos para la asignación de la partición que definamos a la hora de formatear un dispositivo de almacenamiento.

Cuando se crean o eliminan ficheros se crean fragmentadas partes de estos de forma no contigua en el disco, la cual dificulta la rapidez para acceder a ellos, ya que el disco tiene que buscar todos los fragmentos, las partes del fichero, para poder abrir dicho fichero, si estan en zonas distantes y diversas el disco tardará más en mover sus brazos y cabezas. Los archivos eliminados dejan espacios a 0 pero no siempre vacíos, si creamos un fichero este se almacena en nuevos espacios y en espacios donde se almacenaban los ficheros que un pasado elimináramos, esto es por el sistema de ficheros (dependiendo que file system y que OS utilicemos, en ese aspecto ya no voy entrar, ya que lo explicaré de forma general), un valor 0 igualmente es un valor, y un valor vacío es un valor libre en el cual se podría escribir nuevamente en el.


Tamaño de archivos y Tamaño en Disco.


Por poner un ejemplo: Si un archivo tiene un tamaño de 2KB y un cluster de nuestro disco duro tiene un espacio de 10KB, le archivo va ocupar en el disco 10KB aunque realmente ocupa 2KB sobrarían entonces 8KB que no se van a poder rellenar y quedarán desperdiciados. La teoría dice que los sistema operativos y sus sistemas de ficheros ajustan el cluster al tamaño del fichero en el caso de que este sea inferior, pero no es así.

Otro detalle de esto es que el tamaño "comercial" de un disco, cómo te lo venden los fabricantes, cuando lo comprobamos notaremos que nos quitan unos pocos GB dependiendo el tamaño del HDD. Por ejemplo, un disco duro que a la venta está marcado con un tamaño de 500 GB, estos se refieren a 500.000.000 bytes, pero para convertir bytes en megabytes, se divide por 1024 y no por 1000, (es decir por múltiplos binarios y no de diez) y de MB a GB lo mismo entonces sería: 500.000.000 / 1024 / 1024 = 476 GB aprox. Es decir que se pierden 4 GB.
Esto ya lo mencionara en otro artículo donde hablo del Estandar 80000 (Prefijos decimales y binarios del sistema internacional).


Tipos de Fragmentación?


Existen dos tipos de fragmentaciones: fragmentación interna y fragmentación externa.
De forma rápida sería:

Fragmentación interna: Hablaríamos de un cluster y el espacio que sobra hasta complentar el cluster, es espacio vacio y desperdiciado.

Fragmentación externa: Serían los espacios de memoria, clusters enteros, con valor 0 y no vacía, en los cuales ya no se podrían escribir en ellos y quedarían en desuso.



Figura 2: Diferencias entre fragmentación: interna y externa

Que es la desfragmentación?


La desfragmentación, es el proceso inverso a la fragmentación, es decir, antes explicaba que se desperdiciaban espacios de memoria y al eliminarlos muchos de estos espacios quedaban inservibles y desperdiciados. La desfragmentación es el proceso que nos intentará agrupar y ordenar moviendo los fragmentos de los respetivos ficheros y que queden de forma contigua.

Aclaro, que la desfragmentación no optimiza el sistema si no la rapidez de acceso a los ficheros guardados en este.
Cuanto mayor sea nuestra partición o volumen, y modficaciones en los ficheros hiciéramos, mayor será el tiempo de desfragmentación.
Para ahorrarnos tiempo y también mucho es mucho más aconsejable para aprovechar un tanto por ciento más de espacio de almacenamiento en el disco, es crear varias particiones de tamaños proporcionados al espacio total del disco duro, en especial para discos duros de hoy en día que pueden ser de 1'5TB o 2TB.

Hay archvios, como el archivo de paginación (swap) o la memoria de intercambio en Windows, que no se pueden mover o archivos que se estén ejecutando por el sistema operativo que no se podrán reajustar después de una desfragmentación, debido a que están en constante uso.


Es necesario desfragmentar discos/unidades de almacenamiento de estado sólido SSD?


Ahora con la llegada al mercado de los discos SSD (Solid State Drive), los cuales ya no se basan en piezas mecánicas (como el brazo, motor, cabeza lectora, plato de almacenamiento físico, etc...) como lo hacían los HDD, si no que almacenan su contenido en componentes de memorias tipo Flash.

Un SSD puede estar fabricado con diversas arquitecturas, aunque lo más común es que utilicen memorias NAND (de puertas lógicas) para almacenar sus datos en celdas. Hoy en día hay dos tipos para esta forma de almacenamiento: 


SLC (Single-Level Cell): utiliza dos un bit por cada celda de información (0 o 1).


MLC (Multi-Level Cell): utiliza un espacio de dos bits por celda (00, 01, 10 y 11). Dando lugar a la posibilidad de que ocurran mayor cantidad de errores, ya que si se daña/corrompe solo una pequeña parte de la memoria perderemos más datos de almacenamiento.
Con esta información podemos decir que son mejores los SLC, aunque dada su estructura permiten una menor capacidad de almacenamiento y además suelen ser más caros.

Para la desfragmentación de los discos duros (HDD):
Cuando se realiza una desfragmentación es importante: NO modificar/mover/eliminar/ejecutar ningún fichero, así como tener los mínimos servicios iniciados y de más. Aconsejo, hacer a modo "prueba de fallos" (safe mode).

Por ello, estaría bien realizar una desfragmentación durante el arranque del sistema y para esto quiero presentar con una herramienta con la que me tropecé recientemente.

Defraggler es una herramienta gratuíta y completa que forma parte de la entidad Piriform (si algunos recordais, es la misma empresa nos brinda CCleaner). Esta a parte de desfragmentar las diversas particiones que tengamos en nuestro disco y otros discos conectados a nuestro equipo, podremos realizar una desfragmentación durante el arranque del sistema.



Figura 3: Defraggler analizando HDD.

A mayores, nos permite múltiples opciones, listados e informes para conocer en detalle las velocidades de en las que accedemos a ficheros de nuestro y disco, el estado,  y de más características.
Nos permite realizar dos tipos de desfragmentación: rápida y normal (la cual es más larga. pero más precisa).
Otro detalle es que nos permite desfragmentar carpetas y archivos. Y realizar desfragmentaciones programadas.

Otra opción pero más básica sería el propio desfragmentador de Windows 7. Que lo podremos encontrar en: Inicio -> Todos los programas -> Accesorios -> Herramientas del sistema -> Desfragmentador de disco. O también escribiendo: dfrgui en una ventana Ejecutar. (dfrgui.exe se encuentra en el path: Windows\System32).


Figura 4: Desfragmentador de discos por defecto de Windows.

No es tan detallado, como Defraggler ni con tantas características. Pero si dispone de un programador horario para la desfragmentación de los discos. Los principales inconvenientes es que no incorpora un desfragmentador para el arranque del sistema ni siquiera muestra detalles de velocidades ni ningún valor informativo. Esto no significa que desfragmente peor que Defraggler.

Tanto Defraggler como el desfragmentador interno de Windows (dfrgui.exe), son buenos y realizan su trabajo.

Fuente de imágenes (editadas): Wikipedia.org


Saludos!
Entradas Relacionadas