lunes 21 de diciembre de 2009

FELIZ NAVIDAD!!!

Muchas gracias a todos por seguir este blog ... Nos vemos muy pronto, no sin antes desearos que paséis muy buenas fiestas. Y quién mejor para desearlo que el creador del mejor sistema operativo del mundo ... Linus Torvalds ... xD



Espero que los reyes, o quien corresponda, os traigan un regalo como Dios manda, uno como éste ... Linux no tiene nada así, ¿verdad?



El año que viene, seguiremos en la línea de programación/hacking de php (LAMPs) y, seguramente, también hablaremos mucho mucho de troyanos, y de cómo programarlos.

¡¡Nos vemos!!

jueves 17 de diciembre de 2009

SOBRE EL IMPACTO DE LOS 0-DAYS EN APLICACIONES DE USUARIO

El día 15 salió la noticia de un nuevo 0-day para Acrobat Reader. No es la primera vez que esto sucede y, a día de hoy, sigue sin haber un parche publicado.

En este artículo veremos cuales son las medidas que pueden tomarse para prevenir este vector de ataque.

(1) Usar otro lector de pdf

Por ejemplo, en la página pdfreaders tenemos una lista de lectores de pdf gratis que no sucumbirían ante un ataque dirigido contra acrobat reader.




El problema es que no son exactamente lo mismo y suele pasar, por supuesto en el momento más inoportuno, que se imprima o se visusalize mal un documento.



En este ejemplo, visualizado con sumatra, puede verse como el título del artículo, que se ve perfecto con Acrobat Reader, sale mal. Del mismo modo, otros visualizadores fallan en otros documentos.

Por lo tanto, en una empresa no es tan fácil como decir "pues usa otro". Al menos ciertas personas deberán tener Acrobat Reader por narices ...

(2) Mantener Acrobat Reader Actualizado a la última

Esto supone un montón de trabajo, puesto que salen actualizaciones continuamente y hay que probarlas antes de distribuirlas. Además, en casos como el que comentamos (0-day) no serviría para nada. Tampoco quiero decir que no se deba actualizar siempre que se pueda.


(3) Los usuarios sólo pueden salir a internet vía proxy

Todos los usuarios de la empresa, sin excepción (admins incluídos), deberían salir a internet vía proxy. ¿Por qué? Pues porque todos los exploits se preparan asumiendo una conexión directa a internet y adaptarlos a usar un proxy suele requerir bastante tiempo.

El problema es que ciertas personas suelen tener salida directa a internet:

- admins
- depto. seguridad
- depto. administración
...

Aquellas personas que necesiten total libertad navegando por internet NO deberían usar NAT, sino un proxy que les permita la bajada de ficheros, navegar por cualquier página, etc ... Es decir, un squid metiéndolos a ellos en lista blanca. De este modo, si alguno de ellos ejecuta sin querer un pdf, o lo que sea, infectado, el hacker todavía no podría establecer una shell inversa.

Pero ya hemos dicho que los exploits pueden reescribirse para que salgan vía proxy-HTTP y ofrezcan una shell inversa al hacker ...

(4) Filtrado del tráfico de salida hacia internet con mod_security

Supongamos que uno de los usuarios es infectado por un virus que inyecta código en iexplore y usa su navegación (vía proxy) para recibir comandos del hacker. Una buena solución sería filtrar todo el tráfico de salida y denegar todo lo que contenga comandos (telnet, ftp, ...). Esto hace mucho más complicado el establecer una shell inversa saliendo por el proxy.

Vamos a repasar brevemente cómo se hace esto:

Instalaremos un apache con modsecurity y configuraremos el apache para que haga de proxy. Para ello, necesitamos los siguientes módulos cargados en el httpd.conf:

mod_proxy
mod_proxy_http
mod_proxy_connect
mod_negotiation


Además, necesitamos configurar el apache para que haga de proxy, añadiendo esto al httpd.conf:


<IfModule mod_proxy.c>
ProxyRequests On

<Proxy *>
Order deny,allow
Deny from all
Allow from 192.168.1.0/24
</Proxy>


Además, necesitaremos quitar reglas del modsecurity, porque si no nuestros usuarios apenas podrán navegar. En particular, borraremos todo lo que corresponde a XSS y SQL-injection (también dentro de modsecurity_crs_40_generic_attacks.conf), puesto que no son necesarias, así como las de anomalías en el protocolo HTTP. Yo he dejado estas:

modsecurity_40_generic_attacks.data
modsecurity_50_outbound.data
modsecurity_crs_40_generic_attacks.conf
modsecurity_crs_45_trojans.conf
modsecurity_crs_47_common_exceptions.conf
modsecurity_crs_48_local_exceptions.conf
modsecurity_crs_49_enforcement.conf
modsecurity_crs_50_outbound.conf


