29 de diciembre de 2010

OWASP Cheat Sheets Series - Hojas de Trucos de OWASP

A veces es necesario tener a mano soluciones rápidas y eficientes para evitar tener que releer todo un libro buscando aquel truco que sabemos que hemos leído pero que no recordamos a perfección como era  o dónde fué exactamente que lo leímos. Por otro lado si bien "googlear" es a veces la solución más rápida, tratándose de prevención y seguridad pudieran existir diferentes "soluciones" o puntos de vista, y tratando se escoger las apropiadas podríamos perder un tiempo preciado.

Cuando se trata de seguridad de aplicaciones, tener a mano una lista de trucos eficientes que nos ayuden a prevenir ataques a la hora de generar código o plantear soluciones integradas de protección puede ser una ayuda invaluable.

Pensando precisamente en lo anterior, la gente de OWASP ha creado las listas u hojas de trucos o "cheat sheets", para tener a mano de forma rápida la información de seguridad necesaria para aplicar las técnicas correctas cuando estemos ensamblando y programando las rutinas esenciales de nuestras aplicación.

Estas hojas de trucos  o "cheat sheets" son varias, y a continuación les muestro los enlaces de las más conocidas y útile a mi parecer:

Sin duda como podrán apreciar al leerlas son documentos eficiente que van directo al grano en lo referente a explicar los procesos de los tipos de ataque pero sobretodo en lo que se refiere a las técnicas de prevención necesarias a la hora de ensamblar y crear código. Espero que les sean de utilidad.

Hasta la próxima...

OWASP - Checklist de Prácticas de Código Seguro

Un documento muy importante creado por OWASP es el que se refiere a cómo ser programadores "seguros", aclarando específicamente una por una las prácticas que debemos seguir cuando generamos código para aplicaciones web. Este documento es precisamente la Guía de Desarrolo Seguro de OWASP.

Espero que tengan tiempo para leer esos documentos tan importantes que tocan a fondo temas actualizados referentes a seguridad web, pero quizás pensando precisamente en que no todos los programadores tenemos el tiempo necesario para ello OWASP ha redactado un checklist de prácticas de código seguro que puede descargar en este enlace.

Sin embargo si es de aquellas personas que cree que mediante ayuda visual puede mejorar su captación entonces el siguiente video grabado en OWASP AppSec USA 2010 le será de gran ayuda para comprender los temas y la terminología de seguridad web involucrada.




Hasta la próxima!

18 de diciembre de 2010

Tipos de ataques de DoS basados en fallas de la aplicación.

Cuando hablamos de DoS y DDoS podemos referirnos a muchos tipos diferentes de ataque que en definitiva lo que buscan es obligar al servidor a dejar de ofrecer el servicio. Sin embargo desde el punto de vista de la seguridad de aplicaciones web hay ciertos tipos de DoS (los más comunes) en los que no entraremos en explicaciones ya que no atacan directamente a la aplicación sino a los diferentes servicios necesarios para que esta pueda seguir en línea. Este tipo de ataques se denominan "Network based DoS Attacks" o Ataques de Dos basados en Redes y tratan primordialmente de explotar vulnerabilidades o limitaciones de los protocolos de red de las diferentes capas del protocolo TCP/IP.

Hablaremos hoy de un tipo de ataque de DoS que como programadores nos conciernen directamente y que se apoyan en fallas o vulnerabilidades de la aplicación. Aunque menos populares dichos ataques, son mucho más eficientes, ya que basados en vulnerabilidades en código de aplicación o de base de datos, suelen en muchos menos intentos consumir los recursos del servidor de forma muy eficaz.

