Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Ta članek je bil napisan na podlagi zelo uspešnega pentesta, ki so ga strokovnjaki Group-IB izvedli pred nekaj leti: zgodila se je zgodba, ki bi jo lahko prilagodili za film v Bollywoodu. Zdaj bo verjetno sledila reakcija bralca: "Joj, še en PR članek, spet se ti slikajo, kako so dobri, ne pozabite kupiti pentest." No, po eni strani je. Vendar pa obstajajo številni drugi razlogi, zakaj se je ta članek pojavil. Želel sem pokazati, kaj točno počnejo pentesterji, kako zanimivo in nepomembno je lahko to delo, kakšne smešne okoliščine se lahko pojavijo v projektih, in kar je najpomembneje, pokazati živo gradivo z resničnimi primeri.

Da bi ponovno vzpostavili ravnovesje skromnosti v svetu, bomo čez nekaj časa pisali o pentestu, ki ni uspel. Pokazali bomo, kako lahko dobro načrtovani procesi v podjetju zaščitijo pred celo vrsto napadov, tudi dobro pripravljenih, preprosto zato, ker ti procesi obstajajo in dejansko delujejo.

Za kupca v tem članku je bilo tudi na splošno vse odlično, vsaj bolje kot 95% trga v Ruski federaciji po naših občutkih, vendar je bilo nekaj majhnih odtenkov, ki so tvorili dolgo verigo dogodkov, ki so najprej privedlo do dolgega poročila o delu in nato do tega članka.

Torej, naredimo zalogo pokovke in dobrodošli v detektivski zgodbi. beseda - Pavel Suprunjuk, tehnični vodja oddelka »Revizija in svetovanje« Group-IB.

1. del. Zdravnik Pochkin

2018 Obstaja stranka - visokotehnološko IT podjetje, ki samo služi številnim strankam. Želi dobiti odgovor na vprašanje: ali je možno brez začetnega znanja in dostopa z delom preko interneta pridobiti administratorske pravice domene Active Directory? Noben socialni inženiring me ne zanima (oh, ampak zaman), se ne nameravajo namerno vmešavati v delo, lahko pa se zgodi, da po nesreči – na primer znova naložijo nenavadno delujoč strežnik. Dodaten cilj je identificirati čim več drugih vektorjev napada proti zunanjemu obodu. Podjetje tovrstne teste izvaja redno, zdaj pa je prišel rok za nov test. Pogoji so skoraj tipični, ustrezni, razumljivi. Začnimo.

Obstaja ime stranke - naj bo "Podjetje" z glavno spletno stranjo www.company.ru. Seveda se stranka imenuje drugače, vendar bo v tem članku vse brezosebno.
Izvajam izvid omrežja - ugotovim, kateri naslovi in ​​domene so registrirani pri stranki, narišem omrežni diagram, kako so storitve razdeljene na te naslove. Dobim rezultat: več kot 4000 aktivnih naslovov IP. Gledam domene v teh omrežjih: na srečo je velika večina omrežij, ki so namenjena naročnikovim strankam in nas formalno ne zanimajo. Stranka meni enako.

Ostaja eno omrežje z 256 naslovi, za katerega do tega trenutka že obstaja razumevanje porazdelitve domen in poddomen po naslovih IP, obstajajo informacije o skeniranih vratih, kar pomeni, da si lahko ogledate storitve za zanimive. Vzporedno se zaženejo vse vrste skenerjev na razpoložljivih naslovih IP in ločeno na spletnih mestih.

Storitev je veliko. Običajno je to veselje pentesterja in pričakovanje hitre zmage, saj več kot je storitev, večje je polje za napad in lažje je najti artefakt. Že hiter pregled spletnih strani je pokazal, da gre večinoma za spletne vmesnike znanih produktov velikih svetovnih podjetij, ki po vsem videzu sporočajo, da niso dobrodošli. Zahtevajo uporabniško ime in geslo, pretresajo polje za vpis drugega faktorja, zahtevajo certifikat odjemalca TLS ali ga pošljejo Microsoft ADFS. Nekateri so preprosto nedostopni z interneta. Za nekatere je očitno treba imeti posebno plačano stranko za tri plače ali vedeti točen URL za vstop. Preskočimo še en teden postopne malodušnosti v procesu poskusov »prebijanja« različic programske opreme za znane ranljivosti, iskanja skritih vsebin v spletnih poteh in uhajajočih računih iz storitev tretjih oseb, kot je LinkedIn, poskusov ugibanja gesel z njihovo uporabo, kot izkopavanje ranljivosti v spletnih mestih, ki so jih napisali sami - mimogrede, po statističnih podatkih je to danes najbolj obetaven vektor zunanjega napada. Takoj bom opazil filmsko pištolo, ki je pozneje sprožila.

