jueves, 17 de marzo de 2011

Seguridad en Internet - Versión Beta Tv


Watch live streaming video from puntolink at livestream.com

La última parte del video está dedicada a todas esas personas que siguen vigentes en su quehacer y para todos aquellos nuevos hackers que están inyectándole energía a la escena colombiana.

“We work in the dark,

We do what we can,

We give what we have,

Our doubt is our passion,

And our passion is our task,

The rest is the madness of art”

 ;)

martes, 15 de marzo de 2011

FLISOL 2011 MEDELLÍN

 

Séptimo Festival Latinoamericano de Instalación de Software Libre en Medellín
—FLISOL— 
El evento de difusión de Software Libre más grande de Latinoamérica

En Abril regresa a Medellín el Festival de difusión de Software Libre más grande de Latinoamérica. Esta vez se realizará el día Sábado 9 de Abril en el Museo de Antioquia entre las 9 a.m. y las 5 p.m. Este espacio estará abierto de manera gratuita para que estudiantes, profesores, empresarios, expertos, escépticos y curiosos de la tecnología se enteren de las alternativas que el Software Libre tiene para ofrecerles. No es un evento sólo para conocedores, es una espacio donde cada uno de nosotros encontrará algo para aprender y compartir. Quedan cordialmente invitados.

¿Qué encontraremos de bueno?

Instalación de sistemas operativos libres como GNU/Linux y *BSD
Puedes llevar tu computador (desktop o portatil) e instalar todo el software libre que quieras (incluyendo los sistemas operativos) completamente gratis, desde software de diseño gráfico hasta software de redes, bases de datos o seguridad informática.

Soporte especializado en problemas de Software Libre
Aún no encuentras solución a un problema con plataformas o aplicaciones libres?, el 9 de Abril es el momento de conocer expertos que pueden orientarte en el tema.

Conferencias sobre temas relacionados con Software Libre
Todo lo que siempre quisiste entender sobre el Software Libre, como se usa?, para que sirve?, con que se come?

Talleres prácticos
Aprende haciendo, trae un laptop configurado para el taller y sigue paso a paso los procedimientos para .... configurar redes IPV6, hacer música, crear diseños gráficos y mucho más!

Asesoría para empresas y proyectos
Piensas que debes dejar de invertir en licencias de software y concentrarte en tu infraestructura y proyectos?, entonces este 9 de Abril puedes conocer a las personas indicadas para hacer realidad este cambio. Te esperamos.

Demostraciones (software libre aplicado), juegos y concursos
El Software Libre funciona?, este es el momento de verlo en acción funcionando, demostraciones relacionadas con sistemas de correo electrónico, clonación masiva de equipos, telefonia IP, seguridad informática y mucho más.

Mas información y registro: http://medellin.flisol.info/

Nos vemos en el FLISOL!

viernes, 11 de marzo de 2011

Configurando ATS (Apache Traffic Server)

Muchas veces en networking necesitamos trabajar con servidores proxy/cache, proxy inverso, de balanceo de carga, etc, etc. Y si somos afines con el mundo del SL casi siempre optamos por trabajar con squid o varnish, pero que sucede cuando necesitamos considerar la escalabilidad, el alto rendimiento o la posibilidad de hacer cache inversa de forma efectiva?.

Quiero hablarles del proyecto Traffic Server, un proxy con el  cual he trabajado hace un tiempo y se ha comportado bastante bien, este servidor nos permite hacer lo mismo que hacen otros servidores proxy/cache pero quizás por su diseño nos pueda dar mas rendimiento en funciones claves como  el balanceo de carga o la cache inversa. De forma adicional nos presenta otras características como la posibilidad de personalizar plugines o generar  reportes detallados de los hits (esto lo incorpora el mismo software y no es necesario agregar un complemento). Otras características se pueden encontrar en el sitio oficial del proyecto.