Podemos dividirlos según OWASP en los siguientes:
NOTA: todos los enlaces llevan a la página correspondiente de OWASP en la que se trata acerca de cómo verificar y corregir el tipo de fallo que pudiera ocasionar estos tipos de ataque.

  1. SQL Wildcard Attacks.
    Son aquellos que se basan en desarrollar consultas que consumen gran cantidad de recursos del servidor SQL y aunque atacan a varios tipos de servidor SQL suelen preferir el MS-SQL por la cantidad de "wilcards" disponibles en las sentencias LIKE.
  2. DoS Locking Customer Accounts.
    Uno de los sistemas de defensa de las aplicaciones con validación de usuarios es la utilización de bloqueo de estos luego de una cantidad de intentos fallidos. Este mecanismo de defensa se convierte en un arma de negación de servicio bajo este tipo de ataque.
  3. DoS Buffer Overflows.
    La intención es hacer que una vulnerabilidad de Buffer Overflow en el control de la capacidad de los datos recibidos, se convierta en un arma que no permita que las rutinas completen y por ende liberen los recursos solicitados.
  4. DoS User Specified Object Allocation.
    Suele suceder cuando un usuario tiene la capacidad de solicitar multiples copias de un objeto a ser creado en el entorno del servidor sin un límite superior, lo que podría generar que dicho entorno quedara sin memoria disponible.
  5. User Input as a Loop Counter.
    Se produce al forzar a la aplicación a entrar de forma repetitiva en un bucle de código que consume gran cantidad de recursos.
  6. Writing User Provided Data to Disk.
    El objeto de este tipo de ataque es obligar al servidor a quedar sin suficiente espacio en disco, bien escribiendo datos provistos por el usuario, o llenado los archivos de logs de forma que crezcan lo suficiente como para acaparar el espacio en disco.
  7. DoS Failure to Release Resources.Este ataque se debe a la falla del programador o del entorno de desarrollo en liberar eficientemente los recursos utilizados por la aplicación. Suele suceder con mucha frecuencia especialmente al no liberar conexiones y sets de registros de bases de datos que consumen recursos por encima del promedio de otro tipo de objetos.
  8. Storing too Much Data in Session.
    Sucede cuando como el nombre lo indica, se guardan demasiados datos en la sesión del usuario, específicamente si el usuario no es un usuario autentificado, por lo cual el atacante no necesita de mucho esfuerzo para dejar a la aplicación sin recursos en el pool de memoria.

Hasta la próxima...

14 de diciembre de 2010

Los diez(10) tipos de vulnerabilidades de bases de datos más comunes

Aunque el tema no está relacionado directamente con las aplicaciones web, es importante para su sano funcionamiento, proteger de forma correcta los datos que estas utilizan y definitivamente proteger las bases de datos no es una tarea fácil, sobretodo porque a menudo los ataques que van tras las más simples vulnerabilidades son lo que tienen más éxito.

De acuerdo con Alex Rothacker, gerente AppSec's Team SHATTER (Security Heuristics of Application Testing Technology for Enterprise Research), su equipo ha encontrado 10 tipos comunes de vulnerabilidades base de datos por las que las organizaciones padecen ataques una y otra vez.

El hilo común de esta lista es que rara vez las bases de datos salen al mercado "security ready", y su configuración de seguridad no es un un trabajo de "hacer y olvidar" para los administradores de base de datos.

Las organizaciones deben evaluar continuamente los paquetes de su software de base de datos para determinar si son realmente necesarios y desactivar los que no son necesarios para reducir las superficies de ataque. Tienen que ser cuidadosos en controlar los campos en las búsquedas para prevenir inyecciones y tener conciencia de la debilidad en las credenciales de inicio de sesión. Y lo más importante, es necesario aplicar los parches de actualización de la casa matriz con regularidad.

Alrededor de la mitad de las vulnerabilidades nombradas por Rothacker y su equipo están directa o indirectamente relacionadas con las prácticas flojas de gestión de parches en el entorno de base de datos. Ese es un pensamiento aterrador considerando sólo el 38% de los administradores aplican los ajustes de seguridad en sus bases de datos Oracle en el ciclo de revisión inicial de tres meses. Y casi un tercio de ellos toman un año o más para aplicar el primer parche.

Dele una mirada a los 10 tipos de vulnerabilidades de bases de datos más comunes.

1.- Nombre de usuario/password en blanco, por defecto o débil.

No es nada raro conseguir en el día a día pares de usuario/password como sa/1234, esta el la primera línea de defensa y un punto fundamental de la armadura de nuestras bases de datos. Es importante hacer revisiones periódicas de credenciales.

2.- Inyecciones SQL.

Cuando la plataforma de base de datos falla para desinfectar las entradas, los atacantes son capaces de ejecutar las inyecciones SQL de forma similar a como lo hacen en los ataques basados en Web, lo que les permite elevar sus privilegios y obtener acceso a una amplia gama de funcionalidades. Muchos de los proveedores han dado a conocer soluciones para evitar estos problemas, pero no servirá de mucho si los parches no se aplican o no se toman los correctivos correspondientes.

3.- Preferencia de privilegios de usuario por privilegios de grupo.

