NFC Proxmark3 / Chameleon

Decidí desempolvar mi “vieja” Proxmark3 y el Chameleon que llevaba sin usar apenas casi dos años desde la última charla que dimos mi amigo Javier Botella y yo en la H-c0n de Hackplayers a principios del 2020. Vi que habían salido versiones nuevas tanto del software como del firmware de ambos aparatos. No quería quedarme obsoleto (Jurassic Park music incoming) y decidí “liarme la manta a la cabeza” para actualizarlo todo y así poder ponerme a trastear de nuevo un poco con estos juguetes tan chulos y retomar las investigaciones.

Identificando nuestra proxmark3

Es importante saber exactamente qué tipo de Proxmark3 tenemos ya que flashearla con algo inadecuado puede ser fatal. En mi caso, es una Proxmark3 china, pero… ¿cuál? En el github de Proxmark va todo bastante enfocado a la actual Proxmark3 RDV4 y la mía siendo de hace un par de años seguro que no es esa… esta es foto de la mía.

Tras investigar un poco, parece ser que la mía es lo que llaman una “proxmark genérica” pero ahora falta otro paso. Falta saber si tiene 512kb de memoria o 256kb. Al parecer el firmware que se instala de forma normal sobrepasa los 256kb y si tu Proxmark no tiene 512kb va a ser un problema y habría que hacer unos ajustes (aunque se puede flashear igualmente solo que tiene algún paso más). En mi caso es la versión de 512kb. Lo supe por un viejo pantallazo que guardaba precisamente de la charla de NFC de la H-c0n donde se aprecia claramente que tenía 512kb de memoria.

Si en vuestro caso no tenéis oportunidad de arrancar vuestra instalación vieja de Proxmark3, o de preguntar al proveedor donde la habéis comprado, os aconsejo que os unáis al canal de Discord de Proxmark para que os echen un cable a identificarla. El enlace lo podéis encontrar al final del artículo.

Instalación Proxmark3

Una vez tenemos identificada nuestra Proxmark tenemos que decidir donde instalarla (Linux/Windows). En mi caso decidí instalarla en Windows (w10 x64) ya que así me ahorro tener que encender máquinas virtuales cada vez que quiera trastear con esto. Sí, sé lo que estáis pensando y es cierto… I’m a Windozer…

El primer paso es preparar el entorno haciendo la instalación de ProxSpace. Al final esto viene a ser como instalar una especie de Linux basado en Arch dentro del Windows. Me consta que también se puede hacer con el Subsystem de Linux dentro de Windows (WSL – Windows Subsystem for Linux), así que como veis las opciones son múltiples. Aquí tenéis un enlace donde podéis ver en el fichero README.md las múltiples opciones que tiene esto: https://github.com/RfidResearchGroup/proxmark3

Así que el primer paso es realizar la descarga de la rama master del repo de ProxSpace (que es distinto al de Proxmark3). Eso sí, tenemos que elegir una ubicación donde la ruta no tenga espacios en el nombre. Esto es importante o habrá problemas. En mi caso lo hice en la carpeta D:\data\ . Aunque tengas instalado git para Windows no vale con clonarlo. Hay que descargar el zip del github y descomprimirlo. De hecho, si hacemos 'git clone' luego aparecerá un mensaje de error que nos indica que no debíamos haber usado git para descargar ProxSpace. Así que lo dicho, descargamos el zip de la rama master de este repo: 

https://github.com/Gator96100/ProxSpace.git

Una vez se ha descargado, abrimos una consola cmd (no hace falta que sea con privilegios elevados) y vamos hasta el directorio donde hemos descargado el repositorio (en mi caso D:\data\ProxSpace-master\ porque no hice git clone, lo descargué y descomprimí). Una vez allí desde la consola cmd ejecutamos el fichero runme64.bat y comenzará un proceso en el que se descargará muchos paquetes.

Tendremos que esperar y esperar… esta parte se toma un rato largo dependiendo de la velocidad de vuestra conexión a internet. No tenemos que hacer nada, solo esperar a que se descargue todo. Cuando termina veréis una pantalla como la siguiente, que nos deja dentro de una consola Linux de la instalación realizada. Es importante no cerrarla.

