Modbuster
PLC's bestuur je zo.
Last updated
PLC's bestuur je zo.
Last updated
Flag format: CSCBE{...}
Als je de pcap open doet krijg je dit te zien.
We zien hier 1 ander protocol buiten TCP met de naam modbus. Je kan al begrijpen dat de flag daar ergens in zit. Dus we zullen die packets eens bekijken.
We filteren al de modbus packets eruit door mbtcp
in de filter bovenaan te plaatsen. Nu zien we alleen de modbus packers. Bij info kan je zien wat het protocol allemaal doet, het zit heel de tijd coils en registers te lezen en naar coils te schrijven. Als we die packets bekijken zien we dat dat er eigenlijk alleen een beetje binaire data word doorgestuurd of gelezen niets waar er echt een flag of text in kan zitten. Maar we zien ook dat het protocol 2 delen heeft Modbus/TCP en Modbus. In Modbus zit geen info hebben we net ondekt. Maar wat er in Modbus/TCP zit dit.
Hier lijkt ook niets in te zitten. Maar wat is dit ? Er zijn maar 2 ip addressen maar de Unit Identifier zijn niet 2 unieke gegevens. Je zou denken dat een Unit Identifier uniek moet zijn. Maar het lijkt alsof dat niet zo is hier. Ook valt het op dat als je de Unit Identifier bekijkt in het Packet Bytes het een letter is en bij 1 er van is het zelfs een { en we weten dat de flag CSCBE{FLAG} is dus ik denk dat we de plek van de flag gevonden hebben. Nu hoe halen we dat eruit ?
Dus we gaan nog een beetje filteren. We hebben nu al gefilterd op alleen het modbus protocol met mbtcp
maar nu moeten we ook nog een ip uitfilteren, want zo te zien stuurt de client een request naar de server met een unit identifier en de server stuurt de zelfde identifier terug dus hebben we een letter 2 keer wat we niet willen. Dus daarom dat we de filter update naar ((mbtcp) && (ip.dst == 10.0.0.57))
hierdoor worden er ook alleen packets met ip 10.0.0.57 als besteming weergegeven. Nu zien we dat er ook packets zijn met Unit identifier 10 wat als je in de ASCII Tabel zou kijken geen letter is dus die filteren we ook weg en krijgen zo als final filter dit ((mbtcp) && (ip.dst == 10.0.0.57)) && !(mbtcp.unit_id == 10)
Nu hebben we al de packets met de flag in. Nu moet je gewoon elke packet af gaan en de waarden van de Unit identifier opschrijven.
CSCBE{MomodbusMoProblems}