Archive for January 2013

Cómo un "==" puede volverte vulnerable

¡Saludos!

    Hoy recién acabo de terminar los exámenes, con pésimos resultados, y vuelvo a tener tiempo para poder escribir aquí y continuar con los distitnos proyectos que tenía abiertos. Aetsu terminará en breves también sus exámenes… asi que empezaremos las pruebas del podcast en breve. Como ya os dijimos por twitter, sería muy interesante que nos comentarais qué tipo de contenido quereis que incluyamos y sobre qué temás os gustaría que hablasemos.

    En estos días sin escribir por el blog han saltado distintos 0-days gordos, como el de Java, que supuestamente fue parcheado, y volvieron a sacar otro 0-day, y otro, y ya me perdí el culebrón porque era demasiado lío. Recordad: cada vez que instalais un navegador y no desactivais JAVA (ni usais NoScript), Dios mata a un gatito. A parte de JAVA, salieron otras noticias, como la vulne de Ruby on Rails, o las de los foros SMF (ya parcheada). Y es esta última sobre la que vamos a hablar en este post porque me ha resultado muy interesante el disclosure que han hecho, y me parece muy aplicable a otras tantas aplicaciones web 🙂

   La vulnerabilidad de los foros SMF que han liberado estos días permitía a un atacante poder resetear la contraseña a un administrador. Este es el post original del disclosure.

      El problema base que vuelve a la aplicación vulnerable es que hace una comprobación del token generado para resetear la password que es inadecuada, y que puede dar por bueno un token que no lo es. Recordemos que los token son cadenas de caracteres aleatorios que se incluyen en las peticiones de las aplicaciones web para evitar que los usuarios legítimos caigan en ataques CSRF . Se comprueba el token a través de una comparación, usando “==” , entre el supuesto valor del token que se ha generado y el valor que nosotros hemos incluido en la petición (en realidad en el caso de SMF se hace con los diez primeros caracteres de un hash MD5, pero estoy extrapolando la vulnerabilidad para cualquier otra aplicación). En el caso de que el token que nosotros hemos enviado no coincida con el que la aplicación espera, no se permite el reseteo del password, y viceversa, si ambos coinciden te permite cambiar el password.

      En teoría no hay nada extraño, es lo correcto. Compruebo la cadena generada con la que me da el usuario para ver si es la misma. El problema está en cómo se hace dicha comprobación. Resulta que al comprobar con “==” una cadena que empiece con dígitos, ésta se convierte automáticamente en una variable tipo integer. Y esto conlleva una segunda consecuencia, y es que se aplican las mismas reglas que a estas variables. Es decir, podemos usar notación exponencial, colocando una “e” entre la base y el exponente.

      ¿Qué ocurre cuando 0 o 1 es elevado a cualquier número? Que se quedan iguales. 0e123 es igual a 0, 0e523452345234523452345 es igual a 0, y  por lo tanto también igual a 0e123. Y lo mismo ocurre con el 1: 1e124 es igual a 1, y 1e5555 es igual a 1e124. ¿Veis donde está la vulnerabilidad? Probemos el siguiente PoC:

<?php
$key1 = “0e12345”;
$key2 = $_GET[‘k’];
if ($key2 == $key1){

echo $key1 . ‘ es igual a ‘ . $key2;
} else {
echo $key1 . ‘ es diferente a ‘ . $key2;
}
?>

 Si probamos a pasarle ?k=0  nos dirá que son iguales. Pero ambos sabemos que ambas cadenas de caracteres son diferentes. Si probamos con 0e[cualquiercadena de nuemros] nos seguirá diciendo que los dos strings son iguales.  ¿A qué nos lleva esto?

  Una aplicación que genere unos tokens alfanuméricos y que no bloquee el número de intentos para hacer una determinaada petición, en alguno de esos tokens va a generar una cadena que será 0e[numeros] o 1e[numeros], por lo que su valor será 0 o 1. Si nosotros mandamos peticiones de forma continuada, alternando entre un string que empiece con 0e y otro con 1e, cuyo valor por lo tanto también será 0 o 1, llegarán a coincidir en algún momento y la petición será legitima.

  Me parece que esta vulnerabilidad es bastante intersante, y que es muy común encontrarla. Espero que reviseis vuestros códigos y a partir de ahora programeis teniendo en cuenta estas premisas.

