Feltört! Fénypontok a KringleCon 5-ből: Aranygyűrűk

Feltört! Fénypontok a KringleCon 5-ből: Aranygyűrűk

A 2022-es SANS Holiday Hack Challenge versenyen a tanulás és a móka találkozik – vágja be magát egy repkénytúrára az Északi-sarkon, miközben meghiúsítom Grincum rossz tervét és visszaszerzem az öt aranygyűrűt

Ez az első éve, hogy részt veszek a SANS Holiday Hack Challenge és nagy volt. A könnyűtől a nehézig terjedő 16 kihívásból álló sorozaton keresztül gyakoroltam a gyanús hálózati forgalom és a PowerShell-naplók elemzését, valamint az írást. Suricata szabályok, kitörve a Docker konténer, kiszivárgott kulcsok keresése kihasználásához a GitLab CI/CD-folyamat és egy AWS felhasználó, vezénylés XML külső entitás támadások, és egy intelligens szerződés feltörésével vásárolni a nem helyettesíthető token.

A legjobb része ennek az élménynek az volt, hogy új eszközöket és technológiákat ismert meg, így sokkal tovább bővítette a kiberbiztonsági ismereteimet. Itt megosztok néhány kiemelést a kihívások megoldásából.

Irányultság

Minden résztvevő kap egy avatart, amellyel az Északi-sarkon található böngészőn belüli videojáték-környezetben navigálhat:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A tájékozódás során kapsz egy kriptovaluta pénztárcát, amelyet a játék KringleCoinok odaítélésére használ a kihívások teljesítésére, és amelyet az utolsó kihívás során használsz fel egy intelligens szerződés feltörésére. Érdekes módon a játék nyomon követi az összes KringleCoin-tranzakciót egy Ethereum blokkláncban, ami azt jelenti, hogy ez a blokklánc is teljes nyilvántartást tárol az előrehaladásról.

A játék első köréhez.

1. Tolkien-gyűrű

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A Tolkien-gyűrű megtalálásához meg kellett hajlítani a naplóelemző izmaim.

Wireshark adathalászat

Először a Wiresharkot használtam a rendelkezésre álló elemzéshez .pcap fájl, amely felfedte a szervert a címen adv.epostoday[.]uk a fájl letöltése Ref_Sept24-2020.zip számítógépre:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Bekukucskálva a ZIP fájlba, találtam egy futtatható fájlt Ref_Sept24-2020.scr amely két észlelést váltott ki az ESET Endpoint Security alkalmazásban: BAT/Runner.ES és a Generik.TAGTBG. Ez a rosszindulatú program végül a memóriában futó rosszindulatú végrehajtható fájlhoz vezet config.dll és az ESET észlelte Fejlett memóriaszkenner as Win32/Dridex.DD.

Windows eseménynaplók

Ezt követően elemeztem a megadottakat .evtx PowerShell-naplókat tartalmazó fájl az Event Viewer segítségével. Bár más eszközök is léteznek a PowerShell-naplók elemzésére, ha a támadók tudják, hogyan kell a földön kívüli binárisokat használni, hogy a radar alatt maradjanak, a védőknek jól kell ismerniük az operációs rendszer által biztosított natív eszközöket is.

Mivel a naplók 10,434 XNUMX eseményt tartalmaztak, dátum szerint csoportosítottam az eseményeket, majd futtattam a Keresés műveletet, hogy megkeressem a $ karakter. A PowerShellben $ létrehozására és hivatkozásra szolgál változók. Találtam egy támadást 24. december 2022-én, amikor a támadó a következő szkriptet futtatta:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Úgy tűnik, a támadó talált egy titkos receptet, és kicserélte a titkos összetevőt méz mert halolaj, majd létrehozott egy új receptfájlt. Ez egy 4104-es azonosítójú eseményt váltott ki, amely a távoli PowerShell-parancsok végrehajtását jelenti. Így az eseményeket ezen azonosító alapján szűrtem, így gyorsabban találhatok további rosszindulatú eseményeket.

Suricata Regatta

A Tolkien-gyűrű utolsó gyakorlata négy Suricata-szabály felírása volt a hálózati forgalom Dridex-fertőzés megfigyelésére:

