19/5/15

GPS Spoofing Movil - Android y iOs

Mediante estas apps, para iOs y android, somos capaces de dar una localizacion falsa desde nuestros dispositivos moviles. Sirve para evitar ser rastreados o simplemente para "mentir" acerca del lugar donde nos encontramos (amor donde estas? en casa, tu facebook dice que no.) o para saltear restricciones de acuerdo a nuestra ubicacion, por ejemplo el AppStore de apple solo permite bajar ciertas aplicaciones dependiendo del pais.

Para iOs necesitamos tener el dispositivo liberado mediante jailbreak, agregar el repositorio BigBoss a Cydia y tiene un valor de 3 dolares. Existen alternativas como LocationHolic, LocationSpoofer y Fake GPS pro o lite. (No probe hacerlo en iOs, si alguno lo prueba avisa)



Para android, primero tenemos que activar el "Developer Mode", vamos a Ajustes - Informacion del tablet - y tocamos 7 veces "Numero de compilacion" (build number en ingles), ahi nos deberia saltar un aviso que dice que somos desarolladores. Volvemos a Ajustes, y ahora existe una nueva opcion que se llama "Opciones de desarrollo", entramos a esta seccion y entre las muchas opciones permitimos las "Ubicaciones simuladas". con esto vamos a permiter a distintas apps, cambiar la ubicacion gps a nuestro antojo, pero para que realmente funcionen bien, tenemos que ir nuevamente a "Ajustes - Ubicacion - Modo" y cambiar a "Solo GPS", por lo menos asi es en mi tablet Nexus 7, la idea es dejar solo al gps para determinar la ubicacion, no wifi, no redes moviles, solo gps. Ademas muy importante, es correr la aplicacion que falsea la ubicacion, antes que las demas aplicaciones, asi tomaran la ubicacion "spoofeada"

Aca algunas apps, para hacerlos, algunas solo nos permiten ser usadas por 24 hs.

https://play.google.com/store/apps/details?id=com.blogspot.newapphorizons.fakegps
https://play.google.com/store/apps/details?id=ru.gavrikov.mocklocations
https://play.google.com/store/apps/details?id=com.lexa.fakegps <-- Recomendada!


De todas formas tenemos montones de opciones en GooglePlay
https://play.google.com/store/search?q=fake%20gps&c=apps

Informacion desarrollo para ubicacion

15/5/15

Firmware Reverse Engineering - Bypass WifiPineapple Verification






Esta  era la pantalla que nos estaba causando problemas, como no tenemos el hardware original de la WifiPineapple, pero si el software (firmware), no podíamos ver que leds eran los que estaban “On”, “Off” o “Blink”.

Mirando un poco, buscando, si alguien ya lo había hecho, y discutiendo con gente de la comunidad RemoteExecution, se plantearon algunas opciones como el bruteforcing del patrón de 4x3, sugerido por gonza_cabrera, pero como no tenia idea si el TL-MR3020 podia llegar a bloquearse o si había algúna medida de seguridad que saltara después de X cantidad de intentos, por miedo a que esto pase volvi a la idea original de encontrar una solución dentro del firmware.

Habia visto algunos videos de la BlackHat o de la DefCon donde realizaban un reverse a los firmwares de Camaras ips y de routers, asi que el principio tiene que ser el mismo, la verificación no se hace online asi que tiene que estar dentro del código.

Entonces con el Firmware-mod-toolkit extramos los archivos del firmare y los vamos revisando.
./extract-firmware.sh upgrade-2.3.0.bin

extrae todos los archivos de binario en la carpeta “rootfs”, lo que nos permite analizarlos carpeta por carpeta, archivo por archivo (parece como mucho quilombo).

Como yo ya había hecho este proceso y había pasado todos los archivos al pendrive, simplemente apague el mr3020, luego lo retire y pase a analizar desde mi pc. Voy a aclarar, que antes hice una prueba “online”, es decir con el router conectado a internet e ingresando a la dirección ip para el setup, y lo revise con el Live HTTP headers, para ver si me llevaba a algún lugar interesante, y esto adelanto mucho el trabajo como vamos a ver mas adelante.

La realidad, es que primero, me enfoque en un archivo js que era llamado en cada una de las paginas, pero la verdad me estaba confundiendo. Y voy a hacer otra aclaración, para programar soy un desastre y mis conocimientos son mas que básicos.



