31 jul 2011

Informe Flu - 30

Damos comienzo al resumen de la semana 30 de Flu. Disfrutad del resumen:

Lunes 25 de Julio

Martes 26 de Julio

Miércoles 27 de Julio

Jueves 28 de Julio

Viernes 29 de Julio

  • Como nos solicitó Dani Kachakil al final de su entrevista. la siguiente tocó el turno de pasar por nuestras preguntas al gran Miguel Gesteiro: Entrevista a Miguel Gesteiro

Sábado 30 de Julio

30 jul 2011

Hack Facebook: Backtrack 5, Gerix wifi cracker, SET, DNS Poisoning...

En este vídeo muestro como hacer un ataque a una red, imaginando que solo deseamos los logins de facebook, esto como solo un ejemplo puesto que con lo que a continuación muestro podemos juegetear con una infinidad de cosas mas.

Como primera parte crackeamos la clave WEP del router, posteriormente nos conectamos a ella una vez dentro lanzamos el ataque con SET que prácticamente lo que hace es falsear una pagina al gusto o bien ya tiene varias predeterminadas en este caso escogemos una predeterminad como facebook, al poner nuestra IP en el navegador nos damos cuenta de como prácticamente clono la pagina de facebook y si alguien intenta logearse a ella, nos manda su credenciales hacia nosotros, ahora bien para que sea efectivo esto nos introducimos en el router, en este caso un 2wire de infinitum, una vez dentro del router nos vamos a sus configuraciones avanzadas y en la parte de DNS introducimos nuestra IP, en ese momento cualquier usuario que este en esa red y quiera entrar a facebook.com se dirijan hacia nosotros, esto hará que les muestre la pagina de login, y al momento que se logien nos manden sus credenciales puesto que se comunican con nosotros y no con facebook.

De esta manera Podemos hacer una infinidad de cosas mas, hasta donde la imaginación, creatividad, astucia y conocimiento nos lo permita...VÍDEO: AQUÍ

[youtube De_LpGvAp9c nolink]

29 jul 2011

Entrevista a Miguel Gesteiro

Hoy os presentamos la entrevista a Miguel Gesteiro, el autor de HackContest (h4ckc0nt3st), organizador y siempre participante en wargames o desafíos de seguridad informática. Es un placer y un honor para Flu Project disponer de los testimonios y consejos de estas personas, reconocidos en el mundo de la seguridad informática. Recordemos que por Flu Project han ido pasando grandes personajes de la seguridad informática de este país, como Juan Luis García Rambla, Rubén Santamarta o Dani Kachakil.

Sin mas dilación os dejamos con la entrevista.

En primer lugar Miguel, darte las gracias por concedernos esta entrevista, es un honor para Flu Project contar contigo para responder a estas preguntas y esperemos poder verte pronto.

Miguel: Gracias a vosotros por la oportunidad.

Miguel, ¿como ha ido la Tenerife Lan Party 2k11?¿Se consiguieron las expectativas que se fijaron al principio?

Miguel: La Tenerife Lan Party de este año ha ido muy bien. Es la tercera ocasión ya que acudo a este evento incomparable y cada año se superan. Además del h4ckc0nt3st, este año tuvimos un foro dedicado a temas de hacking a modo de preparación para la competición, para que los interesados pudieran iniciarse de paso que les enseñaba algunas herramientas y trucos. La organización se volcó, y hasta Chema Alonso patrocinó el concurso aportando un pack de libros desde Informática64. La gente en Tenerife es encantadora y siempre hace un tiempo inmejorable: es casi cómo estar de vacaciones :)

Ahora hagamos un ejercicio de memoria ¿Cual ha sido el wargame más dificil o uno de los más dificiles a los que te has enfrentado?¿Y el más divertido?

Miguel: Difíciles hay muchos, sobre todo ahora que empiezan a surgir de todas partes, pero quizás mencionaría las QUALS de la Defcon de este año, o el PlaidCTF (de los PPP), en los que el auge del reversing/exploiting y los conocimientos previos requeridos obligan a la especialización y por tanto a crear equipos cada vez mayores si quieres aspirar a luchar por los primeros puestos. Divertidos lo son casi todos, porque hago lo que más me gusta: aprender y compartir rompiendo cosas.

¿Cuál es tu herramienta preferida en cada uno de los siguientes campos/tipos?

Miguel: favorita favorita es aquella que te sirve en cada momento: hoy una y mañana otra. La verdad es que manejo muchas y ninguna es prescindible. En vez de poner mi favorita, y dado que las categorías son tan genéricas, pondré la primera que se me ocurra para cada una:

Forense - > foremost (linux) y volatility (windows)

Malware - > vmware y sysinternals

Footprinting/Fingerprinting - > nmap

Exploiting - > gdb

Sniffers - > cain / wireshark

No sabemos si ya has probado la nueva red social de Google, Google+. ¿Crees que será un punto de referencia en seguridad frente a otras redes sociales, las cuales han dejado este aspecto un poco de lado como ya se ha demostrado con tuenti, facebook, etc. en numerosas ocasiones?

Miguel: Honestamente, NO uso redes sociales. El único servicio que me parece útil es twitter (@mgesteiro). No es la seguridad lo que realmente me preocupa de estos servicios, sino las implicaciones sobre la privacidad que todos ellos suponen.