Ahora desde dentro de esta consola, tendremos que clonar la carpeta de Proxmark3. Hemos elegido el nuevo repositorio donde están trabajando junt@s las diferentes personas que investigan sobre esto. Tanto el repositorio oficial de Proxmark3 como el antiguo que tenía Iceman se han quedado obsoletos y en este nuevo proyecto es donde se centran los esfuerzos de todos ellos ahora. Así que clonamos dicho repositorio (en esta consola sí que tenemos git pues es uno de los paquetes que se instalan con ProxSpace):

git clone https://github.com/RfidResearchGroup/proxmark3

Tras el clonado del repositorio, entramos en la carpeta:

cd proxmark3

Ahora tenemos que compilar, para ello ejecutamos el comando:

make -j

Cuando esto termine, ya deberíamos tener dentro de la carpeta “client” un ejecutable de Windows llamado proxmark3.exe que nos servirá más tarde para poder arrancar el software que ya habríamos terminado de instalar. Eso sí, no cerramos esta consola pues seguiremos operando en ella para el siguiente punto que es el flasheo del firmware.

No obstante, dejo el enlace de donde yo he sacado estos pasos:
https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Installation_Instructions/Windows-Installation-Instructions.md

Flasheo firmware Proxmark3

De nada sirve tener el software instalado si no tenemos el firmware acorde para utilizarlo en nuestra Proxmark. Así que vamos a realizar el flasheo del mismo. En este punto es importante haber realizado correctamente la identificación del tipo de hardware de nuestra Proxmark que comentábamos al principio. Si la flasheamos con una versión errónea, podemos dejarla “bricked”. No obstante, si esto os llega a pasar, hay un subcanal dentro del canal de Discord de Proxmark donde igual os pueden ayudar.

En este punto conectaremos nuestra proxmark por usb al ordenador. En teoría esto necesita un driver pero si estáis usando w10 lo cogerá solo sin que tengamos que hacer nada. La cosa es que veamos en el administrador de dispositivos de Windows que aparece como un puerto COM bien detectado con el número que sea asignado.

Ahora teniendo claro cuál es nuestro hardware, vamos a la carpeta “pm3\proxmark3”, esto lo podemos hacer desde el explorador de archivos de Windows. Ahí veremos que existe un fichero llamado “Makefile.platform.sample”. Bien podemos usar ese renombrándolo a “Makefile.platform” o bien podemos crear un fichero en blanco que se llame así. Es lo mismo ya que sea como sea, el objetivo es que exista un fichero en esa carpeta llamado “Makefile.platform” (ojo que la M ha de ser mayúscula y eso hay que respetarlo, es case sensitive), y dentro ha de tener una sola línea donde indicaremos el tipo de hardware. En mi caso esta línea:

PLATFORM=PM3GENERIC

