martes, 23 de agosto de 2011

CMS Fingerprinting – I


Durante las auditorías web es común necesitar identificar las tecnologías utilizadas así como cualquier posible sistema web y sus versiones, como pueda ser un sistema de foro, un CMS de blog, etc.

Según la metodología utilizada para ello disponemos de diversas herramientas, en este primer post vamos a ver cómo realizar la identificación del CMS utilizado gracias a un análisis de contenido dinámico.

Para ello, vamos a utilizar el programa WhatWeb, de la empresa morningstar IT security. WhatWeb utiliza, por defecto, una única petición HTTP y analiza las cabeceras de las mismas para intentar obtener información acerca de la solución software utilizada y su posible versión, veamos un ejemplo:


Sin indicarle ninguna opción, WhatWeb ha realizado una petición a la dirección indicada y ha analizado diversa información como cabeceras, metatags, cookies, etc, detectando un sistema de foros PHPBB versión 3.

Además de realizar un análisis de contenido dinámico, WhatWeb tiene la posibilidad de aumentar el intento de pruebas para obtener mayor información de la versión utilizada.
Pongamos un ejemplo, estamos realizando una auditoría web y hemos obtenido que la página web en cuestión utiliza Joomla, pues bien, con WhatWeb podremos intentar obtener información acerca de la versión utilizada de la siguiente manera:


Como podemos ver, ha acotado bastante la versión de Joomla utilizada, sólo ha hecho falta indicarle el plugin a utilizar para las pruebas (actualmente WhatWeb cuenta con casi 900 plugins...) y decirle el nivel de agresividad que queríamos utilizar.

En siguientes entradas veremos otros métodos de fingerprinting de página web.


lunes, 22 de agosto de 2011

Análisis estático de código con RATS


Durante el proceso de desarrollo, o mantenimiento, de software es necesario prestar atención a todos los aspectos relacionados con la seguridad del mismo y no únicamente al aspecto y/o funcionalidades del mismo.
Entre las acciones que se han de llevar a cabo para vigilar el nivel de calidad en cuanto a términos de seguridad se refiere, nos encontramos con la auditoría de seguridad de caja blanca de todo el código fuente. A pesar de que dicho proceso pueda realizarse manualmente revisando miles y miles de líneas de código es una tarea repetitiva y tediosa que puede automatizarse en gran medida.

Existe gran diversidad de software destinado a ayudar a la auditoría de código (semi)automatizada y, dependiendo del lenguaje auditado, de las necesidades de creación automatizada de informes, etc, necesitaremos usar uno u otro.
En este caso vamos a utilizar RATS (Rough Auditing Tool for Security), de la empresa Fortify y disponible como herramienta Open Source, para analizar de forma estática un programa en C y buscar de forma fácil vulnerabilidades en el mismo.

Para ello, vamos a utilizar el siguiente código:

int main(int argc, char *argv[]){
char buffer[10];
strcpy(buffer, argv[1]);
}

Es un código muy simple que, lo único que hace, es copiar el primer parámetro que se le proporcione en el array de char llamado buffer, sin realizar ningún tipo de comprobación previa. Ello, dependiendo de dicho parámetro, puede conducir a un stack buffer overflow, lo que podría provocar la ejecución de código arbitrario mediante la explotación de dicha vulnerabilidad. Es un ejemplo simple, pero nos servirá para la prueba de RATS.

Primero será necesario instalar RATS, o bien con un conocido ./configure, make, make install o bien directamente del repositorio según la distribución.
La forma más sencilla de ejecución de RATS es indicando únicamente el fichero, o directorio, que contiene el código fuente a auditar.


Como podemos ver en la imagen, RATS ha encontrado que se utiliza un buffer de tamaño fijo, así como la función strcpy, y nos avisa de que ambas acciones son peligrosas y pueden conllevar un desbordamiento de memoria.

Entre las distintas opciones disponibles, existe una que considero que puede resultar de gran utilidad, la opción --xml. Con ella, la salida de RATS se nos mostrará formateada en XML, por lo que podremos volcarlo a un fichero para su posterior tratamiento.
Un ejemplo de dicho tratamiento podría ser un script de entrada en un repositorio SVN para comprobar el número y gravedad de vulnerabilidades y, según los resultados, permitir o no hacer el commit (gracias Leo por la idea).

