miércoles, 27 de mayo de 2009

FireGPG y GMAIL

Una posible solución para poder firmar,cifrar y descifrar mensajes desde nuestro navegador es la extensión para Firefox FireGPG. A continuación se muestra el proceso sencillo de integración de FireGPG con Firefox en un entorno con Microsoft Windows. Además se muestra un ejemplo de firma de un correo desde GMAIL.

  • Descargaremos la extensión de FireGPG y la instalaremos.



  • Descargaremos el paquete Gpg4win que gestionará nuestras claves, ya que cómo se puede leer en la página de FireGPG, este no es un gestor de claves.



  • Una vez hemos instalado el software necesario arrancaremos el programa WinPT (que viene con Gpg4win) para gestionar nuestras claves. En el caso de no disponer de un par de claves creadas para nuestra cuenta de GMAIL, deberemos generarla con WinPT y establecer una clave para firmar, cifrar y descifrar los mensajes.



  • Una vez generemos el par de claves podremos visualizarla a través del contenedor de claves. Es decir, desde el listado de claves ofrecido por WinPT podremos exportalas, importarlas, revocarlas, etc.




  • Después de haber generado el par de claves para nuestra cuenta de GMAIL podremos firmar un correo a través del menú que nos aparecerá cuando vayamos a redactar un mensaje nuevo. Primero deberemos activar el botón "Firmar" y después le daremos a "Enviar". Después nos solicitará la contraseña que habíamos establecido, además de la clave de autenticación en el servidor de correo smtp.gmail.com.



  • A continuación podemos visualizar un correo que ha llegado firmado y cuya clave pública disponemos en nuestro gestor de claves.




Como hemos visto el proceso es sencillo y puede permitirnos firma, cifrar, descifrar correos de una manera sencilla y rápida.

domingo, 24 de mayo de 2009

DDoS contra China

Según he podido leer en PCWorld, hace unos días el agente registrador chino DNSPod sufrió un ataque de DDoS (Denegación de Servicio Distribuida) contra sus servidores DNS que acabó teniendo consecuencias graves para las comunicaciones de todo el pais, ya que varias provincias sufrieron una pérdida de conectividad con Internet.

Parece ser que el ataque se inició por medio de una petición masiva de resolución de nombres contra los servidores DNS del agente registrador, lo cual colapsó dichos servidores, dejando los usuarios de poder resolver las direcciones de los servicios alojados por este agente, entre ellos Baofeng, una popular aplicación de video.



Como respuesta a este ataque, los proveedores de servicio bloquearon los intentos de resolución de nombres contra este agente registrador, con lo que pretendían contener el ataque. Sin embargo, al bloquear los accesos a la resolución de nombres de este agente registrador, las peticiones de resolución de nombres legítimas de los usuarios de los servicios del agente, entre ellos el popular Baofeng, fueron redirigidos hacia los servidores DNZ raiz Chinos, provocando de esta manera en estos un segundo ataque de DDoS, esta vez casi sin quererlo.






Sin duda, este tipo de cosas deberían alertar a la sociedad sobre la importancia de la seguridad en las nuevas tecnologías, y para ejemplo un botón, China sufre un casi-ataque-ciberterrorista y casi sin quererlo. ¿Que sucederá cuando alguien pretenda hacer algo gordo?

Arremangaros, que viene trabajo.

jueves, 21 de mayo de 2009

¿Bug en OpenSSH? Parece que no es tan grave

Versión n-esima del !bug gravísimo que hará que se acabe Internet! Yo mismo he sufrido un pequeño shock cuando he leido que se había descubierto una vulnerabilidad en OpenSSH que permitía descifrar la información enviada, creo que aún me duran los sudores frios, ya que OpenSSH, debido a su calidad y al tratarse de software libre y gratuito, es ampliamente utilizado para la gestión de practicamente todo lo que se gestione por línea de comandos, además de utilizarse ampliamente para tunelizar a través de él conexiones a las que no es posible aplicarles ningún tipo de cifrado, por eso una vulnerabilidad que permite descifrar el contenido de las sesiones de OpenSSH sería sencillamente terrorífica.

