Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Šis straipsnis buvo parašytas remiantis labai sėkmingu pentestu, kurį grupės IB specialistai atliko prieš porą metų: nutiko istorija, kurią buvo galima pritaikyti filmams Bolivude. Dabar tikriausiai pasiseks ir skaitytojo reakcija: „O, dar vienas viešųjų ryšių straipsnis, vėl tokie vaizduojami, kokie jie geri, nepamirškite nusipirkti pentesto“. Na, viena vertus, taip yra. Tačiau yra keletas kitų priežasčių, kodėl šis straipsnis pasirodė. Norėjau parodyti, ką tiksliai veikia pentesteriai, koks įdomus ir nebanalus gali būti šis darbas, kokios juokingos aplinkybės gali susiklostyti projektuose, o svarbiausia – gyvai parodyti medžiagą tikrais pavyzdžiais.

Norėdami atkurti kuklumo pusiausvyrą pasaulyje, po kurio laiko rašysime apie pentestą, kuris nepasisekė. Parodysime, kaip gerai suplanuoti procesai įmonėje gali apsaugoti nuo daugybės atakų, net ir gerai paruoštų, vien dėl to, kad šie procesai egzistuoja ir iš tikrųjų veikia.

Šiame straipsnyje nurodytam klientui viskas taip pat iš esmės buvo puiku, bent jau geriau nei 95% Rusijos Federacijos rinkos, pagal mūsų jausmus, tačiau buvo keletas mažų niuansų, kurie sudarė ilgą įvykių grandinę, kuri pirmiausia paskatino parengti ilgą darbo ataskaitą, o vėliau ir prie šio straipsnio.

Taigi, apsirūpinkime spragėsiais ir sveiki atvykę į detektyvą. Žodis - Pavelas Suprunyukas, IB grupės „Audito ir konsultavimo“ skyriaus techninis vadovas.

1 dalis. Pochkin gydytojas

2018 m Yra klientas – aukštųjų technologijų IT įmonė, kuri pati aptarnauja daug klientų. Nori gauti atsakymą į klausimą: ar be pradinių žinių ir prieigos, dirbant internetu, galima gauti Active Directory domeno administratoriaus teises? Manęs nedomina jokia socialinė inžinerija (oi, bet veltui), jie neketina tyčia trukdyti darbui, bet gali netyčia – perkrauti, pavyzdžiui, keistai veikiantį serverį. Papildomas tikslas yra nustatyti kuo daugiau kitų atakos vektorių prieš išorinį perimetrą. Bendrovė reguliariai atlieka tokius bandymus, o dabar jau suėjo terminas naujam bandymui. Sąlygos beveik tipinės, adekvačios, suprantamos. Pradėkime.

Yra kliento vardas – tebūnie „Įmonė“, su pagrindine svetaine www.company.ru. Žinoma, klientas vadinamas skirtingai, tačiau šiame straipsnyje viskas bus neasmeniška.
Atlieku tinklo žvalgybą – išsiaiškinu, kurie adresai ir domenai yra užregistruoti pas klientą, nubraižiau tinklo schemą, kaip paskirstomos paslaugos šiais adresais. Gaunu rezultatą: daugiau nei 4000 tiesioginių IP adresų. Žiūriu į šiuose tinkluose esančius domenus: laimei, didžioji dauguma tinklai yra skirti klientų klientams, ir mes formaliai jais nesidomime. Tą patį galvoja ir klientas.

Liko vienas tinklas su 256 adresais, kuriam šiuo metu jau yra supratimas apie domenų ir subdomenų pasiskirstymą pagal IP adresus, yra informacijos apie nuskaitytus prievadus, vadinasi, galite ieškoti įdomių paslaugų. Lygiagrečiai visų rūšių skaitytuvai paleidžiami turimais IP adresais ir atskirai svetainėse.

Yra daug paslaugų. Paprastai tai yra pentesterio džiaugsmas ir greitos pergalės laukimas, nes kuo daugiau paslaugų, tuo didesnis puolimo laukas ir lengviau rasti artefaktą. Greitai pažvelgus į svetaines paaiškėjo, kad dauguma jų yra žinomų didelių pasaulinių kompanijų gaminių internetinės sąsajos, kurios iš pažiūros byloja, kad jos nėra laukiamos. Jie prašo vartotojo vardo ir slaptažodžio, iškrato lauką antrojo veiksnio įvedimui, prašo TLS kliento sertifikato arba nusiunčia jį į Microsoft ADFS. Kai kurie iš jų tiesiog nepasiekiami iš interneto. Kai kuriems, be abejo, reikia turėti specialų mokamą klientą už tris atlyginimus arba žinoti tikslų URL, kurį norite įvesti. Praleiskime dar vieną laipsniško nusivylimo savaitę bandydami „pralaužti“ programinės įrangos versijas, ieškant žinomų pažeidžiamumų, ieškodami paslėpto turinio žiniatinklio keliuose ir nutekėjusių paskyrų iš trečiųjų šalių paslaugų, tokių kaip „LinkedIn“, taip pat bandydami atspėti slaptažodžius naudojant juos. kaip pačių sukurtų svetainių pažeidžiamumų kasimas – beje, pagal statistiką šiandien tai yra perspektyviausias išorinės atakos vektorius. Iš karto atkreipsiu dėmesį į filmo ginklą, kuris vėliau iššovė.

