Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Ovaj članak je napisan na osnovu vrlo uspješnog pentesta koji su stručnjaci Group-IB proveli prije nekoliko godina: dogodila se priča koja bi se mogla adaptirati za film u Bollywoodu. Sada će, vjerovatno, uslijediti reakcija čitaoca: „Joj, još jedan PR članak, opet se ovi prikazuju, kako su dobri, ne zaboravite kupiti pentest“. Pa, s jedne strane, jeste. Međutim, postoji niz drugih razloga zašto se ovaj članak pojavio. Želeo sam da pokažem čime se tačno pentesteri bave, koliko ovaj rad može biti zanimljiv i netrivijalan, koje se smešne okolnosti mogu pojaviti u projektima, i što je najvažnije, pokazati živi materijal sa stvarnim primerima.

Da bismo vratili ravnotežu skromnosti u svijetu, nakon nekog vremena pisaćemo o pentestu koji nije prošao dobro. Pokazaćemo kako dobro osmišljeni procesi u kompaniji mogu zaštititi od čitavog niza napada, čak i onih dobro pripremljenih, samo zato što ti procesi postoje i stvarno funkcionišu.

Za kupca u ovom članku, također je generalno sve bilo odlično, barem bolje od 95% tržišta u Ruskoj Federaciji, prema našim osjećajima, ali postojao je niz malih nijansi koje su formirale dug lanac događaja, koji su prvi doveo do dugog izvještaja o radu, a potom i do ovog članka.

Dakle, napravimo zalihe kokica i dobrodošli u detektivsku priču. Riječ - Pavel Suprunyuk, tehnički menadžer odeljenja „Revizija i konsalting“ Grupe-IB.

Dio 1. Pochkin doktor

2018 Postoji kupac - visokotehnološka IT kompanija, koja i sama opslužuje mnoge klijente. Želi da dobije odgovor na pitanje: da li je moguće, bez ikakvog početnog znanja i pristupa, radeći putem interneta, dobiti administratorska prava Active Directory domena? Ne zanima me nikakav društveni inženjering (oh, ali uzalud), ne namjeravaju namjerno ometati rad, ali mogu slučajno - ponovo učitati server koji čudno radi, na primjer. Dodatni cilj je identificirati što više drugih vektora napada prema vanjskom perimetru. Kompanija redovno sprovodi ovakve testove, a sada je stigao i rok za novo testiranje. Uslovi su skoro tipični, adekvatni, razumljivi. Hajde da počnemo.

Postoji ime kupca - neka to bude "Kompanija", sa glavnom web lokacijom www.company.ru. Naravno, kupac se zove drugačije, ali u ovom članku sve će biti bezlično.
Sprovodim mrežno izviđanje - saznam koje adrese i domene su registrovane kod korisnika, nacrtam mrežni dijagram, kako se usluge distribuiraju na te adrese. Dobio sam rezultat: više od 4000 živih IP adresa. Posmatram domene u tim mrežama: srećom, velika većina su mreže namijenjene klijentima korisnika, a oni nas formalno ne zanimaju. Kupac misli isto.

Ostala je jedna mreža sa 256 adresa, za koju do ovog trenutka već postoji razumijevanje distribucije domena i poddomena po IP adresama, postoje podaci o skeniranim portovima, što znači da možete pogledati servise za interesantne. Paralelno, sve vrste skenera se pokreću na dostupnim IP adresama i zasebno na web stranicama.

Postoji mnogo usluga. Obično je to radost pentestera i iščekivanje brze pobjede, jer što je više servisa, veće je polje za napad i lakše je pronaći artefakt. Brzi pregled web stranica pokazao je da su većina njih web interfejsi poznatih proizvoda velikih svjetskih kompanija, koji vam po svemu sudeći govore da nisu dobrodošli. Traže korisničko ime i lozinku, protresaju polje za unos drugog faktora, traže TLS certifikat klijenta ili ga šalju Microsoft ADFS-u. Neki su jednostavno nedostupni sa interneta. Za neke, očigledno morate imati posebnog plaćenog klijenta za tri plate ili znati tačan URL za unos. Preskočimo još jednu sedmicu postepenog malodušja u procesu pokušaja "probijanja" verzija softvera za poznate ranjivosti, traženja skrivenog sadržaja na web stazama i procurelih naloga sa servisa trećih strana kao što je LinkedIn, pokušaja da se pomoću njih pogode lozinke, kao i kao iskopavanje ranjivosti u samopisnim web stranicama — inače, prema statistikama, ovo je najperspektivniji vektor vanjskog napada danas. Odmah ću primijetiti filmski pištolj koji je naknadno opalio.