El resto de líneas si usamos como plantilla el fichero “Makefile.platform.sample” se pueden borrar o dejarlas comentadas (al comenzar por #). Este paso es importante, así que ojito! Por si hay dudas, esto está bien explicado en el Github de Proxmark:

https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md

En este punto, si nuestra Proxmark solo tiene 256kb de memoria (que no es mi caso), es donde podemos hacer algunas cosas para reducir la imagen a flashear y que así quepa en nuestros 256kb añadiendo más líneas al fichero “Makefile.platform”. Recomiendo leer detenidamente el apartado ya que parece que se pueden añadir algunas opciones para no instalar algunos features:

https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md#256kb-versions

Bien, ahora toca el momento de la verdad. El flasheo en sí mismo. Aquí también dependiendo de si tenemos nuestra Proxmark nueva o si ya teníamos un firmware antiguo instalado como es en mi caso, tendremos que lanzar una cosa u otra desde la consola (recordemos que estamos en la carpeta proxmark3).

Si venimos del firmware de fábrica lanzaremos:

pm3-flash-all

Si venimos de un firmware antiguo como yo, lanzaremos dos cosas. Primero:

pm3-flash-bootrom


Y luego lanzaremos:

pm3-flash-fullimage

Por algún motivo en mi caso este segundo comando falló como veis en el siguiente pantallazo.

En el canal de Discord me recomendaron que en este caso simplemente lo lanzase de nuevo, y esta vez detectó correctamente la Proxmark y funcionó.

Si hemos llegado a ver esta pantalla con el bonito Ascii art de Iceman y diciéndonos que todo ha ido bien, entonces estamos de enhorabuena porque ya tenemos lista nuestra Proxmark flasheadita y con el software instalado para poderla usar. Ahora podemos trastear con todo el NFC que caiga en nuestras manos…

Testeo Proxmark

Para probarla, es sencillo. Si aún no hemos cerrado la consola, simplemente ejecutaremos el comando:

./pm3

Si ya la hemos cerrado, o si no, simplemente para que sepamos como entrar cada vez que queramos hacerlo, lo que tenemos que hacer primero es averiguar en qué número de puerto COM está detectada nuestra Proxmark. Eso lo podemos hacer de varias formas. O bien abrimos el administrador de dispositivos y lo miramos ya que ahí aparece, o bien lanzamos este comando desde una consola cmd de nuestro Windows:

wmic path Win32_SerialPort Where "Caption LIKE '%USB%'" Get DeviceID

También hay otra forma con un comando desde la consola del software de Proxmark. Así que lo abrimos. Eso es lanzar el fichero llamado “runme64.bat”. Nos podemos crear un acceso directo al mismo en el escritorio o donde sea para facilitar esta tarea ya que es lo que tendremos que abrir siempre que queramos trabajar con nuestro juguete. Esto abrirá la consola del ProxSpace. Desde aquí como comentaba, hay otra forma más de averiguar el puerto COM en el que aparece la Proxmark. Esto es lanzando este comando:

proxmark3/pm3 –list

Este último comando era opcional si ya sabíamos el puerto COM de nuestra proxmark. Ahora para arrancar el software desde esta consola del ProxSpace ejecutaremos esto (cambiando el número de puerto que en mi caso es el 13 por el que sea):

proxmark3/client/proxmark3.exe com13

Ahora desde la consola ya podemos probarla lanzando cualquier comando para comprobar que funciona. En mi caso coloqué físicamente una tarjeta Mifare 1k sobre la Proxmark y lancé el comando:

hf search

Como podemos apreciar en el pantallazo anterior, se leyó correctamente por lo que ya hemos comprobado que funciona.

Instalación Chameleon

Si hiciste toda la parte anterior de la Proxmark sin despeinarte, esto te va a parecer un paseo pues es mucho más sencillo. La instalación del software para poder usar el Chameleon es simple. También enfocada en este artículo para hacerse desde un Windows (w10 en mi caso). O bien clonamos el repo teniendo git en Windows o descargamos el zip del repositorio y lo descomprimimos:

git clone https://github.com/iceman1001/ChameleonMini-rebootedGUI

Necesitaremos tener instalado Visual Studio para compilarlo. En mi caso tengo instalado Visual Studio 2019. Así que desde el explorador de nuestro Windows vamos a la carpeta que acabamos de clonar/descargar y abrimos el fichero “ChameleonMiniGUI.sln” para que se abra el proyecto de Visual Studio.

Si al abrirlo nos sale algún mensaje referente a la versión de .NET Framework, elegiremos cambiarla a la 4.6.1 y pulsaremos ok, ya que parece que fue la que se usó cuando se desarrolló este software. Este mensaje puede no aparecer. Todo ello dependerá de la/s versión/es de software de .NET Framework que tengamos instalada/s en nuestra máquina.

Seleccionaremos en los desplegables de arriba la versión “Release” y “x64” y luego pulsando con botón derecho del ratón sobre la solución, elegiremos “Rebuild Solution”

Esto no debería dar ningún problema y se debería compilar correctamente generándonos un fichero llamado “ChameleonMiniGUI.exe” dentro de la subcarpeta “ChameleonMiniGUI\bin\Release” del proyecto. A este fichero es al que tenemos que hacer un acceso directo pues es el que abre la aplicación que una vez lanzada ya estamos listos para trabajar con nuestro Chameleon, y tiene este aspecto:

Flasheo Chameleon

Para flashear nuestro Chameleon, al igual que con nuestra Proxmark, es importante saber el hardware que tenemos. En mi caso, al abrir el Chameleon, se ve que es RevE ya que lo pone.

La verdad es que el flasheo ha mejorado mucho desde la última vez que lo hice hace dos años. Ahora ya no es necesario quitar la pila interna que lleva el Chameleon y tampoco es necesario pulsar los botones de determinada manera para ponerlo en modo DFU para el flasheo. Ese modo sigue siendo necesario pero ya desde la propia aplicación tenemos un botón que lo hará todo por nosotros como pasaremos a explicar a continuación.

Otra consideración a tener en cuenta es que tras el flasheo perderemos aquello que tengamos guardado en los slots de nuestro Chameleon, así que si tenéis algo preciado allí, podéis abrir la aplicación de Chameleon y guardaros el “Dump” de cada slot para luego volverlo a meter tras el flasheo.

Para todas estas operaciones de flasheo necesitaremos descargar un repositorio. Seguiremos el mismo procedimiento, o bien git clone desde Windows o descargarlo y extraerlo:

git clone https://github.com/iceman1001/ChameleonMini-rebooted

Este repositorio descargado lo usaremos más tarde. De momento conectamos por usb el Chameleon a nuestro ordenador y abrimos la aplicación del Chameleon que hemos compilado anteriormente en el punto anterior de este artículo. Vamos a la pestaña Settings y nos aseguramos de que nuestro Chameleon es detectado correctamente. Ha de aparecer en verde “CONNECTED!”. En la siguiente imagen se puede apreciar en mi caso la versión de firmware que tenía anteriormente, la que flasheé hace casi dos años.

Ahora desde la aplicación pulsaremos el botón “Upgrade” que está en la pestaña “Settings”. Al pulsar este botón el Chameleon entrará en modo DFU y le cambiarán las luces.

En este modo, es detectado de otra forma por el Windows y necesitará que instalemos un driver para operar con él. A diferencia de la Proxmark, este driver no lo cogerá Windows automáticamente, así que nos iremos al administrador de dispositivos. Sobre el dispositivo que nos aparecerá como no identificado, pulsaremos botón derecho “Update Driver”, “Browse my computer for drivers” y seleccionaremos la carpeta “Drivers\DFU” del repositorio que acabamos de descargar. Veremos como el driver se instala correctamente y ya nos debería aparecer así en el administrador de dispositivos:

Ahora necesitaremos los ficheros del flasheo. Aquí hay varias formas de hacerlo, o bien compilarlos nosotros mismos o bien utilizar los que están disponibles en la parte de “Releases” del github del repositorio que acabamos de clonar (el mismo donde venían los drivers que acabamos de instalar). En este punto en el canal de Discord el propio Iceman me recomendó no complicarme e instalar los dos ficheros que están en el apartado “Releases” que son de este año 2021 y que no dan problemas. Así que descargamos el fichero con extensión “.hex” y el que tiene extensión “.eep”. Están disponibles en esta URL:

https://github.com/iceman1001/ChameleonMini-rebooted/releases/tag/untagged-e909ae723c300d0cc07e

Tras descargarlos, los copiaremos a la carpeta “Software\Flashing-Windows” del repositorio descargado. Una vez hecho esto, desde una consola cmd iremos a esta carpeta y ejecutaremos el fichero flash.bat

Si todo ha ido bien como se espera, luego podemos comprobar que tenemos el firmware nuevo de una manera muy sencilla. Simplemente abriendo la aplicación del Chameleon, en la pestaña “Settings” podemos ver que la versión de firmware ha cambiado ligeramente respecto a la que podíais ver en pantallazos anteriores.

Y voilá! Eso es todo. Ya tenemos nuestro Chameleon flasheado a la última!

Agradecimientos especiales

Gracias a Hackplayers como siempre, por hacer tanto por la comunidad hacker. Gracias a Iceman (@herrmann1001) y a Gator96100 (@Gator96100) por el soporte en el canal de Discord. Gracias a GMV por dejarme desarrollar allí tantas cosas que me hacen crecer como profesional día a día. Gracias a L1k0rd3b3ll0t4 por el apoyo y la idea de escribir este artículo.

Links de interés

Github Proxmark: https://github.com/RfidResearchGroup/proxmark3
Github ProxSpace: https://github.com/Gator96100/ProxSpace
Github firmware/drivers Chameleon: https://github.com/iceman1001/ChameleonMini-rebooted
Github software Chameleon: https://github.com/iceman1001/ChameleonMini-rebootedGUI
Discord Proxmark: https://discord.gg/QfPvGFRQxH
GMV: https://www.gmv.com/es/

Contribución gracias a Óscar Alfonso Díaz – Twitter (@OscarAkaElvis)


Comentarios

  1. con este dispositivo se puede clona tarjeta de credito?

    ResponderEliminar

Publicar un comentario