Tako smo našli dve mesti, ki sta izstopali med stotinami storitev. Ta spletna mesta imajo eno skupno stvar: če se ne ukvarjate z natančnim izvidovanjem omrežja po domenah, ampak neposredno iščete odprta vrata ali ciljate na pregledovalnik ranljivosti z uporabo znanega obsega IP, potem se bodo ta mesta izognila skeniranju in jih preprosto ne bo. viden brez poznavanja imena DNS. Morda so bili vsaj prej zgrešeni in naša samodejna orodja niso odkrila nobenih težav z njimi, tudi če so bili poslani neposredno na vir.

Mimogrede, o tem, kaj so na splošno našli prej predstavljeni skenerji. Naj vas spomnim: za nekatere ljudi je "pentest" enakovreden "avtomatiziranemu skeniranju". Toda skenerji na tem projektu niso rekli ničesar. No, največ so pokazale srednje ranljivosti (3 od 5 glede na resnost): na nekaterih storitvah slabo potrdilo TLS ali zastareli algoritmi šifriranja, na večini spletnih mest pa Clickjacking. Toda to vas ne bo pripeljalo do vašega cilja. Morda bi bili tukaj bolj uporabni skenerji, a naj vas spomnim: takšne programe lahko kupec sam kupi in se z njimi preizkusi in je, sodeč po klavrnih rezultatih, že preveril.

Vrnimo se k "nenavadnim" mestom. Prvi je nekaj podobnega lokalnemu Wikiju na nestandardnem naslovu, vendar naj bo v tem članku wiki.company[.]ru. Prav tako je takoj zahtevala prijavo in geslo, vendar prek NTLM v brskalniku. Za uporabnika je to videti kot asketsko okno, ki zahteva vnos uporabniškega imena in gesla. In to je slaba praksa.

Majhna opomba. NTLM na obrobnih spletnih mestih je slab iz več razlogov. Prvi razlog je razkritje imena domene Active Directory. V našem primeru se je tudi izkazalo, da je company.ru, tako kot "zunanje" ime DNS. Če to veste, lahko nekaj zlonamernega skrbno pripravite tako, da se izvaja le na domenskem računalniku organizacije in ne v nekem peskovniku. Drugič, preverjanje pristnosti poteka neposredno prek krmilnika domene prek NTLM (presenečenje, kajne?), z vsemi značilnostmi "notranjih" omrežnih pravilnikov, vključno z blokiranjem računov, da ne presežejo števila poskusov vnosa gesla. Če napadalec odkrije prijave, bo poskusil vnesti gesla zanje. Če ste konfigurirani za blokiranje računov pred vnašanjem napačnih gesel, bo delovalo in račun bo blokiran. Tretjič, takemu preverjanju pristnosti je nemogoče dodati drugega dejavnika. Če kdo od bralcev še zna, naj mi prosim sporoči, res je zanimivo. Četrtič, ranljivost za napade z zgoščeno vrednostjo. ADFS je bil med drugim izumljen za zaščito pred vsem tem.

Obstaja ena slaba lastnost Microsoftovih izdelkov: tudi če takšnega NTLM niste posebej objavili, bo privzeto nameščen vsaj v OWA in Lync.

Mimogrede, avtor tega članka je nekoč z isto metodo pomotoma blokiral približno 1000 računov uslužbencev ene velike banke v samo eni uri in potem bil videti nekoliko bled. Tudi bančne IT službe so bile blede, a se je vse dobro in primerno končalo, celo pohvalili so nas, da smo prvi našli to težavo in izzvali hitro in odločno rešitev.

Drugo spletno mesto je imelo naslov "očitno nekakšen priimek.company.ru." Našel prek Googla, nekaj takega na strani 10. Zasnova je bila iz začetka ali sredine XNUMX-ih in ugledna oseba ga je gledala z glavne strani, nekako takole:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Tukaj sem vzel fotografijo iz "Pasjega srca", a verjemite mi, da je bila nekoliko podobna, tudi barvna zasnova je bila v podobnih tonih. Naj se stran imenuje preobrazhensky.company.ru.

To je bila osebna spletna stran... za urologa. Zanimalo me je, kaj počne spletno mesto urologa na poddomeni visokotehnološkega podjetja. Hitro brskanje po Googlu je pokazalo, da je bil ta zdravnik soustanovitelj ene od pravnih oseb naše stranke in je celo prispeval približno 1000 rubljev v odobreni kapital. Stran je bila verjetno ustvarjena pred mnogimi leti, za gostovanje pa so bili uporabljeni strežniški viri stranke. Spletno mesto je že dolgo izgubilo svojo pomembnost, vendar je iz neznanega razloga dolgo delovalo.

Kar zadeva ranljivosti, je bilo samo spletno mesto varno. Če pogledam naprej, bom rekel, da je šlo za niz statičnih informacij - preprostih html strani z vstavljenimi ilustracijami v obliki ledvic in mehurja. Neuporabno je "razbiti" takšno spletno mesto.