Dakle, pronašli smo dvije stranice koje su se izdvojile od stotina usluga. Ove stranice su imale jednu zajedničku stvar: ako se ne upustite u pažljivo istraživanje mreže po domeni, već direktno tražite otvorene portove ili ciljate skener ranjivosti koristeći poznati IP raspon, tada će ove stranice izbjeći skeniranje i jednostavno neće biti vidljiv bez poznavanja DNS imena. Možda su barem ranije promašeni, a naši automatski alati nisu pronašli nikakve probleme s njima, čak i ako su poslani direktno na resurs.

Usput, o onome što su ranije lansirani skeneri pronašli općenito. Da vas podsjetim: za neke ljude "pentest" je ekvivalent "automatskom skeniranju". Ali skeneri na ovom projektu nisu rekli ništa. Pa, maksimum su pokazale srednje ranjivosti (3 od 5 po ozbiljnosti): na nekim servisima loš TLS sertifikat ili zastareli algoritmi šifrovanja, a na većini sajtova Clickjacking. Ali ovo vas neće dovesti do cilja. Možda bi skeneri ovdje bili korisniji, ali da vas podsjetim: kupac i sam može kupiti takve programe i testirati se s njima, a sudeći po lošim rezultatima, već je provjerio.

Vratimo se na “anomalne” lokacije. Prvi je nešto kao lokalni Wiki na nestandardnoj adresi, ali u ovom članku neka to bude wiki.company[.]ru. Takođe je odmah zatražila login i lozinku, ali preko NTLM-a u pretraživaču. Za korisnika ovo izgleda kao asketski prozor koji traži da unese korisničko ime i lozinku. A ovo je loša praksa.

Mala napomena. NTLM na perimetarskim web stranicama je loš iz više razloga. Prvi razlog je taj što je otkriveno ime domene Active Directory. U našem primjeru ispostavilo se da je to i company.ru, baš kao i „eksterno“ DNS ime. Znajući to, možete pažljivo pripremiti nešto zlonamjerno tako da se izvršava samo na domeni organizacije, a ne u nekom sandboxu. Drugo, autentifikacija ide direktno preko kontrolora domena preko NTLM-a (iznenađenje, zar ne?), sa svim karakteristikama „internih“ mrežnih politika, uključujući blokiranje naloga od prekoračenja broja pokušaja unosa lozinke. Ako napadač otkrije podatke za prijavu, pokušat će koristiti lozinke za njih. Ako ste konfigurirani da blokirate račune od unosa pogrešnih lozinki, to će raditi i račun će biti blokiran. Treće, nemoguće je dodati drugi faktor takvoj autentifikaciji. Ako neko od čitalaca još zna kako, neka mi javi, zaista je zanimljivo. Četvrto, ranjivost na napade pass-the-hash. ADFS je izmišljen, između ostalog, da zaštiti od svega ovoga.

Postoji jedno loše svojstvo Microsoft proizvoda: čak i ako niste posebno objavili takav NTLM, on će biti instaliran prema zadanim postavkama u OWA i Lync, barem.

Inače, autor ovog članka je jednom istom metodom slučajno blokirao oko 1000 računa radnika jedne velike banke u samo sat vremena i tada je izgledao pomalo blijedo. Blijede su i informatičke usluge banke, ali se sve završilo dobro i adekvatno, čak smo i pohvaljeni da smo prvi otkrili ovaj problem i isprovocirali brzo i odlučno rješenje.

Druga stranica je imala adresu "očigledno neka vrsta prezimena.company.ru". Našao sam preko Gugla, ovako nešto na strani 10. Dizajn je bio s početka-sredine XNUMX-ih, a ugledna osoba ga je gledala sa glavne stranice, otprilike ovako:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Ovdje sam uzeo kadar iz “Srce psa”, ali vjerujte, bio je maglovito sličan, čak je i dizajn boja bio u sličnim tonovima. Neka se sajt zove preobrazhensky.company.ru.

Bila je to lična web stranica... za urologa. Pitao sam se šta web stranica urologa radi na poddomenu visokotehnološke kompanije. Brzo kopanje u Google-u pokazalo je da je ovaj doktor bio suosnivač jednog od pravnih lica našeg klijenta i da je čak uložio oko 1000 rubalja u odobreni kapital. Stranica je vjerovatno napravljena prije mnogo godina, a serverski resursi korisnika su korišteni kao hosting. Stranica je odavno izgubila svoju relevantnost, ali je iz nekog razloga dugo ostala da radi.

Što se tiče ranjivosti, sama web stranica je bila sigurna. Gledajući unaprijed, reći ću da je to bio skup statičnih informacija – jednostavne html stranice sa umetnutim ilustracijama u obliku bubrega i mjehura. Beskorisno je „razbijati“ takvu stranicu.

