27 febrero, 2007

Como explotan vulnerabilidades en Wireless

Si se preguntan como es que en el Black Hat del 2006 en Las Vegas, lograron tomar control de una Mac (sirve igual para PCs) en cuestión de segundos (ver video), aquí revisaremos una de las formas en las que se encuentran estas vulnerabilidades.

Nos hemos acostumbrado a proteger las vulnerabilidades en módulos de usuario con técnicas como non-executable pages, address space layout randomization (ASLR) y stack canaries, pero hemos olvidado que a nivel de kernel también existen vulnerabilidades importantes.

Requieren especial atención las vulnerabilidades en los drivers, ya que los programadores de drivers viven en un entorno totalmente diferente a los programadores para usuarios final, desde la diferencia entre los API y el hecho de que a partir de Win NT a la fecha los threads de kernel solo tienen 3 páginas de stack mientras que los de usuario tienen hasta 256KB, sin mencionar el cuidado especial que se debe de tomar en cosas como son performance, error-handling y re-entrancy.

Ya se que deben de estar pensando que es muy poco probable que hagan un ataque en un device driver ya que la mayoría no procesa datos controlados por el atacante. Pero los drivers de red son la excepción. Aunque los driver para ethernet han estado con nosotros por mucho tiempo y no han sufrido vulnerabilidades importantes, no es lo mismo de los wireless. Resulta que los ethernet hacen muy poco de procesamiento mientras que los wireless tienen que manejar una amplia gama de pedidos y exponer su funcionalidad a quien se encuentre en el rango.

Para hacer un ataque en el mundo del 802.11 nos enfocaremos en una device que se encuentre sin autenticar y sin asociar (pueden estar autenticada sin asociarse y autenticada y asociada). En este caso el cliente procesa:
  • Probe Request
  • Probe Reponse
  • Beacon
  • Autenticación
El Probe Response y el Beacon se utilizan para encontrar o publicar las redes inalámbricas locales. Utilizando estos los clientes pueden encontrar las redes de dos maneras, en modo activo el cliente mando un Probe Request con el campo de SSID vacio, cualquier AP que lo escuche responde con un Probe Response con los parámetros de la red. En modo pasivo el cliente esta en escucha de los Beacons y lee los parámetros de la red de estos.

Los paquetes tanto el Probe Response como el Beacon deben contener entre otras cosas un campo para el SSID el cuál según la especificación no debe de ser más de 32 bytes de largo. Sin embargo el largo máximo de cualquier elemento de información es de 255 bytes, lo que deja amplio margen de error en un driver mal escrito.

Para atacar el Beacon de un driver necesitamos una manera de mandar frames al device que se va a atacar. La mejor opción actualmente es la LORCON-library en C (hay una extensión para ruby), desarrollada por Joshua Wright y Michael Kershaw. Una vez familiarizados, podemos implementar un fuzzer que obliga al driver a procesar datos malformados tratando de que con uno de esos se estrelle.

Escojemos un campo en el Beacon o Probe Response que sea de largo variable, como el Information Element. Una vez que se encuentra el problema mediante el uso del fuzzer, iniciamos el proceso de ganar control del pointer de esa instrucción. En el caso de buffer overflows del stack en Windows, el proceso es tan sencillo como determinar el offset de la dirección de regreso y sobreescribirlo con la dirección de una instrucción que haga un "jump" de regreso al stack (ver otro ejemplo). Esta puede ser la parte más compleja de todo el proceso.

Una vez que se gana control del pointer de la instrucción, se hace una ejecución de código arbitrario. Para módulos de usuario este proceso esta totalmente automatizado usando Metasploit. Y en la nueva versión de Metasploit (3.0) ya se pueden implementar exploits del kernel de manera automática.

Si les interesa estudiar a mas detalle todo el proceso les recomiendo que lean un artículo por Johnny Cache, H D Moore, y skape de Metasploit.

Como siempre los invito a que dejen sus comentarios y opiniones y links al respecto .

16 febrero, 2007

THC-Hydra

Anteriormente cubrimos AccessDiver, una herramienta para hacer pruebas de penetración en tus sitos web. Ahora hablaremos de una herramienta mucho más completa y sencilla de usar que pone a nuestra disposición The Hacker's Choice.