Toda spletni strežnik pod njim je bil bolj zanimiv. Sodeč po glavi HTTP Server je imel IIS 6.0, kar pomeni, da je kot operacijski sistem uporabljal Windows 2003. Optični bralnik je predhodno ugotovil, da se je to spletno mesto urologa, za razliko od drugih virtualnih gostiteljev na istem spletnem strežniku, odzvalo na ukaz PROPFIND, kar pomeni, da izvaja WebDAV. Mimogrede, skener je to informacijo vrnil z oznako Info (v jeziku poročil skenerja je to najmanjša nevarnost) - take stvari se običajno preprosto preskočijo. V kombinaciji je to dalo zanimiv učinek, ki je bil razkrit šele po ponovnem kopanju v Googlu: redka ranljivost prekoračitve medpomnilnika, povezana z nizom Shadow Brokers, in sicer CVE-2017-7269, ki je že imel pripravljen izkoriščanje. Z drugimi besedami, težave bodo, če imate Windows 2003 in se WebDAV izvaja v IIS. Čeprav je poganjanje sistema Windows 2003 v produkciji leta 2018 težava sama po sebi.

Izkoriščanje je končalo v Metasploitu in bilo takoj preizkušeno z obremenitvijo, ki je poslala zahtevo DNS nadzorovani storitvi - Burp Collaborator se tradicionalno uporablja za lovljenje zahtev DNS. Na moje presenečenje je prvič delovalo: prejet je bil knockout DNS. Nato je prišlo do poskusa vzpostavitve povratne povezave prek vrat 80 (to je omrežna povezava od strežnika do napadalca z dostopom do cmd.exe na gostitelju žrtve), vendar se je zgodil fiasko. Povezava ni uspela in po tretjem poskusu uporabe je stran skupaj z vsemi zanimivimi slikami izginila za vedno.

Običajno temu sledi pismo v stilu »stranka, zbudi se, vse smo spustili«. Vendar so nam povedali, da stran nima nobene zveze s poslovnimi procesi in tam deluje brez razloga, tako kot celoten strežnik, in da lahko ta vir uporabljamo, kakor hočemo.
Približno dan kasneje je stran nenadoma začela delovati sama. Po izdelavi preskusne naprave iz WebDAV na IIS 6.0 sem ugotovil, da je privzeta nastavitev ponoven zagon delovnih procesov IIS vsakih 30 ur. To pomeni, da ko je nadzor zapustil lupinsko kodo, se je delovni proces IIS končal, nato se je nekajkrat znova zagnal in nato počival za 30 ur.

Ker povratna povezava s tcp prvič ni uspela, sem to težavo pripisal zaprtim vratom. To pomeni, da je domneval prisotnost neke vrste požarnega zidu, ki ni dovolil, da bi odhodne povezave prešle zunaj. Začel sem izvajati shellcodes, ki so iskali skozi številna vrata tcp in udp, ni bilo učinka. Nalaganje povratne povezave prek http(s) iz Metasploita ni delovalo - meterpreter/reverse_http(s). Nenadoma je bila vzpostavljena povezava z istimi vrati 80, vendar je bila takoj prekinjena. To sem pripisal dejanju še vedno namišljenega IPS-a, ki mu promet števcev ni bil všeč. Glede na dejstvo, da čista tcp povezava do vrat 80 ni šla skozi, http povezava pa je, sem sklepal, da je bil http proxy nekako konfiguriran v sistemu.

Poskusil sem celo meterpreter prek DNS (hvala d00kie za vaša prizadevanja, rešil veliko projektov), ​​se spomnim prvega uspeha, vendar ni delovalo niti na stojalu - lupinska koda je bila preveč obsežna za to ranljivost.

V resnici je bilo videti takole: 3-4 poskusi napadov v 5 minutah, nato čakanje 30 ur. In tako tri tedne zapored. Nastavil sem celo opomnik, da ne bi izgubljal časa. Poleg tega je obstajala razlika v obnašanju testnega in produkcijskega okolja: za to ranljivost sta obstajali dve podobni izkoriščanji, ena iz Metasploita, druga iz interneta, pretvorjena iz različice Shadow Brokers. Torej, samo Metasploit je bil preizkušen v boju, samo drugi pa je bil preizkušen na klopi, kar je še dodatno otežilo odpravljanje napak in paralo možgane.

Na koncu se je izkazala lupinska koda, ki je z danega strežnika preko http prenesla datoteko exe in jo zagnala v ciljnem sistemu. Shellcode je bil dovolj majhen, da se je prilegal, vendar je vsaj deloval. Ker strežnik sploh ni maral prometa TCP in je bil http(s) pregledan glede prisotnosti meterpreterja, sem se odločil, da je najhitrejši način prenos datoteke exe, ki vsebuje DNS-meterpreter, prek te lupinske kode.