Ali web server ispod je bio zanimljiviji. Sudeći po zaglavlju HTTP servera, imao je IIS 6.0, što znači da je koristio Windows 2003 kao operativni sistem. Skener je prethodno utvrdio da je ova konkretna web stranica urologa, za razliku od drugih virtuelnih hostova na istom web serveru, odgovorila na naredbu PROPFIND, što znači da je pokrenula WebDAV. Inače, skener je vratio ovu informaciju sa oznakom Info (na jeziku izveštaja skenera, ovo je najmanja opasnost) - takve stvari se obično jednostavno preskaču. U kombinaciji, ovo je dalo zanimljiv efekat, koji je otkriven tek nakon još jednog kopanja na Google-u: rijetka ranjivost buffer overflow povezana sa Shadow Brokers setom, naime CVE-2017-7269, koji je već imao gotov exploit. Drugim riječima, bit će problema ako imate Windows 2003 i WebDAV radi na IIS-u. Iako pokretanje Windows 2003 u proizvodnji u 2018. predstavlja problem samo po sebi.

Eksploat je završio u Metasploitu i odmah je testiran sa opterećenjem koje je poslalo DNS zahtjev kontrolisanoj usluzi - Burp Collaborator se tradicionalno koristi za hvatanje DNS zahtjeva. Na moje iznenađenje, uspjelo je prvi put: primljen je DNS nokaut. Zatim je došlo do pokušaja kreiranja povratne veze preko porta 80 (odnosno mrežne veze od servera do napadača, sa pristupom cmd.exe na hostu žrtve), ali se onda dogodio fijasko. Veza nije uspostavljena, a nakon trećeg pokušaja korištenja stranice, zajedno sa svim zanimljivim slikama, zauvijek je nestala.

Obično nakon toga slijedi pismo u stilu „mušterija, probudi se, sve smo ispustili“. Ali rečeno nam je da stranica nema nikakve veze s poslovnim procesima i da tu radi bez razloga, kao i cijeli server, te da možemo koristiti ovaj resurs kako hoćemo.
Otprilike dan kasnije stranica je odjednom počela samostalno raditi. Nakon što sam napravio bench od WebDAV-a na IIS-u 6.0, otkrio sam da je zadana postavka ponovno pokretanje IIS radnih procesa svakih 30 sati. Odnosno, kada je kontrola izašla iz shellcode-a, IIS radni proces je završio, zatim se ponovo pokrenuo nekoliko puta i zatim otišao u mirovanje na 30 sati.

Pošto povratno povezivanje na tcp nije uspjelo prvi put, ovaj problem sam pripisao zatvorenom portu. Odnosno, pretpostavio je prisustvo neke vrste firewall-a koji nije dozvoljavao odlaznim vezama da prođu van. Počeo sam pokretati shellcodeove koji su pretraživali mnoge tcp i udp portove, nije bilo efekta. Učitavanje obrnute veze preko http(ova) iz Metasploita nije radilo - meterpreter/reverse_http(s). Odjednom je uspostavljena veza sa istim portom 80, ali je odmah prekinuta. To sam pripisao djelovanju još uvijek imaginarnog IPS-a, kojem se nije svidio promet meterpreter-a. U svjetlu činjenice da čista tcp veza sa portom 80 nije prošla, ali http veza jeste, zaključio sam da je http proxy nekako konfigurisan u sistemu.

Čak sam probao meterpreter preko DNS-a (hvala d00kie za vaš trud, spasio mnoge projekte), prisjećajući se prvog uspjeha, ali nije funkcionirao ni na postolju - shellcode je bio previše obiman za ovu ranjivost.

U stvarnosti je to izgledalo ovako: 3-4 pokušaja napada u roku od 5 minuta, pa čekanje 30 sati. I tako tri sedmice zaredom. Čak sam postavila i podsjetnik da ne gubim vrijeme. Dodatno, postojala je razlika u ponašanju testnog i proizvodnog okruženja: za ovu ranjivost postojala su dva slična exploit-a, jedan iz Metasploita, drugi sa interneta, konvertovan iz Shadow Brokers verzije. Dakle, samo je Metasploit testiran u borbi, a samo drugi je testiran na klupi, što je dodatno otežalo otklanjanje grešaka i razbijalo mozak.

Na kraju, shellcode koji je preuzeo exe fajl sa datog servera preko http i pokrenuo ga na ciljnom sistemu pokazao se efikasnim. Shellcode je bio dovoljno mali da stane, ali je barem radio. Pošto se serveru uopšte nije dopao TCP saobraćaj i da je http(s) proveren na prisustvo meterpretera, odlučio sam da je najbrži način da preuzmem exe fajl koji sadrži DNS-meterpreter kroz ovaj shellcode.