Hemos podido comprobar como muchos de los jóvenes que se enganchan al mundo de la seguridad, que acuden a congresos, que participan en wargames, se fijan en figuras como Chema Alonso, Kachakil, Ruben Santamarta, Alejandro Ramos, Pedro Sanchez o como usted, ¿Qué consejo le darías a ese chico joven que quiere un día ser como uno de estos monstruos?

Miguel: Yo no soy ningún referente importante en el mundo de la seguridad, quizás solamente en el área de los creadores de retos de seguridad (que son ya 3+ años creándolos). La principal recomendación que le daría a todos los que empiezan es "que no se rindan, que persigan su pasión allá a donde les lleve y que trabajen duro sobre ello". El resto de requisitos: estudios, fuentes de conocimiento, orientación, etc. acabarán encontrándolos si así lo hacen.

Como mencionábamos anteriormente, esperamos poder verte pronto, ¿Estarás en la No cON Name 2k11?

Miguel: Por supuesto! Además creo que presentais, no? habrá que estar allí para lanzaros alguna pregunta comprometedora al final ;D

Ahora viene la pregunta resbaladiza, ¿Qué opinas de Flu Project como blog?¿Qué opinas de Flu Project como proyecto de concienciación, con sus aplicaciones?

Miguel: Hace ya tiempo que os conocía y os tengo en mis listas RSS, pero mi opinión quedó claramente establecida en el momento en el que empecé a seguiros en twitter, servicio que prácticamente sólo uso para obtener información de fuentes que considero interesantes. Eso sí, no os durmais en los laureles y seguid produciendo contenidos de calidad!

Y para terminar, una pregunta clásica que ya se la hicimos a Juan Luís García Rambla, Rubén Santamarta y Daniel Kachakil, ¿A quién le harías tu la próxima entrevista?

Miguel: Yo os propondría muchos candidatos, pero por aquello de ser un poco más práctico lo dejaré en solamente dos opciones: Jose Selvi (@JoseSelvi) o RomanSoft (@roman_soft).

Un gran saludo!

28 jul 2011

Un repaso a la historia del Malware (III de VI)

Buenas a todos, en el artículo de hoy continuaremos hablando de la historia del Malware, en concreto sobre la maravillosa década de los 70.

Los años 70 fueron la época de los microcomputadores personales y la catapulta de Apple, y de sus creadores Steve Jobs y Stephen Wozniak.

En el primer año de esta época, Gregory Benford, Doctor en Físicas, publicaba unos textos en la Venture Magazine  del mes de Mayo describiendo una loca idea sobre posibles virus y vacunas para eliminarlos.

Dos años más tarde de este artículo, en 1972, nace "Creeper" (diseñado por Robert Thomas Morris), Creeper era un parásito que fue capaz de infectar las máquinas IBM 360 a través de una red ARPANET, se caracterizaba porque cada cierto tiempo de manera automática mostraba el mensaje “I´m a creeper… catch me if you can!”

Para eliminar al malware Creeper, se diseñó otro malware (que sería el antecedente a los antivirus actuales) y al que denominaron como "Reaper". Reaper estaba diseñado para buscar copias de Creeper y eliminarlas.

Dos años más tarde, en 1974 es desarrollado otro software malicioso, conocido como "Rabbit", capaz de reproducirse.

A mitad de la década, John Walker, dio origen sin saberlo al primer troyano de la historia, mientras desarrollaba una nueva manera para distribuir un juego en su UNIVAC 1108. Este troyano fue conocido como “Animal/Pervade”; La palabra animal provenía de que el software era un juego de adivinanzas de animales, y Pervade era la rutina capaz de actualizar las copias de Animal en los directorios de los usuarios.

A finales de la década, John Shoch y Jon Hupp, investigadores de Xerox, diseñaron un programa que se encargaba de las tareas de mantenimiento y gestión nocturnas, propagándose por los sistemas del centro. Fue denominado como "worm", y efectivamente, se extendió por toda la red.

En el próximo post de la cadena analizaremos los años 80, donde por fin se reconocerá y se dará una definición formal al término "virus".

 

Saludos! 
 

Un repaso a la historia del Malware (I de VI)

Un repaso a la historia del Malware (II de VI)

Un repaso a la historia del Malware (III de VI)

Un repaso a la historia del Malware (IV de VI)

Un repaso a la historia del Malware (V de VI)

Un repaso a la historia del Malware (VI de VI)

 

27 jul 2011

Curso de introducción a Android (Instalación del Android SDK + Hello World)

 

Hoy publico mi primer artículo en FluProject,  pero lo primero que me gustaría hacer es dar las gracias tanto a Pablo como a Juanan por brindarme la oportunidad de colaborar en este proyecto. Es un verdadero placer poder aprender de todos  vosotros y tener la ocasión de que vosotros también podáis aprender algo de mí...

Sin más dilación, y antes de que me ponga melancólico, voy a pasar a introducir la primera entrada del curso Introducción a Android. En esta entrada explicaré paso a paso todas las herramientas necesarias para poder desarrollar aplicaciones móviles en Android . Como todos sabemos Android es un sistema operativo libre (con alguna peculiaridad digna de dedicar una entrada a parte) basado en Linux y diseñado por Google allá por el 2005, por el cual las empresas están apostando muy fuerte ya que les permite diseñar soluciones móviles bajo una API muy intuitiva y, lo que es más importante, gratuita. En este curso de introducción se explicará la instalación y configuración del entorno en un sistema operativo Windows.