Byt3z

Leer artículo original: Cómo un "==" puede volverte vulnerable

Directory Listing/Full Path Disclosure en Security-Advisor

Security-Advisor o (sadvisor.com) es una empresa que se dedica a entregar soluciones de seguridad informática y de la información. Según ellos, Líderes en Seguridad de la Información.

Al ingresar al sitio web www.sadvisor.com podemos ver que existe un directorio llamado includes/, el cual permite misteriosamente Directory Listing. Gracias a esta caracteristica, podemos ver el listado de archivos php dentro del directorio includes, pudiendo acceder a ellos directamente.

Security Advisor - Directory Listing

Security Advisor – Directory Listing

El problema en si no es el listado de archivos, sino que al ingresar directamente a varios de estos php, no está validando el acceso directo a los archivos, por lo que provoca un error y gracias a un problema de configuración del servicio apache+php, nos muestra ese error en pantalla divulgando la ruta del sistema donde se encuentra el sitio.

sad2

Como indican en su sitio web, en una empresa el primer paso es reconocer su empresa puede tener un problema de seguridad y el segundo paso es llamar a Security Advisor. Pero en este caso el primer paso fue “tener una falla de seguridad”, cual es el siguiente paso?

Leer artículo original: Directory Listing/Full Path Disclosure en Security-Advisor

Evolucionando desde el colegio






¿Evolucionando desde el colegio?. 


El colegio pasa a ser casi una segunda casa para nuestros hijos, es aquí donde muchos aprenden y tienen sus primeros acercamientos al mundo digital. Pero ¿Qué les enseñan realmente?Las asignaturas como “Computación” básicamente enseñan al alumno durante toda la enseñanza básica-media el acercamiento y la habituación del uso del equipo, hasta Ofimática Media con el fin de que puedan desarrollarse y aplicar los conocimientos en otras asignaturas. Sin embargo, es esta misma asignatura la que abre una gran puerta a un mundo sin límites como es el Internet.

Pero,¿abren responsablemente este mundo a los niños?, en un colegio no hablan de los peligros reales que se podrían correr en la red y menos aún como evitarlos. Es aquí donde falta en este momento educar a los niños desde pequeños sobre los peligros y desventajas del Internet, es decir un menor que sepa más allá de como funciona la web tendrá sus mas herramientas de como enfrentar un problema al verse frente a el, sin temor y con seguridad.


Mientras más temprana sea la edad de acercamientos a las tecnologías de la información y comunicación para un menor, este estará mas familiarizado y mejor aún, llevara este conocimiento a su casa donde lo pondrá en práctica y lo entregará a su núcleo familiar.

De la manera que avanza este mundo digital, es necesario que los programas en colegio se renueven de la misma manera, no basta con enseñar como funciona Internet Explorer, mandar un correo desde Outlook, escribir un documento en Word o realizar una presentación en Power Point para disertar. 

Debemos enseñar a los niños: 

  • Los peligros en Internet, que son y como se desarrollan.
  • Explicar la existencia de adultos inescrupulosos. sus artimañas y como reconocerlas.
  • Las técnicas de engaños y campañas de Phishing.
  • Como comportarse frente a un caso de Ciberacoso/Grooming.
  • Dar a conocer las técnicas reales en los casos donde se expone información sensible y no quedarse en conceptos obsoletos de seguridad.
  • Introducir a los niños para que tengan una cultura segura en la web.
  • Introducir a un uso adecuado de las redes sociales y el cuidado de la privacidad  que deben tener


Y un sin número de temas relacionados que son de suma importancia a la hora que un niño “entra” al mundo virtual y se hace participe de el día a día.











Leer artículo original: Evolucionando desde el colegio

CRACKED SOME PDF TO WORD CONVERTER


Bueno aqui en este post voy a poner un software que sirve para convertir de PDF a WORD ademas puede quitar las claves de algunos archivo, esto empezo asi un amigo me dijo si le ayudaba a desencirptar una clave de un archivo PDF la cual me puse a buscar y encontre un programa llamado Some PDF to Word Converter, este programa como todos los desarrollos privados me pedia un serial de registro para poder utilizarlo asi que me puse a pensar lo trato de crackear o lo dejo? y como no estaba haciendo nada productivo dije lo crackeare asi que me puse manos a la obra….
ahora mostrare solo una parte breve de lo que hice y como quedo funcionando.
1- aqui me pide el serial.. ingresamos algo.
y como resultado obtendremos un error.
viendo lo anterior mostrare una imagen donde encontre el punto exacto del salto donde validaba el serial ingresado. (para ver mas grande la imagen darle click).
ahora mostrare como quedo al cambiar el salto JNZ a JE e ingresamos lo que sea.
 como resultado obtendremos un congratulations.