I ovdje je nastao problem: prilikom preuzimanja exe datoteke i, kako su pokušaji pokazali, bez obzira na koju, preuzimanje je prekinuto. Opet, neki sigurnosni uređaj između mog servera i urologa nije volio http promet sa exe unutra. Činilo se da je “brzo” rješenje bilo promijeniti shellcode tako da bi zamaskivao http promet u hodu, tako da bi se apstraktni binarni podaci prenijeli umjesto exe. Konačno, napad je bio uspješan, kontrola je primljena preko tankog DNS kanala:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Odmah je postalo jasno da imam najosnovnija prava na IIS radni tok, koja mi omogućavaju da ne radim ništa. Ovako je to izgledalo na Metasploit konzoli:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Sve pentest metodologije snažno sugeriraju da trebate povećati prava kada dobijete pristup. Obično to ne radim lokalno, jer se prvi pristup posmatra jednostavno kao mrežna ulazna tačka, a kompromitovanje drugog računara na istoj mreži je obično lakše i brže od eskalacije privilegija na postojećem hostu. Ali to ovdje nije slučaj, jer je DNS kanal vrlo uzak i neće dozvoliti da se promet razjasni.

Pod pretpostavkom da ovaj Windows 2003 server nije popravljen zbog poznate ranjivosti MS17-010, tuneliram saobraćaj na port 445/TCP kroz meterpreter DNS tunel na localhost (da, i ovo je moguće) i pokušavam pokrenuti prethodno preuzeti exe preko ranjivost. Napad radi, dobijam drugu vezu, ali sa SYSTEM pravima.

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora

Zanimljivo je da su ipak pokušali da zaštite server od MS17-010 – imao je onemogućene ranjive mrežne usluge na eksternom interfejsu. Ovo štiti od napada preko mreže, ali napad iznutra na localhost je uspio, jer ne možete jednostavno brzo isključiti SMB na lokalnom hostu.

Zatim se otkrivaju novi zanimljivi detalji:

  1. Imajući SYSTEM prava, možete lako uspostaviti povratnu vezu preko TCP-a. Očigledno, onemogućavanje direktnog TCP-a je striktno problem za ograničenog korisnika IIS-a. Spoiler: IIS korisnički promet je nekako bio umotan u lokalni ISA proxy u oba smjera. Kako tačno radi, nisam reproducirao.
  2. Ja sam u određenom "DMZ" (a ovo nije domen Active Directory, već RADNA GRUPA) - zvuči logično. Ali umjesto očekivane privatne („sive“) IP adrese, imam potpuno „bijelu“ IP adresu, potpuno istu kao i ona koju sam ranije napao. To znači da je kompanija toliko stara u svijetu IPv4 adresiranja da može sebi priuštiti održavanje DMZ zone za 128 „bijelih“ adresa bez NAT-a prema šemi, kako je opisano u Cisco priručnicima iz 2005. godine.

Pošto je server star, Mimikatz garantovano radi direktno iz memorije:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Dobijem lozinku lokalnog administratora, tuneliram RDP saobraćaj preko TCP-a i prijavljujem se na ugodnu radnu površinu. Pošto sam sa serverom mogao da radim šta god sam hteo, uklonio sam antivirus i otkrio da je serveru moguće pristupiti sa interneta samo preko TCP portova 80 i 443, a 443 nije zauzet. Postavio sam OpenVPN server na 443, dodao NAT funkcije za svoj VPN promet i dobio direktan pristup DMZ mreži u neograničenom obliku preko mog OpenVPN-a. Važno je napomenuti da je ISA, s nekim neisključenim IPS funkcijama, blokirao moj promet skeniranjem portova, zbog čega je morao biti zamijenjen jednostavnijim i kompatibilnijim RRAS-om. Dakle, pentesteri ponekad i dalje moraju davati razne stvari.

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Pažljivi čitatelj će pitati: „Šta je sa drugom web lokacijom - wikijem s NTLM autentifikacijom, o kojoj je toliko napisano?“ Više o tome kasnije.

Dio 2. Još uvijek ne šifrirate? Onda već dolazimo kod vas

Dakle, postoji pristup segmentu DMZ mreže. Morate otići do administratora domene. Prvo što vam pada na pamet je automatska provjera sigurnosti servisa unutar DMZ segmenta, pogotovo što je mnogo više njih otvoreno za istraživanje. Tipična slika tokom testa penetracije: vanjski perimetar je bolje zaštićen od internih servisa, a kada se dobije bilo kakav pristup unutar velike infrastrukture, mnogo je lakše dobiti proširena prava na domenu samo zbog činjenice da ovaj domen počinje biti dostupno alatima, i drugo, u infrastrukturi sa nekoliko hiljada hostova, uvijek će postojati nekoliko kritičnih problema.

