Man In The Middle
2 minutos de lectura
Se nos proporciona un archivo llamado mitm.log
:
$ file mitm.log
mitm.log: BTSnoop version 1,
Si buscamos por este tipo de archivo, vemos que se puede abrir con Wireshark:
Identificando el dispositivo
El tercer evento muestra que el dispositivo USB es un teclado Bluetooth (LiteonTe):
Por lo tanto, necesitaremos analizar las pulsaciones de teclas, como en Logger. Los dispositivos de hardware utilizan un protocolo conocido como Human Interface Device (HID). Se puede encontrar más información en Wikipedia. De hecho, hay un manual de documentación adjunto: ww.usb.org, donde se encuentran algunas tablas de HID (Sección 10: “Keyboard/Keypad Page (0x07)”):
Esta tabla también se puede encontrar en este Gist de GitHub.
Sin embargo, esta vez estamos tratando con un teclado Bluetooth, que usa L2CAP (más información en Wikipedia). Este protocolo contiene los payloads HID esperados.
Filtrando eventos
Ahora necesitamos averiguar qué eventos tienen la información de las pula¡saciones. Parece que los paquetes con 17 bytes de longitud son interesantes (nótese que los eventos están ordenados por longitud y solo hay unos pocos con 17 bytes, obsérvese la barra de desplazamiento de la derecha):
Entonces, filtrémoslos:
Eliminemos estos payloads: a10100000000000000
.
Y también estos: a10102000000000000
.
Muy bien, ahora que nos quedan todos los códigos de las teclas. Lo único que debemos hacer es decodificarlos.
Uso de tshark
El filtrado anterior también se puede hacer con tshark
desde la línea de comandos:
$ tshark -r mitm.log | grep 'L2CAP 17 ' | grep -v a10100000000000000 | grep -v a10102000000000000 | awk '{ print $9 }'
a10100002800000000
a10100002800000000
a10102000b00000000
a10102001700000000
a10102000500000000
a10102002f00000000
a10102000e00000000
a10100002000000000
a10100001c00000000
a10102001600000000
a10100001700000000
a10102001500000000
a10100002700000000
a10100000e00000000
a10100000800000000
a10102001600000000
a10102002d00000000
a10102000600000000
a10100002700000000
a10100001000000000
a10102001300000000
a10100001500000000
a10100002700000000
a10100001000000000
a10100001e00000000
a10100001600000000
a10100002000000000
a10100000700000000
a10102003000000000
Proceso de decodificación
Esta vez, hice la decodificación manualmente, ya que había algunas teclas SHIFT
involucradas (los que comienzan con a101020
):
ENTER - a10100002800000000
ENTER - a10100002800000000
H - a10102000b00000000
T - a10102001700000000
B - a10102000500000000
{ - a10102002f00000000
K - a10102000e00000000
3 - a10100002000000000
y - a10100001c00000000
S - a10102001600000000
t - a10100001700000000
R - a10102001500000000
0 - a10100002700000000
k - a10100000e00000000
e - a10100000800000000
S - a10102001600000000
_ - a10102002d00000000
C - a10102000600000000
0 - a10100002700000000
m - a10100001000000000
P - a10102001300000000
r - a10100001500000000
0 - a10100002700000000
m - a10100001000000000
1 - a10100001e00000000
s - a10100001600000000
3 - a10100002000000000
d - a10100000700000000
} - a10102003000000000
Flag
Y aquí tenemos la flag: HTB{K3yStR0keS_C0mPr0m1s3d}
.