Tweets by @buherablog
profile for buherator at IT Security Stack Exchange, Q&A for IT security professionals

A BitBetyár Blog

Túljártál a nagyokosok eszén? Küldd be a mutatványodat! (e-mail a buherator gmailkomra jöhet)

Full-Disclosure / Névjegy / Coming out


Promó

H.A.C.K.

Címkék

0day (110) adobe (87) adobe reader (21) anonymous (26) apple (60) az olvasó ír (49) blackhat (20) botnet (22) bug (200) buherablog (44) buhera sörözés (39) bukta (49) deface (38) dns (22) dos (29) esemény (82) facebook (26) firefox (64) flash (33) gondolat (31) google (59) google chrome (36) hacktivity (37) hírek (117) incidens (224) internet explorer (88) iphone (35) java (50) jog (22) kína (21) kriptográfia (68) kultúra (21) linux (24) malware (43) microsoft (142) móka (48) mozilla (23) office (26) oracle (40) os x (43) patch (197) php (20) politika (31) privacy (58) programozás (22) safari (34) sql injection (62) windows (85) xss (77) Címkefelhő

Licensz

Creative Commons Licenc

"A könnyeimmel csillapítani lehetne egész Uganda szomját!"

2010.06.23. 17:24 | buherator | 6 komment

Az elmúlt hétvégén részt vettünk az Offensice Security How Strong is Your Fu? versenyének második fordulóján, amely ismét kellően helyretette a nevezettek egóját. Az előző alkalomhoz képest ezúttal volt néhány komolyabb változás: Először is a nevezéshez egy kisebb összeget kellett utalni a Hackers For Charity számlájára, és csak az első 102 adakozót engedték be a laborkörnyezetbe. Erre azért volt szükség, hogy a szervezők megfelelően tudják tervezni az infrastruktúrát - mint azt később látni fogjuk, volt amit így sem tudtak kivédeni. Mivel a VPN hozzáférések számát ilyen módon korlátozták, nem volt szükség "n00b-filterre", helyette kettővel több, összesen öt darab célpont várt meghódításra. Egyik csapatnak sem sikerült az összes gépet bevennie, az alábbiakban a saját megoldásainkat és a többiek által leírt módszerek egyvelegét mutatom be*.

iVuln

A legegszerűbb falatnak tűnő gép WWW gyökerében egy C forráskódot és annak egy Linux-ra fordított változatát lehetett megtalálni. A program egy primitív echo-szerű alkalmazás volt, amely a 7500-as TCP porton figyelt, egy gyors portscan megmutatta, hogy ez a port a célgépen is nyitva van. Természetesen ott bújkált a programsorok között egy szép stack overflow, és bár - mint utóbb kiderült - a memória randomizáció be volt kapcsolva az iVulnon, muts-ék egy függvénybe csomagolt 'jmp esp'-vel  kedveskedtek a bugvadászoknak, és a szolgáltatás root-ként futott. 

Mosquito

Sajnos az iVuln volt az első és utolsó gép, amit ilyen egyszerűen be lehetett venni. A megszerzett gép /root könyvtárában ott figyelt egy mosquito.exe nevű állomány, ami egy közönséges Win32-es bináris volt. Disassemblerrel ráugorva a kódra kiderült, hogy ez is indít egy TCP listenert a 4597-es (?) porton. Ez szintén nyitva volt a célponton, de rácsatlakozva, illetve a programot tesztkörnyezetben futtatva sem lehetett érdemi információhoz jutni vele kapcsolatban. További turkálás után kiderült, hogy miután a program bejövő kapcsolatot érzékel, automatikusan megpróbál csatlakozni a csatlakozott hoszt 1080-as portjára. Egy netcat listenert elindítva meg is kaptuk a visszajövő kapcsolatot, azonban itt megrekedtünk: a bináris állomány minden lényeges függvényének visszafejtése után kiderült, hogy a párhuzamos kommunikáció elméletileg ugyan versenyhelyzetet teremt, de a program gyakorlatilag nem használ potenciálisan sebezhető függvényeket, ellenben stack cookie-kal és SafeSEH-el fordították. Később ráadásul olyan információkat is közöltek más versenyzők, hogy a Mosquito-n futó szolgáltatás kódja nem egyezik meg a letölthető állományéval. Tovább bonyolította a helyzetet a hoszton futó 3CX VoIP PBX Proxy, ami kinyitott egy halom portot, nem volt sebezhető, ellenben rengeteg időt el lehetett szúrni a tesztkörnyezetbe állítással és a hangposta hívogatásával...

A megoldás - ami már sajnos csak a verseny után jutott eszünkbe - számomra gyakorlatilag megdöntötte a szervezők azon állítását, hogy valódi életből vett problémákat fognak elénk tárni. A mosquito.exe egyetlen funkciója - ahogy az a reverse engineering során is kiderült - hogy az egyik socketen bejövő adatokat a másik socketen 4-gyel XOR-olva továbbítja. Egy ilyen módon  obfuszkált HTTP kérést elküldve a távoli szolgáltatásnak egy sebezhető Easy Chat Servertől lehetett volna választ kapni, amire létezik publikus exploit (ezt persze módosítani kellett volna úgy, hogy az adatokat XOR-olva küldje, és olyan shellkódot kellett volna alkalmazni, amivel át lehet látni ezen a "különleges" proxy-n).