Para poder empezar a desarrollar aplicaciones en Android, primero debemos asegurarnos que tenemos correctamente instalado y configurado nuestro JDK, podemos instalar la versión 5 ó 6 desde http://www.oracle.com/technetwork/java /javase/downloads/index.html. La descarga ronda en torno a unos 75MB.

Finalmente, la última herramienta que os voy a hacer descargar e instalar directamente es, cómo no, el SDK de Android desde http://developer.android.com/sdk/index.html. Una vez dentro de la página, seleccionad el archivo perteneciente a la plataforma Windows y a esperar unos 20MB de descarga. Cuando lo instaléis apuntad la ruta, luego se la tendremos que indicar a Eclipse.

Con todas las herramientas descargadas e instaladas vamos ahora a configurar nuestro Eclipse para poder desarrollar aplicaciones en Android. Ejecutamos Eclipse y nos vamos a Help->Install New Software. Una vez ahí hacemos click en Add... y en el diálogo que aparece ponemos name: "Android Plugin" location: "https://dl-ssl.google.com/android/eclipse/" (probamos con http si no nos funciona con https)  y hacemos click en OK. En la ventana Available Software ahora debería aparecer Developer Tools, seleccionamos su checkbox asociado y deberían seleccionarse los items Android DDMS y Android Development Tools, hacemos click en Next dos veces y click en Finish, ya tenemos el plugin ADT instalado en nuestro Eclipse, ¡ya falta menos!.

[caption id="attachment_3721" align="aligncenter" width="464" caption="Configuración Eclipse"][/caption]

Tenemos que descargar el último target disponible de Android para poder acceder a toda la funcionalidad reciente y a todos los módulos que nos proporciona Google (por ejemplo el API de Google Maps). Para ello nos vamos a Inicio -> Todos los Programas -> Android SDK Tools -> SKD Manager o podemos ir directamente desde Eclipse Window -> Android SDK and AVD Manager, una vez ahí vamos al apartado Available Packages seleccionamos todos los checkbox tanto de Android Repository como de Third party Add-ons y le damos a Install Selected, esta instalación es la más duradera pero en cuanto tengamos los target estaremos a punto de empezar. Podríamos haber instalado sólo el target más reciente pero es conveniente, ya que vamos a ser desarrolladores, tener conocimiento también de todos los anteriores.

Configuración Eclipse Android

Una vez descargados todos los target hay que decirle a nuestro Eclipse la ruta donde hemos instalado el SDK de Android, para ello vamos a Window -> Preferences... seleccionamos Android en el panel de la izquierda, hacemos click en Browser... e indicamos la ruta del SDK que instalamos con anterioridad (aquella que os dije que apuntarais), posteriormente hacemos click en Apply y deberíamos ver en la lista todos los target que disponemos para poder desarrollar aplicaciones Android.

[caption id="attachment_3724" align="aligncenter" width="487" caption="Módulos"][/caption]

Ya tenemos casi todo configurado, sólo nos falta crearnos un emulador y empezamos con el primer proyecto. Para ello vamos a Window -> Android SDK and AVD Manager -> Virtual Devices. Hacemos click en New... ponemos un nombre a nuestro emulador, por ejemplo FluDevice y le cargamos un target, para empezar vamos a ponerle el target Android 2.2 - API Level 8, las demás opciones las dejamos por defecto.

[caption id="attachment_3727" align="aligncenter" width="368" caption="Creando nuevo dispositivo"][/caption]

Con esto finaliza el proceso de instalación y configuración de las herramientas para el desarrollo de aplicaciones de Android en el IDE Eclipse. A continuación, vamos a crear nuestro primer proyecto en Android y a ejecutar un Hello World predefinido para comprobar que todo está en orden. Para ello, en nuestro Eclipse vamos a la pestaña File -> New -> Android Project y rellenamos las propiedades de nuestro nuevo proyecto Android. En Project Name ponemos HelloWorld, seleccionamos el target Android 2.2 API level 8 (importante no seleccionar uno mayor al que hemos seleccionado para crear nuestro emulador FluDevice). Como Application name también ponemos Hello World y como paquete indicamos com.fluproject.HelloWorld. En Create Activity ponemos Main ya que esta será nuestra Activity principal y posteriormente pulsamos Finish. Ya tenemos nuestro proyecto creado, ahora sólo falta ejecutarlo.

Creando nuevo proyecto

En la parte izquierda de nuestro entorno Eclipse se habrá creado un proyecto nuevo llamado HelloWorld. Hacemos click con el botón derecho del ratón sobre el proyecto y seleccionamos Run As -> Android Application. Una vez pulsado observamos como se carga nuestro emulador y, tras esperar unos cuantos segundos, vemos el resultado del HelloWorld.

Código de prueba

En las siguientes entradas del curso de introducción a Android explicaré tanto la estructura interna del proyecto como todas las clases y ficheros xml y empezaremos a desarrollar aplicaciones cuanto antes. Espero que os haya interesado, cualquier duda escribid e intentaré resolverlas lo antes posible.

===============================================================

Curso de introducción a Android (Instalación del Android SDK + Hello World)

Curso de introducción a Android II (Creando nuestra primera aplicación)

Curso de introducción a Android III (Escáner de redes WIFI)

Curso de introducción a Android IV (Crackeando redes Wifi)

===============================================================

 

26 jul 2011

WriteUps para Pizza, Errorz y StealTheHash del Wargame Security By Default 2

Tardando bastante pero no habia podido publicar, pondre RAPIDAMENTE en un solo post la solucion a 3 retos muy interesantes.

Pizza