alert dns $HOME_NET any -> any any (msg:"Ismert rossz DNS-keresés, lehetséges Dridex-fertőzés"; dns.query; content:"adv.epostoday.uk"; nocase; sid:1; rev:1;)

alert http 192.185.57.242 any <> any any (üzenet: "Vizsgálja meg a gyanús kapcsolatokat, lehetséges Dridex-fertőzést"; sid:2; rev:1;)

alert tls any any -> any any (üzenet: "A rossz tanúsítványok vizsgálata, lehetséges Dridex-fertőzés"; tls.cert_subject; content:"CN=heardbellith.Icanwepeh.nagoya"; sid:3; rev:1;)

alert http any any -> any any (msg:"Gyanús JavaScript-funkció, lehetséges Dridex-fertőzés"; file_data; content:"let byteCharacters = atob"; sid:4; rev:1;)

Ennek érdekében ezek a szabályok elkapják a DNS-kereséseket adv.epostoday[.]uk, kapcsolatok az IP-címhez 192.185.57[.]242, a rosszindulatú szerver használata hearbellith.Icanwepeh[.]nagoya köznévvel azonosítható (CN) egy TLS-tanúsítványban, és a JavaScript használatát atob() függvény egy base64 kódolású adatokat tartalmazó bináris karakterlánc dekódolásához az ügyfélen.

A három kihívás teljesítésével megszereztem a Tolkien-gyűrűt:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Tovább a második gyűrűre.

2. Elf Ring

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Az Elfen Ring legkiemelkedőbb kihívásai a Prison Escape és a Jolly CI/CD voltak.

Prison Escape

A Prison Escape szigorú emlékeztető volt arra, hogy root jogosultságok megadása egy Docker-tárolóban lévő felhasználónak éppen olyan jó, mint root jogosultság megadása a gazdagépen. A kihívás a konténerből való kitörés volt. Nos, root felhasználóként könnyen elvégezhető:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Root felhasználóként felsoroltam az eszköz partíciós tábláit, majd csatoltam a gazdagép fájlrendszerét, teljes hozzáférést biztosítva a gazdagéphez. Most kereshetem a kulcsot, aminek a kezdőkönyvtárban kell lennie, ahogy a játékon belüli tippekből kiderül:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Jolly CI/CD

Bár ez gyors volt, a Jolly CI/CD-nek a leghosszabb ideig tartott, míg kitaláltam. Először is kaptunk egy Git-tárat a klónozáshoz HTTP-n keresztül:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Az URL-ből láttam, hogy az adattár neve az volt wordpress.flag.net.internal, ezért átköltöztem az adattárba, és találtam egy WordPress webhelyet. Megnéztem, hogy a weboldal él-e:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Igen, az oldal működőképes volt. Kíváncsi voltam, hogy vannak-e kiszivárgott kulcsok a forráskód történetében. Ha igen, akkor képesnek kell lennem szerkeszteni a forráskódot. Szóval futottam git napló:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A véglegesítési üzenetekből úgy néz ki, mint a elkövetni az eszközök hozzáadása után készült, hogy javítsa a hopp. Itt az ideje, hogy megnézze az előjegyzést:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Kiváló, találtam a .ssh könyvtár kulcsokkal. Másoljuk át ezeket a kulcsokat, és állítsunk be egy SSH-ügynököt és egy Git-felhasználót, hogy megnézzük, ki tudom-e személyesíteni a kulcsok tulajdonosát:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Most térjünk vissza a fő ághoz, és teszteljük, hogy tudunk-e triviális módosítást tenni a forráskódban (a nano használatával egyszerűen szóközt tettem az egyik fájlba):

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Tehát a kihívás első részét úgy értem el, hogy kiadtam magam az egyik WordPress fejlesztőnek, de a webhely továbbra is működött a nyomásom után?

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A push-om megváltoztatott valamit, mert most a webhely átirányított a 8080-as portra.

Mostanáig figyelmen kívül hagytam a kihívás CI/CD részét, ami a kulcsa a kihívás teljesítésének. Az adattár tartalmazza a .gitlab-ci.yml fájl, amely a GitLab CI/CD-folyamat konfigurációját biztosítja. Minden alkalommal, amikor a tárolóra lép, a CI/CD rendszer bekapcsol, és a GitLab Runner végrehajtja a szkripteket ebben az YML-fájlban. Ez olyan jó, mint távoli kódfuttatást elérni azon a szerveren, amelyen a GitLab Runner telepítve van, gondoltam.