Las organizaciones necesitan garantizar que los privilegios no se les den a los usuarios por asignación directa quien finalmente los recogerán como los conserjes recogen las llaves en sus llaveros. En cambio, Rothacker recomienda que los usuarios sólo reciban privilegios por parte de grupos o funciones y que  los privilegios sean manejados colectivamente. De esta forma será más fácil eliminar derechos a un usuario con simplemente eliminarlo del grupo, sin que queden derechos ocultos u olvidados asignados a dicho usuario.

4.- Características y funciones de base de datos innecesariamente habilitadas.

Cada instalación de base de datos viene con paquetes adicionales de todas las formas y tamaños que en su mayoría rara vez son utilizados por una sola organización. Dado que el nombre del juego en materia de seguridad de base de datos es el de reducir las superficies de ataque, las empresas necesitan buscar los paquetes que no utilizan y desactivarlos. Esto no sólo reduce los riesgos de ataques (0)day a través de estos vectores, sino que también simplifica la gestión de parches.

5.- Configuración de seguridad ineficiente.

Del mismo modo, las bases de datos tienen una gran cantidad opciones de configuración y consideraciones diferentes a disposición de los administradores para ajustar el rendimiento y funcionalidades mejoradas. Las organizaciones necesitan conseguir y desactivar aquellas configuraciones inseguras que podrían estar activadas por defecto para mayor comodidad de los DBA o desarrolladores de aplicaciones. Las configuraciones de bases de datos en producción y desarrollo deben ser radicalmente diferentes.

6.- Desbordamientos del búfer.

Otro favorito de los piratas cibernéticos, las vulnerabilidades de desbordamiento de búfer, son explotadas por las inundaciones de las fuentes de entrada con valores diferentes o muy superiores a los que aplicación espera - por ejemplo, mediante la adición de 100 caracteres en un cuadro de entrada pidiendo un número de Seguro Social -. Los proveedores de bases de datos han trabajado duro para solucionar los problemas técnicos que permiten estos ataques se produzcan. Esta es otra razón por la cual los parches son tan importantes.

7.- Escalada de privilegios.

Del mismo modo, las bases de datos con frecuencia exponen vulnerabilidades comunes que permiten a un atacante escalar privilegios en una cuenta con privilegios bajos hasta tener acceso a los derechos de un administrador. A medida que estas vulnerabilidades son descubiertas, los proveedores las corrigen y los administradores deben mantener las actualizaciones y parches actualizados.

8.- Ataque de denegación de servicio.

El caso del SQL Slammer es siempre un ejemplo muy esclarecedor de cómo los atacantes pueden utilizar las vulnerabilidades de los DBMS para derribar los servidores de base de datos a través de un alto flujo de tráfico. Aún más ilustrativo es el hecho de que cuando el Slammer atacó en 2003, un parche ya estaba por ahí que se dirigió a corregir la vulnerabilidad por la que se generó su ataque. Hoy en día siete años más tarde, SQL Slammer todavía está dando dolores de cabeza en los servidores no actualizados.

9.- Bases de datos sin actualizar.

Esto podría sonar repetitivo, pero vale la pena repetirlo. Los administradores de base de datos a veces no aplican un parche en el momento oportuno porque tienen miedo de este dañe sus bases de datos. Pero el riesgo de ser hackeado hoy es mucho más alto que el riesgo de aplicar un parche que descomponga la base de datos. Además existen ante esos temores los backups y las réplicas. Quizás este punto pudo haber sido válido hace cinco años, pero los proveedores ahora tienen mucho más cuidado con sus arreglos.

10.- Datos sensibles sin cifrar, tanto en reposo como en movimiento.

Tal vez sea una obviedad, pero las organizaciones no deben almacenar los datos sensibles en texto plano en una tabla. Y todas las conexiones a la base de datos siempre que manejen datos sensibles deben utilizar el cifrado.

Cualquier comentario al respecto será bienvenido...
Hasta la próxima.

4 de diciembre de 2010

¿Que es un Pen-Test? Herramientas de Pen-testing

Si usted está de alguna manera involucrado con cualquiera de las áreas de las tecnologías de información y no sabe lo que significa "Pen-test" o "Pen Test", y cree que el término trata quizás acerca de las formas de probar un bolígrafo, debiera entonces pensar en leeer este artículo detenidamente.

