lunes, 25 de octubre de 2010

No cON Name: IP Fragmentation Overlapping

Como ya anunciamos anteriormente, el pasado jueves a las 09:15 estuvimos en las Conferencias No cON Name dando una charla sobre "IP Fragmentation Overlapping", un tema que ya habíamos comentado en este blog con anterioridad, pero al que le dimos una pequeña vuelta para convertirlo en algo más útil de cara a auditar y proteger los sistemas de una empresa.

Podéis descargaros la presentación de aquí (PDF o Scribd), pero os recomiendo que la veáis en el siguiente video, ya que la presentación era un KeyNote y se ve todo mucho mejor si se ven todas las transiciones en movimiento:


Durante la presentación, veréis que se hicieron 3 demostraciones que siguiendo el orden en el que se presentaron, fueron las siguientes:

Demo 1: Atacando un Windows con Fragroute


Demo 2: Atacando un MacOS con Fragroute


Demo 3: Frag3 (Snort) contra Fragroute


Para finalizar, la charla fue grabada en directo por el Staff de No cON Name y estará disponible a lo largo de la semana para su visión en la web oficial, aunque os lo pondré aquí también "empotrado" el video en cuanto sea publicado.

Muchas gracias a todos los asistentes, espero que os gustara la presentación tanto como a mi presentarla.
Saludos a todos, y hasta la próxima conferencia.

miércoles, 13 de octubre de 2010

WCE: Windows Credential Editor

Windows Credential Editor (WCE) v1.0 es una herramienta desarrollada por Hernan Ochoa (Amplia Security) que ha sido publicada recientemente como una evolución del Pass-the-Hash Toolkit, una de las mejores herramientas hasta el momento para realizar ataques de Pass-the-Hash, los cuales ya comentamos anteriormente tanto en el blog como en las Conferencias FIST.

Amplia Security Research (muy recomendable): Link.
Descargar WCE v1.0: Link.

Si descargamos la herramienta y la probamos, nos encontramos con un solo binario, que al ser llamado con la opción -h nos muestra la ayuda:


Como podemos ver, este binario nos proporciona toda la funcionalidad que nos proporcionaban los diferentes binarios que formaban parte del Pass-the-Hash Toolkit, más algunas funcionalidades nuevas de las que hasta ahora no disponíamos, como por ejemplo mantener en pantalla una lista de los usuarios que en cada momento tienen un login activo, al más puro estilo el comando "watch" de Linux.

Centrándonos en las opciones que nos van a resultar más directamente útiles para la realidación del pass-the-hash, en primer lugar deberemos obtener el Hash que queremos suplantar. Para ello hay una gran variedad de formas de hacerlo, pero por poner un ejemplo que ya se utilizó en nuestro anterior post, podríamos hacerlo con el comando hashdump de Meterpreter:


Una vez que tenemos el Hash (de esta u otra forma) ya solo tenemos que llamar al wce.exe con la opcion -s para cambiar nuestro Hash actual en memoria por el nuevo hash, y de esta manera usurpar la identidad:

> wce.exe -s Usuario:Dominio:LMHash:NTHash

Una vez hecho esto, podemos comprobar que las credenciales se han cambiado satisfactoriamente con la opción -l:

> wce.exe -l


Una vez hecho esto, podemos utilizar cualquier herramienta que se autentique por medio de Windows (por ejemplo, recursos compartidos) para acceder a otros equipos con las credenciales del usuario cuyo Hash habíamos obtenido. Podemos ver una demostración de esto en nuestro anterior post.

Una de las grandes ventajas que le veo a esta herramienta con respecto al Pass-the-Hash Toolkit, aparte de que resulte más cómodo disponer de toda la funcionalidad en un solo binario, y de las funciones extra que nos encontramos, es que parece ser que dispone de un reconocimiento muy mejorado del tipo de sistema en el que corre (eso o Hernán ha incluido las direcciones de un Windows XP en Español).

Si lo recordais, en la presentación que hicimos en las FIST comentábamos que el Pass-the-Hash Toolkit tenía que saber en que direcciones de la memoria debía leer y escribir los hashes, y que aunque tenía una serie de hashes hardcodeados, para un Windows XP en Español era necesario proporcionárselos a mano mediante la opción -a, ya que no venían por defecto. Hubo varias dudas sobre este proceso, así que acabamos por publicar otro post sobre cómo obtener estas direcciones para tu sistema.

Pues bien, con WCE no va a ser necesario este paso previo, no dabemos si porque Hernán ha incluido un listado más amplio de direcciones o porque la herramienta disponga de un mecanismo de búsqueda que obtenga estas direcciones por si mismo.

En cualquier caso, supone una importante mejora con respecto a su predecesor.
Como decían en el precio justo... a jugar! :D

lunes, 4 de octubre de 2010

RSMangler Vs John The Ripper

Sin duda alguna, uno de los factores fundamentales en el éxito de un ataque de diccionario contra un hash u otro tipo de cifrado, es la calidad de dicho diccionario.

La semana pasaba publicábamos un post explicando el uso de CeWL para crear diccionarios de palabras específicas del "argot" de una empresa, pero al mismo tiempo nos dábamos cuenta de la necesidad de crear variaciones a partir de cada palabra para enriquecer nuestro diccionario.

Para ello, vamos a partir de una de las palabras que obtuvimos de ese crawling, "Keteke", y vamos a emplear dos conocidas herramientas: RSMangler y John the Ripper.