Esto es algo breve de lo que hice con el software, si lo quieren descargar ya lo subi con su crack y en el siguente link lo podran obtenerlo.
 

Leer artículo original: CRACKED SOME PDF TO WORD CONVERTER

Coqueteando con Metasploit: Meterpreter VI

  Cierre de ciclo con esta entrada, pues concluyen las dedicadas al comando run y meterpreter. Su peculiaridad es que en esta ocasión se atacará una maquina virtual con Windows 7 (a diferencia de los ejemplos normales que suelen trabajar con Windows XP para que todo sea más “bonito”) sobre la que se tendrán que elevar privilegios para utilizar ciertos scripts que de otra forma fallarían o no obtendrían tan buenos resultados.

  Lo primero que necesitamos es obtener mayores privilegios, para ello meterpreter contiene diversos scripts que, en función del sistema operativo y lo actualizado que esté, nos pueden ser de utilidad.
  En el caso de Windows basta con usar el autocompletado de Metasploit en post/windows/escalate para hacernos una idea de las opciones que tenemos disponibles.

Elevando privilegios

  Para dicha tarea utilizaremos, a modo de ejemplo, una vulnerabilidad en la planificación de tareas de Windows (MS10-092) que permitía elevar privilegios pero que fue corregida hace bastante tiempo.

  Su ejecución es tan simple como:

run post/windows/escalate/ms10_092_schelevator

   Una vez finalice el proceso, la victima conectara con Metasploit otorgándonos una nueva sesión con los ansiados privilegios. Para comprobar esto, basta con:

getprivs

Desbloquear la pantalla

  Como el titulo indica, el siguiente script permite desbloquear la pantalla de Windows.

Dicha tarea es tan simple como:

run screen_unlock

en el caso de querer revertir los cambios utilizaremos el parámetro -r:

run screen_unlock -r

Más posibilidades para el keylogger

  En anteriores entradas hemos visto como funcionaban los diversos keyloggers que incorporaba meterpreter, ahora vamos a extender las posibilidades capturando la contraseña de inicio de sesión de Windows, para ello lo primero es comprobar el proceso winlogon.exe y migrar a éste. Con ésto ya será posible obtener la ansiada clave.

Más posibilidades

  Con privilegios se ponen a nuestra disposición nuevos scripts que nos ofrecen más opciones. Ejemplos de esto son listar los usuarios conectados, ver la clave de licencia de Windows o activar el escritorio remoto en el sistema.

=> Usuarios conectados:

run /post/windows/gather/enum_logged_on_users

=> Licencias del sistema:

run /post/windows/gather/enum_ms_product_keys

=> Escritorio remoto:

run getgui -e

=> Contraseña del sistema:

run post/windows/gather/hashdump




Jugando con sniffers


  Una de las grandes posibilidades que posee meterpreter es el poder utilizar un sniffer desde el equipo comprometido y obtener el trafico capturado por éste, para ello utilizaremos packetrecorder.

 El primer paso para ejecutarlo es conocer las interfaces del equipo víctima, para ello:

run packetrecorder -li

cada una de estas interfaces es precedida de un numero o identificador que pasaremos como parámetro (flag -i) para escoger la interfaz que capturará el trafico.

run packetrecorder -i <identificador interfaz>

  Con el sniffer concluye la saga de meterpreter, aunque me he dejado en el tintero muchas más posibilidades el tratarlas todas requeriría dedicar un blog exclusivamente a ello. Si alguien quiere llegar mas lejos tanto en meterpreter como en Metasploit aquí os dejo unas referencias:

  Nos leemos en breve 😉

Leer artículo original: Coqueteando con Metasploit: Meterpreter VI

Grampus Project – Presentación detallada

