Watch Tower
2 minutos de lectura
Se nos dice que alguien ha estado recopilando y alterando información en la red. Además, se nos da un archivo llamado tower_logs.pcapng
.
Análisis de tráfico de red
Si abrimos el archivo PCAP en Wireshark, veremos muchos paquetes Modbus:
Modbus
Algo interesante a mirar es el código de función. Hay tres códigos de función involucrados en esta captura de red (más información en Wikipedia):
Write Multiple Coils
Read Coil
Write Multiple Registers
El que parece relevante es Write Multiple Registers
porque solamente hay 2 paquetes con Write Multiple Coils
y los paquetes de Read Coil
no parecen contener ningún dato. De hecho, todos los paquetes con Write Multiple Registers
están juntos (podemos usar “Apply as Column”):
Decodificación
Ahora, podemos notar que el número de referencia contiene algunos números especiales:
De hecho, 72, 84, 66, 123
son los códigos ASCII decimales para HTB{
, así que hemos encontrado la flag.
Flag
En este punto, podemos usar tshark
y un poco de shell scripting para capturar la flag:
$ tshark -r tower_logs.pcapng -Tfields -Y 'ip.src == 192.168.1.150 and modbus.func_code == 16' -e 'modbus.reference_num' | xargs | tr ' ' ,
52,76,82,48,80,51,85,110,56,70,45,72,84,66,123,51,110,99,50,121,112,55,49,48,110,63,95,110,51,118,51,50,95,104,51,52,50,100,95,48,102,95,55,104,52,55,33,64,94,125,45,114,54,90,74,97,48
$ python3 -c "print(bytes([$(tshark -r tower_logs.pcapng -Tfields -Y 'ip.src == 192.168.1.150 and modbus.func_code == 16' -e 'modbus.reference_num' | xargs | tr ' ' ,)]))"
b'4LR0P3Un8F-HTB{3nc2yp710n?_n3v32_h342d_0f_7h47!@^}-r6ZJa0'
$ python3 -c "print(bytes([$(tshark -r tower_logs.pcapng -Tfields -Y 'ip.src == 192.168.1.150 and modbus.func_code == 16' -e 'modbus.reference_num' | xargs | tr ' ' ,)]))" | grep -oE 'HTB{.*?}'
HTB{3nc2yp710n?_n3v32_h342d_0f_7h47!@^}