Tu se je spet pojavila težava: pri prenosu datoteke exe in, kot so pokazali poskusi, ne glede na katero, je bil prenos prekinjen. Spet neki varnostni napravi med mojim strežnikom in urologom ni bil všeč http promet z exe notri. Zdelo se je, da je "hitra" rešitev sprememba lupinske kode, tako da bi sproti zameglila promet http, tako da bi se namesto exe prenašali abstraktni binarni podatki. Končno je bil napad uspešen, nadzor je bil prejet prek tankega kanala DNS:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Takoj je postalo jasno, da imam najosnovnejše pravice do poteka dela IIS, ki mi omogočajo, da ne naredim ničesar. Takole je bilo videti na konzoli Metasploit:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Vse metodologije pentest močno kažejo, da morate povečati pravice, ko pridobite dostop. Običajno tega ne počnem lokalno, saj je že prvi dostop viden preprosto kot omrežna vstopna točka, ogrožanje drugega računalnika v istem omrežju pa je običajno lažje in hitrejše kot stopnjevanje privilegijev na obstoječem gostitelju. Vendar tukaj ni tako, saj je kanal DNS zelo ozek in ne bo dovolil razčiščevanja prometa.

Ob predpostavki, da ta strežnik Windows 2003 ni bil popravljen zaradi znane ranljivosti MS17-010, tuneliram promet na vrata 445/TCP skozi tunel DNS meterpreter na lokalnem gostitelju (da, tudi to je možno) in poskušam zagnati predhodno preneseno datoteko exe prek ranljivost. Napad deluje, prejmem drugo povezavo, vendar s SYSTEM pravicami.

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja

Zanimivo je, da so strežnik vseeno poskušali zaščititi pred MS17-010 – na zunanjem vmesniku je imel onemogočene ranljive omrežne storitve. To sicer ščiti pred napadi po omrežju, vendar je napad od znotraj na localhost deloval, saj ne morete kar hitro izklopiti SMB na localhost.

Nato so razkrite nove zanimive podrobnosti:

  1. Če imate SYSTEM pravice, lahko preprosto vzpostavite povratno povezavo prek TCP. Očitno je onemogočanje neposrednega TCP izključno problem za omejenega uporabnika IIS. Spoiler: uporabniški promet IIS je bil nekako zavit v lokalni proxy ISA v obe smeri. Kako natančno deluje, nisem reproducirala.
  2. Sem v določenem "DMZ" (in to ni domena Active Directory, ampak DELOVNA SKUPINA) - zveni logično. Toda namesto pričakovanega zasebnega (»sivega«) naslova IP imam povsem »bel« naslov IP, popolnoma enak tistemu, ki sem ga prej napadel. To pomeni, da je podjetje že tako staro v svetu naslavljanja IPv4, da si lahko privošči vzdrževanje DMZ cone za 128 "belih" naslovov brez NAT po shemi, kot je prikazano v Ciscovih priročnikih iz leta 2005.

Ker je strežnik star, Mimikatz zajamčeno deluje neposredno iz pomnilnika:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Dobim geslo lokalnega skrbnika, tuneliram promet RDP prek TCP in se prijavim v udobno namizje. Ker sem lahko s strežnikom počel kar sem hotel, sem odstranil antivirus in ugotovil, da je strežnik dostopen iz interneta samo preko TCP portov 80 in 443, 443 pa ni zaseden. Postavil sem strežnik OpenVPN na 443, dodal sem funkcije NAT za svoj VPN promet in dobil neposreden dostop do omrežja DMZ v neomejeni obliki prek svojega OpenVPN. Omeniti velja, da je ISA, ki je imel nekatere neonemogočene funkcije IPS, blokiral moj promet s skeniranjem vrat, za kar ga je bilo treba zamenjati s preprostejšim in bolj skladnim RRAS. Torej morajo pentesterji včasih še vedno upravljati najrazličnejše stvari.

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Pozoren bralec bo vprašal: "Kaj pa drugo spletno mesto - wiki z avtentikacijo NTLM, o katerem je bilo toliko napisanega?" Več o tem pozneje.

2. del. Še vedno ne šifrirate? Potem pridemo k vam že tukaj

Torej obstaja dostop do segmenta omrežja DMZ. Morate iti do skrbnika domene. Prva stvar, ki mi pride na misel, je samodejno preverjanje varnosti storitev znotraj segmenta DMZ, še posebej, ker jih je zdaj veliko več odprtih za raziskave. Tipična slika med penetracijskim testom: zunanje perimeter je bolje zaščiten kot notranje storitve in pri dostopu znotraj velike infrastrukture je veliko lažje pridobiti razširjene pravice v domeni samo zaradi dejstva, da se ta domena začne dostopen za orodja, in drugič, v infrastrukturi z več tisoč gostitelji bo vedno nekaj kritičnih težav.