TCH-HYDRA es una de mis herramientas favoritas para hacer pruebas de penetración. Si desean proteger su red de la mayoría de los ataques comunes hechos por script kidies y crackers, está herramienta es la opción.

Esta herramienta no hace la labor de un firewall, de proteger la red, sino que encuentra las vulnerabilidades en nuestra red. Específicamente se intenta de descubrir la vulnerabilidad más común que son los passwords. Y aunque existen varias herramientas que hacen ataques de fuerza bruta para encontrar los passwords en una red, ninguna es tan sencilla, ni tan completa como HYDRA.

Actualmente puede utilizar todos los siguientes protocolos:
TELNET, FTP, HTTP, HTTPS, HTTP-PROXY, SMB, SMBNT, MS-SQL, MYSQL, REXEC,RSH, RLOGIN,
CVS, SNMP, SMTP-AUTH, SOCKS5, VNC, POP3, IMAP, NNTP, PCNFS, ICQ, SAP/R3, LDAP2,
LDAP3, Postgres, Teamspeak, Cisco auth, Cisco enable, LDAP2 y
Cisco AAA (en el módulo de telnet)

Puede utilizarla ya sea para demostrar a los directivos, usuarios, administradores de red, etc... que tan sencillo es ganar acceso a la red, o para monitorear constantemente (léase cada semana) la vulnerabilidad de los passwords en la red y forzar políticas más estrictas.

La herramienta es muy flexible y se le pueden añadir más módulos, se tienen planeados otros módulos en un futuro de SSH v1 y Oracle y más después de esos.

Para el servicio de http/www pueden dar de alta un proxy si es que desean hacerlo mediante un proxy, si el proxy requiere que se autentifiquen también pueden dar de alta el nombre de usuario y password.

Es extremadamente sencilla de instalar y utilizar. Sólo una nota extra, la mayoría de los antivirus la van a reconocer como un programa potencialmente peligroso, no quiere decir que tenga un virus cuando lo instalen, sino que para el antivirus este programa es "malware" y trata de evitar que lo instalen, en caso de que no sepan lo que están haciendo. Así que le van a tener que dar permiso de instalarse y de utilizar su conexión al programa si están en un ambiente de windows. Este problema lo van a encontrar en todas las herramientas de penetración de redes que sean "open source" ya que al igual que hay quien las usa para bien hay quien las usa para mal y por eso los antivirus las han "blacklisted" pero si tienen privilegios de administrador, le pueden indicar al antivirus que los deje instalarlas.

Para descargar la versión para windows, la encontrarán aquí.

Como una nota final, la nueva versión añadió soporte para NTML (ahora renombrado a Integrated Windows authentication) para los módulos de pop3, imap, smtp-auth y http-proxy

Una vez más dejen sus comentarios y sugerencias

14 febrero, 2007

Cables, Monitores y lo que nos depara el futuro

Los monitores VGA y similares (XGA, SVGA) han sido el estándar por tanto tiempo, que nos hemos acostumbrado a un sólo tipo de conexión en nuestras tarjetas de video. Sin embargo la tecnología ha ido evolucionando y las conexiones VGA están dejando de ser el estándar.

Hoy en día parece que todas las tarjetas de gráficos avanzadas NO TIENEN conexión DA-15, en general encontramos una entrada de DVI y otra de S-VIDEO. La mayoría de las computadoras que están saliendo en el mercado "VISTA READY" son de este tipo, para poder desplegar la interfaz "AERO".

Pero que sucede con la mayoría de los usuarios que sólo utilizan la computara para tareas comunes como escribir documentos y hacer hojas de cálculo, ¿tendrán que cambiar de monitor?
No necesariamente existen adaptadores de DVI a VGA, pero debemos de tener en mente que las conexiones de VGA son análogas mientras que las DVI son digitales (en general).

De hecho tenemos tres tipos de conexiones DVI en los monitores
1) DVI-A, (a de análoga) que se usa para los monitores de CRT.
2) DVI-D, (d de digital) que es únicamente digital y no compatible con las análogas
3) DVI-I, (i de integrada) que es compatible con digital y con análoga.