Como se puede ver, siempre va a la misma carpeta o directorio /includes/welcome y estas se encuentran dentro de la carpeta pineapple.
Si vemos dentro de la carpeta includes, se encuentra el header.php además de otras carpetas como la /welcome/ que básicamente el archivo header establece que va a estar en todas las paginas del sitio y muestra que funciones va a llamar, y que archivos va a incluir, entre ellas el archivo welcome.inc.php, que es donde la magia pasa.


Cuando revisamos este archivo, nos encontramos con la función que realiza la verificación entre otras. Una vez que me encontré con esa función function verifyPineapple($post) me comunique con Daniel Godoy, ya que no se una goma de PHP. A lo que me respondio, una papita, y después de pelear un rato encontró la manera de bypassear la verificación. El texto seleccionado en la imagen de abajo, hace la verificación, es el que hay que reemplazar.


El codigo que verifica es un condicionador IF, que de darse las condiciones que solicita, verifica el wifipineapple. Por lo que Daniel, me envio el parche, o bypass donde establece que como la condicion es correcta es decir TRUE, se debe verificar. Como se muestra en el texto seleccionado abajo.



Asique una vez completado esto, por si no se ve en la imagen el codigo es el siguiente:

/////Nulled #RemoteExecution
if (true)
{
    $_SESSION['verified'] = true;
    return passwordForm();
}
///////////////

Guardamos los cambios, insertamos el pendrive nuevamente en el MR3020 y navegamos a la configuracion, marcamos cualquier opcion, pero si o si todos los colores, le damos a Continue, y ahora a setear nuestra contraseña de root, despues de configurar todo lo que nos piden ya tenemos nuestro WifiPineapple Clone funcionando. Y como ven pwned!











14/5/15

WifiPineapple Casero - TL-MR3020



Vamos a reactivar un poco el blog, primero algunas aclaraciones, el tutorial a continuacion no es de mi autoria, simplemente traduje algunos manuales, recopile fuentes, etc, que las voy a nombrar al final del texto.

Que es WifiPineapple?

Es un "gadget" creado por Hak5, bastante caro, algo asi como u$d 100 o mas, tambien conocido como Jasager, que funciona como un Rogue AP que acepta todas las conexiones wifi, un cliente busca conectarse a una red, sin importar el SSID, este aparato responde "si soy yo, conectate" a todos.

Nosotros vamos a crearlo por un costo mucho menor, y relativamente facil (digo relativamente, porque para quienes esten acostumbrados a manejar linux les va a resultar muy facil, yo soy literalmente nuevo, asique por ahi se me complicaba)

Lista de materiales:

Hardware:
(1) TP-Link TL-MR3020 ver. 1.x (segun algunas fuentes, no funciona si no es 1.7, pero toda la info que lei nunca mencionaron esto)
(2) SanDisk Cruzer Fit USB Flash Drive (8GB) (en algunos manuales dice cualquier pendrive de 8gb, yo por las dudas compre esta que la especificaban en un tutorial)




Todo esto lo encontramos en digamos... WallMart.

Software:
(1) OpenWrt
(2) Wifi Pineapple firmware (con esto hay un temita que vamos a ver mas adelante)
(3) Kali Linux (mi caso) y por momentos Windows.

Paso 1 :

Descargamos OpenWRT (particularmente descargue la ver. 12.09 pero pueden probar una mas reciente) :



Configuramos nuestra IP como estatica y nuestro gateway asi:

IP : 192.168.0.10
Gateway : 192.168.0.1

Conectamos el TL-MR3020 a la computadora mediante el cable ethernet. Por default la IP para acceder al modem es 192.168.0.254. Asi que navegamos a esa direccion.

El usuario y contraseña por default es "admin".

Vamos a "System Tools" -- "Firmware Upgrade" y elegimos el archivo .bin con el firmware que acabamos de descargar.

Paso 2 :

Una vez que instalamos OpenWRT, la IP de nuestro mr3020 (el aparatito) cambia a 192.168.1.1.

Configuramos nuevamente nuestra IP como estatica y el gateway a :

IP : 192.168.1.10
Gateway : 192.168.1.1