Polnim skenerje prek DMZ prek tunela OpenVPN in čakam. Odprem izvid - spet nič hudega, očitno je nekdo šel skozi isto metodo pred mano. Naslednji korak je preučiti, kako gostitelji znotraj omrežja DMZ komunicirajo. Če želite to narediti, najprej zaženite običajni Wireshark in poslušajte zahteve za oddajanje, predvsem ARP. Paketi ARP so se zbirali ves dan. Izkazalo se je, da se v tem segmentu uporablja več prehodov. To vam bo kasneje prišlo prav. S kombiniranjem podatkov o zahtevah in odzivih ARP ter podatkov o skeniranju vrat sem našel izhodne točke uporabniškega prometa znotraj lokalnega omrežja poleg tistih storitev, ki so bile prej znane, kot sta splet in pošta.

Ker trenutno nisem imel dostopa do drugih sistemov in nisem imel niti enega računa za korporativne storitve, je bilo odločeno, da iz prometa izločim vsaj kakšen račun s pomočjo ARP Spoofing.

Cain&Abel je bil zagnan na urologovem strežniku. Ob upoštevanju ugotovljenih prometnih tokov so bili izbrani najbolj obetavni pari za napad človeka v sredini, nato pa je bilo nekaj omrežnega prometa sprejeto s kratkotrajnim zagonom za 5-10 minut, s časovnikom za ponovni zagon strežnika v primeru zmrzovanja. Kot v šali sta bili novici dve:

  1. Dobro: zbranih je bilo veliko poverilnic in napad kot celota je deloval.
  2. Slabo: vse poverilnice so bile lastne stranke stranke. Med zagotavljanjem podpornih storitev so se strokovnjaki za stranke povezovali s storitvami strank, ki niso imele vedno nastavljenega šifriranja prometa.

Posledično sem pridobil veliko poverilnic, ki so bile v okviru projekta neuporabne, a vsekakor zanimive kot prikaz nevarnosti napada. Mejni usmerjevalniki velikih podjetij s telnetom, posredovanimi debug http porti v interni CRM z vsemi podatki, neposrednim dostopom do RDP iz Windows XP na lokalnem omrežju in ostalo mračnjaštvo. Izkazalo se je takole Kompromis dobavne verige po matriki MITER.

Našel sem tudi smešno priložnost za zbiranje pisem iz prometa, nekaj takega. To je primer že pripravljenega pisma, ki je šlo od naše stranke do SMTP vrat njegove stranke, spet brez šifriranja. Neki Andrej prosi svojega soimenjaka, naj ponovno pošlje dokumentacijo, in ta se naloži na oblačni disk s prijavo, geslom in povezavo v enem odzivnem pismu:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
To je še en opomnik za šifriranje vseh storitev. Kdo in kdaj bo vaše podatke prebral in uporabil, ni znano - ponudnik, sistemski skrbnik drugega podjetja ali tak pentester. Molčim o tem, da lahko marsikdo preprosto prestreže nešifriran promet.

Kljub navideznemu uspehu nas to ni približalo cilju. Seveda je bilo mogoče dolgo časa sedeti in loviti dragocene informacije, vendar ni dejstvo, da bi se tam pojavile, sam napad pa je zelo tvegan z vidika celovitosti omrežja.

Po ponovnem kopanju po storitvah se mi je porodila zanimiva ideja. Obstaja takšen pripomoček, imenovan Responder (lahko je najti primere uporabe s tem imenom), ki z "zastrupljanjem" oddajnih zahtev izzove povezave prek različnih protokolov, kot so SMB, HTTP, LDAP itd. na različne načine, nato prosi vse, ki se povezujejo, da se avtentikacijo in nastavi tako, da avtentikacija poteka preko NTLM in v načinu, ki je pregleden za žrtev. Najpogosteje napadalec na ta način zbira rokovanja NetNTLMv2 in iz njih s pomočjo slovarja hitro obnovi gesla uporabniške domene. Tukaj sem želel nekaj podobnega, vendar so uporabniki sedeli »za zidom«, oziroma bili ločeni s požarnim zidom, in so do SPLETA dostopali preko proxy grozda Blue Coat.

Ne pozabite, določil sem, da ime domene Active Directory sovpada z "zunanjo" domeno, to je company.ru? Torej, Windows, natančneje Internet Explorer (ter Edge in Chrome), uporabniku omogoča pregledno avtentikacijo v HTTP prek NTLM, če meni, da se spletno mesto nahaja v neki “Intranet coni”. Eden od znakov "intraneta" je dostop do "sivega" naslova IP ali kratkega imena DNS, to je brez pik. Ker so imeli strežnik z "belim" imenom IP in DNS preobrazhensky.company.ru, domenski stroji pa običajno prejmejo končnico domene Active Directory prek DHCP za poenostavljen vnos imena, so morali URL napisati le v naslovno vrstico preobrazhensky, tako da najdejo pravo pot do ogroženega strežnika urologa, ne da bi pozabili, da se to zdaj imenuje "Intranet". Se pravi, istočasno mi posreduje uporabnikovo rokovanje NTLM brez njegove vednosti. Vse, kar ostane, je prisiliti odjemalske brskalnike, da razmišljajo o nujni potrebi po stiku s tem strežnikom.