Sin embargo, soy consciente de lo sensacionalistas que son algunos medios, incluso en los últimos tiempos la prensa especializada en seguridad (todo se pega...), así que me he dedicado a pegar un vistazo a que decía el propio Advisory de OpenSSH y SecurityFocus, dos sitios que es de esperar que no tengan los tintes sensacionalistas que tienen otros medios.

La vulnerabilidad consiste en un fallo en el modo de cifrado CBC de varios de los algoritmos establecidos por defecto que, según cuentan los descubridores de la vulnerabilidad, permite obtener hasta 4 bytes de la información cifrada en la sesión por medio de observar el comportamiento que tiene el servicio ante diferentes errores al cerrar la sesión.

Sin embargo, según dice OpenSSH, para realizar un ataque efectivo contra una sesión interactiva sería necesario matar la conexión SSH unas 11356 veces para obtener información útil, por lo que evidentemente cualquier administrador debería suponer que algo raro está pasando (si antes no muere de viejo intentando hacer un ps :P). El único riesgo que parece más factible son aquellas conexiones automatizadas que siempre envían la misma información, como por ejemplo un scp programado entre dos máquinas (algo bastante común), que podría ser interrumpido sistemáticamente hasta conseguir recuperar el fichero transmitido (a golpe de 4 bytes cada vez), aunque según el Advisory de OpenSSH, serían necesario muchos días para recuperar un fichero pequeño, a un ritmo de 44 bits recuperados por hora, por lo que explotar este ataque se hace complicado.

En resumen, la vulnerabilidad existe y es posible desencriptar el tráfico parcialmente, por lo que deberiamos actualizar a la última versión de OpenSSH (que básicamente establece AES como algoritmo de cifrado por defecto, que ya no sufre esta vulnerabilidad) y evitar el peligro, sin prisa pero sin pausa. Sin embargo, es una vulnerabilidad difícil de explotar, o mejor dicho, difícil de obtener información de ella, por lo que no es algo que yo personalmente vaya a incluir en mi "arsenal" de herramientas de pentesting, a menos que algún trabajo concreto lo requiera.

domingo, 17 de mayo de 2009

Moth: Testea tu escaner web favorito

De la mano de la compañía Argentina Bonsai-Sec nos llega Moth, una máquina virtual vmware que presenta diversas aplicaciones web y scripts vulnerables. Según se puede leer en la propia web del producto: "El objetivo principal de esta herramienta es el de dar a la comunidad un banco de pruebas listo para utilizar a la hora de probar herramientas de seguridad Web".

Esta máquina virtual es la contribución de Bonsai-Sec al proyecto w3af, desde donde se puede descargar de forma gratuita.

Lamentablemente estoy sufriendo un pequeño problema al descargarla y descomprimirla, así que no he podido trastear con ella, pero para la próxima semana intentaré lanzarle los diferentes escaners de vulnerabilidades web que conozco, para ver si realmente es útil para que probemos nuevas herramientas de auditoría web, aunque supongo que en estas pruebas w3af contará con cierta ventaja, ya que el producto parace haber sido desarrollado pensando en esta herramienta.

Tampoco parece que el producto se parezca al genial WebGoat, que ya comentaremos en otro post más adelante.

Si alguien quiere sugerir sus herramientas favoritas para que probemos a ver que resultados nos da, por favor que deje un comentario. En caso contrario lo probaré con las herramientas que vienen por defecto con BackTrack y Samurai, y quizá alguna más que se me ocurra ;)

Saludos a todos y FELIZ DÍA DE INTERNET!

jueves, 14 de mayo de 2009

Recursos: LiveCDs y Máquinas Virtuales

En el trabajo tanto de un pentester como de un incident handler es habitual que tengamos que tirar mano de LiveCDs y Máquinas Virtuales, tanto para utilizarlas como herramientas como para utilizarlas como sistemas sobre los que realizar pruebas.

Hay montones y montones de webs que albergan su livecd propia o su máquina virtual, pero también existen otras webs que lo que hacen es recopilar toda esta información, lo cual nos va a ahorrar mucho tiempo. Algunas de las que más me gustan a mi son las siguientes:
  • BagVapp: Web que recopila un montón de máquinas virtuales preinstaladas de un montón de sistemas operativos diferentes, incluso Windows 7 (por estar en estado beta, supongo, luego con las licencias...). Algunas de ellas de seguridad que incluso no están en el enlace anterior, como Caine, y otras que sí que están pero que resulta más cómodo tenerlas en una máquina virtual, como Samurai (aunque ahora mismo no están actualizados a la última versión).
  • VMWare Appliances: Muchos fabricantes de productos, incluso de pago, dejan preparadas máquinas virtuales con el producto preinstalado para que lo pruebes a modo de demostración. Puede ser muy interesante para probar este tipo de software antes de decidirnos a comprarlo.
