Mursi sen! KringleCon 5:n kohokohdat: Golden Rings

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings

Oppiminen kohtaa hauskuuden vuoden 2022 SANS Holiday Hack Challenge -haasteessa – ota itsesi mukaan kekseliäismatkalle pohjoisnavalle, kun estän Grinchumin virhesuunnitelman ja kerään viisi kultaista sormusta

Tämä on ensimmäinen vuosi, kun olen mukana SANS Holiday Hack Challenge ja se oli räjähdys. Harjoittelin epäilyttävän verkkoliikenteen ja PowerShell-lokien analysointia ja kirjoittamista 16 haasteen sarjan kautta helposta vaikeaan. Suricatan säännöt, murtautumassa ulos a Docker-kontti, löytää vuotaneita avaimia hyödyntääksesi a GitLab CI/CD-putki ja AWS-käyttäjä, johtaminen XML External Entity -hyökkäykset, ja hakkerointi älykkään ostosopimuksen a ei-vaihdettava merkki.

Parasta tässä kokemuksessa oli, että se tutustutti minut uusiin työkaluihin ja teknologioihin, mikä laajensi kyberturvatietoisuuttani paljon pidemmälle. Kerron tässä muutamia kohokohtia haasteiden ratkaisemisesta.

Suuntautuminen

Jokainen osallistuja saa avatarin navigoidakseen selaimen videopeliympäristössä pohjoisnavalla:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Orientoinnin aikana saat kryptovaluuttalompakon, jota peli käyttää KringleCoinien palkitsemiseen haasteiden suorittamisesta ja jota käytät viimeisessä haasteessa älysopimuksen hakkerointiin. Mielenkiintoista on, että peli pitää kirjaa kaikista KringleCoin-tapahtumista Ethereum-lohkoketjussa, mikä tarkoittaa, että täydellinen tallenne edistymisestäsi tallennetaan myös tähän lohkoketjuun.

Pelin ensimmäiseen kehään.

1. Tolkien-sormus

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Tolkien-renkaan löytäminen vaati lokien analysointilihasteni taivuttamista.

Wireshark phishing

Ensin käytin Wiresharkia tarjotun analysoimiseen .pcap tiedosto, joka paljasti palvelimen osoitteessa adv.epostoday[.]uk tiedoston lataaminen Ref_Sept24-2020.zip tietokoneelle:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Kurkistaessani ZIP-tiedoston sisään löysin suoritettavan tiedoston nimeltä Ref_Sept24-2020.scr joka laukaisi kaksi tunnistusta ESET Endpoint Securityssa: BAT/Runner.ES ja Generik.TAGTBG. Tämä haittaohjelma johtaa lopulta haitalliseen suoritettavaan muistiin nimeltä config.dll ja ESET havaitsee Kehittynyt muistiskanneri as Win32/Dridex.DD.

Windows-tapahtumalokit

Seuraavaksi analysoin tarjotut .evtx tiedosto, joka sisältää PowerShell-lokit Event Viewerilla. Vaikka PowerShell-lokien analysointiin on muitakin työkaluja, jos hyökkääjät osaavat käyttää ulkomailla eläviä binaaritiedostoja pysyäkseen tutkan alla, puolustajien tulee myös tuntea käyttöjärjestelmän tarjoamat alkuperäiset työkalut.

Koska lokit sisälsivät 10,434 XNUMX tapahtumaa, ryhmittelin tapahtumat päivämäärän mukaan ja suoritin sitten Etsi-toiminnon etsiäkseni tapahtumia, jotka sisältävät $ merkki. PowerShellissä, $ käytetään luomiseen ja viittaamiseen muuttujat. Löysin hyökkäyksen tapahtuneen 24. joulukuuta 2022, jolloin hyökkääjä suoritti seuraavan skriptin:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Näyttää siltä, ​​​​että hyökkääjä löysi salaisen reseptin ja vaihtoi sen salaisen ainesosan hunaja varten kalaöljyja loi sitten uuden reseptitiedoston. Tämä laukaisi tapahtuman, jonka tunnus on 4104, joka tarkoittaa PowerShell-etäkomentojen suorittamista. Joten suodatin tapahtumat tämän tunnuksen mukaan, mikä auttoi minua löytämään lisää haitallisia tapahtumia nopeammin.

Suricata Regatta