Na pomoč je priskočil čudovit pripomoček Intercepter-NG (hvala Prestreznik). Omogočal vam je sprotno spreminjanje prometa in je odlično deloval v sistemu Windows 2003. Imel je celo ločeno funkcijo za spreminjanje samo datotek JavaScript v prometnem toku. Načrtovano je bilo nekakšno množično skriptiranje med spletnimi mesti.

Posredniki Blue Coat, prek katerih so uporabniki dostopali do globalnega SPLETA, so občasno predpomnili statično vsebino. S prestrezanjem prometa je bilo jasno, da delajo XNUMX ur na dan in neskončno zahtevajo pogosto uporabljeno statiko za pospešitev prikaza vsebin v konicah. Poleg tega je imel BlueCoat posebnega uporabniškega agenta, ki ga je jasno razlikoval od pravega uporabnika.

Pripravljen je bil Javascript, ki je bil s pomočjo Intercepter-NG implementiran eno uro ponoči za vsak odgovor z JS datotekami za Blue Coat. Skript je naredil naslednje:

  • Uporabniški agent je določil trenutni brskalnik. Če je bil Internet Explorer, Edge ali Chrome, je še naprej deloval.
  • Počakal sem, da je bil oblikovan DOM strani.
  • V DOM je bila vstavljena nevidna slika z atributom src obrazca preobrazhensky:8080/NNNNNNN.png, kjer so NNN poljubne številke, tako da jih BlueCoat ne shrani v predpomnilnik.
  • Nastavite spremenljivko globalne zastavice, ki označuje, da je bila injekcija končana in da ni več potrebe po vstavljanju slik.

Brskalnik je poskušal naložiti to sliko; na vratih 8080 ogroženega strežnika jo je čakal tunel TCP do mojega prenosnika, kjer se je izvajal isti odzivnik, ki je zahteval, da se brskalnik prijavi prek NTLM.

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Sodeč po dnevnikih Responderja so ljudje zjutraj prišli v službo, vklopili svoje delovne postaje, nato pa so množično in neopazno začeli obiskovati strežnik urologa, pri čemer niso pozabili "odtočiti" rokovanja NTLM. Rokovanje je deževalo ves dan in očitno se je nabral material za očitno uspešen napad za obnovitev gesel. Takole so izgledali dnevniki odzivnika:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in RoskomnadzorjaMnožični skrivni obiski uporabnikov urološkega strežnika

Verjetno ste že opazili, da je vsa ta zgodba zgrajena na principu "vse je bilo v redu, potem je bil padec, potem je bilo premagovanje in potem je vse prišlo do uspeha." Torej, tukaj je bila zadrega. Od petdesetih edinstvenih stiskov rok ni bilo razkrito niti eno. In to upošteva dejstvo, da se tudi na prenosnem računalniku z mrtvim procesorjem ta rokovanja NTLMv2 obdelujejo s hitrostjo nekaj sto milijonov poskusov na sekundo.

Moral sem se oborožiti s tehnikami mutacije gesel, video kartico, debelejšim slovarjem in čakati. Po dolgem času je bilo razkritih več računov z gesli v obliki »Q11111111....1111111q«, kar nakazuje, da so bili nekoč vsi uporabniki prisiljeni izmisliti zelo dolgo geslo z različnimi velikimi črkami, ki naj bi tudi biti zapleten. Toda izkušenega uporabnika ne moreš pretentati in tako si je olajšal pomnjenje. Skupaj je bilo ogroženih približno 5 računov in samo eden od njih je imel kakršne koli dragocene pravice do storitev.

3. del. Roskomnadzor vrača udarec

Tako so bili prejeti prvi domenski računi. Če do te točke še niste zaspali od dolgega branja, se verjetno spomnite, da sem omenil storitev, ki ni zahtevala drugega dejavnika avtentikacije: to je wiki z avtentikacijo NTLM. Seveda je bilo treba najprej vstopiti tja. Kopanje po notranji bazi znanja je hitro prineslo rezultate:

  • Podjetje ima WiFi omrežje z avtentikacijo z domenskimi računi z dostopom do lokalnega omrežja. S trenutnim naborom podatkov je to že delujoč napadalni vektor, vendar morate iti v pisarno z nogami in se nahajati nekje na ozemlju pisarne stranke.
  • Našel sem navodilo, po katerem je obstajala storitev, ki je dovoljevala ... samostojno registracijo naprave za preverjanje pristnosti »drugega faktorja«, če je uporabnik v lokalnem omrežju in se zanesljivo spomni svoje domenske prijave in gesla. V tem primeru sta bila »znotraj« in »zunaj« določena z dostopnostjo vrat te storitve uporabniku. Vrata niso bila dostopna prek interneta, vendar so bila precej dostopna prek DMZ.