De entre todas ellas, las que yo he probado o las que me parece que tienen buena pinta y que tengo pensado probar, son las siguientes:
  • BackTrack: Por supuesto, la distro de seguridad por excelencia, yo uso la versión en máquina virtual porque me resulta más cómoda cuando trabajo desde mi equipo, pero tengo también una distribución en el USB que utilizo de llavero (aún pendiente de actualizar de la versión 3 a la 4), para que no me encuentre en algún sitio sin el portátil y se requieran mis habilidades y tenga que decir aquello de "es que me pillas sin herramientas" ;)
  • Helix: Distribución para realizar respuesta ante incidentes y análisis forense. Extremadamente conocida y utilizada, de hecho como en su propia web indican, es utilizada por entidades de mucho prestigio como herramienta para sus cursos de formación sobre Forensics.
  • Samurai: Esta no la he probado todavía pero la tengo apuntada en la agenda. El ser un producto de la empresa InGuardians, fundada por los gurús de SANS Ed Skoudis y Mike Poor, es una garantía de su calidad.
  • Sumo: Esta es una de las distros que hecho en falta en los enlaces anteriores. Se trata de una distro en DVD que contiene varias LiveCD, y que te muestra un menú en el arranque para que elijas con cual la quieres arrancar. Ahora mismo las versiones no están excesivamente actualizadas, e incluso yo cambiaría las que vienen, pero lo bueno de las distros Linux es que te las puedes tunear a tu gusto :)
  • Caine: Otra de las que hecho en falta en la web de SecurityDistro pero que también es de las que tengo pendientes por probar y que le voy a hacer un seguimiento muy de cerca. Este proyecto se inición como Tesis de un estudiante Italiano que tenía como objetivo desarrollar una herramienta para análisis forense que no fuera únicamente un compendio de herramientas, sino que fuera una integración total de dichas herramientas.
  • SANS SIFT: Ahora mismo estoy ojeando esta, es una máquina virtual creada por SANS para Forensics, lo cual ya es toda una garantía. Está muy bien, contiene un montón de herramientas de las que se suelen utilizar y es muy completa.
  • Otras de las que tengo pendientes por probar a ver que tal son porque me parece que pueden tener buena pinta son DEFT y FCCU para Forensics, que son muy nombrados en los foros y listas que frecuento. En cuanto a Pentesting, OWASP Labrat es otra de las que tengo ganas de probar, sobretodo por lo excepcional que son las guias de OWASP, aunque dudo que aporte más que distribuciones como BackTrack o Samurai.
Por supuesto, hay muchas más distros y cada uno tendrá sus favoritas, así que estais invitados a sugerirnos vuestras distros favoritas y hacer una buena recolección entre todos.

lunes, 11 de mayo de 2009

Reverse Engineering de Código Cifrado

En ocasiones cuando te pones a intentar analizar un fichero sospechoso de ser Malware, es posible hacerse una idea de lo que hace simplemente observando el contenido del binario. Otras veces el Malware se encuentra cifrado, por lo que únicamente podremos ver el contenido de la rutina de descifrado.