Közelebbről nézve láttam egy rsync script, amely átmásolja az összes fájlt a Git-tárból a webszerver azon könyvtárába, amelyről a webhelyet kiszolgálták. Eleinte próbáltam használni rsync megfordítani az adatfolyamot úgy, hogy az összes fájlt a webszerverről a Git-tárba másolja, de sikertelenül.

Sok hipotézis tesztelés után végül áttörő belátásom volt: Ahelyett, hogy megpróbálná „megjavítani” a WordPress webhelyet, vagy rosszindulatú szkripteket futtatni a build rendszeren keresztül, szolgáljon ki egy olyan webhelyet, amely információkat szivárog ki a webszerverről. Belül index.php (a repository legfelső szintjén található), kommentálhatom a WordPress webhelyet betöltő kódot, és futtathatom a webszervert vizsgáló PHP-parancsokat.

Valójában még a shell parancsokat is futtathatom PHP-vel. megtaláltam passthru() könnyen működött.

In index.php, Használtam // hogy kommentáljak két sort és hozzátettem passthru('ls -la /'); az utolsó sorban. Ezzel létrehoz egy webhelyet, amely felsorolja a webszerver gyökérkönyvtárában található összes fájlt:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Aztán ezt a módosítást áttoltam a Git tárhelyre, és a GitLab CI/CD rendszer gondoskodott a webhely frissítéséről:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Ó, az Elfen Ringnek bent kell lennie flag.txt! Megismételtem az előző lépéseket, de most már használtam passthru('cat /flag.txt'); az Elfen Ring felfedése, amikor legközelebb kértem a webhelyet:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A harmadik gyűrűre.

3. Web Ring

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A legszórakoztatóbb kihívás számomra az Open Boria Mine Door volt, bár Glamtariel szökőkútja érdekes volt, miközben találós kérdéseket is feladott.

Nyissa ki a Boria bányaajtót

Az Open Boria Mine Doorban hat csapot vagy mini-kihívást kaptunk a bemenet érvényesítésének megkerüléséhez vagy egy Tartalombiztonsági politika a bemeneti és kimeneti csövek összekötéséhez a csapok között, beleértve a csövek színének egyeztetését. A legtöbb tűhöz HTML-t használtam az összekötő 'o betűk listájának megírásához. Íme a végső megoldásom:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

1-es érintkező

Az 1. PIN-kódhoz nem volt érvényesítés, így egyszerű HTML-ről és beépített CSS-ről volt szó:

2-es érintkező

A 2. PIN-kódnak volt egy tartalombiztonsági szabályzata, amely nem engedélyezte a JavaScriptet, de engedélyezte a belső CSS-t, így ez nem okozott problémát az én módszeremnek:

3-es érintkező

A 3. PIN-kódnak volt egy tartalombiztonsági szabályzata, amely nem engedélyezte a CSS-t, de engedélyezte a beépített JavaScriptet, ezért inkább JavaScriptet használtam a stílusok megváltoztatására:

4-es érintkező

A 4. PIN-kódnak nem volt tartalombiztonsági szabályzata, de volt egy sanitizeInput funkciója az ügyféloldalon, amely eltávolította a dupla idézőjeleket, szimpla idézőjeleket, bal oldali szögletes zárójeleket és derékszögű zárójeleket. A trükk itt az volt, hogy rájöjjünk, hogy ezt a funkciót nem az űrlap elküldése váltotta ki, hanem az onblur esemény. Más szóval, ha elmozdítja az egeret a beviteli mezőtől, akkor a onblur esemény, fertőtlenít minden bemenetet. A megoldás az volt, hogy az űrlapot a gomb megnyomásával küldjük el belép billentyűt, miközben ügyeljen arra, hogy az egérkurzor ne kerüljön a beviteli mező határain kívülre:

5-es érintkező

Az 5-ös tűnél ugyanez volt sanitizeInput függvény és bypass mellett egy tartalombiztonsági szabályzat, amely tiltja a beépített CSS-t, de engedélyezi a beépített JavaScriptet:

6-es érintkező

Végül a 6. PIN-kód nem tisztította meg a bevitelt, de szigorúbb tartalombiztonsági szabályzatot alkalmazott, amely mind a beépített CSS-t, mind a JavaScriptet tiltja. A megoldásom az volt, hogy elavult HTML-t használtam a szükséges stílusok lekéréséhez, és táblázatot használtam lista helyett:

Glamtariel szökőkútja

Glamtariel szökőkútja lehetőség volt a gyakorlásra XML külső entitás (XXE) támadások. Nem volt nehéz kitalálni, hogyan kell meghatározni egy egyéni XML-entitást, meghatározni egy entitást, amely fájlt kér a szervertől, és hozzáadni az entitást hasznos adatként egy HTTP-kéréshez. A legnehezebb a játékon belüli rejtvények kitalálása volt, hogy megtudjuk a szerver által kiszivárogtatott fájlok elérési útját. Íme az áttörési kérés, amely felfedi az aranygyűrű helyét:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Két tanulságot szeretnék levonni ebből a kihívásból. Először is használja a Tartalomtípus konverter bővítés be Böfög hogy a JSON-adatokat XML-re konvertálja. Másodszor, próbálja meg elhelyezni az XXE rakományt különböző címkékbe – sok időbe telt, míg rájöttem, hogy nem kell mást tennem, mint a &xxe; hasznos teher a reqType címke helyett a imgDrop címke.

Tovább a negyedik gyűrűre.

4. Felhőgyűrű

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A Cloud Ringben való játék egy kezdő betörés volt az Amazon Web Services (AWS) Command Line Interface (CLI) terén.

A kihívások csúcspontja a használat volt szarvasgomba hogy megtalálja az AWS-hitelesítő adatokat egy Git-lerakatban, majd kihasználva azokat AWS-felhasználóként történő hitelesítéshez. Az ebbe a pozícióba kerülő támadó használhatja aws iam parancsokkal lekérdezheti a felhasználóra vonatkozó házirendeket, és így mely felhőeszközöket lehet elérni és visszaélni.

Az ötödik gyűrűre.

5. Égő Tűzgyűrű

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Ennek a kihívássorozatnak a legtanulságosabb része a tanulás volt Merkle fák hogy kihasználja az okos szerződést és felkerül az előértékesítési listára nem helyettesíthető token (NFT) vásárlásához. Itt a kihívás az volt, hogy felfedezzem azokat a bizonyító értékeket, amelyek a pénztárcám címével és a Merkle Tree gyökérértékével együtt igazolták, hogy szerepeltem az előértékesítési listán.

Néhány sikertelen kísérlet után a bizonyítási értékek megadására rájöttem, hogy soha nem fogom tudni kitalálni a megadott gyökérérték bizonyítási értékeit, mert nem tudtam megtudni a kiszámításához használt összes levélértéket. Módosítanom kellett a gyökérértéket, hogy érvényes Merkle-fát tudjak megadni.

<p></p> QPetabyte professzor eszköze, két levélből létrehoztam egy Merkle fát, amely a pénztárcám címéből és a címből áll BSRS_nft intelligens szerződés, amelyet a játékbeli Blockchain Explorer segítségével találtam a játék Ethereum blokkláncának második blokkjában. Az eszköz létrehozta ennek a fának a gyökérértékét és a pénztárcám címének bizonyító értékét. Ezután a Burp segítségével elfogtam a szervernek küldött kérést, és megváltoztattam az alapértelmezett gyökérértéket, hogy beküldhessem egy érvényes Merkle-fát. Itt az én NFT sporc fix áron vásárolt 100 KringleCoins:

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Valóban csúnya példány.

Utolsó

Cracked it! Highlights from KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Nagy köszönet a SANS Holiday Hack Challenge szervezőinek, hogy új utakra feszítették az elmémet, és segítettek kiberbiztonsági ismereteim elmélyítésében. Nemcsak a jövő évi kihívást várom, de még a 2020-as és 2021-es kiadásokat is ki fogom próbálni. És ha még nem vett részt ebben a kihívásban, remélem, ezek a kiemelt események felkeltették az érdeklődését.

Időbélyeg:

Még több Biztonságban élünk