Viimeinen harjoitus Tolkien-renkaalle oli neljän Suricata-säännön kirjoittaminen verkkoliikenteen seuraamiseksi Dridex-tartunnan varalta:

alert dns $HOME_NET any -> any any (msg:"Tunnettu huono DNS-haku, mahdollinen Dridex-infektio"; dns.query; content:"adv.epostoday.uk"; nocase; sid:1; rev:1;)

hälytys http 192.185.57.242 mikä tahansa <> mikä tahansa (msg:"Tutki epäilyttävät yhteydet, mahdollinen Dridex-infektio"; sid:2; rev:1;)

alert tls any any -> any any (msg:"Tutki huonoja varmenteita, mahdollista Dridex-infektiota"; tls.cert_subject; content:"CN=heardbellith.Icanwepeh.nagoya"; sid:3; rev:1;)

alert http any any -> any any (msg:"Epäilyttävä JavaScript-toiminto, mahdollinen Dridex-infektio"; file_data; content:"let byteCharacters = atob"; sid:4; rev:1;)

Järjestyksessä nämä säännöt sieppaavat DNS-haut adv.epostoday[.]uk, yhteydet IP-osoitteeseen 192.185.57[.]242, haitallisen palvelimen käyttö hearbellith.Icanwepeh[.]nagoya tunnistettu yleisellä nimellä (CN) TLS-varmenteessa ja JavaScriptin käyttöä atob() toiminto dekoodaa binäärimerkkijono, joka sisältää base64-koodattua dataa asiakkaalla.

Näiden kolmen haasteen suorittaminen ansaitsi minulle Tolkien-renkaan:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Toiselle renkaalle.

2. Haltioiden sormus

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Elfen Ringin merkittävimmät haasteet olivat Prison Escape ja Jolly CI/CD.

Prison Escape

Prison Escape oli ankara muistutus siitä, että pääkäyttäjän oikeuksien myöntäminen Docker-säilön käyttäjälle on yhtä hyvä kuin pääkäyttäjän oikeuksien myöntäminen isäntäjärjestelmälle. Haasteena oli murtautua ulos kontista. No, helppo tehdä, kun olet root:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Pääkäyttäjänä listasin laitteen osiotaulukot ja liitin sitten isäntätiedostojärjestelmän, mikä antoi minulle täyden pääsyn isäntään. Nyt voisin etsiä avainta, jonka pitäisi sijaita kotihakemistossa, kuten pelin sisäiset vinkit paljastivat:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Jolly CI/CD

Vaikka se oli nopeaa, Jolly CI/CD:n selvittäminen kesti pisimpään kaikista haasteista. Ensin meille annettiin Git-arkisto kloonattavaksi HTTP:n kautta:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

URL-osoitteesta huomasin, että arkiston nimi oli wordpress.flag.net.internal, joten siirryin arkistoon ja löysin WordPress-sivuston. Tarkistin, onko sivusto käytössä:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Kyllä sivusto oli toimiva. Olin utelias, oliko lähdekoodihistoriassa vuotaneita avaimia. Jos kyllä, minun pitäisi pystyä muokkaamaan lähdekoodia. Joten juoksin git log:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Toimitusviestien perusteella se näyttää a sitoutumaan tehtiin sen jälkeen, kun oli lisätty resursseja korjaamaan hups. Aika tarkistaa pre-hoops-sitoumukset:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Loistavaa, löysin a .sh hakemisto avaimilla. Kopioidaan nämä avaimet ja määritetään SSH-agentti ja Git-käyttäjä nähdäksesi, voinko esiintyä näiden avainten omistajana:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Palataan nyt päähaaraan ja testataan, voimmeko työntää triviaalia muutosta lähdekoodiin (nanoa käyttämällä lisäsin vain välilyönnin yhteen tiedostoista):

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Joten saavutin haasteen ensimmäisen osan esiintymällä yhdeksi WordPress-kehittäjistä, mutta toimiko verkkosivusto silti työntämiseni jälkeen?

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Puskini muutti jotain, koska nyt verkkosivusto ohjasi porttiin 8080.

Tähän asti olin jättänyt huomioimatta haasteen CI/CD-osan, jonka pitäisi olla avain sen suorittamiseen. Arkisto sisältää a .gitlab-ci.yml tiedosto, joka tarjoaa kokoonpanon GitLab CI/CD-putkelle. Joka kerta kun painat arkistoon, CI/CD-järjestelmä käynnistyy ja a GitLab Runner suorittaa tämän YML-tiedoston komentosarjat. Se on yhtä hyvä kuin etäkoodin suorittaminen palvelimella, johon GitLab Runner on asennettu, ajattelin.