Lo interesante resulta cuando queremos conectar un monitor CRT que es análogo a una tarjeta de video con salida DVI-D. Simplemente no se puede. La salida DVI-D es totalmente digital y el monitor CRT es totalmente análogo, así que no funcionará sin algún hardware de por medio que realice la conversión. Así que un cable DVI-I o DVI-A no entran en este tipo de tarjetas.

Entonces si tenemos un monitor CRT y una tarjeta de video DVI-D no hay opción de conectarlos directo con cables. ¿Qué sucede si tenemos la tarjeta con entrada DVI-I? en este caso podemos usar un adaptador especial para convertir la entrada de VGA a DVI-I y salimos del problema. Resulta inusual encontrar tarjetas de video con entrada DVI-A o monitores con esta entrada pero en este caso el mismo adaptador también funciona.

Para complicar más la cosas existen cables DVI "single" y "dual". Aunque para las conexiones análogas rara vez es importante la diferencia, en las digitales lo es. Los cables que son "single" mandan una señal de 60Hz con transferencia de 162 MHz para una resolución total de 1600 X 1200, mientras que los "dual" utilizan otra serie de pins para mandar más información alcanzando los 267 MHz con una resolución total de 2048 X 1536. Sin embargo no todas las implementaciones en tarjetas alcanzan estos máximos, en algunas tarjetas de menos rendimiento se ve como moteada a altas resoluciones, así que revisen primero que si alcanza esa resolución la tarjeta.

Una de las ventajas del DVI es que están diseñadas para ser Plug and Play. Se pretende que al conectar la tarjeta de video con el monitor, automáticamente se configuran para obtener el mejor rendimiento.

Pero esto no es todo, resulta que existe otra tecnología que esta empezando a cobrar fuerza en algunos monitores y es ampliamente usada en las televisiones de LCD. Es la interfase HDMI (High-Definition Multimedia Interface) que utiliza un conector totalmente diferente. Desarrollado por algunas de las compañías mas importantes en este ramo (Hitachi, Matsushita Electric Industrial (Panasonic), Philips, Sony, Thomson (RCA), Toshiba, ySilicon Image) ha tenido tremendo éxito debido a que funciona con cualquier formato de video de TV o PC incluyendo video descomprimido (DVI no soporta video descomprimido). Tambien es compatible con diferentes señales de audio como son: PCM, DVD-Audio, Super Audio CD, Dolby TrueHD y DTS-HD Master Audio.

Existen 2 especificaciones comunes de HDMI la 1.0 y la 1.3, ambas usan el mismo cable pero tienen diferentes anchos de banda. La 1.0 da 165MHz lo cuál se traduce en 1080p a 60Hz, mientras que la 1.3 alcanza los 340MHz que da mayor resolución de lo que cualquier monitor actual puede desplegar. Estamos hablando de 48bits de color lo que se traduce en billones de colores y excelente audio.

Otra de las consideradas ventajas es que es compatible con HDCP (High-Bandwidth Digital Content Protection). Sin embargo a diferencia de las televisiones, en las computadores es poco probable que logre ganar más terreno, ya que se encuentra dominado por el DVI y lo que desean mayor rendimiento están volteando hacía UDI y DisplayPort, las más recientes tecnologías.

El UDI (Unified Display Interface) intenta convertirse en el nuevo estándar, esto es en parte porque resulta ser mucho menos costoso de que DVI, en si es un rediseño del DVI para reducir costos. A diferencia del HDMI que esta dirigido al consumidor de televisiones de alta definición, el UDI está totalmente orientado a las necesidades de los fabricantes de monitores y tarjetas de video.

A diferencia del HDMI que transmite a 4.9 Gb/s el UDI alcanza 16 Gb/s. El conector es muy similar al del USB sólo que un poco más largo con 26 pins en vez de 4, aunque inicialmente sólo se usan 3 de los 26, los demás están reservados para futuras necesidades. El conector UDI es compatible con el HDMI así que una fuente UDI se puede conectar tanto a un monitor UDI como a uno HDMI. Lo que si deben tener cuidado es que el cable es unidireccional, así que no es igual la entrada que la salida.