Taigi, radome dvi svetaines, kurios išsiskyrė iš šimtų paslaugų. Šios svetainės turėjo vieną bendrą bruožą: jei neužsiimate kruopščia tinklo žvalgyba pagal domeną, o ieškote atvirų prievadų arba nukreipiate į pažeidžiamumo skaitytuvą, naudodami žinomą IP diapazoną, šios svetainės išvengs nuskaitymo ir jų tiesiog nebus. matomas nežinant DNS pavadinimo. Galbūt jie buvo praleisti bent jau anksčiau, o mūsų automatiniai įrankiai nerado su jais jokių problemų, net jei jie buvo išsiųsti tiesiai į šaltinį.

Beje, apie tai, ką apskritai rado anksčiau paleisti skaitytuvai. Leiskite jums priminti: kai kuriems žmonėms „pentest“ prilygsta „automatizuotam nuskaitymui“. Tačiau šio projekto skaitytuvai nieko nesakė. Na, o maksimumą parodė vidutiniai pažeidžiamumai (3 iš 5 pagal sunkumą): kai kuriose paslaugose blogas TLS sertifikatas arba pasenę šifravimo algoritmai, o daugumoje svetainių Clickjacking. Tačiau tai nepadės jūsų tikslo. Galbūt čia labiau praverstų skaitytuvai, bet priminsiu: pats klientas gali įsigyti tokių programų ir su jomis save išbandyti, o, sprendžiant iš niūrių rezultatų, jau patikrino.

Grįžkime prie „anomalių“ svetainių. Pirmasis yra kažkas panašaus į vietinį Wiki nestandartiniu adresu, bet šiame straipsnyje tebūnie wiki.company[.]ru. Ji taip pat iš karto paprašė prisijungimo ir slaptažodžio, bet per NTLM naršyklėje. Vartotojui tai atrodo kaip asketiškas langas, kuriame prašoma įvesti vartotojo vardą ir slaptažodį. Ir tai yra bloga praktika.

Maža pastaba. NTLM perimetro svetainėse yra blogas dėl daugelio priežasčių. Pirmoji priežastis yra ta, kad atskleidžiamas Active Directory domeno vardas. Mūsų pavyzdyje taip pat pasirodė įmonė.ru, kaip ir „išorinis“ DNS pavadinimas. Žinodami tai, galite kruopščiai paruošti ką nors kenkėjiško, kad jis būtų vykdomas tik organizacijos domeno kompiuteryje, o ne kokioje nors smėlio dėžėje. Antra, autentifikavimas vyksta tiesiogiai per domeno valdiklį per NTLM (siurprizas, tiesa?), naudojant visas „vidinės“ tinklo politikos ypatybes, įskaitant paskyrų blokavimą, kad jis neviršytų slaptažodžio įvedimo bandymų skaičiaus. Jei užpuolikas sužinos prisijungimus, jis išbandys jiems skirtus slaptažodžius. Jei esate sukonfigūruotas blokuoti paskyras, kad nebūtų įvesti neteisingi slaptažodžiai, tai veiks ir paskyra bus užblokuota. Trečia, prie tokio autentifikavimo neįmanoma pridėti antrojo veiksnio. Jei kas nors iš skaitytojų vis dar žino, kaip tai padaryti, praneškite man, tai tikrai įdomu. Ketvirta, pažeidžiamumas maišos atakoms. ADFS buvo išrastas, be kita ko, siekiant apsisaugoti nuo viso to.

Yra viena bloga „Microsoft“ produktų savybė: net jei tokio NTLM specialiai nepaskelbėte, jis bus įdiegtas pagal numatytuosius nustatymus bent jau OWA ir Lync.

Beje, šio straipsnio autorius kartą netyčia tuo pačiu būdu vos per valandą užblokavo maždaug 1000 vieno didelio banko darbuotojų sąskaitų ir tada atrodė kiek išblyškęs. Banko IT paslaugos taip pat buvo blyškios, bet viskas baigėsi gerai ir adekvačiai, buvome net pagirti, kad pirmieji radome šią problemą ir išprovokavome greitą ir ryžtingą sprendimą.

Antroje svetainėje buvo adresas „akivaizdžiai kažkokia pavardė.company.ru“. Radau per Google, kažkas panašaus į 10 psl. Dizainas buvo XNUMX-ųjų pradžios–vidurio, o garbingas žmogus žiūrėjo į jį iš pagrindinio puslapio, maždaug taip:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Čia paėmiau kadrą iš „Šuns širdies“, bet patikėkite, jis buvo neaiškiai panašus, net spalvų dizainas buvo panašių tonų. Tegul svetainė vadinasi preobrazhensky.company.ru.

Tai buvo asmeninė svetainė... skirta urologui. Pasidomėjau, ką urologo svetainė veikia aukštųjų technologijų įmonės subdomene. Greitai įsigilinus į „Google“ paaiškėjo, kad šis gydytojas buvo vieno iš mūsų klientų juridinių asmenų įkūrėjas ir net įnešė apie 1000 rublių įstatinį kapitalą. Svetainė tikriausiai buvo sukurta prieš daugelį metų, o kliento serverio resursai buvo naudojami kaip priegloba. Svetainė jau seniai prarado savo aktualumą, tačiau kažkodėl buvo palikta veikti ilgam.

