Watch Tower
Challenge
- CTF: HTB Business CTF 2023: The Great Escape
- Name: Watch Tower
- Category: Scada
- Difficulty: Very Easy
- Points: 600
- Description: Our infrastructure monitoring system detected some abnormal behavior and initiated a network capture. We need to identify information the intruders collected and altered in the network.
Files
Download: ics_watch_tower.zip
1
tower_logs.pcapng: pcapng capture file - version 1.0
Modbus Packet Capture Analysis
This challenge starts with identifying all packets that could hold a flag such as HTB{}
. The Wireshark capture had modbus packets that have different function codes such as:
1 Read Coil
2 Read Discrete Input
3 Read Holding Registers
4 Read Input Registers
5 Write Single Coil
6 Write Single Holding Register
15 Write Multiple Coils
16 Write Multiple Holding Registers
When browsing the capture, Function Code: Write Multiple Registers (16)
packets there are reference numbers. Clicking on the Reference Number: 99
field, in the bottom-left corner of Wireshark, we can see it is called modbus.reference_num
.
Using tshark
we can filter out all these reference numbers. Converting all these integers to ASCII characters could then be done with awk and the flag is displayed!
1
2
3
4
5
6
7
8
9
tshark -r tower_logs.pcapng -Y "modbus.func_code == 16" -T fields -e 'modbus.reference_num'
52
76
82
48
80
..[snip]..
tshark -r tower_logs.pcapng -Y "modbus.func_code == 16" -T fields -e 'modbus.reference_num' | awk '{split($0, a, " "); for(i=1; i<=length(a); i++) printf "%c", a[i]}'
4LR0P3Un8F-HTB{m0d8u5_724ff1c_15_un3nc2yp73d!@^}-r6ZJa0
We could also follow the TCP stream as follows and show data as HexDump:
Flag: HTB{m0d8u5_724ff1c_15_un3nc2yp73d!@^}