Deadly Arthropod
5 minutos de lectura
Se nos proporciona un archivo PCAP llamado deadly_arthropod.pcap
con algunos eventos USB:
Identificando el dispositivo
Hay un evento que muestra que el dispositivo USB es un teclado (concretamente, Razer BlackWidow Ultimate 2013):
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.
Filtrando eventos
Ahora necesitamos averiguar qué eventos tienen la información de las pula¡saciones. Parece que los paquetes con 35 bytes de longitud son interesantes. Entonces, filtrémoslos:
Vamos a quitar los que contienen datos nulos (0000000000000000
) y también los que empiezan por 02
y el resto son 0
(0200000000000000
):
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 deadly_arthropod.pcap | grep ' 35 $' | awk '{ print $6 }' | grep -v '0[02]00000000000000'
0000080000000000
00000e0000000000
0000160000000000
02001f0000000000
00000b0000000000
0000040000000000
0000060000000000
00000e0000000000
0000170000000000
00000b0000000000
0000080000000000
0000050000000000
0000120000000000
00001b0000000000
0000370000000000
0000080000000000
0000180000000000
0000280000000000
0200170000000000
00000b0000000000
00001e0000000000
0000160000000000
0200060000000000
0000270000000000
0000180000000000
00000f0000000000
0000070000000000
0200050000000000
0000200000000000
0200100000000000
00001c0000000000
0200150000000000
0000200000000000
0000040000000000
00000f0000000000
0200130000000000
02001f0000000000
0000160000000000
0000160000000000
00001a0000000000
0000270000000000
0000150000000000
0000070000000000
0000280000000000
0200140000000000
02000e0000000000
0000500000000000
02002d0000000000
00004f0000000000
0000370000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
02000b0000000000
00004f0000000000
0000220000000000
0000500000000000
0000500000000000
02002f0000000000
02002d0000000000
0000500000000000
02000c0000000000
00004f0000000000
00004f0000000000
0000060000000000
00000e0000000000
00004f0000000000
0000340000000000
00004f0000000000
00004f0000000000
0000050000000000
0000270000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
02000c0000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0200170000000000
00004f0000000000
00004f0000000000
0000090000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
02002d0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
0200300000000000
0000500000000000
0000370000000000
0000500000000000
0000370000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000200000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000180000000000
0000500000000000
0000500000000000
0000170000000000
02002d0000000000
00004f0000000000
00004f0000000000
0000040000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0200050000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
0000170000000000
00004f0000000000
0000220000000000
0000500000000000
0000500000000000
0000500000000000
02000c0000000000
00004f0000000000
00004f0000000000
00004f0000000000
02002d0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
0000040000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
0000040000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
00004f0000000000
0000070000000000
0000500000000000
0000500000000000
0000500000000000
0000500000000000
00001c0000000000
00004f0000000000
00004f0000000000
00004f0000000000
0000150000000000
Proceso de decodificación
En Logger, hice la decodificación manualmente, ya que había algunas teclas CAPS
involucradas y eran pocos eventos. Para este reto, tenemos casi 200 eventos. Además, hay flechas RIGHT
y LEFT
involucradas, por lo que tendremos que analizar todas las pulsaciones para encontrar la información que se imprime en la pantalla.
Hay algunos proyectos en GitHub que analizan las pulsaciones de las teclas. Por ejemplo: USB-Keyboard-Parser
. Me inspiré en uno de estos proyectos y escribí mi propio analizador en Python. Mi código toma los eventos USB de stdin
.
Flag
Si ejecutamos el script con la salida de tshark
filtrada, veremos la flag:
$ tshark -r deadly_arthropod.pcap | grep ' 35 $' | awk '{ print $6 }' | grep -v '0[02]00000000000000' | python3 solve.py
0000080000000000 e
00000e0000000000 k
0000160000000000 s
02001f0000000000 @
00000b0000000000 h
0000040000000000 a
0000060000000000 c
00000e0000000000 k
0000170000000000 t
00000b0000000000 h
0000080000000000 e
0000050000000000 b
0000120000000000 o
00001b0000000000 x
0000370000000000 .
0000080000000000 e
0000180000000000 u
0000280000000000 [ENTER]
0200170000000000 T
00000b0000000000 h
00001e0000000000 1
0000160000000000 s
0200060000000000 C
0000270000000000 0
0000180000000000 u
00000f0000000000 l
0000070000000000 d
0200050000000000 B
0000200000000000 3
0200100000000000 M
00001c0000000000 y
0200150000000000 R
0000200000000000 3
0000040000000000 a
00000f0000000000 l
0200130000000000 P
02001f0000000000 @
0000160000000000 s
0000160000000000 s
00001a0000000000 w
0000270000000000 0
0000150000000000 r
0000070000000000 d
0000280000000000 [ENTER]
0200140000000000 Q
02000e0000000000 K
0000500000000000 [LEFT]
02002d0000000000 _
00004f0000000000 [RIGHT]
0000370000000000 .
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
02000b0000000000 H
00004f0000000000 [RIGHT]
0000220000000000 5
0000500000000000 [LEFT]
0000500000000000 [LEFT]
02002f0000000000 {
02002d0000000000 _
0000500000000000 [LEFT]
02000c0000000000 I
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000060000000000 c
00000e0000000000 k
00004f0000000000 [RIGHT]
0000340000000000 '
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000050000000000 b
0000270000000000 0
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
02000c0000000000 I
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0200170000000000 T
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000090000000000 f
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
02002d0000000000 _
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0200300000000000 }
0000500000000000 [LEFT]
0000370000000000 .
0000500000000000 [LEFT]
0000370000000000 .
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000200000000000 3
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000180000000000 u
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000170000000000 t
02002d0000000000 _
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000040000000000 a
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0200050000000000 B
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000170000000000 t
00004f0000000000 [RIGHT]
0000220000000000 5
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
02000c0000000000 I
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
02002d0000000000 _
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000040000000000 a
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000040000000000 a
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000070000000000 d
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
0000500000000000 [LEFT]
00001c0000000000 y
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
00004f0000000000 [RIGHT]
0000150000000000 r
eks@hackthebox.eu
Th1sC0uldB3MyR3alP@ssw0rd
HTB{If_It_Quack5_It'5_a_K3yb0ard...}
Este script se puede encontrar aquí: solve.py
.