sábado, 14 de mayo de 2011

FAT - Frequency Analysis Tool

A raíz de mi incursión en los juegos ctf, es frecuente encontrarse en los primeros niveles con juegos de criptografía clásica. Como soy un vago, prefiero trabajar de más una vez para luego no tener que trabajar nunca más. De ahí nace FAT, Frequency Analysis Tool, no hay nada que me joda más que tener que contar letritas y parejas o trios de letras para poder descifrar un texto.
Antes de nada, ¿para qué se utiliza el análisis de frecuencias?
En la criptografía clásica se utilizaba un cifrado de sustitución en el que a cada letra le correspondía una letra del alfabeto. La manera de criptoanalizar esto es mediante el análisis de frecuencias.
Una vez con las letras contadas se utilizan las letras más repetidas en el idioma que estemos descifrando y con un poco instinto se van descifrando una a una las letras. No es una ciencia exacta pero en general si se identifica una palabra (por ejemplo en castellano es muy común que una palabra de 3 letras aisladas sea "que") el resto se saca bastante fácil.

Con estas premisas y con ganas de aprender phyton me puse a escribir un script en python que me hiciera los deberes aburridos de contar palabras. En el script, uso diccionarios alprincipio, luego listas al final, la razón de esto era porque una de las motivaciones era aprender por lo que quise tocar varias cositas.

Ahora mismo está para descifrar el alfabeto latino sin 'ñ' ni símbolos "raros", pero con una pequeña modificación cualquiera puede perfectamente adaptarlo a sus necesidades, esto no pretende ser una solución universal, es una pequeña herramienta que agilice el análisis en un ctf y como tal se debe entender.

Para usarlo simplemente:
python -t "texto a descifrar"
python -t fichero


Código @ pastebin.com

lunes, 14 de febrero de 2011

Google Hacking

En el ultimo post, hablé sobre Google Hacking, pero ¿qué es eso de Google Hacking?
Google Hacking no es más que el término utilizado para referirse al uso de buscadores como herramienta para encontrar objetivos para explotar o información sensible.
Para esto se utilizan las palabras reservadas de los buscadores, en el caso de google las que más uso yo son:
inurl:[texto que se quiera que incluya la url]
ext:[extensión de fichero deseada]
intitle:[cadena de texto parte del título]
filetype:[tipo de fichero]
site:[url del sitio al que se quiera restringir la búsqueda]
Sobre todo utilizo esas, pero hay más, aquí os dejo un manual muy completito.
Está bien, ahora ya sé hacer búsqueda super pollón en google, ¿y qué? ¿Eso sirve para algo? Pues sí.
Para empezar en el post anterior expliqué como buscar objetivos para un ataque de XSS, pero imaginemos que hoy estamos vaguetes y no queremos más que divertirnos un poco a ver que hay por ahí. Pues ponemos en google esto y a ver que pasa:
inurl:".gov" inurl:"document.cookie"
Esta búsqueda mostraría las web cuya url incluyera ".gov", es decir, que pertenezca a un gobierno, y que dentro de la url incluyera "document.cookie", instrucción que en java script muestra la cookie de sesión. Pero claro, Google debe estar preparado para eso, no te lo va mostrar... pues sí amigo, San Google indexa super guay y te muestra todas estas cosas:

Al hacer esto tener cuidado porque en este caso solo te enseña tu cookie de sesión pero si lo hacéis con otro código puede ser en perjuicio de vosotros mismos, no olvidéis que esto no es un ataque al servidor, si no que se ejecuta en el cliente.

También hay cosas que no se sabe muy bien como funcionan, pero como ya publicó el Maligno, parece que al buscar con "ext:" busca algo que vaya detrás de un punto en lugar de buscar sólo extensiones... da para investigar sobre el tema, si alguien encuentra algo más allá de la nasa o de música gratis, no dudéis en comentarlo.

jueves, 27 de enero de 2011

XSS - Cross Site Scripting

Toca estudiar. Y que mejor manera hay de estudiar que escribir lo que estás estudiando para fijarlo bien en la memoria?

Básicamente, un ataque de Cross Site Scripting (XSS) consiste en aprovechar una vulnerabilidad de una página web y hacer que el servidor ejecute código que le metemos nosotros. Esta vulnerabilidad se suele dar por no validar los datos de entrada de una aplicación, permitiendo la introducción de etiquetas como <script> o <iframe>.

De esta forma el ataque contra el cliente lo realiza el servidor.
Existen dos tipos de ataques XSS, persistentes y no persistentes. El funcionamiento es el mismo, la diferencia es que con el persistente el código se queda incrustado y cada vez que alguien visite esa página se ejecutara el código y con los no persistentes como su propio nombre indica, no perduran en el tiempo.
Los principales objetivos de estos ataques son el robo de sesión y la suplantación web, pudiendo con este último llegar a casos de phising.
Cómo encontrar un sitio vulnerable a XSS?
Encontrar un caso de XSS persistente es MUY dificil, pero si quieres entretenerte en encontrar uno busca en foros y redes sociales que se podrían hacer cosas divertidas.
Para buscar un XSS no persistente la forma más sencilla es el uso de google hacking. En tu buscador favorito ;) la siguiente sentencia:
inurl:"search.asp"
inurl:"buscar.asp"

Entraré más en profundidad en el tema del google hacking en otro post.
Por qué .asp?
Cuando una vulnerabilidad sale a la palestra, pues suelen ser vulnerables todos los sistemas anteriores a su publicación... a que ya os habéis imaginado que asp es mas viejuno que XSS?
Y ahora para practicar un poco...
Pongamos como ejemplo www.web.com/buscar.asp
Al hacer la búsqueda queremos que lo que hemos metido en el campo lo devuelva en la url y en algún sitio de la página. Por ejemplo si en el campo de la búsqueda metemos "foo" lo que querríamos sería algo del tipo:
www.web.com/buscar.asp?id=foo

Al ver esto, es cuando podemos tratar de realizar el ataque XSS, como ejemplo inofensivo pongamos que queremos sacar una alerta del mítico Hola Mundo:
www.web.com/buscar.asp?id=[Tú código SCRIPT fuck yeah]

En nuestro caso:

www.web.com/buscar.asp?id=<script>alert('Hola Mundo')</script><!--


Al ejecutar esto el navegador nos devolverá una alerta con el mensaje 'Hola Mundo'.
Pero, y si quiero una credenciales ajenas?
Si con ejemplo anterior teníamos un mensaje de Hola Mundo, con este que tendremos?
www.web.com/buscar.asp?id=<script>alert(document.cookie)</script><!--

Sí! Un gallifante para el rubio del fondo! Te saldría tu cookie de sesión, complica el script lo que quieras, mándaselo a gente con cuenta en un sitio web vulnerable y siéntete libre de suplantar la identidad de quien quieras ;).

Feedback y correcciones bienvenidas.