En este reto nos decian que nos conectaramos a wargame.securitybydefault.com 4242 Yo me conecte con netcat. Al hacerlo nos pide usuario y contraseña (Lo cual obviamente desconocemos). Pero daba la opcion de conectarse como “guest” asi que nos autenticamos como el invitado y nos pedian ciertos datos
  • Nombre
  • Calle
  • Telefono
  • Codigo postal

Al terminar todo decia que nos estaban preparando una pizza para enviarnolas… ¿Pero eso fue todo? ALGO SE NOS PASO. Fue aqui donde tuve la idea de hacer Buffer OverFlow (desbordamiento de memoria)

Asi que empece a probar en diferentes campos hasta que Bingo!!! El codigo postal era vulnerable y al pasar 50 caracteres, se desbordaba y tiraba el código.

1234
python -c 'print str("1337")*13'#1337133713371337133713371337133713371337133713371337expr length `python -c 'print str("1337")*13'`#52

Ya con el codigo lo unico que habia que hacer era reconstruirlo, los caracteres “*” indican que falta algo, cualquier cosa, una letra, numero, espacio, tabulador, retorno de carro etc…

Aqui era tan facil como en el codigo postal explotarlo con diferentes longitudes, lo cual arrojaba diferentes resultados, @fulapol y yo reconstruimos el codigo quedando como:

1234567891011121314151617181920
import randomimport threadingimport SocketServerclass ThreadedTCPRequestHandler(SocketServer,BaseRequestHandler):def handle(self):*oflen = 50rq = self.requestrq.send("Welcome to Happy Endless Awesome Pizza, your most valuable fast food restaurant.\n\n")rq.send("User [guest]: ")user = rq.recv(30)[:-1]if user == "guest" or user == "":usertype = "guest"else:rq.send("Password: ")pwd = rq.recv(20)[:-1]if user == "chucknorrium hyposulfite" and pwd == "ishouldgetalife":usertype = "admin"else:rq.send("\Incorrect user/password\n")return

En lo cual se ve el usuario (chucknorrium hyposulfite) y contraseña (ishouldgetalife) Ya solo era loguearse con esta info y nos salia un menu, en el cual habia 5 opciones y la opcion 2)Do nothingtenia nuestro,

Token: icountthepepperoni

StealtheHash

Para este reto no tengo screenshot, pero cuento de que va. Era conectarse a wargame.securitybydefault.com 2011 al entrar no dice nada, pero en la pagina del reto habia un tip: “r3ady_for_the_n3xt_hash” asi que pusimos eso y dimos enter, lo cual nos devolvia “Ok Go!” y ahi quedaba…

Entonces mande “basura” cualquier cosa, a lo cual me devolvia un error con unhash (“39c0b6522ba0009a2f2ec23b1711913edf006a3d7a3984bf60e83dcda2656e64“) y cortaba la conexion. Vale entonces ya me imagine de que iba, Entonces volvi a conectarme. Puse ”r3ady_for_the_n3xt_hash” y despues del mensaje “Ok Go!” pongo el hash que me devolvio “39c0b6522ba0009a2f2ec23b1711913edf006a3d7a3984bf60e83dcda2656e64” y de nuevo ya no dice nada…vuelvo a mandar basura y me devuelve otro hash: “093409b5a61c7ea8fb862bc67d275a2e4637a2926ff8cc60793b1b8e6b441fd6“…Y asi sucesivamente….

Entonces era claro, habia que hacer un programa que lo hiciera automaticamente, puesto que no sabemos cuantos hashes existen y hasta cual estara el token.

Entonces empece a crear un script en python, en lo cual @fulapol lo termino junto con @Diego_boyque nos ayudo en la sintaxis de python ;) Y este fue nuestro script:

123456789101112131415161718192021222324252627282930
#!/usr/bin/env python#-*- coding:utf-8 -*-import socketimport times = " "init = str("r3ady_for_the_n3xt_hash")while(len(s) > 0):s = " "file = open("hashes", "a+")fs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)fs.connect(("217.124.209.253", 2011))fs.send(init)fs.recv(7)[:-1]for line in file:fs.sendall(line)time.sleep(1.5)fs.send("lol")s = fs.recv(2)[:-1]+fs.recv(86)[:-1]hash = s[22:92]print sfile.write(hash + '\n')fs.close()file.close()

Fulapol dejo corriendo el script por que ami me cortaba la comunicacion, y despues de 150 hashes, el 151 decia;

Token; OMG_all_hash3s_h4s_b33n_L34K3D!!!!

Errorz

Una prueba de Estegano, @Urban77 en su writeup demostro que en windows con IrfanView era muy facil simplemente aprentando varias veces “Shift+s” lo cual aplica el filtro “Sharpen” y realmente sale de una.

En linux lo podemos resolver de otra manera…Otra vez recurriré a mi gran amigo ImageMagickcon “convert” y en esta ocasión con el opcion “-edge

convert -edge 2 errorz.jpg x
Lo cual realza los bordes dandonos esto:

Lo cual logra verse el

Token;   : : ( ) { : | : & } ; :

P.D. Como no sabia que parametro pasarle a -edge lo puse en un bucle

for i in [1..10];do echo $i;convert -edge $i errorz.jpg x:; done
Con esto vi que en los valores 1,2 y 3 era donde mas resaltaba.Saludos ;)

25 jul 2011

Hoteles con WiFi, hoteles con encanto (maligno)

 