Sin embargo, cualquier software que se cifra y se tiene que descifrar automáticamente sin intervención humana es necesario que almacene hardcodeada la contraseña de descifrado (o se la descargue de Internet, o por algún otro medio), así que para saber que hace este tipo de malware podemos optar por buscar la contraseña de descifrado en la rutina, o bien optar por dejar que el propio malware descifre el código y analizarlo en memoria. Esta segunda es la aproximación que suelo utilizar yo, y así lo hice recientemente para intentar averiguar el formato enviado y sobretodo devuelto por el Malware ASPROX al acceder a la web forum.php durante un ejercicio que nos pusimos los miembros de Pentester.es durante nuestro último "Hacking Day".
  1. Lo primero es dejar que el malware se ejecute libremente, controlando con una traza de red o monitorización del equipo que su ejecución haya llegado al punto que queremos (en este caso mandar una conexión POST /forum.php). En ese momento lanzamos OLLYDBG y hacemos Attach (File->Attach) del proceso aspimgr.exe, con lo que pasaremos a tener acceso al espacio del proceso.



  2. Una vez tenemos el espacio del proceso nos vamos a la zona de memoria (M) y buscamos la cadena "forum.php". Esta cadena la encontraremos tanto en el sitio original donde la rutina de descifrado la escribirá como en otros sitios donde se haya copiado, así que sabemos que al menos una de las direcciones que saquemos va a ser el sitio donde originalmente va a estar. Conocer esta dirección nos va a ser tremendamente útil para analizar el malware, puesto que a partir de ahí vamos a saber todas las acciones que realiza el malware utilizando esta cadena.




  3. Una vez tenemos esas direcciones de memoria, paramos el proceso, y esta vez lo lanzamos junto con el depurador desde el primer momento, es decir, antes de que descifre, y antes de ejecutarlo, buscamos en la memoria esta misma zona que, por supuesto, no contendrá todavía la misma información, y colocamos un "breakpoint, memory on access" para que el software se detenga cuando se acceda a esta dirección.



  4. Ahora sólo tenemos que dejar que el malware siga su ejecución. Observaremos que se para una primera vez al realizarse una escritura (cuando la rutina de descifrado escribe encima), así que lo lanzamos otra vez y esta vez sí que se detiene en un acceso para lectura.


  5. En muchas ocasiones, la función que accede directamente a la información es una función del Kernel que ha sido llamada desde el malware, así que esa zona del código no es la que nos interesa. Para ir a la zona interesante iremos al menú "Debug->Execute till user code" (ejecutar hasta el código del usuario) para acabar en el código del malware que estamos analizando.

  6. A partir de ahí podriamos proseguir con el análisis. Como podemos ver ya estamos en una zona donde se pueden apreciar cosas interesantes:


Después de acabar este proceso nos encontramos con el código descifrado en la zona de datos, con o que a partir de este punto se puede empezar a analizar los accesos a las cadenas que nos interesan, en este caso un strlen de la cadena que contiene la URL a la que accede el malware.

De esta manera podemos realizar análisis de malware con zonas de código cifradas sin tener que ir ejecutando paso a paso cada instrucción, lo cual nos llevaría mucho tiempo y esfuerzo.

lunes, 4 de mayo de 2009

Analizando malware como servicio

El pasado día 01 de Mayo nos reunimos la gente de Pentester en nuestro "Hacking Day", que no es más que un día en el que nos juntamos para compartir ideas, herramientas, "trucachos", etc. La agenda de ese día era destripar el funcionamiento del malware Asprox (poniendo en práctica las enseñanzas del curso de malware que hace poco hemos recibido por parte de David Pérez).

Durante ese análisis nos encontramos con un pequeño "incoveniente", como era que el bichito una vez infectaba el equipo creaba un servicio, por lo que debíamos depurar un servicio de Windows (cosa que ninguno de los asistentes a la HD había realizado). Para ello le preguntamos al todo poderoso Google y nos llevó hacia una guía que ha sido de mucha utilidad para poder depurar el servicio creado por Asprox. A continuación os pongo el proceso que hemos seguido nosotros para depurar un servicio con Ollydbg:

  1. Configurar las opciones de "ejecución del archivo de imagen", para ello hemos utilizado el metodo 1 de la guía (Nosotros hemos instalado el paquetedbg_x86_6.11.1.402.msi que contiene gflags.exe). A continuación os mostramos las opciones que hemos activado:





  2. El siguiente paso es permitir que el servicio interactúe con el escritorio bajo cuenta del sistema:




  3. Por último subir el tiempo de espera del Administrador de control, el cual tiene un tiempo máximo en el cual el servicio debe haberse iniciado (vamos un timeout). Como vamos a estar trasteando y depurando lo aumentaremos un poco ;).




  4. Por último tendremos que reiniciar (sí, es necesario reiniciar :P) y ya podremos arrancar nuestro servicio (bichito en este caso) junto con Ollydbg para poderlo analizar con detenimiento.