Punim skenere preko DMZ-a preko OpenVPN tunela i čekam. Otvaram izveštaj - opet ništa ozbiljno, očigledno je neko prošao isti metod pre mene. Sljedeći korak je ispitati kako hostovi unutar DMZ mreže komuniciraju. Da biste to učinili, prvo pokrenite uobičajeni Wireshark i poslušajte zahtjeve za emitiranje, prvenstveno ARP. ARP paketi su prikupljani cijeli dan. Ispostavilo se da se u ovom segmentu koristi nekoliko gateway-a. Ovo će vam dobro doći kasnije. Kombinacijom podataka o ARP zahtjevima i odgovorima te podataka skeniranja portova, pronašao sam izlazne točke korisničkog prometa unutar lokalne mreže uz one usluge koje su prethodno bile poznate, kao što su web i pošta.

Pošto trenutno nisam imao pristup drugim sistemima i nisam imao nijedan nalog za korporativne usluge, odlučeno je da iz prometa izvučem barem neki nalog koristeći ARP Spoofing.

Cain&Abel je pokrenut na serveru urologa. Uzimajući u obzir identifikovane tokove saobraćaja, odabrani su najperspektivniji parovi za napad čovek u sredini, a zatim je primljen deo mrežnog saobraćaja kratkoročnim pokretanjem u trajanju od 5-10 minuta, sa tajmerom za ponovno pokretanje servera. u slučaju smrzavanja. Kao u šali, bile su dvije vijesti:

  1. Dobro: uhvaćeno je mnogo akreditiva i napad je u cjelini uspio.
  2. Loše: svi akreditivi su bili od vlastitih klijenata kupca. Prilikom pružanja usluga podrške, stručnjaci za korisnike povezivali su se s uslugama klijenata koji nisu uvijek imali konfiguriranu enkripciju prometa.

Kao rezultat toga, stekao sam mnogo akreditiva koji su bili beskorisni u kontekstu projekta, ali svakako zanimljivi kao demonstracija opasnosti od napada. Granični ruteri velikih kompanija sa telnetom, proslijeđeni debug http portovi na interni CRM sa svim podacima, direktan pristup RDP-u iz Windows XP-a na lokalnoj mreži i ostalo mračnjaštvo. Ispalo je ovako Kompromis lanca opskrbe prema matrici MITER.

Našao sam i smiješnu priliku da skupljam pisma iz saobraćaja, ovako nešto. Ovo je primjer gotovog pisma koje je od našeg klijenta otišlo na SMTP port njegovog klijenta, opet, bez enkripcije. Izvjesni Andrey traži od svog imenjaka da ponovo pošalje dokumentaciju, a ona se učitava na cloud disk s loginom, lozinkom i linkom u jednom pismu odgovora:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Ovo je još jedan podsjetnik za šifriranje svih usluga. Ne zna se ko će i kada konkretno čitati i koristiti vaše podatke - provajder, sistem administrator neke druge kompanije ili takav pentester. Šutim o činjenici da mnogi ljudi jednostavno mogu presresti nešifrirani promet.

Uprkos očiglednom uspjehu, to nas nije približilo cilju. Moglo se, naravno, dugo sjediti i izvlačiti vrijedne informacije, ali nije činjenica da bi se tamo pojavile, a sam napad je vrlo rizičan u smislu integriteta mreže.

Nakon još jednog kopanja u servise, pala mi je na pamet zanimljiva ideja. Postoji takav uslužni program koji se zove Responder (lako je pronaći primjere korištenja pod ovim imenom), koji "trovanjem" zahtjeva za emitiranje provocira veze putem raznih protokola kao što su SMB, HTTP, LDAP, itd. na različite načine, zatim traži od svih koji se povežu da se autentifikuju i postavljaju tako da se autentikacija odvija preko NTLM-a iu načinu transparentnom za žrtvu. Najčešće, napadač na ovaj način prikuplja NetNTLMv2 rukovanja i iz njih, koristeći rječnik, brzo obnavlja lozinke korisničke domene. Ovdje sam želio nešto slično, ali korisnici su sjedili “iza zida”, odnosno bili su odvojeni firewall-om i pristupali WEB-u preko Blue Coat proxy klastera.