Tarkastellessani näin rsync komentosarja, joka kopioi kaikki tiedostot Git-arkistosta sen verkkopalvelimen hakemistoon, josta verkkosivustoa palveltiin. Aluksi yritin käyttää rsync kääntää tietovirran päinvastaiseksi kopioimalla kaikki tiedostot verkkopalvelimelta Git-arkistoon, mutta tuloksetta.

Monien hypoteesitestausten jälkeen sain lopulta läpimurtonäkemykseni: Sen sijaan, että yrittäisit "korjata" WordPress-verkkosivustoa tai ajaa haitallisia skriptejä rakennusjärjestelmän kautta, tarjoa verkkosivustoa, joka vuotaa tietoa verkkopalvelimelta. Sisällä index.php (sijaitsee arkiston ylimmällä tasolla), voin kommentoida koodia, joka lataa WordPress-verkkosivuston ja suorittaa PHP-komentoja, jotka tutkivat verkkopalvelinta.

Itse asiassa voin jopa suorittaa shell-komentoja PHP: llä. minä löysin sen passthru() toimi helposti.

In index.php, Käytin // kommentoidakseni kaksi riviä ja lisäsin passthru('ls -la /'); viimeisellä rivillä. Tämä luo verkkosivuston, jossa luetellaan kaikki verkkopalvelimen juurihakemistossa olevat tiedostot:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Sitten työnsin tämän muutoksen Git-arkistoon ja GitLab CI/CD -järjestelmä huolehti verkkosivuston päivityksestä puolestani:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Ah, tontturenkaan täytyy olla sisällä lippu.txt! Toistin edelliset vaiheet, mutta tällä kertaa käyttäen passthru('kissa /lippu.txt'); paljastaa tonttusormuksen seuraavan kerran kun pyysin verkkosivustoa:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Kolmannelle renkaalle.

3. Verkkorengas

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Hauskin haaste minulle oli Open Boria Mine Door, vaikka Glamtariel's Fountain oli mielenkiintoinen ja esitti myös arvoituksia.

Avaa Borian kaivoksen ovi

Open Boria Mine Doorissa meille esitettiin kuusi nastaa tai minihaastetta syötteiden validoinnin tai Sisällön suojauskäytäntö tulo- ja ulostuloputkien yhdistämiseen tappien väliin, mukaan lukien putkien värien sovittaminen. Useimmissa pinsseissä käytin HTML:ää yhdistävien o-kirjainten luettelon kirjoittamiseen. Tässä lopullinen ratkaisuni:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Tappi 1

Pin 1:lle ei ollut vahvistusta, joten se oli yksinkertainen asia HTML:stä ja tekstin sisäisestä CSS:stä:

Tappi 2

Pin 2:ssa oli sisällön suojauskäytäntö, joka kielsi JavaScriptin, mutta salli inline CSS:n, joten se ei ollut ongelma menetelmälleni:

Tappi 3

Pin 3:ssa oli sisällön suojauskäytäntö, joka kielsi CSS:n, mutta salli sisäänrakennetun JavaScriptin, joten käytin JavaScriptiä tyylien vaihtamiseen sen sijaan:

Tappi 4

Pin 4:ssä ei ollut sisällön suojauskäytäntöä, mutta siinä oli asiakaspuolella sanitizeInput-toiminto, joka poistaisi lainausmerkit, yksittäiset lainausmerkit, vasemmat kulmasulkeet ja oikeat kulmasulut. Temppu tässä oli ymmärtää, että tätä toimintoa ei käynnistänyt lomakkeen lähettäminen, vaan hämärtää tapahtuma. Toisin sanoen hiiren siirtäminen pois syöttökentästä laukaisi hämärtää tapahtuma, desinfioi kaikki syötteet. Ratkaisu oli lähettää lomake painamalla enter -näppäintä, mutta varo siirtämästä hiiren osoitinta syöttökentän rajojen ulkopuolelle:

Tappi 5

Pin 5:ssä oli sama sanitizeInput toiminto ja ohitus sekä sisällön suojauskäytäntö, joka kieltää upotetun CSS:n, mutta sallii tekstin sisäänrakennetun JavaScriptin:

Tappi 6