Pero como no todo es perfecto, el problema actual es que no existe mucha documentación ni ejemplos prácticos disponibles, tenemos como fuente principal la documentación oficial pero puede llegar a no ser suficiente si es la primera vez que nos encontramos con este servidor. A continuación voy a dar un procedimiento básico para ponerlo en marcha. La parte avanzada queda como ejercicio :P

PASOS PARA INSTALAR TRAFFIC SERVER:
1. Lo primero que debemos hacer es descargar la última versión estable disponible del sitio oficial:

2. Luego lo descomprimimos y desempaquetamos, continuando con el procedimiento normal para compilar software desde las fuentes:

anonymous#bunzip2 trafficserver-2.0.1.tar.bz2
anonymous#tar xfv trafficserver-2.0.1.tar

trafficserver-2.0.1/
trafficserver-2.0.1/m4/
trafficserver-2.0.1/m4/apr_network.m4
trafficserver-2.0.1/m4/ltversion.m4
trafficserver-2.0.1/m4/lt~obsolete.m4
trafficserver-2.0.1/m4/ltoptions.m4
trafficserver-2.0.1/m4/libtool.m4
trafficserver-2.0.1/m4/apr_common.m4
...

anonymous#cd trafficserver-2.0.1
anonymous#./configure

En este punto es posible recibir errores relacionados con librerías, en un sistema debian por ejemplo, es necesario instalar las librerías tcl,expat, sqlite, pcre :

apt-get install tcl-dev
apt-get install libexpat1-dev
apt-get install libsqlite3-dev
apt-get install libpcre3-dev

También es importante que tengamos los componentes para construir software:

apt-get install build-essential

3. Intentamos compilarlo

anonymous#make

En este punto es posible recibir un error porque el grupo llamado "nobody" no existe, una solución rápida para esto es crear un grupo en el sistema  llamado "nobody".

anonymous#groupadd nobody
anonymous#grep nobody /etc/group  
nobody:x:1001:
anonymous#

4. Finalmente lo instalamos en el sistema.

anonymous#pwd
/traffic/trafficserver-2.0.1
anonymous#make install

Muy bien !, nuestro sistema queda instalado en la ruta /usr/local/etc/trafficserver/. Ahora que?

Todos los archivos de configuración:


Binarios relacionados con el servicio:

Como dijimos al principio es posible configurar el servidor Traffic Server para funcionar de diferentes formas, así que intentaremos hacerlo funcionar como un proxy común y corriente, para esto debemos editar variables en el archivo de configuración principal. Si hacemos una prueba rápida  con la configuración por omisión nos encontramos con un error.


 
El servidor Traffic Server por omisión bloquea la salida de peticiones, esto lo hacen sus desarrolladores para evitar que los proxies mal configurados queden abiertos posibilitando ataques y todas esas otras amenazas que trae consigo exponer un servidor de esta forma.

Después de buscar, buscar y buscar en foros y demás encontré que la forma como se estructura el servicio es muy clara y debemos tener bien definido el rol o los roles (es posible hacer varias funciones al tiempo, por ejemplo reverse y transparente) que queremos tener.

**TRAFFIC SERVER EN MODO TRANSPARENTE**

En el archivo de configuración records.config (el archivo principal) debemos editar la línea:

CONFIG proxy.config.url_remap.remap_required INT 1

Y dejarla así:

CONFIG proxy.config.url_remap.remap_required INT 0

Tengan mucho cuidado en no cambiar la estructura del archivo de configuración, como se puede observar el software es bastante antiguo y los parsers para estos archivos son bastante "exigentes".

Una vez hecho el cambio podemos reiniciar el servicio:

anonymous#trafficserver restart
Restarting start/stop Traffic Server: trafficserver.
anonymous#
Y eso es todo, ya podemos usar nuestro proxy como siempre lo hemos usado:

A. Configurandolo en los browsers de los clientes
 
B. Haciendo un redireccionamiento en el firewall para que todo el tráfico web apunte al puerto 80  donde estará el proxy  (modo transparente), para esto se debe modificar la siguiente variable:

CONFIG proxy.config.http.server_port INT 8080