Kalbant apie pažeidžiamumą, pati svetainė buvo saugi. Žvelgiant į ateitį, pasakysiu, kad tai buvo statinės informacijos rinkinys – paprasti html puslapiai su įterptomis iliustracijomis inkstų ir šlapimo pūslės pavidalu. Nenaudinga „laužyti“ tokią svetainę.

Tačiau apačioje esantis žiniatinklio serveris buvo įdomesnis. Sprendžiant iš HTTP serverio antraštės, jis turėjo IIS 6.0, o tai reiškia, kad kaip operacinę sistemą naudojo Windows 2003. Skaitytuvas anksčiau nustatė, kad ši konkreti urologo svetainė, skirtingai nei kiti virtualūs kompiuteriai tame pačiame žiniatinklio serveryje, reagavo į PROPFIND komandą, tai reiškia, kad joje veikia WebDAV. Beje, šią informaciją skaitytuvas grąžino su žyma Info (skaitytojų ataskaitų kalba tai yra mažiausias pavojus) – tokie dalykai dažniausiai tiesiog praleidžiami. Kartu tai davė įdomų efektą, kuris buvo atskleistas tik po dar vieno „Google“ paieškos: retas buferio perpildymo pažeidžiamumas, susijęs su „Shadow Brokers“ rinkiniu, būtent CVE-2017-7269, kuris jau turėjo paruoštą išnaudojimą. Kitaip tariant, kils problemų, jei turite Windows 2003 ir WebDAV veikia IIS. Nors „Windows 2003“ paleidimas gamyboje 2018 m. yra pati problema.

Išnaudojimas atsidūrė „Metasploit“ ir buvo nedelsiant išbandytas su apkrova, kuri išsiuntė DNS užklausą kontroliuojamai tarnybai – „Burp Colaboratory“ tradiciškai naudojamas DNS užklausoms gaudyti. Mano nuostabai, tai pavyko pirmą kartą: buvo gautas DNS nokautas. Tada buvo bandoma sukurti grįžtamąjį ryšį per 80 prievadą (ty tinklo ryšį nuo serverio iki užpuoliko su prieiga prie cmd.exe aukos pagrindiniame kompiuteryje), bet tada įvyko nesėkmė. Ryšys neužsimezgė, o po trečio bandymo naudotis svetaine kartu su visomis įdomiomis nuotraukomis dingo amžiams.

Paprastai po to seka laiškas „kliente, atsibusk, mes viską numetėme“. Tačiau mums buvo pasakyta, kad svetainė neturi nieko bendra su verslo procesais ir veikia joje be jokios priežasties, kaip ir visas serveris, ir kad mes galime naudoti šį šaltinį, kaip norime.
Maždaug po dienos svetainė staiga pradėjo veikti savarankiškai. Sukūręs suoliuką iš WebDAV IIS 6.0, sužinojau, kad numatytasis nustatymas yra iš naujo paleisti IIS darbuotojo procesus kas 30 valandų. Tai reiškia, kad valdymui išėjus iš apvalkalo kodo, IIS darbuotojo procesas pasibaigė, tada jis keletą kartų įsijungė iš naujo ir tada nuėjo pailsėti 30 valandų.

Kadangi atgalinis prisijungimas prie tcp nepavyko pirmą kartą, šią problemą priskyriau uždarytam prievadui. Tai yra, jis manė, kad yra kažkokia ugniasienė, kuri neleido išeinantiems ryšiams praeiti į lauką. Pradėjau paleisti apvalkalo kodus, kurie ieškojo per daug tcp ir udp prievadų, nebuvo jokio poveikio. Atvirkštinio ryšio įkėlimai per http (-ius) iš Metasploit neveikė – meterpreter/reverse_http (s). Staiga buvo užmegztas ryšys su tuo pačiu 80 prievadu, bet iškart nutrūko. Priskyriau tai vis dar įsivaizduojamo IPS, kuriam nepatiko skaitiklių srautas, veikimu. Atsižvelgdamas į tai, kad grynas tcp ryšys su 80 prievadu nepavyko, bet http ryšys įvyko, padariau išvadą, kad sistemoje kažkaip sukonfigūruotas http tarpinis serveris.

Aš net bandžiau matuoklį per DNS (ačiū d00kie už jūsų pastangas išsaugojote daugybę projektų), prisimindami pačią pirmąją sėkmę, tačiau ji net neveikė ant stovo - apvalkalo kodas buvo per didelis šiam pažeidžiamumui.

Realiai tai atrodė taip: 3-4 bandymai atakuoti per 5 minutes, tada laukiama 30 valandų. Ir taip tris savaites iš eilės. Net nusistačiau priminimą, kad negaiščiau laiko. Be to, buvo skirtumų tarp bandomosios ir gamybinės aplinkos: šiam pažeidžiamumui buvo du panašūs išnaudojimai: vienas iš Metasploit, antrasis iš interneto, konvertuotas iš Shadow Brokers versijos. Taigi, tik „Metasploit“ buvo išbandytas kovoje, o tik antrasis buvo išbandytas ant suolelio, todėl derinimas dar labiau apsunkino ir laužė smegenis.

