Posted on Leave a comment

DEFCON '17 – A verseny

A Föld legelismertebb hacker versenye a DefCon konferencia Capture-the-Flag versenyének döntője, amit minden évben Las Vegas városában rendeznek, idén már 21. alkalommal. Az előző évekhez képest változás volt, hogy az eddig megszokott Bally’s helyett a Caesars Palace-ben rendezték meg a versenyt. A döntőbe jutáshoz egész évben rendeznek kvalifikációs versenyeket, és nagy örömünkre hackercsapatunk, a !SpamAndHex idén is részt vehetett a döntőben, immár harmadszorra.

A döntő egy több napos esemény, ahol a világ legjobbjai mérik össze tudásukat és stratégiájukat, idén 15 csapat. Mert ugyan nagyon fontos megtalálni és javítani a hibát, valamint a sikeres támadás pontot ér, de ez nem minden. A versenyen valóshoz közeli szituációban kell helyt állni: a csapatoknak a sérülékenység-keresés és a titkos információk megszerzése mellett IT rendszert is kell üzemeltetniük. És ha nem elérhető egy szolgáltatás, akkor a csapat pontokat veszít, mert a való életben sem örülünk, ha nem férünk hozzá a szükséges szolgáltatáshoz.

És itt jön képbe a stratégia. Ha sikeresen támadunk a versenyen és megszerezzük a titkos információt, pontot nyerünk. Ha nem elérhető egy-egy szolgáltatás, pontot veszítünk. Viszont minden csapat ugyanazokat a szolgáltatásokat üzemelteti, vagyis ha megtámadunk valakit, azzal nem csak pontot szerzünk, hanem a hibára is rávezetjük a másik csapatot. Ráadásul mutatunk nekik egy működő támadást, amit akár ellenünk is felhasználhatnak. Szóval védekezni is kell: ha megtaláltuk a sérülékenységet, nem csak ki kell használnunk mások rendszerében, hanem javítanunk is kell a sajátunkban.

Az üzemeltetési felelősség miatt a csapatok kapnak némi felkészülési időt, hogy kiismerjék a rendszert, amiért felelnek. A döntőben ez a verseny kezdete előtti nap volt. Itt találkoztunk először a cLEMENCy platformmal, ami nagyon távol áll a megszokott IT rendszerektől. Hagyományos rendszerekben a memóriában a legnagyobb helyi értékű számjegyet vagy a szám végén (big-endian), vagy a szám elején (little-endian) szokás tárolni. Ezzel szemben a cLEMENCy middle-endian, vagyis a legnagyobb helyi értékű számjegy a szám közepén helyezkedik el. Ez kihívássá teszi a memória olvasását és értelmezését, ráadásul nem léteznek kész eszközök, amik ezt kezelni tudnák. Arról nem is beszélve, hogy a cLEMENCy-n minden byte 9 bitből áll az általánosan megszokott 8 helyett. Vagyis adott egy nagyon különleges platform és egyetlen egy nap (!), hogy elkészüljenek azok a szoftverek, amelyek segítenek a platformra készült feladatok megoldásában.

Alapvetően háromféle szoftverre van szükség: assembler, wrapper és disassembler. Először az assemblert készítettünk el, hogy a saját magunk által írt programokat lefordíthassuk a cLEMENCy platform nyelvére és futtathassuk azt. A futtatáshoz egy emulatort kaptunk, vagyis nem egy fizikailag létező számítógépen futottak a feladatok, hanem egy kibertérben futtatott számítógépen. Az emulator köré készítettük el a wrappert, hogy szüneteltethessük a programok futását és futás közben megnézhessük a memória, valamint a regiszterek tartalmát. Ez sokat segített hibakeresés közben, de még mindig hiányzott a disassembler. Ugyanis a futtatható binárisok értelmezését és visszafejtését nem gépi kód szinten szoktuk végezni, hanem megpróbálunk visszalépni az ún. assembly szintre, ami ugyan sokkal kevéssé olvasható, mint egy jól ismert programozási nyelven írt forráskód, de legalább az utasításokat és operandusaikat nem számokként látjuk, hanem olvasható formában tudjuk értelmezni.

A verseny első napján a szervezők reggel 9 órakor nyitották meg a CTF termet a versenyző csapatok előtt. A csapatok 1 órát kaptak, hogy felállíthassák hálózataikat, majd 10 órakor megkezdődött a verseny.

A tavalyi megmérettetéshez hasonlóan a csapatok szolgáltatásai egy központi helyen futottak. A szolgáltatásokhoz tartozó futtatható binárisokat egy webes felületen lehetett lecserélni, azonban minden csere látható volt minden más csapat számára. Ezt az jelentette, hogy akár egy másik csapat által készített futtatható binárist is használhatott egy csapat. Ez azonban veszélyeket is rejt magában. Ha értelmezés nélkül kezdenénk el lecserélni a futtatható binárisainkat azokra, amiket a többiek készítettek, előfordulhat, hogy hátrányba kerülünk a többiekkel szemben, mert pl. nem képes futni a progam, vagy rejtett csapdát helyeztek el benne a készítők.