Buenas , no hace mucho se ha publicado una entrada por parte de
nuestro buen amigo Snifer  presentando un poquito y de
manera general nuestro joven proyecto.
Así que estoy
escribiendo este tema ya no como un “Coming Soon” sino como un tema en
el que pueda describir un poco sus características y objetivos…
¿Qué es Grampus Project? 
Grampus Project nace para todos aquellos usuarios que necesitan automatizar sus procesos en auditorias web.
Como
sabemos la recopilación de información a la hora de realizar un ataque a
un objetivo es esencial y a veces este proceso puede ser muy largo y
pesado.
Fear the FOCA, de Chema Alonso y su equipo,
cubre las necesidades de automatización que necesitamos a la hora del
proceso de Fingerprinting y la extracción y el análisis de metadatos lo
que no cubre es algo para muchos esencial, la cómoda multiplataforma.
Muchos somos usuarios Linux y
nos resulta complicado tener que rompernos el coco para emularlo con
WINE o incluso virtualizarlo en una maquina virtual con entorno
Windows…
Es por todo esto que nace Grampus Project , para poder cubrir nuestras necesidades.
El proyecto se divide de esta manera :
– Forensic Grampus
– Anti-Forensic Grampus
– Grampus
– Anti Grampus
Aquí es donde entraremos ya en detalles ya que explicaré las características de cada uno…
Forensic Grampus
Forensic Grampus es
una herramienta forense que pretende extraer y analizar los metadatos
encontrados en documentos, imagenes , archivos, aplicaciones…
Esta totalmente programado en Python por lo que es la perfecta alternativa multiplataforma para Forensic FOCA superando a esta con creces en cuanto a extensiones soportadas.
(Para
ver las extensiones soportadas puedes visitar nuestro proyecto en
Bitbucket en el que trataremos de subir más información acerca de esto
ya que puede variar a medida que vamos programando.)
Anti-Forensic Grampus
 Anti
Forensic Grampus es una herramienta ANTI forense que pretende eliminar o
modificar aquellos metadatos encontrados en documentos, imagenes,
archivos, aplicaciones…
Esta totalmente programada en Python por lo que es una buena alternativa a Metashield Protector proporcionando protección contra las mismas extensiones que podemos analizar en Forensic Grampus.


Grampus

Grampus
es una herramienta para la automatización de procesos fingerprinting en
los trabajos de auditoria web sumandole a esto la posibilidad de extraer y analizar los documentos públicos encontrados en la propia página a la que se le realiza la auditoria convirtiendose así en la alternativa multiplataforma Perfecta para FOCA de Chema Alonso y su equipo.



Anti – Grampus

Anti
Grampus es una herramienta creada para evitar exponer datos o
credenciales que puedan ser de utilidad en ese proceso de fingerprinting
volviendo así a nuestro sitio más seguro.
Esta totalmente
programado en Python así como las otras 3 herramientas y a diferencia de
las demas esta surge como contramedida y no como una alternativa.


CONCLUSIONES :

Con
esta explicación sobre nuestro proyecto espero que haya podido aclarar
todas las dudas que se tenían al respecto e incluso tal vez pudiera
animar a algún programador python a unirse al proyecto…
Actualmente estamos trabajando en la versión Forensic Grampus y al poco de acabarla procederemos a trabajar en Anti Forensic Grampus para más tarde poder centrarnos en la elaboración de Grampus y Anti Grampus.
SIGAN EL PROYECTO EN BITBUCKET:


Pueden seguir el proyecto en bitbucket : https://bitbucket.org/grampusteam/

en el que iremos actualizando el proyecto.
Desarrolladores actuales :
OverxFlow
Por
el momento el proyecto se encuentra en fase de desarrollo y por
supuesto necesitamos de programadores python que se animen a contribuir
con nosotros.
Lastimosamente hasta que la primera versión de cada
uno no este publicadas como versión estable, tendremos un cupo limitado
de programadores por lo que aceptaremos la entrada de quienes veamos
conveniente aunque si podran disponer de permisos de lectura para ver el
sourcecode.
Una vez tengamos la primera versión
estable de cada uno abriremos el proyecto para que un gran cupo de
personas pueda actuar como developer y crear sus propias modificaciones y
demas cosas , eso sí , siempre en modo de branching , es
decir, a modo de prueba para que los owners puedan visualizar dichas
mejoras y considerar si pueden agregarse a la versión estable o no.
Con esto queda todo más que explicado y creo que puedo concluir con el tema.
Un Saludo , Sanko.

Leer artículo original: Grampus Project – Presentación detallada