Galų gale, apvalkalo kodas, kuris atsisiuntė exe failą iš nurodyto serverio per http ir paleido jį tikslinėje sistemoje, pasirodė esąs veiksmingas. Shellcode buvo pakankamai mažas, kad tilptų, bet bent jau veikė. Kadangi serveris visiškai nemėgo TCP srauto ir buvo patikrintas http(s) ar nėra meterpreter, nusprendžiau, kad greičiausias būdas yra atsisiųsti exe failą, kuriame yra DNS-meterpreter per šį apvalkalo kodą.

Čia vėl iškilo problema: atsisiunčiant exe failą ir, kaip parodė bandymai, nesvarbu, kuris iš jų, atsisiuntimas buvo nutrauktas. Vėlgi, kažkokiam apsaugos įrenginiui tarp mano serverio ir urologo nepatiko http srautas su exe. Atrodė, kad „greitas“ sprendimas buvo pakeisti apvalkalo kodą, kad jis užtemdytų http srautą, kad būtų perkelti abstraktūs dvejetainiai duomenys, o ne exe. Galiausiai ataka buvo sėkminga, valdymas gautas per ploną DNS kanalą:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Iš karto tapo aišku, kad turiu elementariausias IIS darbo eigos teises, kurios leidžia nieko neveikti. Štai kaip tai atrodė Metasploit konsolėje:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Visos pentest metodikos primygtinai rodo, kad norint gauti prieigą reikia padidinti teises. Paprastai to nedarau vietoje, nes pati pirmoji prieiga laikoma tiesiog tinklo įėjimo tašku, o sukompromituoti kitą įrenginį tame pačiame tinkle paprastai yra lengviau ir greičiau, nei išplėsti privilegijas esamame pagrindiniame kompiuteryje. Tačiau šiuo atveju taip nėra, nes DNS kanalas yra labai siauras ir jis neleis srautui išvalyti.

Darant prielaidą, kad šis „Windows 2003“ serveris nebuvo pataisytas dėl garsiojo MS17-010 pažeidžiamumo, aš nukreipiu srautą į prievadą 445/TCP per skaitiklio DNS tunelį „localhost“ (taip, tai taip pat įmanoma) ir bandau paleisti anksčiau atsisiųstą exe. pažeidžiamumą. Ataka veikia, gaunu antrą ryšį, bet su SISTEMOS teisėmis.

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba

Įdomu tai, kad jie vis tiek bandė apsaugoti serverį nuo MS17-010 - jo išorinėje sąsajoje buvo išjungtos pažeidžiamos tinklo paslaugos. Tai apsaugo nuo atakų tinkle, tačiau ataka iš vidaus prieš localhost suveikė, nes jūs negalite tiesiog greitai išjungti SMB vietiniame priegloboje.

Toliau atskleidžiamos naujos įdomios detalės:

  1. Turėdami SISTEMOS teises, galite lengvai užmegzti grįžtamąjį ryšį per TCP. Akivaizdu, kad tiesioginio TCP išjungimas yra tik riboto IIS vartotojo problema. Spoileris: IIS naudotojo srautas kažkaip buvo suvyniotas į vietinį ISA tarpinį serverį abiem kryptimis. Kaip tiksliai tai veikia, aš neatkūriau.
  2. Aš esu tam tikrame „DMZ“ (ir tai ne „Active Directory“ domenas, o DARBO GRUPĖ) - tai skamba logiškai. Tačiau vietoj laukiamo privataus („pilko“) IP adreso turiu visiškai „baltą“ IP adresą, lygiai tokį patį, kokį užpuoliau anksčiau. Tai reiškia, kad įmonė yra tokia sena IPv4 adresų pasaulyje, kad gali sau leisti išlaikyti DMZ zoną 128 „baltiesiems“ adresams be NAT pagal schemą, kaip pavaizduota Cisco vadovuose nuo 2005 m.

Kadangi serveris yra senas, Mimikatz garantuoja, kad jis veiks tiesiai iš atminties:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Gaunu vietinio administratoriaus slaptažodį, perkeliu RDP srautą per TCP ir prisijungiu prie patogaus darbalaukio. Kadangi su serveriu galėjau daryti ką noriu, pašalinau antivirusinę programą ir pastebėjau, kad serveris iš interneto pasiekiamas tik per 80 ir 443 TCP prievadus, o 443 nebuvo užimtas. Nustatau OpenVPN serverį 443, pridedu NAT funkcijų savo VPN srautui ir neribota forma gaunu tiesioginę prieigą prie DMZ tinklo per savo OpenVPN. Pastebėtina, kad ISA, turėdama kai kurias neišjungtas IPS funkcijas, užblokavo mano srautą su prievadų nuskaitymu, todėl jį teko pakeisti paprastesniu ir labiau suderinamu RRAS. Taigi pentesteriams kartais vis tiek tenka administruoti visokius dalykus.

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Dėmesingas skaitytojas paklaus: „O kaip su antrąja svetaine – wiki su NTLM autentifikavimu, apie kurį tiek daug parašyta? Daugiau apie tai vėliau.

2 dalis. Vis dar nešifruojate? Tada mes ateiname pas jus jau čia