Cada vez viene siendo más habitual que tanto hoteles como otros lugares de descanso, ofrezcan a sus clientes la capacidad de conexión a Internet mediante redes WiFi gratuitas (o no).

El modo en el que se les ofrece este servicio de conexión, varía según el modelo de implementación que hayan hecho los responsables de esta.

En algunos hoteles se trata de uno o varios puntos de acceso WiFi con varias antenas repartidas por las plantas y/o zonas del hotel y en otros se encargan empresas como BT Openzone que implementan Hotspots de acceso mediante usuarios y passwords generados de manera temporal.

En el primer caso, lo normal es que el hotel cuente con una única password WEP o WAP, que comparte con todos sus huéspedes cuando es solicitada por estos. En el segundo, se genera un ticket de una duración limitada con el usuario y el password que el cliente deberá introducir en su navegador para poder hacer uso de Internet. En este último caso, la red wifi funciona de una manera segura actuando como si cada uno de los usuarios estuviera en una red separada y sin visibilidad entre los mismos.

En aquellas instalaciones en las que la red WiF sea compartida, todos los clientes del hotel están dentro de la misma red, por lo que la visibilidad entre ellos está asegurada. Además, con el uso de ataques del tipo Man in The Middle, mediante técnicas de arp-spoofing por ejemplo, es posible que cualquiera de los clientes conectados a la WiFi, pueda hacerse pasar por otro, incluyendo la salida de Internet, interceptando así las comunicaciones de todos los clientes conectados al punto de acceso. En el siguiente esquema, hecho contelesketch, podemos hacernos una idea de esto.

Usando redes con puntos de acceso seguros (a veces no es más que una opción de la configuración marcada como “Isolate Client”) se consigue que, de forma virtual, cada cliente esté conectado a la red WiFi como si de una red independiente se tratase. Con el siguiente esquema, podemos hacernos una idea de como actuaría esta configuración.

Como aspecto negativo, si estás con un grupo de gente y/o amigos, y pretendes compartir un recurso entre ellos, al tratarse de puestos aislados entre sí, no funcionará. Tampoco funcionará Air Vídeo, la sincronización WiFi de iTunes o cualquier otro protocolo que haga uso de anuncios y conexiones en red local.

Por lo tanto, este verano, tanto si estás de vacaciones en un hotel, como si te alojas por trabajo, vigila el uso que haces de la WiFi, no vaya a ser que lo que estás viendo, no solamente lo veas tu. Por supuesto, todo esto también es válido para cualquier otra red WiFi pública (Kioskos, EMT, tu vecino el de la clave 12345, etc.) :P

Saludos

(si alguien lee esto desde un ettercap, un saludo tambien para el)

24 jul 2011

Informe Flu - 29

Damos comienzo al resumen de la semana 29 de Flu. Disfrutad del resumen:

Lunes 18 de Julio

Martes 19 de Julio

Miércoles 20 de Julio

Jueves 21 de Julio

Viernes 22 de Julio

Sábado 23 de Julio

23 jul 2011

BlackBerry Weekend 2011

El pasado 8 de Julio comenzó la primera edición de la BlackBerry Weekend 2011. El evento consistió en un concurso de desarrollo de aplicaciones móviles en las que valoraba calidad, innovación y futuro. El concurso tuvo lugar en el complejo Madrid OnRails y habría 3 aplicaciones finalistas con premio y una ganadora, las cuales obtendrían como premio una 'playbook', la nueva tableta de BlackBerry y además podrían presentar sus aplicaciones a RIM, para que BlackBerry pueda difundirlas por el mundo. Este quizá sea el premio más interesante para las 3 aplicaciones finalistas.

Antes de comenzar el concurso el día 8 de Julio, se impartieron sesiones de formación sobre desarrollo de aplicaciones móviles con BlackBerry. Este evento también ayudó a que los desarrolladores con 'menos tablas' aprendieran a diseñar y codificar aplicaciones móviles.

Este evento era bastante interesante desde el punto de vista de que los jóvenes desarrolladores puedan entrar en el mercado de las aplicaciones móviles, cada vez más en auge para las empresas. Cada vez hay más empleo relacionado con este tipo de desarrollos. Las aplicaciones más demandadas son las de iPhone y después Android, aunque para fiarse del market de Android hay que ser un 'braveheart', pero BlackBerry entra en el mercado de una manera fuerte, tuvieron que apostar por un modelo muy similar al de Apple y Google  ante la visión que tenían del futuro.

Aunque estamos ante una noticia que no tiene que ver con la seguridad, ni la concienciación sobre ésta, es interesante porque desde Flu Project hemos pensado que el desarrollo de aplicaciones móviles está siendo un mercado en auge, y muy interesante para los jóvenes programadores.

Por ello, y porque me 'toca' de manera cercana, ya que uno de los ganadores es amigo, un buen amigo, desde Flu Project queremos anunciar la publicación, mediante una serie de artículos, de un curso de programación en Android. El nuevo 'blogger' es Miguel Ángel Moreno Álvarez y se encargará de la sección nueva en Flu Project sobre análisis, diseño e implementación de aplicaciones en Android. Es un honor contar con él y con su experiencia en la programación en el sistema operativo móvil de Google. Miguel formaba equipo con César y Jorge, compañeros de trabajo. ¡Enhorabuena chicos! Suerte en la nueva aventura.

22 jul 2011

La URJC estuvo en tu iPhone y tu clave en plano también

 

Hace unos días asistí a un curso de análisis forense en móviles impartido por un compañero de i64, muy interesante sobre Android, Symbian, iPhone y Windows Phone.