Y todavía se puede afinar más ... Con esto, funciona bien gmail, que es un buen indicativo de que todo irá bien.

CONCLUSIONES

Muchas veces nos centramos en securizar la DMZ y nos olvidamos del vector de ataque más simple pero a su vez más eficiente ... el usuario. Tanto Acrobat Reader como Ms Office son líderes en cuanto a la aparición de 0-days y son, por lo tanto, dos importantes vías que intentar a la hora de atacar una empresa.

Nuestros esfuerzos para solucionar esto, aparte de parchear el software del usuario (muchas veces inviable), deben estar centrados en hacer MUY complicado que un exploit pueda establecer una shell inversa, y que mejor forma que filtrar todo el tráfico de salida en busca de comandos como telnet, dir, ...

Saludos y hasta pronto.

miércoles 16 de diciembre de 2009

ATAQUES INTERNOS: CUANTO MÁS SIMPLE, MEJOR

Como las "buenas" pelis, este post está basado en hechos reales ...

Hoy vamos a hablar de un método tan simple como eficiente de realizar robo de información confidencial en una empresa con unos niveles de seguridad relativamente altos.

Normalmente, uno se imagina que uno de sus empleados es un experto hacker que va a bajarse un exploit de internet para hacerse root y empezará a atacar nuestros servidores uno a uno ... Lo típico: una transferencia de zona, un ms-sql server accesible, subir una shell, saltar a otro servidor, ...

Obviamente esto no es así.

El empleado medio tiene suficiente con hacer su trabajo e irse a casa pronto con su familia todos los días como para ponerse a estudiar herramientas de hacking. Y no, normalmente no hay posibilidad de arrancar con un CD, ni hay salida directa a internet, ni te puedes bajar un tar.gz de milw0rm, ni conectar un pendrive ... al menos no en entidades con unos niveles de seguridad relativamente altos (grandes empresas, bancos, ...).

Y entonces, ¿qué puede hacer un empleado para fastidiar a su empresa? Sencillo: acceder a información confidencial y venderla. Veamos cómo se hace:

Es habitual que haya discos compartidos donde los usuarios de distintos grupos van dejando su documentación. Según el nivel de acceso de cada usuario podrá ver más o menos discos. También es habitual que la documentación de la empresa se encuentre centralizada, puesto que tener muchos discos pululando puede ser bastante latazo de administrar.

Ahora bien, ¿dónde se meten los documentos confidenciales? La tendencia, y es normal, es guardarlos cifrados. Es decir, es realmente fácil encontrarse que dentro de las carpetas compartidas tengamos un pdf o un .doc cifrados. Y estos documentos son muy fáciles de buscar ... siempre están en una carpeta que se llama seguridad, reports, contraseñas, contabilidad, rrhh, o con algún nombre que canta un montón. Pongamos que es este: /compartido/seguridad/reports/PCI-DSS/

El siguiente paso es ... abrir el documento y verificar que está cifrado. ¿Lo está? Estupendo. Mándatelo por mail a casa. Seguramente podrás copiártelo a tu escritorio y reenviarlo por correo electrónico. Ah!, y no olvides comprimirlo con contraseña FUERTE y cambiarle el nombre.

Cuando lo comprimas, pon que sí también en la opción "cifrar nombres de archivos". También deberías comprimirlo junto con algún otro archivo de texto no vacío, para que el tamaño de lo que envías no coincida con el de los datos confidenciales. No vaya a ser que guarden copias de todos los mails y puedan ver que lo has enviado fuera y puedan verificar lo que mandas ... Otro pequeño detalle ... no mandes el mail justo después de bajarlo. Espera unos días para que no sean eventos consecutivos y los puedan correlar. Por último, que no sea ese el único archivo que lees ... lee bastantes en días varios y manda archivos zippeados con contraseña y basura dentro. Cuanto más aletorio sea todo mejor.

Y el último paso es reventar la contraseña. Ya hemos hablado en su momento de la eficacia de passware password recovery recovery kit enterprise. Con él es bastante posible que reventemos el archivo y recuperemos el documento.



Ahora sólo resta hacer lo que debamos con el documento (venderlo, colgarlo en la red, ...).

Finalmente, una pequeña nota: en los logs de los servidores queda guardado qué usuario accede a qué documento. Normalmente, en las grandes empresas, todos los usuarios conocen las passwords de sus compañeros de equipo. Estoy seguro de que no querrás usar tu usuario y tu password ... Infórmate bien de cómo se gestionan los usuarios/passwords antes de lanzarte a la aventura.

Otro punto a tener en cuenta es que es conveniente ESPERAR un tiempo hasta hacer algo con el documento robado. De esta forma facilitamos que otros compañeros lean ese mismo documento, lo que hará más difícil identificarnos.

Saludos y hasta pronto.