@K-SLC

Ezen a gépen egy darab HTTP port volt nyitva, amin egy rémült LOLcat kérte, hogy előbb kopogjunk. Itt rögtön felmerült a port-knocking ötlete, de 65535 portot különböző összeállítású csomagokkal végigkopogtatni nem vicces, úgyhogy ezt az ötletet jegeltük. Szerencsére azonban nem feledkeztünk meg róla: a 7000-es, 8000-es és 9000-es portokra sorban egy-egy SYN csomagot küldve megnyílt a 8000-es port, amin egy SHOUTcat szerver figyelt, természetesen sebezhető változat. A publikus exploiton kellett ugyan reszelni egy kicsit, de innen már viszonylag sima volt az út.

Jackie

Jackie-t szánták a szervezők a második legkönnyebb gépnek az iVuln után, sajnos azonban az élet itt sem volt habostorta: a gép 5060-as portja nem látszott a játékosok IP-jéről, csak a már bevett hosztokról. Az iVuln egy Backtrack 4-et futtatott, így erről a gépről lett volna optimális támadást intézni, de a verseny előrehaladtával egyre nehezebb volt olyan pillanatban csatlakozni a géphez, amikor éppen nem volt összedöntve a kaput jelentő szolgáltatás. A @K-SLC-vel valamivel jobb volt a helyzet, innen kiindulva több VoIP biztonsági szoftverrel is próbálkoztunk kideríteni, hogy mi fut az adott porton, de egyik sem tudott érdemi választ adni erre a kérdésre. A megoldást a SIPp nevű eszköz jelenthette volna, ami kidehette volna, hogy egy (sebezhető verziójú) sipX alkalmazás fut a távoli gépen. Ez a szolgáltatás önmagában nem rendelkezett elegednő jogosultsággal a feladat befejezéséhez (az Adminisztrátor asztalán található proof.txt kiolvasásához), de a jó öreg univerzális jogosultságkiterjesztés exploit megoldotta volna ezt a problémát is.

0xdeadca0

Erre agépre senkinek sem sikerült bejutnia. A portscan szerint volt egy nyitott MySQL portja (a yaSSL exploit hatástalan volt), elérhetőek voltak rajta SMB szolgáltatások (A publikus megosztások nem tartalmaztak érdemi adatot, a NULL session-ök csak korlátozottan voltak hasznáhatók), valamint figyelt valami a 8080-as porton, le lehetett tölteni egy passwords.txt nevű fájlt, amiben volt néhány jelszó, amikkel sehová nem lehetett bejutni, valamint Jackie-n is lehetett találni egy MySQL-re vonatkozó állományt. A mi gyanúnk az, hogy az Offensive Security Insider2 nevű PoC trójaija futott a 8080-on, de ez az eszköz csak előre bedrótozott vezérlő hosztokkal hajlandó szóba állni. 

Eredmények, összegzés

Ebben a versenyben hatalmas szerepe van pszichikai tűrőképességnek: 48 óra alatt alig alszik az ember, az evés és ivás egyszerű létfentartó tevékenységgé degradálódik, és minden pillanat egy-egy csepp frusztráció. Így leírva a feladatokat persze minden sokkal egyszerűbbnek tűnik, sajnos azt kell mondanom, hogy elérhettünk volna jobb eredményt is, de szerencsére nem csak számunkra volt fájdalmas ez a 48 óra. Nagyjából 10 órán keresztül vezettünk, mivel a @K-SLC-t nekünk sikerült (az iVuln után) először birtokba venni. Sajnos a verseny végére lecsúsztunk az 5. helyre, mivel a Corelan Team négy tagjának sikerült az iVuln mellé még két gépet begyűjteni. Dokumentálni ezalkalommal nem kellett. 

A versenyen - takaréklángon - részt vett a múltkori győztes woFF is, akinek egyéb elfoglaltságai mellett is sikerült pontot szereznie (mindössze 24 rézvevőnek sikerült egyáltalán felküzdenie magát az eredménytáblára!), így kis hazánk ismét szépen szerepelt :) Remélem hogy a következő alkalommal még több honfitársunkkal  együtt tudunk majd villantani a nagyvilágnak! 

A Corelan Team jegyzőkönyveit elolvashatjátok itt. Twitteren a #hsiyf2 cimkére érdemes rákeresni.

*én is csak egy napot tudtam a versenyre szánni, az ebből eredő pontatlanságokért ezúton is elnézést kérek

Címkék: hack how strong is your fu hackers for charity

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.

westerneer 2010.06.23. 22:54:11

Szép eredmény, csak így tovább srácok! Biztos jó hangulata volt a happeningnek :)

synapse · http://www.synsecblog.com 2010.06.24. 10:56:54

Ezt elirtad: "memória randomizáció be volt kapcsolva az iVulnon" - nem volt, a reportban fix cimre ugrik.

buherator · http://buhera.blog.hu 2010.06.24. 11:14:45

@synapse: Igen, de direkt ezért a kódban volt egy void jmp(){asm("jmp esp")}, ami fix címre került, az input meg ott figyelt a stack tetején szerencsére.

synapse · http://www.synsecblog.com 2010.06.25. 10:01:46

Akkor csak nem volt (teljes) aslr ;)