Este curso me dió una idea sobre aplicaciones que están en la AppStore y que no son muy conocidas, realizadas o desarrolladas en un tiempo pasado y que no han sido actualizadas. Por un lado, sabemos que la aplicación de la Universidad Rey Juan Carlos que estaba alojada en la AppStore y de la cual hablaremos más en detalle después. Esta aplicación fue desarrollada en la época inicial del 'boom' de iPhone, quizá demasiado pronto para la ambición de la aplicación.

La herramienta

La aplicación de la URJC de la AppStore consistía en una red social móvil en la que sólo podían participar gente asociada, de algún modo, a la Universidad, por ejemplo, estudiantes, PAS, PDI, etc. La idea era bastante innovador e interesante, una red social en la que los integrantes de la Universidad pudieran comunicarse, publicitarse, entablar contacto, incluso podías geolocalizar a tus compañeros siempre y cuando ellos dieran permiso a la aplicación. Otra de las funcionalidades interesantes era la posibilidad de localizar lugares y puntos de interés y la distancia a éstos desde nuestra ubicación.

Por desgracia, la aplicación ya no está disponible en la AppStore, suponemos que no tuvo el éxito buscado, aunque yo hace 10 meses si que la utilicé, y aunque no había mucha gente en la red social, si disponía de fluidez de mensajes entre los usuarios de iPhone.

La búsqueda

La intención de esta prueba era la de comprobar como la aplicación almacenaba las credenciales de login, es decir, si estas credenciales estaban seguras en nuestro dispositivo o si por el contrario se encontraban en texto plano.

La ruta dónde se puede encontrar la aplicación dentro del iPhone, hay que recordar que debéis tener el dispositivo con jailbreak, es la siguiente: /User/Applications/8B72240A-6ED9-4C7A-9347-8395447557D9/URJC.app/

¿Qué es ese número? El iPhone almacena mediante identificadores las aplicaciones descargadas de la AppStore, mientras que las aplicaciones que vienen por defecto con el iOS se almacenan en /Applications con su nombre de 'pila'. A la pregunta como encontramos la aplicación si tenemos muchas aplicaciones con sus nombres en 'clave' le damos solución rápido. Ejecutamos la siguiente orden en el iPhone, ya sea mediante una conexión SSH, o por el terminal del dispositivo que se puede descargar de Cydia, o si utilizamos una herramienta como i-FunBox es muy sencillo de acceder a la ruta y encontrar la aplicación ya que nos saca los iconos, y es fácilmente identificable.

[caption id="attachment_3569" align="aligncenter" width="468" caption="Ruta dónde está la aplicación"][/caption]

Ahora bien, ¿Qué es lo que estamos buscando? el forense sabe lo que quiere encontrar evidencias que puedan ser presentadas ante un juez, pero nosotros estamos haciendo un forense un tanto especial, queremos encontrar si hay alguna credencial en plano. Por lo que no sabemos muy bien que tipo de ficheros estamos buscando, se puede decir que vamos un poco a 'ciegas'. Al hacer un 'ls' dentro de la carpeta del número de identificación de la aplicación nos encontramos con lo siguiente:

[caption id="attachment_3574" align="aligncenter" width="464" caption="Contenido de la carpeta de identificación"][/caption]

Debemos buscar en los directorios, y editar los archivos *.plist e iTunesArtwork haber que podemos encontrar, empezaremos por la carpeta Documents. Hemos de decir que tras varios análisis de distintas aplicaciones, las cosas más interesantes se encuentran en carpetas como Documents y Library. En esta carpeta encontraremos diferentes ficheros *.plist (que no deja de ser un XML, con una DTD) los cuales almacenan información relativa a la aplicación y al usuario que está cargado en la aplicación de la URJC en el iPhone. Cual fue mi sorpresa al editar el archivo User.plist y encontrarme mi usuario y mi password en texto plano, ¡No! exclamé, ¡no me lo puedo creer! El contenido en el fichero era como se muestra a continuación, primero password y después usuario. Hemos de decir a su favor, que estaba un poco ofuscado el archivo, la estructura no es trivial.

 

[caption id="attachment_3578" align="aligncenter" width="473" caption="User y Pass "][/caption]

También queremos añadir que en el fichero se encontraban las coordenadas GPS para geolocalizar al usuario con la última ubicación conocida. Este es un dato interesante ya que en temas forenses nos sirven para ver dónde fue la última ubicación del sujeto, siempre y cuando sea una coordenada reciente.

 

[caption id="attachment_3579" align="aligncenter" width="472" caption="Coordenadas GPS"][/caption]

Bien, hasta aquí hemos llegado con este análisis de la aplicación, y volvemos a comentar que es una pena que una idea que desde nuestro punto de vista era bastante buena haya caído en desuso. Por último, concienciar a los programadores para que cifren el contenido sensible de sus aplicaciones, no hay que dar facilidades a los atacantes.

21 jul 2011

Flu Project en tu Dashboard

 

Hoy no traemos una noticia sobre seguridad, ni una técnica de ataque, ni un ejemplo verificado sobre una situación insegura, hoy lo que queremos es presentaros el widget para el Dashboard de Mac OS X de Flu Project. Para los que no sean amantes de Mac OS X y se pregunten que es el Dashboard les dejo la definición de la wikipedia: 'Software incluido en el sistema operativo Mac OS X cuya función consiste en albergar unas miniaplicaciones llamadas widgets con información de Internet'.