En nuestro navegador vamos a 192.168.1.1, nos vamos a encontrar con el administrador web LuCi, ahi tenemos que configurar nuestra contraseña, que la vamos a utilizar para accerder via SSH, para eso vamos a la pestaña "System" -- "Administration".

Despues vamos a "System" -- "System" para setear el horario.

ahora tenemos que habilitar el wireless, vamos a la pestaña "Network" -- "Wifi" y le damos a enable.

Ahora tenemos que habilitar el DHCP, vamos a la pestaña "Network" - "Interfaces" - nos deberia aparecer una sola Interfaz, le damos a "Edit" - seleccionamos "DHCP Client" y despues "OpenWrt" clickeando en "Switch Protocol". (Si compro otro MR3020 subo imagenes de esta parte del proceso) Puede que tarde mucho tiempo en actualizarse el sitio, eso es normal. Es porque no puede asignarse una IP. Si tarda mucho continuamos.

Conectamos nuestro TL-MR3020 con el cable ethernet a nuestro modem de internet. y via wifi nos conectamos al TL-MR3020, el SSID es "OpenWrt". Asegurense de tener conexion a internet.

Una vez que tenga la IP, en mi caso 192.168.1.113, nos vamos a poder conectar al TL-MR3020 via ssh.




Ingresamos el password que habiamos colocado anteriormente cuando configuramos todo en LuCi.


Instalamos los siguientes paquetes :



Paso 3 :

Formateamos nuestro pendrive (8GB) haciendo una particion ext4 y otra swap, por ejemplo 2GB para swap (hacemos primero esta particion - sda1) y 6GB para ext4 (este formato lo hacemos despues para que sea sda2) yo lo hice con Gparted.