A legelső feladatot rubix névre keresztelték a szervezők és a Rubik-kocka megoldását implementálta. Az első dolog, ami megütötte a szemünket, az volt, hogy a program az emulátorban csak bináris adatokat jelenített meg a képernyőn. Ezért nagyon gyorsan le kellett fejlesztenünk egy kisebb szoftvert, ami a 9-bites bájtokat lefordította 8-bites bájtokra. Ezután tudtuk csak elkezdeni értelmezni a feladat kimenetét. Ezt a feladatot először a HITCON csapat oldotta meg, majd lassan a többi csapattól is elkezdtek beérkezni a megoldások.

A nap folyamán további 2 feladatot adtak ki a szervezők, amiket szinten a HITCON csapat oldott meg elsőre. Összesen 10 órán keresztül tartott ez a nap, ami elég fárasztó volt. Sikerült támadást készítenünk a rubix feladathoz és két másikhoz is. Azonban hamar rájöttünk, hogy az eszközeink nem elég hatékonyak, nem tudjuk elég gyorsan megérteni a futtatható binárisok működését. Ezért egyre nagyobb hangsúlyt helyeztünk a hálózati forgalom elemzésére is. A célunk az volt, hogy a hozzánk érkező hálózati forgalomból ki tudjuk emelni a támadásokat, amiket más csapatok indítottak ellenünk. Azonban ez csak első olvasásra ilyen egyszerű, mivel a folyamat tele volt hamis riasztásokkal a szervezők által beszúrt direkt félrevezető forgalom miatt. Ráadásul a hálózatelemző szoftvert (Wireshark) is át kellett írnunk, hogy 9-bites bájtokkal dolgozzon.

A második nap végére a 15. helyen álltunk.

A verseny utolsó napja már csak 4 órás volt. A korábbi évekhez hasonlóan a scoreboardot nem láthattuk így csak az előző este eredményeire lehetett támaszkodni. Ez a nap is egy új szolgáltatással indult babyecho néven, ami gyakorlatilag egy nagyon egyszerű format string sérülékenységet tartalmazott. A feladat érdekessége az volt, hogy a nyilvánosságra hozatalt követően 1-2 percen belül a Tea Deliverers már meg is oldotta. A verseny után a szervezőkkel beszélve Ők ennek kapcsán arra gyanítanak, hogy már előtte valahogyan meg tudták szerezni a binárist és úgy dolgoztak rajta előtte. Az persze kérdéses, hogy a verseny szabályzatával ez mennyire összeegyeztethető, de ezt most nem célunk megítélni. A lényeg, hogy ezt sérülékenységet mi is sikeresen kihasználtuk és javítottuk. A méréseink alapján az utolsó napon még 3 támadásunk sikeresen szerzett és küldött be flageket.

A verseny a szokásos módon a ‘Europe – The final countdown’ klasszikusával ért véget 2 órakor. A verseny után beszélgettünk több csapattal köztük a Shellphish-sel Santa Barbarából, a pasten-nel Izraelből vagy például az Eat, Sleep, Pwn, Repeattel Németországból.

A verseny záró eseményén a szokásokhoz híven csak az első három helyezettet sorolták fel, akik név szerint az immár negyedszerre győztes (és ezáltal a legsikeresebb csapat a DEFCON 21 éve alatt) PPP (USA), HITCON (Taiwan), A0E (Kína). Őszinte gratuláció a csapatoknak ezért a hihetetlen eredményért!

Összességében elmondható, hogy a tavalyi évhez hasonlóan nagyon sokat számított, hogy egy adott csapat milyen eszközkészlettel rendelkezett a verseny megkezdése előtt, illetve mennyire ügyesen tudta ezeket a toolokat felhasználni. Nálunk sajnos ezek nem tudtak eléggé kiforrni a verseny ideje alatt, így elég nagy hátrányban voltunk a verseny többi szereplőjéhez képest. Ettől függetlenül úgy gondoljuk, hogy ismét nagyon sok gazdag élménnyel gyarapodtunk.

Végül, de nem utolsó sorban hivatalosan is megköszönjük minden támogatónknak, hogy lehetővé tették a kiutazásunkat és ezáltal szerepelhettünk ismét ezen a világszintű megmérettetésen. A verseny tényleges eredményétől függetlenül büszkék vagyunk arra, hogy a világ 15 legjobb csapata között tudhatjuk magunkat évről évre és ezáltal nemcsak magunknak és a CrySyS Labornak, hanem talán az egész országnak is öregbítettük a hírnevét.

microseccrysysbalabitmrg-effitasesetukatemivikeuro-onetresoritpadi