Taigi, yra prieiga prie DMZ tinklo segmento. Turite kreiptis į domeno administratorių. Pirmas dalykas, kuris ateina į galvą, yra automatiškai patikrinti DMZ segmento paslaugų saugumą, ypač todėl, kad daug daugiau jų dabar yra atviri tyrimams. Tipiškas vaizdas prasiskverbimo testo metu: išorinis perimetras yra geriau apsaugotas nei vidinės paslaugos, o įgyjant bet kokią prieigą didelės infrastruktūros viduje yra daug lengviau gauti išplėstines teises į domeną tik dėl to, kad šis domenas pradeda veikti. prieinami įrankiams, ir, antra, infrastruktūroje, kurioje yra keli tūkstančiai pagrindinių kompiuterių, visada bus keletas kritinių problemų.

Įkraunu skaitytuvus per DMZ per OpenVPN tunelį ir laukiu. Atsiverčiu reportažą – vėl nieko rimto, matyt, prieš mane kažkas perėjo tą patį metodą. Kitas žingsnis yra ištirti, kaip DMZ tinkle bendrauja pagrindiniai kompiuteriai. Norėdami tai padaryti, pirmiausia paleiskite įprastą „Wireshark“ ir klausykite transliacijos užklausų, pirmiausia ARP. ARP paketai buvo renkami visą dieną. Pasirodo, šiame segmente naudojami keli vartai. Tai pravers vėliau. Sujungęs duomenis apie ARP užklausų atsakymus ir prievadų nuskaitymo duomenis, be tų paslaugų, kurios buvo žinomos anksčiau, pvz., žiniatinklis ir paštas, radau vartotojų srauto išėjimo taškus iš vietinio tinklo.

Kadangi šiuo metu neturėjau jokios prieigos prie kitų sistemų ir neturėjau vienos įmonės paslaugų paskyros, buvo nuspręsta bent dalį paskyros išgauti iš srauto naudojant ARP Spoofing.

„Cain&Abel“ buvo paleistas urologo serveryje. Atsižvelgiant į nustatytus srautus, buvo atrinktos perspektyviausios poros „man-in-the-middle“ atakai, o tada trumpalaikiu paleidimu 5–10 minučių buvo gautas tam tikras tinklo srautas su serverio perkrovimo laikmačiu. užšalimo atveju. Kaip ir pokštas, buvo dvi naujienos:

  1. Gerai: buvo pagauta daug įgaliojimų ir ataka kaip visuma suveikė.
  2. Blogai: visi kredencialai buvo iš paties kliento klientų. Teikdami palaikymo paslaugas klientų specialistai prisijungė prie klientų, kuriems ne visada buvo sukonfigūruotas srauto šifravimas, paslaugų.

Dėl to aš įgijau daug įgaliojimų, kurie buvo nenaudingi projekto kontekste, bet tikrai įdomūs kaip atakos pavojaus demonstravimas. Didelių kompanijų pasienio maršrutizatoriai su telnetu, persiunčiami derinimo http prievadai į vidinį CRM su visais duomenimis, tiesioginė prieiga prie RDP iš Windows XP vietiniame tinkle ir kitoks tamsumas. Išėjo taip Tiekimo grandinės kompromisas pagal MITER matricą.

Taip pat radau smagią progą rinkti laiškus iš eismo, kažką panašaus. Tai yra paruošto laiško, kurį mūsų klientas nusiuntė į jo kliento SMTP prievadą, pavyzdys, vėlgi, be šifravimo. Tam tikras Andrejus prašo savo bendrapavardžio dar kartą išsiųsti dokumentaciją, kuri viename atsakymo laiške įkeliama į debesies diską su prisijungimo vardu, slaptažodžiu ir nuoroda:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Tai dar vienas priminimas užšifruoti visas paslaugas. Nežinia, kas ir kada konkrečiai skaitys ir naudos Jūsų duomenis – tiekėjas, kitos įmonės sistemos administratorius ar toks pentesteris. Aš tyliu apie tai, kad daugelis žmonių gali tiesiog perimti nešifruotą srautą.

Nepaisant akivaizdžios sėkmės, tai nepriartino mūsų prie tikslo. Žinoma, buvo galima ilgai sėdėti ir žvejoti vertingą informaciją, bet tai nėra faktas, kad ji ten atsirastų, o pati ataka yra labai rizikinga tinklo vientisumo požiūriu.

Dar kartą pasigilinus į paslaugas, šovė įdomi idėja. Yra tokia programa „Responder“ (lengva rasti naudojimo pavyzdžių šiuo pavadinimu), kuri „nuodijus“ transliavimo užklausas išprovokuoja ryšius įvairiais protokolais, tokiais kaip SMB, HTTP, LDAP ir kt. skirtingais būdais, tada paprašo visų prisijungiančių autentifikuoti ir nustato, kad autentifikavimas vyktų per NTLM ir aukai skaidriu režimu. Dažniausiai užpuolikas tokiu būdu surenka NetNTLMv2 rankų paspaudimus ir iš jų, naudodamasis žodynu, greitai atkuria vartotojų domenų slaptažodžius. Čia norėjau kažko panašaus, bet vartotojai sėdėjo „už sienos“, tiksliau, buvo atskirti ugniasiene ir prie WEB prisijungė per Blue Coat proxy klasterį.