Por defecto el proxy escucha en el puerto 8080, así que debemos modificar esta línea, quedando así:

CONFIG proxy.config.http.server_port INT 80

**TRAFFIC SERVER EN MODO CACHE INVERSO**

En este escenario aceleramos las consultas a nuestros sitios web, haciendo una cache inversa, para esto necesitamos dejar la variable como estaba inicialmente.

CONFIG proxy.config.url_remap.remap_required INT 1

Y luego debemos editar el archivo de configuración remap.config, algo de información se puede encontrar en el manual.

En el archivo remap.config podemos agregar todos los "mapeos" línea por línea dependiendo de lo que queramos hacer, por ejemplo este mapeo uno a uno cambiando la IP y el puerto:

map http://[IP EXTERNA]:[PUERTO EXTERNO]  http://[IP INTERNA]:[PUERTO INTERNO]

Con esta sencilla sintaxis vamos a lograr que nuestro servidor proxy haga cache de las peticiones externas y las redirija al servidor interno (que puede ser el mismo con un servidor web escuchando en otro puerto). Una vez modificado el archivo reiniciamos el servicio y esta listo nuestro proxy inverso.

Para terminar podemos observar una salida del sistema de estadísticas que trae incorporado el software:

 

Aún queda mucho por explorar, este software cada vez esta tomando mas fuerza dentro de la comunidad de Software Libre, recuerden que ahora es un hijo de la fundación apache y seguramente seguirá mejorando como cada uno de sus productos.

Les dejo algunos enlaces donde se hacen benchmarks logrando que una maquina promedio pueda soportar hasta 100 mil peticiones por segundo (100.000 r/s)


Otros enlaces donde pueden obtener mas información:
Wiki:

Guia de administración:

Teoría:

Foros:

jueves, 3 de marzo de 2011

Tracking The Tracker

Quiero compartir en esta entrada un "truco" que les puede ser útil en algún momento cuando alguien este tratando de hacerles email tracking.

#set mode black On

En algunas ocasiones (personales, laborales) es posible que se necesite encontrar la dirección IP de una persona y después de haber probado los trucos de MSN y similares, decidimos que es mejor hacer un rastreo por medio del sistema de correo. Para esto podemos escribir un correo y esperar a que nos devuelvan una respuesta y tratar de identificar la dirección IP desde donde escribieron el correo, sin embargo en los sistemas públicos como Gmail, Hotmail, Yahoo, etc es posible que no podamos identificar esta dirección porque los servidores "la esconden".

Si enviar este correo no funciona pasamos a lo siguiente que consiste en enviar un email con un sistema de rastreo incorporado (email tracking), la técnica que se usa es incluir una imagen única dentro de los correos que nos permita identificar los datos básicos del navegador y la dirección IP de la persona que abra el correo, magnifico no?. Esta técnica es bien conocida y existen sitios web que se dedican a ofrecer este servicio, ofreciéndonos un portal de administración web donde podemos recibir los datos de forma organizada. Ejemplos:
Claro está, si lo vemos de una forma mas común, el email tracking lo hacen las  empresas de salud, pensión, bancos, centros comerciales, etc, que nos envían publicidad, recordatorios de eventos o promociones.
#set mode white On

Cuando recibimos estos correos que intentan rastrearnos hay forma de identificarlos, un procedimiento básico es este:

1. Buscamos una alerta indicándonos que el correo cargará imágenes desde sitios externos.

2.  Recibimos mensajes que nos incentivan a hacer click.


3. Cuando supuestamente cargan las imágenes pero no vemos nada, realmente si están allí,, solamente que están del color del fondo o transparentes. Una forma de verlas es resaltar el texto hasta encontrar pequeños recuadros, rectángulos, etc.

Muchas veces las imágenes de tracking son pixeles de 1x1, bastante pequeños para que los veamos.