Pen Test es como comunmente se denomina a los "Test de penetracion" o en inglés "Penetration Tests", y son en conjunto la forma de denominar a una serie de técnicas utilizadas para evaluar la seguridad de redes, sistemas de computación y aplicaciones involucradas en los mismos.

Un Pen Test, no es tarea fácil y requiere de un conocimiento sólido y profundo de las tecnologías involucradas en los sistemas, aplicaciones y servicios, además de una óptica y experiencia amplia en el comportamiento de varios sistemas operativos. Mediante estas técnicas, el Black, White o Ethical Hacker puede descubrir vulnerabilidades en el sistema estudiado, y usarlas para obtener acceso al mismo, por lo que está técnica se diferencia entre otras cosas del "análisis de vulnerabilidades" en  que en este último una vez detectadas las vulnerabilidades no son usadas para penetrar el sistema.

Ahora bien, déjeme aclararle un punto importante: Sus sistemas o aplicaciones, por muy bien o mal protegidos que usted crea que se encuentren, pueden ser objeto de un Pen Test con o sin su consentimiento en cualquier momento, por lo que es importante entender que descubrir las fallas de los mismos mediante el uso de las herramientas para ello, puede ser una gran ventaja a la hora de la defenderse de futuros intentos de penetración.

Las herramientas disponibles para efectuar estas pruebas de penetración pasan por varios grados de complejidad, y el manejo de algunas de ellas puede ser todo un reto a la inteligencia y sagacidad del atacante o "pen-tester". Entre ellas se incluyen desde scanners de puertos, complejos algoritmos para descifrar claves, sistemas de intrusión por fuerza bruta, herramientas de sniffing de redes y penetración de firewalls, así como también herramientas de escaneo de vulnerabilidades de aplicaciones web y mucho más. Todo un mundo de aplicaciones en su mayoría desarrolladas para entorno Linux (el entorno preferido para este tipo de trabajo) con las cuales el proceso de intento de penetración se hace mucho más "simple". Estas herramientas suelen estar agrupadas en lo que se conoce como "Toolkits" o juegos de herramientas.

Algunos "toolkits" son muy famosos en el medio por la eficiencia de sus herramientas y por haber sido utilizados en penetraciones de alto nivel a sistemas que se consideraron es su tiempo fortalezas impenetrables. Algunos además se consiguen inclusive en formato de LIVE CD o ISO, de forma que las herramientas ya están integradas e instaladas en un CD de arranque del sistema operativo con el que trabajan y son portátiles.

Uno de los mejores pen-testing toolkits y más recomendados por todos los expertos es Backtrack , aunque en realidad puede llegar a ser muy complejo el uso de sus herramientas. Personalmente no creo haber llegado jamás a usarlas todas.

Claro está si usted no es un experto este tipo de herramientas pudieran ser muy complejas en su uso, pudiera ser muy interesante que usted "penetrara" en el mundo de las herramientas de pen-testing a través de la mano de este libro: Penetration Testers Open Source Toolkit

Ahora bien, si usted solo quiere tener a mano ciertas herramientas que le permitan verificar la calidad de sus sistemas de foma no tan sofisticada y compleja, existe un toolkit rápido para Windows llamado Net Tools  que puede hacer muy bien buena parte de los trabajos simples. En este se unen algunas herramientas simples y básicas con otras más complejas como Nmap (excelente herramienta de análisis de redes) -  y Wireshark (el más famoso analizador de protocolos de red.) que creo deberá descargar aparte.

Hasta la próxima...

1 de diciembre de 2010

¿Qué es el Google Hacking Database (GHDB)?

Google es entre muchas otras cosas el buscador con la mayor cantidad de páginas indexadas en el mundo y la mayor cantidad de búsquedas diarias, y precisamente por eso es una fuente inagotable de recursos y de información sobre cualquier tópico relacionado con la web. Es de suponer que una fuente de información de este tipo también puede ser usada para fines no muy éticos.

No hablamos de obtener información específica con fines no necesariamente legales. Tampoco se trata de utilizar las búsquedas para recoger información específica para hacer minería de datos. Esta vez hablamos (aunque pudiéramos relacionar algunos casos con las anteriores) de utilizar el mejor buscador del mundo para buscar aplicaciones web vulnerables a ciertos tipos de ataque o utilizar la información obtenida para mejorar la eficiencia de ataques pre-configurados.