Zapamtite, naveo sam da se ime domene Active Directory poklapa sa „eksternom“ domenom, odnosno da je to company.ru? Dakle, Windows, tačnije Internet Explorer (i Edge i Chrome), omogućavaju korisniku da se transparentno autentifikuje u HTTP-u preko NTLM-a ukoliko smatra da se sajt nalazi u nekoj „Intranet zoni“. Jedan od znakova “Intraneta” je pristup “sivoj” IP adresi ili kratkom DNS imenu, odnosno bez tačaka. Pošto su imali server sa „belim“ IP i DNS imenom preobrazhensky.company.ru, a mašine domena obično dobijaju sufiks domene Active Directory preko DHCP-a za pojednostavljeni unos imena, morali su samo da upišu URL u adresnu traku preobrazhensky, kako bi pronašli pravi put do servera kompromitovanog urologa, ne zaboravljajući da se to sada zove „Intranet“. Odnosno, istovremeno mi daje korisnikov NTLM rukovanje bez njegovog znanja. Ostaje samo da se klijentski pretraživači nateraju da razmisle o hitnoj potrebi da kontaktiraju ovaj server.

Prekrasan uslužni program Intercepter-NG priskočio je u pomoć (hvala Interceptor). Omogućio vam je da mijenjate promet u hodu i odlično je radio na Windows-u 2003. Čak je imao i odvojenu funkcionalnost za modifikaciju samo JavaScript datoteka u toku saobraćaja. Planirana je neka vrsta masivnog Cross-Site Scriptinga.

Blue Coat proksiji, preko kojih su korisnici pristupali globalnom WEB-u, povremeno su keširali statički sadržaj. Presretanjem saobraćaja bilo je jasno da rade danonoćno, beskrajno tražeći često korištenu statiku za ubrzavanje prikaza sadržaja u vršnim satima. Osim toga, BlueCoat je imao specifičnog User-Agenta, koji ga je jasno razlikovao od pravog korisnika.

Pripremljen je Javascript, koji je, koristeći Intercepter-NG, implementiran sat vremena noću za svaki odgovor sa JS fajlovima za Blue Coat. Skripta je uradila sledeće:

  • Odredio trenutni pretraživač od strane User-Agenta. Ako je to bio Internet Explorer, Edge ili Chrome, nastavio je raditi.
  • Čekao sam da se formira DOM stranice.
  • Umetnuta nevidljiva slika u DOM sa src atributom forme preobrazhensky:8080/NNNNNNN.png, gdje su NNN proizvoljni brojevi tako da BlueCoat ne kešira.
  • Postavite globalnu varijablu zastavice koja označava da je injekcija završena i da više nema potrebe za umetanjem slika.

Pregledač je pokušao učitati ovu sliku; na portu 8080 kompromitovanog servera, TCP tunel je čekao na moj laptop, gdje je radio isti Responder, zahtijevajući od pretraživača da se prijavi preko NTLM-a.

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Sudeći po zapisnicima Responder-a, ljudi su ujutro dolazili na posao, uključivali svoje radne stanice, a zatim masovno i neprimjetno počeli posjećivati ​​server urologa, ne zaboravljajući da „isprazne“ NTLM rukovanje. Rukovanje je pljuštalo cijeli dan i jasno nakupilo materijal za očito uspješan napad na vraćanje lozinki. Ovako su izgledali zapisnici odgovora:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i RoskomnadzoraMasovne tajne posjete serveru urologa od strane korisnika

Vjerovatno ste već primijetili da je cijela ova priča izgrađena po principu „sve je bilo u redu, ali onda je došlo do nevolje, pa je došlo do prevladavanja i onda je sve došlo do uspjeha“. Dakle, tu je bila nevolja. Od pedeset jedinstvenih rukovanja, nijedan nije otkriven. A ovo uzima u obzir činjenicu da se čak i na laptopu sa mrtvim procesorom, ova NTLMv2 rukovanja obrađuju brzinom od nekoliko stotina miliona pokušaja u sekundi.

Morao sam se naoružati tehnikama mutacije lozinke, video karticom, debljim rječnikom i čekati. Nakon dužeg vremena otkriveno je nekoliko naloga sa lozinkama oblika “Q11111111....1111111q”, što sugeriše da su svi korisnici nekada bili primorani da smisle veoma dugačku lozinku sa različitim malim i malim slovima, što je takođe trebalo da biti kompleksan. Ali iskusnog korisnika ne možete prevariti, a ovako je sebi olakšao pamćenje. Ukupno je kompromitovano oko 5 naloga, a samo jedan od njih je imao vrijedna prava na usluge.

Dio 3. Roskomnadzor uzvraća udarac