Seveda je bil kompromitiranemu računu takoj dodan “drugi dejavnik” v obliki aplikacije na mojem telefonu. Tam je bil program, ki je lahko bodisi glasno poslal zahtevo po potiskanju v telefon z gumbi »odobri«/»zavrni« za dejanje ali tiho prikazal kodo OTP na zaslonu za nadaljnji neodvisen vnos. Še več, prva metoda naj bi bila po navodilih edina pravilna, vendar za razliko od metode OTP ni delovala.

Ker je "drugi faktor" pokvarjen, sem lahko dostopal do pošte Outlook Web Access in oddaljenega dostopa v Citrix Netscaler Gateway. V pošti v Outlooku je bilo presenečenje:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
V tem redkem posnetku si lahko ogledate, kako Roskomnadzor pomaga pentesterjem

To so bili prvi meseci po znameniti »navijaški« blokadi Telegrama, ko so cela omrežja s tisočimi naslovi nezadržno izginila iz dostopa. Postalo je jasno, zakaj potiskanje ni delovalo takoj in zakaj moja "žrtev" ni sprožila alarma, ker so njen račun začeli uporabljati med odprtim časom.

Vsakdo, ki pozna Citrix Netscaler, si predstavlja, da je običajno implementiran tako, da je uporabniku mogoče posredovati samo slikovni vmesnik, pri čemer se trudi, da mu ne bi dal orodij za zagon aplikacij tretjih oseb in prenos podatkov, kar na vse možne načine omejuje dejanja prek standardnih nadzornih lupin. Moja “žrtev” je zaradi svojega poklica dobila samo 1C:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Ko sem se malo sprehodil po vmesniku 1C, sem ugotovil, da so tam zunanji moduli za obdelavo. Lahko jih naložimo iz vmesnika, izvajajo pa se bodo na odjemalcu ali strežniku, odvisno od pravic in nastavitev.

Svoje prijatelje programerje 1C sem prosil, naj ustvarijo procesiranje, ki bi sprejelo niz in ga izvršilo. V jeziku 1C je zagon postopka videti nekako takole (vzeto iz interneta). Ali se strinjate, da sintaksa jezika 1C navdušuje rusko govoreče ljudi s svojo spontanostjo?

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja

Obdelava je bila izvedena odlično, izkazalo se je, da je tisto, kar pentesterji imenujejo "lupina" - Internet Explorer je bil zagnan prek nje.

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Prej so v pošti našli naslov sistema, ki vam omogoča naročanje prepustnic za ozemlje. Naročil sem izkaznico, če bi moral uporabiti vektor napada WiFi.

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Po internetu se govori, da je še vedno obstajal okusen brezplačen catering v pisarni stranke, vendar sem vseeno raje napad razvil na daljavo, bolj je mirno.

AppLocker je bil aktiviran na aplikacijskem strežniku, na katerem se izvaja Citrix, vendar je bil zaobšel. Isti Meterpreter se je naložil in zagnal preko DNS-a, saj se različice http(s) niso hotele povezati, internega proxy naslova pa takrat še nisem poznal. Mimogrede, od tega trenutka naprej se je zunanji pentest v bistvu popolnoma spremenil v notranjega.

Del 4. Skrbniške pravice za uporabnike so slabe, v redu?

Prva naloga pentesterja, ko pridobi nadzor nad uporabniško sejo domene, je zbiranje vseh informacij o pravicah v domeni. Obstaja pripomoček BloodHound, ki samodejno omogoča prenos informacij o uporabnikih, računalnikih, varnostnih skupinah prek protokola LDAP iz krmilnika domene in prek SMB - informacij o tem, kateri uporabnik se je pred kratkim prijavil, kje in kdo je lokalni skrbnik.

Tipična tehnika za odvzem pravic skrbnika domene izgleda poenostavljeno kot cikel monotonih dejanj:

  • Gremo na domenske računalnike, kjer so lokalne skrbniške pravice, na podlagi že zajetih domenskih računov.
  • Zaženemo Mimikatz in dobimo predpomnjena gesla, vstopnice Kerberos in zgoščene vrednosti NTLM domenskih računov, ki so se nedavno prijavili v ta sistem. Ali pa odstranimo pomnilniško sliko procesa lsass.exe in naredimo enako na naši strani. To dobro deluje z operacijskim sistemom Windows, mlajšim od 2012R2/Windows 8.1 s privzetimi nastavitvami.
  • Ugotovimo, kje imajo ogroženi računi lokalne skrbniške pravice. Ponavljamo prvo točko. Na neki stopnji pridobimo skrbniške pravice za celotno domeno.

