lunes, 31 de octubre de 2011

MiniReto - Deface It!


Hace un par de días publiqué un mini reto (lo encuentran aquí) con el objetivo de pasar un rato agradable y aprender un poco. La verdad el tema central del reto tiene como base una historia de pentesting real en un ambiente corporativo, pero quise recrear el escenario para que otros profesionales y estudiantes no descarten estos vectores de ataque dentro de sus propios análisis. Obviamente cambian algunas condiciones como por ejemplo que en la vida real fue un entorno LAN y se usaban NAS y SANs reales, en este caso el protocolo se lleva a Internet y se usa un simple servidor corriendo Linux.

Hasta el momento he publicado un total de 3 mini retos, casi siempre dentro del entorno académico donde enseño, pero esta vez con ayuda de algunas listas de correo tuvimos un juego no tan local. El mini reto tuvo una duración de 24 horas aproximadamente, tiempo estimado para que alguien pudiera dar con la solución, quizás fue poco tiempo, quizás fue mucho, lo importante era aprender en el camino.

El reto fue anunciado así:
Link en Sec-Track (http://www.sec-track.com/deface-it-reto-3-by-nonroot)


La administradora de red vanessa  publicó su primer portal web.
Su fuerte son otros temas, sin embargo le causa curiosidad el tema de los servidores web, por eso se animó a crear su propio espacio personal.

Misión: Hacerle un DEFACE al portal:  http://107.22.221.188/

Reglas:
- Permita el juego de los demás (juego limpio)
- Gana el primero que haga el defacement
- El premio es una calcomanía de BlackHat (es enserio, no hay mas plata para premios :P )
- Canal de soporte en #ctf-colombia (irc.freenode.net)
- Vale todo! (menos D.o.S, D.D.o.S)
- Think Different!

A jugar!


Algunas estadísticas del reto:


Hasta donde me dice el apache y sus logs, entraron mas de 700 visitantes y un total de 477 IPs únicas, como quien dice, que estuvo movido el reto. La mayoría de logs se recolectaron del sistema web incluso después de haber twitteado (@nonroot) que el reto NO era web.


Hubo jugadores no solo desde Colombia, las dos IPs que mas se acercaron estaban en Egipto y otra desde Argentina. Sin embargo nadie solucionó el reto.

Muchos de los jugadores estuvieron preguntando por la solución, así que saqué los archivos de configuración y los discos usados para que puedan recrear el escenario.


El reto como se dijo mientras estuvo abierto, si bien tenia como objetivo hacer un defacement (lo que claramente implica una plataforma web), no obligaba a que se resolviera usando vulnerabilidades web.
Siempre hay que analizar todos los vectores de ataques posible, porque no sabemos donde encontraremos la vulnerabilidad. Herramientas como nikto, dirbuster, etc, son buenas, pero no siempre van a funcionar en todos los entornos y este no era el entorno para usarlas.

El reto apuntaba a un target iSCSI implementado en Linux con la herramienta: 

Las pistas iniciales debían conducir a encontrar el puerto correcto y usar las herramientas para dicho protocolo, después se encontrarían con mas pistas hasta alcanzar la solución final.

Para reproducir el escenario se requiere un sistema linux, instalar el target ISCSI mencionado y poner los "Discos Duros" en el directorio /backup/ , para mas información mirar la configuración anexa del target (ietd.conf).

El archivo necesario para reproducir el escenario lo pueden descargar desde aquí:

Y la plataforma web?, la plataforma web era un joomla con todas las configuraciones necesarias para que no fuera vulnerable (a menos que alguien tenga un zeroday para la última versión), así que no era relevante en la prueba. El objetivo era conseguir el password de acceso administrador  por otro medio y luego ingresar al portal y hacer el defacement.

A tener en cuenta durante el desarrollo del reto:


  • Los LUN están formateados, tener en cuenta estos formatos para seleccionar un cliente adecuado.
  • Existe una recomendación para usar 12 caracteres en los passwords CHAP en ISCSI, esto aunque no lo crean reduce el ámbito de pruebas para un bruteforce, por ejemplo, pocas personas quieren recordar passwords de 12 caracteres complicados.
  • ¿Cómo hago para saber que el protocolo es iSCSI, si no esta en el puerto por defecto?
  • ¿Cómo hago para hacerle fuerza bruta al proceso de discovery de los targets? (para el reto el discovery estaba sin passwords, pero es posible configurarlos, cómo haríamos para descubrirlo?)
  • ¿Cómo hago fuerza bruta para el password del target (CHAP)?
  • Si logro encontrar los tokens en el intercambio CHAP, ¿Cómo puedo encontrar el password?
Espero que se animen a montar el reto y postear sus conclusiones, como ya saben, tenemos el wiki de Sec-Track disponible para hacer los aportes.

Gracias a todos los que jugaron y a los diferentes proyectos (kungfoosion, sec-track, ctf-colombia, hackplayers) por replicar el tema.

Saludos.

miércoles, 20 de julio de 2011

Challenge 7 of the Forensic Challenge 2011 - HoneyNet.org


Unos días después de anunciar los ganadores del reto 7 de honeynet me ha llegado el fabuloso premio que pueden ver en la imagen. La verdad el premio es compartido con Camilo Zapata (duma) ya que participamos juntos en el reto, pero como usé mi dirección de correo, me quedo con el :P 


El reto consistió en un análisis forense a una maquina Linux comprometida por el servicio Exim y aunque personalmente no quede muy a gusto con el resultado, nos divertimos analizando las imágenes de memoria del sistema.


En el paper final pueden encontrar las respuestas a las preguntas del reto y unos comentarios sobre nuestros puntos de vista, pues en las imágenes a analizar encontramos evidencia del proceso de construcción del reto, por lo tanto lo descartamos como evidencia de intrusión, cosas como:

- La maquina que recolectaba la imagen (dd) con la que jugamos no podía ser la maquina del intruso (según el timeline), sin embargo el primer puesto dijo que eso era cierto.

-La maquina del intruso correspondía a una sola IP, la segunda IP parecian ser pruebas contra el reto (pruebas de diseño), en nuestro concepto estos fueron pequeños errores en la preparación del reto, sin embargo en el paper ganador estos datos se asociaron a los intrusos.

Para validar el alcance de la explotación de los dos exploits usados, investigamos el tiempo de acceso a las librerias de los binarios ejecutados, esto nos daba la certeza del momento exacto y si hubo o no intrusión.


Eso es todo, con este post los quiero animar a participar en los próximos retos del proyecto HoneyNet, que si bien no esperamos ganar premios significativos ($$), es un escenario propicio para aprender.

Los solucionarios al reto 7 de forense los pueden descargar de:

Update: Solucionario en Español:
http://www.openbsdcolombia.org/honeynet/RetoForense7-Honeynet-Fernando_Y_Camilo.pdf

Hasta la próxima!

viernes, 8 de julio de 2011

Campus Party Colombia 2011


Este año mi participación en #CPCO4 estuvo bastante movida, por un lado y como lo he hecho en las pasadas 3 Campus Party de Colombia, estuve apoyando el equipo de tecnología con el montaje y puesta en marcha de la red (IPv4, IPv6) para más de 4500 campuseros, este año el equipo de tecnología recibió el apoyo de todo un batallón de estudiantes de la Escuela de Ingeniería Julio Garavito.

[Pegar foto de los estudiantes de la escuela Aquí]
 
Luego y durante la semana de campus estuve pendiente de que las cosas funcionaran adecuadamente, encontrando intrusos informáticos y solucionando problemas no tan comunes como personas saltando en las cajas de los switchs, mientras gritaban BXXBIS!! BXXBIS!!.


Este año también estuve con dos grandes amigos (Jhonatan Silva y Camilo Zapata) presentando un taller en el área de seguridad y organizando el reto informático denominado para esta edición: WarGame Campus Party (#WGCPCO4), por primera vez en Colombia se diseña un reto con estas características y la expectativa es que los niveles de los juegos deben seguir aumentando.

El reto patrocinado por Campus Party buscaba que los participantes solucionaran 10 niveles de diferentes dificultades y sumaran puntos hasta obtener 900 puntos. El premio para el ganador fue un IPAD 2.
Algunos pantallazos de la plataforma que desarrollamos:

 Sistema de captura de banderas

 Comandos por consola, para los mas geeks!

 Sistema de descarga de retos con pistas incluidas

 Cada nivel entregaba sus correspondientes pistas, por entorno gráfico o consola

 La pirámide de retos, diferentes niveles de dificultad

 Pantallazo general de la plataforma del #WGCPCO4

En el #WGCPCO4 se inscribieron 129 personas de las diferentes ciudades del país y estuvieron jugando hasta el último día 40, la puntuación final se puede ver a continuación:

Desde hace varios años hemos estado participando en retos de seguridad, también trabajando en el desarrollo de diferentes plataformas que hacen posible que las personas puedan divertirse y aprender jugando. Para dar soporte a todos los retos de seguridad informática tenemos una lista de correo donde puedes conocerte con otras personas interesadas en estos temas:

LISTA DE CORREO:

Las diferentes presentaciones que hicimos como grupo en #CPCO4 las pueden descargar aquí:
Y lo más esperado, las soluciones (Writeups) del #WGCPCO4:
Por ahora no es más, quiero agradecer a todas las personas de las cuales siempre aprendo algo en cada evento, a los amigos con los que me reencuentro cada año y en general a todas las personas que hacen posible que una Campus Party sea tan divertida como puede ser. Próxima estación #CPES15 y #CPMX3

Hasta la próxima!

domingo, 5 de junio de 2011

WriteUP GB200 CTF QUALS DEFCON

En el reto "Grab Bag" 200 encontramos un servidor corriendo en el puerto 6000 y para el cual nos dan la clave: "Never\$olv3d!". Cuando nos conectabamos al puerto y enviamos cualquier carácter obteníamos la siguiente salida:
000111222333444555000111222333444555000111222333444555

Después de esto el sistema esperaba una entrada y respondía con otra fila de números similar o con un mensaje de mensaje incorrecto. En el análisis encontramos:

1. Los números solo eran desde el 0 al 5.

2. El mensaje de error se generaba cada 4 números, por lo tanto lo que el sistema esperaba era de 4 números. Por lo que teníamos posibles combinaciones de 0000 a 5555.

3. Si no respondiamos una supuesta secuencia correcta entonces se generaba un error.

La solución:

Después de probar diferentes cosas intenté con cada combinación de números así: 0000, 1111, 2222, 3333, 4444, 5555, el único que generó una respuesta diferente fue: 2222, con este número obteníamos un "0" y luego el programa abortaba (close socket).

Intenté entonces enviarle la información de otra manera:

$perl -e 'print "Never\$olv3d!\n"' | nc pwn522.ddtek.biz 6000

y al ver que lo podía hacer, entonces envié el caso especifico del 2.

$perl -e 'print "Never\$olv3d!\n2222"' | nc pwn522.ddtek.biz 6000
000111222333444555000111222333444555000111222333444555
000111222333444555000111222333444555000111222333444555
Let's not be too rough on our own ignorance; it's what makes America great!

Busqué esta frase en Internet y encontré que el autor era:  Frank Zappa 
Intenté varias combinaciones en el scoreboard, pero finalmente use la clave:
KEY= "Let's not be too rough on our own ignorance; it's what makes America great!"

Resultando ser la KEY correcta =>  + 200.
Fácil no? :P

Pd
Este reto fue resuelto durante una clase de seguridad con los aprendices del SENA, gracias a ellos!.

jueves, 7 de abril de 2011

Programación Flisol Medellín 2011


El Flisol Medellín será en el Museo de Antioquia durante todo el día Sábado  9 de Abril de 2011. La programación oficial del evento la encuentra a continuación:


Recuerde que puede llevar su computador para que sea reinstalado con Software Libre (Linux, BSD, Haiku, etc) o puede asistir en compañia de sus amigos a las conferencias y talleres. Si quiere asistir a los talleres por favor lleve su portatil con un sistema operativo Linux funcional para que pueda aprovechar al máximo a los expertos.

Si necesita un espacio donde hablar acerca de sus proyectos de Software o Cultura Libre, recuerde que tendremos una zona BarCamp donde podrá reservar 20 minutos para contarle al público sus experiencias.  Si requiere mas información, por favor visite la página oficial del #FlisolMed y contacte a uno de los organizadores.

Quedan todos cordialmente invitados.

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.

sábado, 19 de febrero de 2011

Social engineering - Example


La ingeniería social se puede dar de muchas formas, pero dos vectores de ataque principales ocurren en las siguientes circunstancias:

1. La víctima tiene deseos de colaborar y de sentirse útil, en ese momento esta persona será vulnerable si es posible intercambiar el servicio por unas palabras que provoquen sensaciones de satisfacción o por una remuneración que estimule positivamente a la víctima.

2. La víctima esta solicitando un favor, tiene una necesidad, en ese momento es vulnerable porque su foco de atención es la necesidad puntual y cualquier otra cosa estará en segundo plano, por lo tanto siempre y cuando parezca que esta obteniendo una solución a su necesidad la víctima “estará dispuesta” a entregar la información.

En este caso de estudio evaluaremos un ataque tipo 2.

domingo, 13 de febrero de 2011

Serial numbers for AppZapper

Existe una herramienta para MacOSX bastante útil que nos permite eliminar esas molestas aplicaciones que instalan archivos donde menos lo pensamos, su nombre es AppZapper. Esta herramienta no es software libre, pero tiene un demo de 5 Zaps (nada mas) después de los cuales hay que registrarla para seguir usandola.

AppZapper (2.0.1 - build 216) tiene un menú donde podemos registrar la aplicación introduciendo un usuario con su respectivo serial válido. Antes de comprarla quise buscar posibles seriales para probar (XD) y me encontré que pasandole un simple strings al binario salen nombres y seriales que al parecer son válidos, probé uno y funcionó. Será que es verdad? o fue pura casualidad?



Si alguien lo prueba que me avise:

MacOSx>pwd
/Applications/AppZapper.app/Contents/MacOS
MacOSx>strings AppZapper | grep -i APZ
APZP-101-109-198-114
APZP-105-108-206-110
APZP-97-99-208-99
APZP-98-97-207-101
APZP-112-102-226-115
APZP-110-91-217-103
APZP-101-115-217-101
APZP-101-112-198-122
APZP
MacOSx> 

Ahora ya no se si comprarlo ...

Update:
Gracias a (R) me entero de este articulo donde explican lo débil del algoritmo de generación de seriales: http://leah.chooseyourownerotica.com/blog/?p=60

Update 2:
Do you want your own name?
http://nonroot.blogspot.com/2013/01/keygen-for-appzapper-just-for-fun.html

Entradas populares