Entre los promotores de esta interfaz están Silicon Image Inc., Intel, Apple Computer, LG, Samsung y NVIDIA. Quienes intentan hacerlo interoperable con el HDMI incluyendo soporte para HDCP, pero sin el audio y compatibilidad con DVI para poder conectar monitores DVI.

Si ya están listos para salir corriendo a comprar una tarjeta de video UDI y un monitor UDI, esperen un momento, porque compitiendo por el mismo mercado esta surgiendo un nuevo formato conocido como DisplayPort, que trae detrás a AMD, Dell, Genesis Microchip, Hewlett-Packard, Molex, NVIDIA, Philips, Samsung y Tyco Electronics.

Al parecer el grupo VESA, quienes crearon el estándar de VGA, decidieron que la conectividad de aparatos de video se ha vuelto demasiado confusa y decidieron sacar un nuevo estandár, el DisplayPort. Así que intentan unificar todos los distintos tipos de interfases en una sola y bajo un solo estándar creado por VESA. Esté va a ser compatible con UDI y con DVI pero con mayor ancho de banda y una conexión más sencilla de utilizar.

Mientras que apenas van a empezar a salir los equipos y tarjetas con DisplayPort, las UDI ya están en el mercado y las DVI lo dominan. Así que nada para nadie todavía.

En resumen, recuerden revisar las interfases que soporta su tarjeta y el monitor o televisior que tienen o que piensan comprar. También revisen si pueden utilizar un conector para no cambiar uno u el otro, por ejemplo de VGA a DVI o de UDI a DVI o de HDMI a DVI. Y recuerden comprar los cables que la mayoría de las veces no vienen incluidos y pueden afectar su presupuesto.

Dejen comentarios sobre se experiencia con las diferentes interfases y los costos asociados a las mismas por favor. ¡Gracias!




13 febrero, 2007

Access Diver

Si deseas tener un hacker a la mano que te ayude a hacer pruebas de seguridad en tu sito web sin que comprometas la información en el mismo, puedes hacer uso de accessdiver, una herramienta que piensa como un hacker y hace todo tipo de pruebas de seguridad.

Todo lo que necesitas es una PC con windows 98 en adelante y tu sitio web para hacer las pruebas.
Una vez instalado cuenta con una interfaz gráfica muy sencilla de utilizar, la cual puedes cambiar según tu nivel de experiencia. Escogiendo del menu "My Skill" te provee con 3 opciones distintas para la interface "Newbie, Familiar y Expert" También cuenta con modos especiales para hacer "prubas" específicas ya sea de Leech, Exploiter, Proxy o NetTools.

Tiene la opción de usar proxies y servidores SOCKS. Y si necesitas encontrar proxies puedes bajar GeoWhere que te permite encontrar y probar varios proxies entre otras cosas.

Si no son muy expertos en prubas de seguridad lo mejor es inciarlo en modo Newbie y empezar a familiazarse con las herramientas básicas. El primer tab muestra las opciones para realizar un ataque de diccionario. Este cuenta con un campo para el nombre de usuario y otro para el del password. Este tipo de ataque carga un "diccionario" con los nombres de usuarios y passwords y va probando uno por uno hasta encontrar uno que funcione o se termine la lista.

Es importante notar que el diccionario que trae por default utiliza nombres de usuarios y contraseñas comunes en inglés, así que deberán generar su propio diccionario con palabras comunes en español o buscar uno en la web.

Los demas tabs permiten configurar un servidor proxy o socks para realizar el ataque y la configuración básica del programa, como después de cuentas acesos encontraros parar (con uno normalmente es suficiente).

Esta herramienta muestra claramente como hacen los llamados "script kiddies" para ingresar de manera ilegal a muchos sitos web, sin necesidad de tener grandes conocimientos sobre seguridad y redes.

Dejen un comentario sobre su experiencia con AccessDiver y que les gustaría ver en próximas versiones.

ACTUALIZACIÓN:

De acuerdo con un estudio recientemente realizado por Acunetix el 70% de los sitios web tienen vulnerabilidades de seguridad de mediana y alta prioridad. Una razón más para empezar a tomar más enserio la seguiridad en nuestros sitios.