4. Una vez identificados los recuadros podemos sacar las URL de tracking de las imágenes (haciendo click derecho - ver código fuente) estas son las que se cargarán cuando se abra el correo y son las que posibilitarán que detecten la IP desde el lugar que la abrimos. Otra forma de verlas es quitando el soporte de HTML del sistema de correo, de esta forma las imágenes no podrán cargar automáticamente.

Ejemplos  de Urls son:
  • http://email.smdigital.com.co/a/hBNcCI6B8Il1IB8Zcq0Nsh0BH6t/imagen
  • http://200.31.94.56/DMG.BulkMailReports/Rastreo/AbrioMail.aspx?compania=xxx&campana=201l-1&email=juanito@google.com&accion=clic&url=http://www.xxx.com/
  • http://www.getnotify.com/white.asp?eid=6611e6bc619fe9e0c6d68a5328319104
  • http://images.mail69.com/2b71b/signature.gif
En conclusión, no tenemos que abrir el correo que consideramos sospechoso, pero si podemos identificar cuales son las imágenes de tracking que se quieren robar nuestra información.
Un sistema de estos se puede programar fácilmente, con los siguientes pasos:

1. Instalar un servidor web público.
2. Crear un script que genere una imagen y use como nombre un código único (por ejemplo un hash) en una ruta especifica.
3. Insertar en el correo el link de la imagen dentro de una etiqueta OnLoad o SRC de HTML.
4. Esperar a que la persona abra el correo.
5. Verificar los logs de acceso del servidor web y extraer la información relacionada con el código de la imágen, los datos que se pueden extraer son los mismos que genera el navegador cuando visita un sitio web, en apache los podemos ver en access_log.

Entonces cual es la diferencia con esta técnica y con lograr que el usuario haga click sobre un enlace cualquiera?, la verdad ninguna, los datos que podemos conseguir son los mismos, el único detalle es que esta técnica de las imágenes se puede ver como algo automático.

#set mode Gray On
Ahora sí, contragolpe!
El truco que quiero explicarles es que podemos rastrear a la persona que nos quiere rastrear por medio del correo, cómo?. Los sistemas de tracking de emails generalmente no validan la respuesta que obtienen de los logs del servidor, así que podríamos intentar insertar código HTML, JAVASCRIPT tal y como si se tratara de un bug de XSS logrando con esto obtener información de la persona que nos rastrea. Para comprobar esto tomé dos de los sistemas gratuitos mas populares y con estas líneas de python inserté una alerta en javascript:

import urllib2
url = 'INSERTAR_URL_DE_LA_IMAGEN_QUE_NOS_RASTREA'
user_agent = '<script>alert("XSS en sistemas de Tracking de Emails")script> (Mozilla 4.4 compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
req = urllib2.Request(url, '', headers)
response = urllib2.urlopen(req)
Demostración:

Con esta técnica también se pueden rastrear defacers, spammers, pedófilos y todo esa gente que pide a gritos que la encuentren.

Algo para pensar:
 Muchas veces cuando estamos investigando, usamos plataformas disponibles  en Internet y confiamos ciegamente en ellas. Sistemas de mensajería instantánea, sistemas de correo, aplicaciones en la nube y en general todas esas herramientas que nos ayudan a hacer la tarea. Pero pocas veces nos cuestionamos sobre la seguridad de las mismas, sobre la confiabilidad de los plugins que descargamos, sobre los shellcodes que ejecutamos y esto simplemente es otro vector de ataque en Ingeniería Social, muchas personas liberan código, aplicaciones, plugins, etc, solo con el objetivo de insertar malware por doquier. ¿Cuantas aplicaciones has instalado que nunca hayas usado?, cuantas puertas traseras tienes en este momento?

Como ejemplo de esto expongo una vulnerabilidad de uno de  los servicios antes mencionados para  hacer tracking de emails, la cual me permitirá en determinado momento hacerle seguimiento mas completo a alguien que me lo haga a mí. Es un ataque simple de SQL Injection, pero cuantos de nosotros nos cuestionamos que esto pueda suceder en un servicio con miles de usuarios?



 

Eso es todo,
Saludos.

Entradas populares