Lopuksi Pin 6 ei puhdistanut syötettä, mutta se käytti tiukempaa sisällön suojauskäytäntöä, joka kieltää sekä inline CSS:n että JavaScriptin. Ratkaisuni oli käyttää vanhentunutta HTML-koodia saadakseni tarvitsemani tyylit ja käyttää taulukkoa luettelon sijaan:

Glamtarielin suihkulähde

Glamtarielin suihkulähde oli mahdollisuus harjoitella XML External Entity (XXE) -hyökkäykset. Ei ollut vaikeaa selvittää, kuinka määritellä mukautettu XML-entiteetti, määrittää entiteetti, joka pyytää tiedostoa palvelimelta, ja lisätä kyseisen entiteetin hyötykuorma HTTP-pyyntöön. Vaikein osa oli keksiä pelin sisäisiä arvoituksia palvelimen vuotamien tiedostojen tieltä. Tässä on läpimurtopyyntö, joka paljastaa kultasormuksen sijainnin:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Tarjoan tästä haasteesta kaksi opetusta. Käytä ensin Sisältötyypin muuntaja laajennus sisään röyhtäyttää muuntaa JSON-hyötykuormat XML-muotoon. Toiseksi, yritä sijoittaa XXE-hyötykuorma eri tunnisteisiin – kesti kauan tajuta, että minun täytyi vain sijoittaa &xxe; hyötykuorma sisällä reqType -tunnisteen sijaan imgDrop tunnisteita.

Neljännelle renkaalle.

4. Pilvirengas

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Cloud Ringissä pelaaminen oli aloittelijan kokeilu Amazon Web Services (AWS) Command Line Interface (CLI) -käyttöliittymään.

Tämän haastesarjan kohokohta oli käyttö tryffelihog löytääksesi AWS-tunnistetiedot Git-tietovarastosta ja hyödyntääksesi niitä AWS-käyttäjänä todentamiseksi. Hyökkääjä, joka pääsee tähän paikkaan, voi käyttää aws iam komennot kysyäkseen käyttäjää koskevat käytännöt ja siten mitä pilviresursseja voidaan käyttää ja väärinkäyttää.

Viidenteen renkaaseen.

5. Palava tulirengas

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Opettavin osa tässä haastesarjassa oli oppiminen Merkle Puut hyödyntää älykästä sopimusta ja päästä ennakkomyyntilistalle ostaaksesi non-fungible tokenin (NFT). Tässä haasteena oli löytää todisteet arvot, jotka yhdessä lompakkoosoitteeni ja Merkle Treen juuriarvon kanssa osoittivat pääsyni ennakkomyyntilistalle.

Muutaman epäonnistuneen todistusarvojen antamisyrityksen jälkeen tajusin, että en koskaan pystyisi selvittämään annetun juuriarvon todistusarvoja, koska en voinut tietää kaikkia sen laskemiseen käytettyjä lehtiarvoja. Minun piti muuttaa juuriarvoa, jotta voisin tarjota kelvollisen Merkle-puun.

Käyttäminen Professori QPetabyten työkalu, loin Merkle-puun kahdesta lehdestä, jotka koostuivat lompakkoosoitteestani ja osoitteesta BSRS_nft älykäs sopimus, jonka löysin käyttämällä pelin sisäistä Blockchain Exploreria pelin Ethereum-lohkoketjun toisessa lohkossa. Työkalu loi tämän puun juuriarvon ja todistusarvon lompakkoosoitteelleni. Sitten käytin Burpia siepatakseni pyynnön palvelimelle ja vaihdoin oletusjuuriarvon, jotta voin lähettää kelvollisen Merkle-puun. Tässä on minun NFT sporc ostettu kiinteään hintaan 100 KringleCoins:

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Todella ruma näyte.

Lopullinen

Mursi sen! KringleCon 5:n kohokohdat: Golden Rings PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Suuret kiitokset SANS Holiday Hack Challengen järjestäjille mieleni venyttämisestä uusille tavoille ja auttamisesta syventää tietoisuuttani kyberturvallisuudesta. En vain odota ensi vuoden haastetta, vaan aion jopa kokeilla tämän haasteen 2020 ja 2021 versioita. Ja jos et ole aiemmin osallistunut tähän haasteeseen, toivottavasti nämä kohokohdat ovat herättäneet kiinnostuksesi.

Aikaleima:

Lisää aiheesta Me elämme turvallisuutta