Prisiminkite, aš nurodžiau, kad „Active Directory“ domeno pavadinimas sutapo su „išoriniu“ domenu, tai yra, tai buvo company.ru? Taigi, „Windows“, tiksliau „Internet Explorer“ (ir „Edge“ bei „Chrome“), leidžia vartotojui skaidriai autentifikuoti HTTP per NTLM, jei mano, kad svetainė yra kurioje nors „intraneto zonoje“. Vienas iš „intraneto“ požymių yra prieiga prie „pilko“ IP adreso arba trumpo DNS pavadinimo, ty be taškų. Kadangi jie turėjo serverį su „baltu“ IP ir DNS pavadinimu preobrazhensky.company.ru, o domeno mašinos paprastai gauna „Active Directory“ domeno priesagą per DHCP, kad būtų supaprastintas vardo įvedimas, jiems tereikėjo įrašyti URL adreso juostoje. preobraženskis, kad jie rastų teisingą kelią į pažeistą urologo serverį, nepamirštant, kad dabar jis vadinamas „Intranetu“. Tai yra, tuo pačiu metu man duoda vartotojo NTLM rankos paspaudimą be jo žinios. Belieka tik priversti klientų naršykles susimąstyti apie būtinybę skubiai susisiekti su šiuo serveriu.

Į pagalbą atėjo nuostabi „Intercepter-NG“ programa (ačiū Perėmėjas). Tai leido jums keisti srautą sklandžiai ir puikiai veikė Windows 2003. Jis netgi turėjo atskirą funkciją, leidžiančią keisti tik JavaScript failus srauto sraute. Buvo suplanuotas didžiulis scenarijų kūrimas tarp svetainių.

„Blue Coat“ tarpiniai serveriai, per kuriuos vartotojai pasiekė pasaulinį WEB, periodiškai saugojo statinį turinį. Perimant srautą buvo aišku, kad jie dirba visą parą ir be galo reikalavo dažnai naudojamo statinio, kad pagreitintų turinio rodymą piko valandomis. Be to, „BlueCoat“ turėjo specialų vartotojo agentą, kuris aiškiai skyrė jį nuo tikrojo vartotojo.

Buvo parengtas Javascript, kuris, naudojant Intercepter-NG, buvo įdiegtas valandą nakties kiekvienam atsakymui su JS failais Blue Coat. Scenarijus padarė taip:

  • „User-Agent“ nustatė dabartinę naršyklę. Jei tai buvo „Internet Explorer“, „Edge“ ar „Chrome“, ji ir toliau veikė.
  • Laukiau, kol bus suformuotas puslapio DOM.
  • Į DOM įterptas nematomas vaizdas su formos atributu src preobraženskis:8080/NNNNNNN.png, kur NNN yra savavališki skaičiai, kad „BlueCoat“ jo neįsaugotų talpykloje.
  • Nustatykite visuotinės vėliavėlės kintamąjį, rodantį, kad injekcija baigta ir vaizdų įterpti nebereikia.

Naršyklė bandė įkelti šį vaizdą; pažeisto serverio 8080 prievade jo laukė TCP tunelis į mano nešiojamąjį kompiuterį, kuriame veikė tas pats atsakiklis, reikalaujantis, kad naršyklė prisijungtų per NTLM.

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Sprendžiant iš Responder žurnalų, žmonės atėjo į darbą ryte, įsijungė savo darbo vietas, tada masiškai ir nepastebimai pradėjo lankytis urologo serveryje, nepamiršdami „nuleisti“ NTLM rankų paspaudimų. Visą dieną lijo rankų paspaudimai ir aiškiai kaupėsi medžiaga akivaizdžiai sėkmingam slaptažodžių atkūrimo puolimui. Štai kaip atrodė atsakiklio žurnalai:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalbaMasiniai slapti vartotojų apsilankymai urologo serveryje

Tikriausiai jau pastebėjote, kad visa ši istorija yra paremta principu „viskas buvo gerai, bet tada buvo nesėkmė, tada buvo įveikimas, o tada viskas pasisekė“. Taigi, čia buvo bėda. Iš penkiasdešimties unikalių rankos paspaudimų nebuvo atskleistas nei vienas. Ir čia atsižvelgiama į tai, kad net nešiojamajame kompiuteryje su neveikiančiu procesoriumi šie NTLMv2 rankų paspaudimai apdorojami kelių šimtų milijonų bandymų per sekundę greičiu.

Teko apsiginkluoti slaptažodžių mutacijos technika, vaizdo plokšte, storesniu žodynu ir laukti. Po ilgo laiko buvo atskleistos kelios paskyros su „Q11111111....1111111q“ formos slaptažodžiais, o tai rodo, kad visi vartotojai kažkada buvo priversti sugalvoti labai ilgą slaptažodį su skirtingomis raidžių raidėmis, kurios taip pat turėjo būti sudėtingas. Tačiau patyrusio vartotojo neapgausite, todėl jis lengviau įsimena. Iš viso buvo pažeistos apie 5 paskyros ir tik viena iš jų turėjo kokių nors vertingų teisių į paslaugas.

3 dalis. Roskomnadzor smogia atgal