"Konec cikla", kot bi tukaj zapisali programerji 1C.

Tako se je izkazalo, da je naš uporabnik lokalni skrbnik na samo enem gostitelju z operacijskim sistemom Windows 7, katerega ime je vključevalo besedo "VDI" ali "Infrastruktura navideznega namizja", osebni virtualni stroji. Verjetno je načrtovalec storitve VDI mislil, da ker je VDI osebni operacijski sistem uporabnika, je mogoče gostitelja še vedno »ponovno naložiti«, tudi če uporabnik spremeni okolje programske opreme, kot želi. Tudi meni se je zdela na splošno ideja dobra, šel sem do tega osebnega gostitelja VDI in tam naredil gnezdo:

  • Tam sem namestil odjemalca OpenVPN, ki je naredil tunel preko interneta do mojega strežnika. Stranko je bilo treba prisiliti, da gre skozi isti Blue Coat s preverjanjem pristnosti domene, vendar je OpenVPN to storil, kot pravijo, "izven škatle".
  • Nameščen OpenSSH na VDI. No, res, kaj je Windows 7 brez SSH?

Takole je to izgledalo v živo. Naj vas spomnim, da je treba vse to narediti prek Citrixa in 1C:

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Ena od tehnik za spodbujanje dostopa do sosednjih računalnikov je preverjanje ujemanja lokalnih skrbniških gesel. Tu je takoj čakala sreča: zgoščevalna vrednost NTLM privzetega lokalnega skrbnika (ki se je nenadoma imenovala Administrator) je bila z napadom prenosa razpršilne vrednosti dostopna sosednjim gostiteljem VDI, ki jih je bilo nekaj sto. Seveda jih je napad takoj doletel.

Tukaj so se skrbniki VDI dvakrat ustrelili v nogo:

  • Prvič se je zgodilo, ko stroji VDI niso bili vključeni v LAPS, kar je v bistvu ohranilo isto geslo lokalnega skrbnika iz slike, ki je bila množično uvedena v VDI.
  • Privzeti skrbnik je edini lokalni račun, ki je ranljiv za napade z zgoščevanjem. Tudi z istim geslom bi se bilo mogoče izogniti množičnemu kompromisu z ustvarjanjem drugega lokalnega skrbniškega računa s kompleksnim naključnim geslom in blokiranjem privzetega.

Zakaj je v tem sistemu Windows storitev SSH? Zelo preprosto: zdaj strežnik OpenSSH ni ponudil le priročne interaktivne ukazne lupine brez poseganja v delo uporabnika, ampak tudi socks5 proxy na VDI. Preko te nogavice sem se povezal prek SMB in zbral predpomnjene račune iz vseh teh stotin strojev VDI, nato pa z njihovo uporabo v grafih BloodHound poiskal pot do skrbnika domene. S stotinami gostiteljev, ki so mi bili na voljo, sem hitro našel to pot. Pridobljene so administratorske pravice domene.

Tukaj je slika iz interneta, ki prikazuje podobno iskanje. Povezave prikazujejo, kdo je kje skrbnik in kdo je kje prijavljen.

Once upon a pentest, ali Kako razbiti vse s pomočjo urologa in Roskomnadzorja
Mimogrede, zapomnite si pogoj od začetka projekta - "ne uporabljajte socialnega inženiringa." Zato predlagam, da razmislimo o tem, koliko bi bil ves ta Bollywood s posebnimi učinki odrezan, če bi bilo še vedno mogoče uporabiti banalno lažno predstavljanje. Meni osebno pa je bilo vse to zelo zanimivo početi. Upam, da ste uživali v branju tega. Seveda ni vsak projekt videti tako intriganten, vendar je delo kot celota zelo zahtevno in ne dopušča stagnacije.

Verjetno se bo kdo vprašal: kako se zaščititi? Celo ta članek opisuje številne tehnike, za katere skrbniki sistema Windows za mnoge sploh ne vedo. Predlagam pa, da jih pogledamo z vidika otrcanih načel in ukrepov za varnost informacij:

  • ne uporabljajte zastarele programske opreme (se spomnite Windows 2003 na začetku?)
  • ne imejte vklopljenih nepotrebnih sistemov (zakaj je obstajala spletna stran urologa?)
  • sami preverite uporabniška gesla za moč (sicer bodo to storili vojaki... pentesterji)
  • nimajo enakih gesel za različne račune (kompromis VDI)
  • in druge

Seveda je to zelo težko izvedljivo, a v naslednjem članku bomo v praksi pokazali, da je povsem mogoče.

Vir: www.habr.com

Dodaj komentar