El widget presenta un aspecto muy simple con los colores blanco y verde en su parte principal. En la cara principal del widget, ya que dispone de una cara trasera, dónde viene la información de los desarrolladores, se obtiene la información de los 5 últimos artículos publicados en Flu Project. El tamaño del artículo es gestionable en la parte trasera del widget, dónde el usuario puede decidir si mostrar toda la longitud del artículo o el porcentaje a mostrar.

A continuación se muestra la parte principal del widget.

 

[caption id="attachment_3503" align="aligncenter" width="259" caption="Flu Project Widget"][/caption]La parte trasera del widget se muestra a continuación.[caption id="attachment_3504" align="aligncenter" width="256" caption="Widget parte trasera"][/caption]A continuación os dejamos el link dónde podréis descargar el widget para que lo instaléis en vuestro Dashboard del sistema operativo Mac OS X.Widget Flu Project 

Como crear passwords aleatorios seguros en GNU/Linux

Como crear passwords aleatorios seguros en GNU/Linux: "Algunas veces es mejor dejar que nuestro PC  cree las contraseñas que utilizamos en nuestras cuentas de Internet, debido a que estas  si son realmente fuertes contra ataques de fuerza bruta.

Sinceramente no soy tan paranoico con las contraseñas, sin embargo, nunca esta de mas preocuparse y aplicar una buena contraseña para una cuenta de caracter critico. Existen muchas formas de crear contraseñas aleatorios en GNU/Linux, leyendo en commandlinefu (blog muy recomendado), nos enseñan como crear de una forma sencilla password los suficientemente seguros:

openssl rand -base64 12

Como resultado:Il9x3J467CTMXT4k"

20 jul 2011

Calculadora de contraseñas de redes WIFI de Telefónica y Jazztel

Hola, soy dolphinziyo y hoy me estreno como blogger de Flu Project publicando para la comunidad una sencilla aplicación que he desarrollado para calcular las contraseñas de acceso por defecto a redes WIFI de Telefónica y Jazztel cuyo nombre de red siga las pautas "WLAN_XXXX" y "JAZZTEL_XXXX" dónde "XXXX" es un código de 4 números y letras "aleatorio". El algoritmo para generar la contraseña ha sido descubierto hace un tiempo y es público por lo que cualquiera puede obtener la contraseña de la red siguiendo el algoritmo. Básicamente lo que viene a hacer el algoritmo es:

  • Sustituir las 4 últimas letras del BSSID (MAC del punto de acceso) por las 4 últimas letras del ESSID (nombre de la red)
  • Se le añade al final el BSSID original
  • Luego, al principio de la cadena actual se le añade: “bcgbghgg”
  • Se calcula la suma MD5
  • Y la clave son los primeros 20 dígitos de la suma MD5

¿Sencillo a que si?

El uso de la aplicación es muy básico, necesitamos el nombre de la red (conocido como ESSID) y la dirección MAC del router (conocido como BSSID), una vez tenemos estos dos datos los introducimos en sus correspondientes lugares y la aplicación nos devolverá la clave para esa red inalámbrica. Obtener los datos requeridos es también muy fácil; cómo obtener el ESSID no creo que sea necesario explicarlo, basta con hacer un escaneo de las redes disponibles y quedarse con el nombre de la red deseada, que tiene que cumplir con estos dos requisitos para funcionar con esta aplicación:

  • Llevar por nombre o "WLAN_XXXX" o "JAZZTEL_XXXX" ("WLAN_A0F4" por ejemplo)
  • Tener la contraseña por defecto (cosa que no sabremos hasta intentar conectarnos)

Para obtener el BSSID desde un equipo con sistema operativo GNU/Linux es una tarea también muy sencilla, haciendo uso de la herramienta iwlist escaneamos las redes disponibles obteniendo de las mismas además del BSSID y el ESSID una serie de datos extra como el canal en el que se encuentra la red, si está cifrada o no, el tipo de cifrado, la potencia de la señal recibida, etc.

Para obtener toda la información de las redes a nuestro alcance basta con ejecutar (como superusuario):

iwlist INTERFAZ scanning

Dónde INTERFAZ se refiere a la interfaz de red inalámbrica de nuestro equipo ("wlan0", "ra0", etc). En la siguiente imagen puedes ver la salida del comando

De una forma un tanto "sucia" pero eficaz podemos prescindir de toda esa información extra que en nuestro caso nos es irrelevante, mostrando únicamente una lista de ESSID y su correspondiente BSSID haciendo uso del comando "grep". Seguro que hay más y mejores formas de hacerlo pero sin complicarme la vida de una forma rápida ésto fue lo que se me ocurrió.

iwlist INTERFAZ scanning|grep ESSID && iwlist INTERFAZ scanning|grep Address

Aunque primero muestra los ESSID y luego, debajo, muestra la lista de los BSSID, sabemos que el primero de la lista de los ESSID se corresponde al primero de la lista de los BSSID y así respectivamente, así que no será complicado identificarlos. Una muestra del mismo.

Una vez tenemos todos los datos necesarios, los pasamos a la aplicación.

Al presionar en el botón "Calcular" tras haber introducido los datos la aplicación nos devolverá un mensaje con la clave de acceso a esa red.

Sin necesidad de conocimientos informáticos, ni de programación, ni nada por el estilo, simplemente sabiendo dos detalles de una red de los cuales uno es visible y el otro no es muy complicado obtenerlo, cualquiera podrá obtener acceso a una red inalámbrica ajena sin permiso del propietario y sin conocimiento del mismo, al menos en un principio. Un problema como tantos otros que las operadoras conocen pero que prefieren no subsanar