¿Cómo puede ser esto? ¿Es verdad que a través de Google se pueden descubrir vulnerabilidades específicas? Pues es cierto, con el conocimiento necesario se pueden manejar las consultas para que nos provean de una lista de sitios que tienen una vulnerabilidad en común.

Es fácil, todo el tiempo oímos acerca de nuevas versiones de software (manejadores de contenido, servidores web, aplicaciones web pre-elaboradas) en las que se corrigen determinado tipo de vulnerabilidad. A veces esta información es colocada en línea para informar a los usuarios y desarrolladores lo cual es lógico, sin embargo de forma inocente al mismo tiempo se le informa a los atacantes acerca de una vulnerabilidad no conocida de la versión anterior. Así de sencillo.

Un ejemplo: El software para manejo de contenido que llamaremos "X" acaba de ser mejorado para resolver una vulnerabilidad de inyección de SQL, por tanto el atacante lo único que necesita hacer es ubicar una característica visible en la versión anterior de "X" que lo diferencie de la versión que no posee la vulnerabilidad. Algunas veces se trata de buscar una inocente cadena de texto como: "Powered by X version x.xxxx". Otras veces se trata de buscar un cambio en el nombre de un archivo o un cambio en el hash resultante del mismo.

Este tipo de búsqueda se realiza de forma sistemática y eficiente, parametrizando la cadena de búsqueda de Google con los "operadores" que pone a nuestra disposición el buscador y combinándolos de forma inteligente se puede afinar la búsqueda en un grado impresionante.

Par ver un listado de operadores de Google, puede visitar: http://www.googleguide.com/advanced_operators_reference.html
En este sitio encontrará una lista muy interesante de los operadores de Google para diferentes aplicaciones (stocks, groups, phonebook...) junto con su uso específico. Luego de apreciar algunos de los operadores que le parecerán sin dudad muy potentes, es muy posible de que no se haya percatado que estos operadores pueden además combinarse para hacer las búsquedas mucho más eficientes.

Por ejemplo, una búsqueda como: site:elsitio.com filetype:pdf  puede arrojar como resultado todos los archivos de formato "pdf" del sitio que coloquemos junto al operador "site:". Esta es una muestra de dos operadores muy potentes trabajando juntos. Con un poco de imaginación usted podrá entender con este simple ejemplo las razones por las que Google es la herramienta preferida de los atacantes y entenderá también como la distancia y el idioma dejan de ser barreras, ya que solo es necesario que un sitio tenga una vulnerabilidad detectable para que pueda ser accedido por los atacantes. Ah se me olvidaba el idioma, pero se preocupe, para eso existe Google Translator (el que además puede ser utilizado como "proxy" para evitar ser detectados en los test de penetración). Ah... se me olvidaba, si lo que quiere es ubicar un proxy ¡solo tiene que hacer la consulta correcta!

Quizás la idea es hacerle entender con lo anterior que su aplicación no se encuentra ya protegida por el enorme cúmulo de sitios web y aplicaciones en la red, tampoco la distancia ni el idioma son un obstáculo para el atacante. Ya no basta protegerse bajo la estrategia de la aguja en el pajar. Los operadores de Google pueden separar las agujas de la paja de forma rápida y hasta podría decirse que tan eficientemente como un verdugo experimentado aniquila a su víctima. 

Para más información puede acceder a la página:http://www.hackersforcharity.org/ghdb/
Allí podrá obtener información acerca de todos los tipos de consultas relacionados con vulnerabilidades que pueden ser detectadas mediante el uso de GHDB. También puede recurrir al libro Google Hacking Database for Penetration Testers, su versión "Volume 2" está bastante actualizada. Por otro lado allí podrá aprender la forma de combinar dichos operadores dependiendo del caso a tratar.

Le aseguro que no podrá volver al libro muchas veces, ya que pasará una gran cantidad de tiempo haciendo pruebas con el buscador entre un capítulo y otro, o mejor dicho, entre un párrafo y otro ;)

También es importante hacer notar que Google permanentemente hace esfuerzos por reducir la superficie de ataque proporcionada mediante los métodos de búsqueda avanzada y sus operadores por lo que algunos de los ejemplos del libro y del GHDB Central no son ya operativos. Claro aquí es donde su creatividad puede ser la diferencia.

Nota Importante: La información mostrada en el artículo se expone con fines estrictamente educacionales para ser utilizada como ayuda en la mejora de la seguridad de las aplicaciones web. No nos hacemos responsables del uso indebido de esta información por parte del lector.

Entradas populares