Insertamos el pendrive en el TL-MR3020. Y ejecutamos en la consola donde estabamos conectados via ssh los siguientes comandos (linea por linea, cualquier error puede brickear (dejar como ladrillo) nuestro aparato. Yo aca tuve algunos problemas por tener la particion ext4 como sda1.



Paso 4 : En la consola



Editamos el contenido con vi:

Cambiandolo por esto :



Comandos para vi si no estan familiarizados :
i - modo insertar editar
Esc - salimos del modo editar
:w - escribe y guarda los cambios
:q - salir de vi

y luego reiniciamos con :



Una vez que se reinicia nos conectamos nuevamente via ssh. Y chequeamos si el usb esta como "/" o no :

 

Paso 5 :

Apagamos el TL-MR3020 retiramos el Pendrive y lo colocamos en nuestra computadora.

Hacemos un backup del pendrive, haganlo asi porque despues vamos a necesitar las carpetas.



***Aclaracion /media/NOMBREDELPENDRIVE/ donde dice NOMBREDELPENDRIVE va a ser una serie alfanumerica aleatoria.

Hagan tambien un backup del directorio /lib.

No retiren el pendrive porque lo vamos a seguir usando.

Paso 6 : IMPORTANTE - Aca hay un temita como mencionaba mas arriba, yo instale la ultima version del firmware del Pineaple (2.3.0), el cual se descarga de la web oficial como todos los demas, pero me di cuenta una vez que tenia todo instalado, que tiene una verificacion cuando hacemos el setup, que todavia no pudimos bypassear con d0t, por lo tanto si tienen ganas de tener su gadget funcionando YA! descarguen la version 2.0.4 o la 2.2.0 (segun un manual mas reciente, desconozco si tiene la misma verificacion) y no la 2.3.0 que es la ultima y que es la que estamos intentando bypassear/crackear.

Descargamos entonces el firmware del Pineapple que queremos, en este caso el 2.0.4 para los ansiosos :



Instalamos el firmware-mod-kit, esto tambien me trajo problemas, hay que agregar repositorios que dejo la lista al final del post, e instalar unas librerias previas para que funcione, por lo tanto primero :


la libreria liblzma-dev me trajo problemas, https://code.google.com/p/firmware-mod-kit/wiki/Documentation?tm=6 https://code.google.com/p/firmware-mod-kit/wiki/Documentation?tm=6 instalen squashfs-tools tambien por las dudas


Una vez que tenemos todo instalado y los repositorios corregidos, instalamos el firmware-mod-kit (excelente software para hacer ingenieria inversa)

 
Y extraemos todas las carpetas, librerias y archivos del firmware del Pineapple asi:



Nos colocamos en la carpeta donde extrajimos los archivos y copiamos las siguientes a nuestro pendrive.

 

Paso 6a :

Para que nuestra "victima" pueda navegar por internet mediante el Pineapple, necesitamos cambiar el DNS y el Gateway en /etc/config/network (dentro del pendrive) de 172.16.42.1 a 172.16.42.42. Y, el DNS a 8.8.8.8

Paso 7 :

Colocamos el pendrive en el TL-MR3020.

Lo conectamos a nuestro router o modem de internet, prendemos el TL-MR3020 y esperamos a que se bootee (todos los leds verdes). Corremos el script "wp5.sh" (Vea el Paso 8) en nuestra computadora. Aca nos van apareciendo opciones que podemos modificar para setear el Pineapple, una vez que terminamos de darle Enter a todo, navegamos a la IP que nos muestra en pantalla. Nos pide la password que habiamos configurado anteriormente.



Paso 8 (Conectividad) :

Esta es una de las maneras de conectar el Pineapple (TL-MR3020), via tethering :

Conectamos nuestra computadora a internet via wireless o 3G.

Y conectamos con un cable ethernet el Pineapple a nuestra computadora (todavia hasta donde lei, no se puede conectarle otra tarjeta wifi al mr3020).

Decargamos el script que mencionamos en el Paso 7 a nuestra computadora.



o armamos el archivo wp5.sh si no funciona la descarga:



Ahora si todo va bien, deberiamos poder navegar por internet y deberiamos poder conectarnos al Pineapple, ademas las "victimas" que se conecten al Pineapple deberian poder navegar sin problemas.

Una vez que queremos terminar con el "ataque", corremos el siguiente script creado por Samiux.
antes lo hacemos ejecutable y damos permisos.



 Script killwp5.sh:




Para tener acceso nuevamente, tenemos que correr ./wp5.sh

Algunos videos interesantes, que fueron tambien fuente:


Videos:
https://www.youtube.com/watch?v=GVmRsXGimag
https://www.youtube.com/watch?v=ttDQQqyVaIA
https://www.youtube.com/watch?v=BiPUryMLn2g

 Notas: no todos los ataques (infusiones) van a funcionar, pero es un lindo proyecto para armar, es importante seguir paso a paso todo, para no "brickear" nuestro mr3020.

Fuentes:
http://samiux.blogspot.com.ar/2014/11/blueberry-wifi-pineapple-mark-v.html LA MAS IMPORTANTE
https://forums.hak5.org/index.php
http://wiki.khairulazam.net/index.php?title=Wifi_Pineapple_Mark_V_on_TP-Link_MR3020
https://code.google.com/p/firmware-mod-kit/
http://semaraks.blogspot.com.ar/
http://wiki.wifipineapple.com/index.php/Main_Page
http://www.symbyote.info/?page_id=291
https://penturalabs.wordpress.com/2013/04/25/blue-for-the-pineapple/

 Repositorios:
 

---------------------------------------------------------------------

Aca esta lo que mencionaba en el paso 6 con el nuevo firmware:




Se aparece un cristo detras de la pantalla que no permite cometer maldades, no mentira, como metodo de seguridad para evitar robos (y lo mas seguro, tambien falsificaciones), hak5 añadio un metodo fisico de seguridad. El tl-mr3020 no tiene los 4 leds de colores que trae el WifiPineapple original, por lo tanto no sabemos que leds estan prendidos, ni cuales parpadean, ni cuales estan apagados, por lo tanto no podemos ingresar el patron que nos solicita para continuar. Se supone que en las versiones anteriores de firmware no lo pide. Por eso con d0t estamos mirando como hacer una ingenieria inversa para bypassear este patron, para hacerlo hay que revisar todos los archivos del firmware luego de que los extraemos con el Firmware-mod-toolkit. Si alguno sabe como hacerlo bienvenido sea.


Extras:
- Estoy pensando en colocar un cargador portatil, o battery pack, para no tener necesidad de enchufarlo.
- Que pasa si lo colocamos en un drone? En mi caso un Phantom 2 vision plus, con hasta 2 kilos de carga
- Se puede extender el rango de la antena?
- https://github.com/PenturaLabs/web-interface (No probe aun)
- https://github.com/PenturaLabs/Pineapple-Confs (Tampoco probe esto)