Por eso quiero aprovechar para recomendar encarecidamente a todos aquellos usuarios que tengan una red wifi que cumpla estas características que no hayan modificado la contraseña de acceso por una a su gusto que lo hagan cuánto antes, el algoritmo con el que se generan esas contraseñas es público y es muy sencillo de utilizar cómo ha podido comprobarse, cualquiera podría acceder a su red wifi con todos los peligros que ello conlleva.

El código fuente de la aplicación y el ejecutable lo podéis descargar desde el siguiente enlace:

AQUÍ EL CÓDIGO FUENTE DE LA APLICACIÓN

También puedes descargar la aplicación pinchando aquí. Y aquí tienes toda la información necesaria.

Por último no quiero dejar de agradecer a los chic@s de Flu Project esta gran oportunidad que me han brindado, y de paso mandarles todo mi apoyo, que hacen una labor fantástica y que gracias al trabajo de gente como ell@s poco a poco vamos adquiriendo una mayor conciencia general sobre la seguridad tanto de nuestros equipos como de nuestras empresas e infraestructuras.

Más info en 'crackear WPA de Telefónica y Jazztel'.

ACTUALIZACIÓN (Dic 2012): Esta aplicación utiliza un método anticuado para calcular las claves de este tipo de redes. Lo más probable es que no te funcione.

19 jul 2011

WriteUp KeyConsole – #wgsbd2

Hola, como algunos habrán sabido por twitter, estuve compitiendo en el #WGSBD2 (Wargame SecurityByDefault 2) junto con @fulapol dando la cara por Mexico y quedando en la posición 22 con un total de 14 retos resueltos. Pondré algunos solucionarios a retos los que más me gustaron. Empezaremos con KeyConsole que fue el que más me gustó y el que hice mas rápido.

Nos proveen del archivo tmp_key el cual comprobamos con un “file” que es un ELF de 32 bits para arquitectura Intel. Le damos permisos de ejecución, y lo ejecutamos. Y nos dice que nuestro sistema no es compatible y que el software no es Original.

123
file tmp_keychmod +x !$./tmp_key

La primera parte del análisis sera hacer un strings y en la parte final nos arroja datos muy interesantes.

1
strings tmp_key

Como vemos ya sabemos que dos archivos son abiertos, /tmp/%i_privatekey_%i/dev/random. Otro dato interesante es %i%i%i%i%i

Ahora veamos /dev/random sabemos que genera números aleatorios y toma 5 numeros por el (%i%i%i%i%i). Y sabemos que abre el archivo %i_privatekey_%i en /tmp. Como sabemos en programacion el %i se refiere a un numero entero decimal.

Nuestro siguiente análisis será con strace. Strace es un programa del sistema linux que nos permite trazar las consultas al sistema durante la ejecución de un binario.

Lo ejecutamos de la siguiente forma.

1
strace ./tmp_key

Aqui vemos cosas como:

.-Write (Checking enviroment…).-El open /dev/random.-Y Lo mas importante el open /tmp/0_privatekey_2

Por ahora aqui vemos que el %i_privatekey_%i toma los valores 0 y 2. Pero si lo volvemos a ejecutar.

Vemos que toma ahora los valores 4 y 4. Despues de una conjetura, vemos que los valores que %i puede tomar van de 0 a 4 =) Con esto ya es fácil saber que pasa.

Conclusion: El binario hace una consulta a /dev/random obteniendo un número de 5 digitos y despues lo compara con un archivo al azar que debe estar en /tmp y se llama %i_privatekey_%i pudiendo ir los valores de 0 a 4.

Ahora la parte divertida de saltarnos esto. Hay muchas maneras y tal vez más fáciles de la que hice, pero la mia me gustó bastante.

1.- Puesto que se pide a /dev/random un número de 5 digitos para comparar, lo primero será que este valor lo conozcamos, para esto se me ocurrió, en vez de que sea /dev/random, modificar con un editor hexadecimal a /ved/random. De esta manera solo cambio 2 bytes en el ejecutable. Así que abro el binario con un editor hexadecimal y busco donde está /dev/random.

Ahora lo modificamos por /ved/random

Y Guardamos y es TODO lo que modificaremos del binario.

2.- Ahora obviamente en el sistema NO EXISTE /ved/random por lo que vamos a crear ese directorio y archivo con el valor “01234

12
mkdir /ved && cd /vedecho "01234" > random

3.- Ahora nos falta crear los archivos _privatekey_ que deben ir de la forma 0_privatekey_0 0_privatekey_1 0_privatekey_2….etc…4_privatekey_4 y cada uno contener “12345” puesto que el programa comparará eso con /ved/random pero no sabemos que archivo %i_privatekey_%i por eso crearemos todo. Pese a lo difícil que pueda parecer, realmente lo haremos en un solo comando con dos bucles anidados =)

12
cd /tmpfor i in {0..4};do for j in {0..4}; do echo "12345" > $i"_privateket_"$j; done ; done && ls

 

4.- Y Finalmente ya tenemos todo el escenario, ahora solo nos queda EJECUTAR y TOMAR EL TOKEN.

TOKEN:  Your*environment_is-fully:compatible_you*can=play.NOW

Cualquier comentario Bienvenido =)

 

Saludos ;)

@hecky

neobits.org