Taigi, buvo gautos pirmosios domeno paskyros. Jei ilgai skaitydamas neužmigote iki šio momento, tikriausiai prisiminsite, kad paminėjau paslaugą, kuriai nereikėjo antrojo autentifikavimo faktoriaus: tai wiki su NTLM autentifikavimu. Žinoma, pirmiausia reikėjo ten patekti. Gilinimasis į vidinę žinių bazę greitai davė rezultatų:

  • Įmonė turi WiFi tinklą su autentifikavimu naudojant domeno paskyras su prieiga prie vietinio tinklo. Esant dabartiniam duomenų rinkiniui, tai jau veikiantis atakos vektorius, tačiau į biurą reikia eiti kojomis ir būti kur nors kliento biuro teritorijoje.
  • Radau instrukciją, pagal kurią buvo paslauga, kuri leido... savarankiškai užregistruoti „antro faktoriaus“ autentifikavimo įrenginį, jei vartotojas yra vietinio tinklo viduje ir užtikrintai prisimena savo domeno prisijungimą ir slaptažodį. Šiuo atveju „viduje“ ir „išorėje“ lėmė šios paslaugos uosto prieinamumas vartotojui. Prievadas nebuvo pasiekiamas iš interneto, bet buvo gana prieinamas per DMZ.

Žinoma, prie pažeistos paskyros iš karto buvo pridėtas „antrasis veiksnys“ – aplikacija mano telefone. Buvo programa, kuri galėjo arba garsiai siųsti užklausą į telefoną su mygtukais „patvirtinti“/„nepatvirtinti“ veiksmui, arba tyliai rodyti OTP kodą ekrane tolimesniam nepriklausomam įvedimui. Be to, pirmasis metodas pagal instrukcijas buvo vienintelis teisingas, tačiau jis neveikė, skirtingai nei OTP metodas.

Sugedęs „antrasis veiksnys“, galėjau pasiekti „Outlook Web Access“ paštą ir nuotolinę prieigą „Citrix Netscaler Gateway“. „Outlook“ laiške buvo netikėtumas:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Šiame retame kadre galite pamatyti, kaip „Roskomnadzor“ padeda pentestuotojams

Tai buvo pirmieji mėnesiai po garsiojo „gerbėjo“ „Telegram“ blokavimo, kai ištisi tinklai su tūkstančiais adresų nenumaldomai dingo iš prieigos. Paaiškėjo, kodėl stūmimas iš karto nepasiteisino ir kodėl mano „auka“ neskambėjo, nes jos paskyra pradėjo naudotis darbo valandomis.

Kiekvienas, susipažinęs su Citrix Netscaler, įsivaizduoja, kad jis paprastai įgyvendinamas taip, kad vartotojui būtų perduota tik vaizdo sąsaja, stengiantis nesuteikti jam įrankių paleisti trečiųjų šalių programas ir perduoti duomenis, visais įmanomais būdais apribojant veiksmus. per standartinius valdymo apvalkalus. Mano „auka“ dėl savo profesijos gavo tik 1C:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Šiek tiek pasivaikščiojęs po 1C sąsają, sužinojau, kad ten yra išorinių apdorojimo modulių. Juos galima įkelti iš sąsajos ir jie bus vykdomi kliente arba serveryje, priklausomai nuo teisių ir nustatymų.

Paprašiau savo 1C programuotojo draugų sukurti apdorojimą, kuris priimtų eilutę ir ją vykdytų. 1C kalba proceso pradžia atrodo maždaug taip (paimta iš interneto). Ar sutinkate, kad 1C kalbos sintaksė stebina rusakalbius žmones savo spontaniškumu?

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba

Apdorojimas buvo atliktas nepriekaištingai; pasirodė, kad pentesters vadina „apvalkalą“ - per jį buvo paleista „Internet Explorer“.

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Anksčiau laiške buvo rastas sistemos, leidžiančios užsisakyti bilietus į teritoriją, adresas. Užsisakiau leidimą, jei turėčiau naudoti WiFi atakos vektorių.

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Internete šneka, kad klientų biure dar buvo skanus nemokamas maitinimas, bet aš vis tiek mieliau plėtoti ataką nuotoliniu būdu, taip ramiau.

„AppLocker“ buvo suaktyvintas programų serveryje, kuriame veikia „Citrix“, tačiau jis buvo apeinamas. Tas pats matuoklis buvo įkeltas ir paleistas per DNS, nes http(s) versijos nenorėjo prisijungti, o vidinio tarpinio serverio adreso tuo metu nežinojau. Beje, nuo šio momento išorinis pentestas iš esmės visiškai virto vidiniu.

4 dalis. Vartotojų administratoriaus teisės blogos, gerai?

Pirmoji pentesterio užduotis įgyjant domeno vartotojo seanso kontrolę yra surinkti visą informaciją apie teises domene. Yra „BloodHound“ programa, leidžianti automatiškai atsisiųsti informaciją apie vartotojus, kompiuterius, saugos grupes per LDAP protokolą iš domeno valdiklio, o per SMB – informaciją apie tai, kuris vartotojas neseniai prisijungė, kur ir kas yra vietinis administratorius.

Įprasta domeno administratoriaus teisių paėmimo technika atrodo supaprastinta kaip monotoniškų veiksmų ciklas:

  • Einame į domeno kompiuterius, kuriuose yra vietinio administratoriaus teisės, remiantis jau užfiksuotomis domeno paskyromis.
  • Paleidžiame Mimikatz ir gauname talpykloje saugomus slaptažodžius, Kerberos bilietus ir domeno paskyrų, kurios neseniai prisijungė prie šios sistemos, NTLM maišą. Arba pašaliname lsass.exe proceso atminties vaizdą ir darome tą patį savo pusėje. Tai gerai veikia su „Windows“, jaunesne nei 2012R2 / „Windows 8.1“, su numatytaisiais nustatymais.
  • Mes nustatome, kur pažeistos paskyros turi vietinio administratoriaus teises. Pakartojame pirmą punktą. Tam tikru etapu įgyjame administratoriaus teises visam domenui.