Dakle, prvi domenski nalozi su primljeni. Ako do ovog trenutka niste zaspali od dugog čitanja, vjerovatno ćete se sjetiti da sam spomenuo uslugu koja nije zahtijevala drugi faktor autentifikacije: to je wiki sa NTLM autentifikacijom. Naravno, prvo je trebalo ući tamo. Kopanje po internoj bazi znanja brzo je donijelo rezultate:

  • Kompanija ima WiFi mrežu sa autentifikacijom koristeći domenske naloge sa pristupom lokalnoj mreži. Sa trenutnim skupom podataka, ovo je već radni vektor napada, ali morate u kancelariju otići nogama i biti locirani negdje na teritoriji ureda korisnika.
  • Našao sam instrukciju prema kojoj postoji servis koji je omogućio... da samostalno registruje uređaj za autentifikaciju “drugog faktora” ako je korisnik unutar lokalne mreže i pouzdano pamti svoju domensku prijavu i lozinku. U ovom slučaju, „iznutra“ i „izvana“ je određena dostupnost porta ove usluge korisniku. Port nije bio dostupan sa Interneta, ali je bio prilično dostupan preko DMZ-a.

Naravno, kompromitovanom nalogu je odmah dodat „drugi faktor“ u vidu aplikacije na mom telefonu. Postojao je program koji je mogao glasno poslati push zahtjev na telefon pomoću dugmadi za "odobri"/"odobrati" radnju ili tiho prikazati OTP kod na ekranu za daljnji samostalni unos. Štaviše, prva metoda je prema uputstvima trebala biti jedina ispravna, ali nije funkcionirala, za razliku od OTP metode.

Pošto je „drugi faktor“ prekinut, mogao sam da pristupim Outlook Web Access pošti i udaljenom pristupu u Citrix Netscaler Gateway-u. Došlo je iznenađenje u mailu u Outlooku:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Na ovom rijetkom snimku možete vidjeti kako Roskomnadzor pomaže pentesterima

Bili su to prvi mjeseci nakon famoznog „navijačkog“ blokiranja Telegrama, kada su čitave mreže sa hiljadama adresa neumitno nestale iz pristupa. Postalo je jasno zašto guranje nije upalilo odmah i zašto moja "žrtva" nije oglasila alarm jer su počeli da koriste njen nalog tokom radnog vremena.

Svi koji poznaju Citrix Netscaler zamišljaju da se obično implementira na način da se korisniku može prenijeti samo sučelje slike, pokušavajući mu ne dati alate za pokretanje aplikacija trećih strana i prijenos podataka, ograničavajući na sve moguće načine radnje kroz standardne kontrolne školjke. Moja "žrtva", zbog svog zanimanja, dobila je samo 1C:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Nakon što sam malo prošetao 1C interfejsom, otkrio sam da tamo postoje eksterni moduli za obradu. Mogu se učitati iz interfejsa, a izvršavaće se na klijentu ili serveru, u zavisnosti od prava i podešavanja.

Zamolio sam svoje prijatelje 1C programere da kreiraju obradu koja bi prihvatila string i izvršila ga. U 1C jeziku, pokretanje procesa izgleda otprilike ovako (preuzeto sa interneta). Slažete li se da sintaksa 1C jezika zadivljuje ljude koji govore ruski svojom spontanošću?

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora

Obrada je izvedena savršeno, ispostavilo se da je to ono što pentesteri zovu „ljuska“ – preko nje je pokrenut Internet Explorer.

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Ranije je u pošti pronađena adresa sistema koji vam omogućava da naručite propusnice za teritoriju. Naručio sam propusnicu u slučaju da moram koristiti WiFi vektor napada.

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Na internetu se priča da je još uvijek bio ukusan besplatni ketering u kancelariji kupca, ali ja sam ipak radije razvijao napad na daljinu, tako je mirnije.

AppLocker je aktiviran na serveru aplikacija na kojem je pokrenut Citrix, ali je zaobiđen. Isti Meterpreter je učitan i pokrenut preko DNS-a, pošto http(s) verzije nisu htele da se povežu, a ja nisam znao internu proxy adresu u to vreme. Inače, od ovog trenutka vanjski pentest se u suštini potpuno pretvorio u unutrašnji.

Dio 4. Administratorska prava za korisnike su loša, u redu?

Prvi zadatak pentestera kada dobije kontrolu nad sesijom korisnika domene je da prikupi sve informacije o pravima u domenu. Postoji BloodHound uslužni program koji vam automatski omogućava preuzimanje informacija o korisnicima, računarima, sigurnosnim grupama putem LDAP protokola sa kontrolera domene, a preko SMB - informacija o tome koji korisnik se nedavno prijavio gdje je i ko je lokalni administrator.

Tipična tehnika za oduzimanje administratorskih prava domene izgleda pojednostavljeno kao ciklus monotonih radnji:

  • Idemo na domenske računare na kojima postoje lokalna administratorska prava, na osnovu već uhvaćenih domenskih naloga.
  • Pokrećemo Mimikatz i dobijamo keširane lozinke, Kerberos tikete i NTLM hasheve domenskih naloga koji su se nedavno prijavili na ovaj sistem. Ili uklanjamo memorijsku sliku procesa lsass.exe i radimo isto na našoj strani. Ovo dobro funkcioniše sa Windowsima mlađim od 2012R2/Windows 8.1 sa podrazumevanim postavkama.
  • Određujemo gdje kompromitovani nalozi imaju prava lokalnog administratora. Ponavljamo prvu tačku. U nekoj fazi dobijamo administratorska prava za cijeli domen.