Esto es sólo un ejemplo muy sencillo pero que vale para demostrar la utilidad de herramientas como RATS que pueden ayudar en gran medida en los tediosos procesos de revisión de código, siempre sin olvidar que se realiza un contenido estático basado en las funciones utilizadas (en RATS dichas funciones peligrosas se declaran en ficheros XML, lo que permite una rápida modificación o expansión de las mismas) y que siempre será necesaria la revisión manual debido a posibles falsos positivos y/o falsos negativos.

Espero que a alguno de vosotros os sea de utilidad en algún momento, saludos.



miércoles, 22 de diciembre de 2010

Scripts para Nmap - Más allá del -T4 -A

Buenas a todos, esta vez quería escribir algo acerca de una funcionalidad de Nmap bastante menos conocida comparada con otras como los tipos de escaneos.
Dicha funcionalidad no es más que el uso de los scripts NSE (nmap scripting engine), dichos scripts los podéis encontrar en http://nmap.org/nsedoc/scripts/ y están programados en LUA.

Hay bastantes scripts (actualmente unos 160) divididos en distintas categorías según el tipo de servicio, si son intrusivos o no, de DoS, etc
Su uso es muy sencillo, basta con especificar las categorías de scripts a pasar o indicar directamente los que queramos pasar de forma concreta, por ejemplo:

nmap -sS -sV -p21 --script=ftp-anon.nse SUBRED/MASCARA nos comprobará en ese rango de direcciones IP si existe un servicio FTP a la escucha, en caso de ser así intentará conectarse como un usuario anónimo y nos mostrará un simple listado de directorios en caso de que sea posible usar el usuario anónimo.

He puesto un ejemplo sencillo y concreto, pero podrían combinarse varios para realizar cosas muy interesantes, buscar bases de datos, ssh, ftp y demás en el rango de la empresa que estamos auditando etc.

Por último, comentar que para usar correctamente los scripts lo mejor es tener el nmap actualizado directamente del SVN, para ello se usan los siguientes comandos:

Para copiarlo: svn co --username guest --password "" svn://svn.insecure.org/nmap/ nmap-svn
Para actualizarlo: svn up.
Para compilarlo: /configure && make
Y para instalarlo (como root): make install

Así nos evitamos cualquier posible problema a la hora de usar los scripts.

Un saludo a todos y espero que echéis un ojo a los scripts disponibles y empecéis a usarlos los que no los usáseis ya.

domingo, 5 de diciembre de 2010

Armitage - juguete para Metasploit

Buenas a todos, os dejo rápidamente una breve entrada respecto a una herramienta que he probado hace poco.

Recientemente la gente de Offensive Security han añadido la herramienta Armitage al repositorio de Backtrack.

¿Qué es Armitage? Pues "simplemente" una interfaz para Metasploit realizada en Java. A priori puede parecer simple en el aspecto (mucho mejor, como se ve en cuanto se empieza a usar), pero permite sacarle prácticamente todo el potencial a Metasploit.
Permite realizar todo tipo de ataques, escaneos de red para detectar host y puertos abiertos, importar resultados de Nessus, Nmap, Nexpose..., realizar explotaciones remotas, generación de payload y mucho más.

Pero, donde realmente empieza la diversión, es cuando ya tenemos una shell y empezamos la post explotación. Armitage nos ayuda en multitud de tareas para la postexplotación, como ataques pass-the-hash, pivotar a través de los host ya comprometidos, montar un servidor proxy para utilizar otras herramientas mediante los host con los que vamos a pivotar (ojito la cantidad de posibilidades que nos abre esto), etc, etc.



Todo ello de forma gráfica, estilo "click & exploit". Puede ayudarnos enormemente a la hora de realizar algunos ataques y tenerlo todo más controlado de forma gráfica y menos enrevesada.

Por último, os dejo el enlace a la web oficial desde donde podréis descargarlo y ver un par de vídeos con la herramienta en acción:

http://www.fastandeasyhacking.com/

Saludos a todos!