„Ciklo pabaiga;“, kaip čia rašytų 1C programuotojai.

Taigi, mūsų vartotojas pasirodė esąs vietinis administratorius tik viename pagrindiniame kompiuteryje su „Windows 7“, kurio pavadinime buvo žodis „VDI“ arba „Virtual Desktop Infrastructure“, asmeninėse virtualiose mašinose. Tikriausiai VDI paslaugos dizaineris turėjo omenyje, kad kadangi VDI yra vartotojo asmeninė operacinė sistema, net jei vartotojas keičia programinės įrangos aplinką kaip nori, prieglobą vis tiek galima „perkrauti“. Aš irgi pagalvojau, kad apskritai idėja gera, nuėjau pas šį asmeninį VDI šeimininką ir ten sukūriau lizdą:

  • Ten įdiegiau „OpenVPN“ klientą, kuris per internetą nukeliavo į mano serverį. Klientas turėjo būti priverstas pereiti per tą patį „Blue Coat“ su domeno autentifikavimu, tačiau „OpenVPN“ tai padarė, kaip sakoma, „iš dėžutės“.
  • Įdiegtas OpenSSH VDI. Na, iš tikrųjų, kas yra „Windows 7“ be SSH?

Taip atrodė gyvai. Leiskite jums priminti, kad visa tai turi būti padaryta per Citrix ir 1C:

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Vienas iš būdų, kaip skatinti prieigą prie gretimų kompiuterių, yra patikrinti vietinio administratoriaus slaptažodžius, ar jie atitinka. Čia iškart laukė sėkmė: numatytojo vietinio administratoriaus (kuris staiga buvo pavadintas administratoriumi) NTLM maiša buvo pasiekta per pass-the-hash ataką į kaimyninius VDI pagrindinius kompiuterius, kurių buvo keli šimtai. Žinoma, ataka juos iškart ištiko.

Štai čia VDI administratoriai du kartus šovė sau į koją:

  • Pirmą kartą VDI mašinos nebuvo įtrauktos į LAPS, iš esmės išlaikant tą patį vietinio administratoriaus slaptažodį iš vaizdo, kuris buvo masiškai įdiegtas VDI.
  • Numatytasis administratorius yra vienintelė vietinė paskyra, kuri yra pažeidžiama maišos atakų. Net ir naudojant tą patį slaptažodį, būtų galima išvengti masinio kompromiso sukuriant antrą vietinio administratoriaus paskyrą su sudėtingu atsitiktiniu slaptažodžiu ir užblokavus numatytąjį.

Kodėl toje „Windows“ yra SSH paslauga? Labai paprasta: dabar OpenSSH serveris ne tik suteikė patogų interaktyvų komandų apvalkalą, netrukdydamas vartotojo darbui, bet ir „socks5“ tarpinį serverį VDI. Per šias kojines prisijungiau per SMB ir surinkau talpykloje esančias paskyras iš visų šių šimtų VDI įrenginių, tada ieškojau kelio pas domeno administratorių, naudodamas juos BloodHound diagramose. Turėdamas šimtus šeimininkų, šį kelią radau gana greitai. Gautos domeno administratoriaus teisės.

Štai paveikslėlis iš interneto, kuriame rodoma panaši paieška. Ryšiai rodo, kas yra kur administratorius ir kas kur yra prisijungęs.

Kartą pentestas, arba Kaip viską sulaužyti su urologo ir Roskomnadzor pagalba
Beje, atsiminkite sąlygą nuo projekto pradžios – „nenaudokite socialinės inžinerijos“. Taigi, siūlau pagalvoti, kiek visas šis Bolivudas su specialiaisiais efektais būtų nukirstas, jei dar būtų galima naudoti banalią sukčiavimą. Bet man asmeniškai visa tai buvo labai įdomu. Tikiuosi, kad jums patiko tai skaityti. Žinoma, ne kiekvienas projektas atrodo toks intriguojantis, tačiau darbas visumoje yra labai sudėtingas ir neleidžia jam sustingti.

Tikriausiai kam nors kils klausimas: kaip apsisaugoti? Net šiame straipsnyje aprašoma daug metodų, apie kuriuos „Windows“ administratoriai net nežino. Tačiau siūlau į juos pažvelgti iš nulaužtų principų ir informacijos saugumo priemonių perspektyvos:

  • nenaudokite pasenusios programinės įrangos (pamenate Windows 2003 pradžioje?)
  • nelaikykite įjungtų nereikalingų sistemų (kodėl buvo urologo svetainė?)
  • patys patikrinkite vartotojų slaptažodžius (kitaip kariai... pentesteriai tai padarys)
  • neturi tų pačių slaptažodžių skirtingoms paskyroms (VDI kompromisas)
  • ir kita

Žinoma, tai labai sunku įgyvendinti, tačiau kitame straipsnyje mes parodysime praktiškai, kad tai visiškai įmanoma.

Šaltinis: www.habr.com

Добавить комментарий