“Kraj ciklusa;”, kako bi ovdje napisali 1C programeri.

Dakle, ispostavilo se da je naš korisnik lokalni administrator na samo jednom hostu sa Windows 7, u čijem je nazivu pisalo “VDI”, ili “Virtual Desktop Infrastructure”, lične virtuelne mašine. Vjerovatno je dizajner VDI servisa mislio da, budući da je VDI lični operativni sistem korisnika, čak i ako korisnik promijeni softversko okruženje kako želi, host se i dalje može „ponovno učitati“. Takođe sam mislio da je generalno ideja dobra, otišao sam kod ovog ličnog VDI hosta i tamo se ugnezdio:

  • Tamo sam instalirao OpenVPN klijent, koji je napravio tunel kroz Internet do mog servera. Klijent je morao biti primoran da prođe kroz isti Blue Coat sa autentifikacijom domena, ali je OpenVPN to učinio, kako kažu, "iz kutije".
  • Instaliran OpenSSH na VDI. Pa, stvarno, šta je Windows 7 bez SSH?

Ovako je to izgledalo uživo. Da vas podsjetim da se sve ovo mora uraditi preko Citrixa i 1C:

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Jedna tehnika za promoviranje pristupa susjednim računarima je provjera lozinki lokalnog administratora da li se podudaraju. Ovdje je sreća odmah čekala: NTLM heš zadanog lokalnog administratora (koji je iznenada nazvan Administrator) pristupio je napadom pass-the-hash na susjedne VDI hostove, kojih je bilo nekoliko stotina. Naravno, napad ih je odmah pogodio.

Ovdje su VDI administratori dva puta pucali sebi u nogu:

  • Prvi put je bilo kada VDI mašine nisu bile stavljene pod LAPS, u suštini zadržavajući istu lozinku lokalnog administratora sa slike koja je bila masovno raspoređena na VDI.
  • Podrazumevani administrator je jedini lokalni nalog koji je ranjiv na napade sa heširanjem. Čak i sa istom lozinkom, bilo bi moguće izbjeći masovni kompromis kreiranjem drugog naloga lokalnog administratora sa složenom slučajnom lozinkom i blokiranjem zadane.

Zašto postoji SSH usluga na tom Windowsu? Vrlo jednostavno: sada OpenSSH server ne samo da pruža zgodnu interaktivnu komandnu ljusku bez ometanja rada korisnika, već i socks5 proxy na VDI. Preko ovih čarapa sam se povezao preko SMB-a i prikupio keširane naloge sa svih ovih stotina VDI mašina, a zatim tražio put do administratora domena koristeći ih u BloodHound grafovima. Sa stotinama domaćina na raspolaganju, vrlo brzo sam pronašao ovaj put. Dobijena su administratorska prava domene.

Evo slike sa interneta koja prikazuje sličnu pretragu. Veze pokazuju ko je gde je administrator i ko je gde prijavljen.

Jednom pentest, ili Kako sve razbiti uz pomoć urologa i Roskomnadzora
Usput, zapamtite uvjet s početka projekta - "ne koristite društveni inženjering." Dakle, predlažem da razmislimo o tome koliko bi sav ovaj Bollywood sa specijalnim efektima bio odsječen da je još uvijek moguće koristiti banalni phishing. Ali lično, meni je bilo veoma interesantno da radim sve ovo. Nadam se da ste uživali čitajući ovo. Naravno, ne izgleda svaki projekat toliko intrigantan, ali je posao u cjelini vrlo izazovan i ne dopušta da stagnira.

Vjerovatno će neko imati pitanje: kako se zaštititi? Čak i ovaj članak opisuje mnoge tehnike, za mnoge od kojih Windows administratori ni ne znaju. Međutim, predlažem da ih sagledamo iz perspektive izluđenih principa i mjera sigurnosti informacija:

  • nemojte koristiti zastarjeli softver (sjećate se Windows 2003 na početku?)
  • ne držite uključene nepotrebne sisteme (zašto je postojala web stranica urologa?)
  • sami provjerite korisničke lozinke (inače će vojnici... pentesteri to učiniti)
  • nemaju iste lozinke za različite račune (VDI kompromis)
  • i drugih

Naravno, ovo je vrlo teško implementirati, ali u sljedećem članku ćemo u praksi pokazati da je to sasvim moguće.

izvor: www.habr.com

Dodajte komentar