RSMangler

RSMangler es una herramienta que descubrimos hace poco pero que tiene muy buena pinta. Si miramos el --help podemos observar como incluye una gran variedad de posibles mutaciones.
Un detalle curioso es que para DESACTIVAR los tipos de mutación hay que incluir la opción en la línea de comando, y no al contrario.

Veamos que tipo de mutaciones soporta:
  • Permutaciones (--perms): Combinación entre las diferentes palabras del diccionario. Generará muchíiiisimas combinaciones si le pasamos una lista como la salida de CeWL. Esta opción es solo para un conjunto muy pequeño de palabras:
jose
selvi joseselvi selvijose
  • Duplicado (--double): Duplica cada una de las palabras. Usado a veces por los usuarios si su palabra no llega al mínimo de caracteres exigidos:
jose
josejose
  • Reversa (--reverse): Le da la vuelta a la palabra. Esta no es a priori una opción muy escogida por sus usuarios debido a la dificultad para teclear una palabra del revés:
jose
esoj
  • Estilo Hax0r (--leet): Cambiar vocales por números. Una forma muy utilizada por muchos administradores:
jose
j0s3
  • Primera Mayúscula (--capital): Pone la primera letra mayúscula.
  • Mayúsculas (--upper): Pone todo a mayúsculas.
  • Minúsculas (--lower): Pone todo a minúsculas.
  • Invertir Mayúsculas (--swap): Las mayúsculas se convierten en minúsculas y viceversa. Tampoco es una formula muy usada por los usuarios, en general.
  • Participio (--ed): Añade sufijo -ed al final, para formar el participio en inglés. Si nuestro diccionario es Español, no tiene sentido.
  • Gerundios (--ing): Añade sufigo -ing al final, para formar el gerundio en inglés. Si nuestro diccionario es Español, no tiene sentido.
  • Signos de Puntuación (--punctuation): Añade algunos signos de puntuación al final de la palabra. La lista de signos no es la más acertada:
Jose
Jose!
Jose@
JoseÂ
Jose£
...
  • Años (--years): Añade un año delante y detrás. Puede ser útil, pero de nuevo la elección de los años no es la más acertada:
Jose
1990Jose
Jose1990
1991Jose
Jose1991
...
  • Acrónimos (--acronym): Combina las palabras para crear acrónimos. Tiene los mismos problemas que las permutaciones:
Jose
Selvi
JS
  • Passwords Comunes (--common): Interesante opción para añadir sufijos conocidos:
Jose
pwJose
pwdJose
adminJose
sysJose
Josepw
Josepwd
Joseadmin
Josesys
...
  • Dos cifras al final (--pna): Añade dos cifras al final, aunque se queda en 09:
Jose
Jose01
...
Jose09
  • Dos cifras al inicio (--pnb): Igual que el anterior, pero al inicio.
  • Números al final (--na): Añade un número al final, aunque se queda en 123:
Jose
Jose1
Jose2
...
Jose123
  • Números al principio (--nb): Igual que el anterior, pero al inicio.

Sabiendo que hay combinaciones que en general no nos van a interesar, podemos tomar la opción de cambiar el código de la herramienta para que no tener que poner todos los --loquesea para desactivarlos. Siguiendo la recomendaciones anteriores, vamos a la linea 89 del script rsmangle.rb y editamos las siguientes lineas que establecen el valor por defecto de cada opción a las siguientes:

verbose=false
leet=true
perms=false
double=true
reverse=false
capital=true
upper=true
lower=true
swap=false
ed=false
ing=false
punctuation=true
years=true
acronym=false
common=true
pna=true
pnb=true
na=true
nb=true
force=false
file_handle = nil

También os animo a que hagáis otras modificaciones sobre la herramienta, por ejemplo cambiar los signos de puntuación utilizados (linea 262):

for i in ("!@$%^&*.,".scan(/./))

Una vez hecho esto, solo tenemos que lanzar la herramienta sobre nuestro diccionario original, para obtener un diccionario enriquecido:

# wc -l test.txt
4 test.txt

# ./rsmangler.rb --file test.txt > wordlist.txt

# wc -l wordlist.txt
1312 wordlist.txt

Como podemos ver, el factor de crecimiento del diccionario es considerablemente alto, así que si nuestro diccionario origen es ya de por si grande habrá que tener mucho cuidado en seleccionar que palabras nos interesa mutar, que tipos de mutación, etc.


John the Ripper

John the Ripper es un clásico en esto de las mutaciones. Dispone de un lenguaje de reglas, llamadas rules, mediante el cual se puede definir con una gran flexibilidad que tipo de mutaciones queremos realizar, configurándose en el fichero john.conf.

Esta aproximación, sin duda, es mucho más flexible que utilizar RSMangle, pero por contra, definir estas reglas no resulta algo trivial. No entramos a saco a como se definen las reglas para JTR porque esto requeriría un post en si mismo.


Conclusiones

John the Ripper nos proporciona una flexibilidad que no nos permite RSMangle sin modificar su código (aunque haciendo modificaciones leves podemos obtener resultados satisfactorios), pero por contra exige una dedicación mucho mayor para configurar las reglas, mientras que RSMangle viene con un buen conjunto de posibles mutaciones que pueden ser suficiente en la mayoría de los casos.

Nuestra recomendación... ten ambas a mano :)