Dom · Sigurnost · Potrebno je povećanje prava pristupa. Podizanje privilegija korisnika u Windows-u

Potrebno je povećanje prava pristupa. Podizanje privilegija korisnika u Windows-u

Mnogi programi zahtijevaju podizanje prava pri pokretanju (ikona štita pored ikone), ali u stvari ne zahtijevaju administratorska prava za svoj normalan rad (na primjer, ručno ste dodijelili potrebna prava korisnicima za direktorij programa u ProgramFiles i grane registra koje koristi program). U skladu s tim, kada pokrećete takav program kao jednostavan korisnik, ako je na računalu omogućena kontrola korisničkog računa, pojavit će se UAC prompt i od korisnika će se tražiti da unese administratorsku lozinku. Da bi zaobišli ovaj mehanizam, mnogi jednostavno onemogućuju UAC ili daju korisniku administratorska prava na računaru dodavanjem u grupu lokalnih administratora. Naravno, obje ove metode nisu bezbedne.

Zašto običnoj aplikaciji mogu biti potrebna administratorska prava

Programu će možda biti potrebna administratorska prava da modificira određene datoteke (logove, konfiguracije, itd.) u vlastitom folderu u C:\Program Files (x86)\SomeApp). Korisnici prema zadanim postavkama nemaju prava za uređivanje ovog direktorija, stoga su za normalan rad takvog programa potrebna administratorska prava. Da biste riješili ovaj problem, morate ručno dodijeliti prava promjene/pisanja korisniku (ili grupi korisnika) na programsku fasciklu kao administrator na NTFS nivou.

Bilješka. Zapravo, praksa pohranjivanja promjenjivih podataka aplikacije u vlastiti direktorij pod C:\Program Files je netačna. Ispravnije je pohraniti podatke aplikacije u korisnički profil. Ali ovo je pitanje lijenosti i nesposobnosti programera.

Pokretanje programa koji zahtijeva administratorska prava od standardnog korisnika

Prethodno smo opisali kako možete koristiti parametar RunAsInvoker. Međutim, ova metoda nije dovoljno fleksibilna. Možete ga koristiti i sa čuvanjem lozinke administratora /SAVECRED (takođe nesigurno). Razmotrimo jednostavniji način da prisilite bilo koji program da se pokrene bez administratorskih prava (i bez unošenja administratorske lozinke) sa omogućenim UAC-om (4.3 ili nivo 2).

Na primjer, uzmimo uslužni program za uređivanje registra - regedit.exe(nalazi se u direktoriju C:\windows\system32). Kada pokrenete regedit.exe, pojavljuje se UAC prozor i, osim ako ne potvrdite povišenje privilegija, uređivač registra se ne pokreće.

Kreirajmo fajl na radnoj površini run-as-non-admin.bat sa sljedećim tekstom:

cmd /min /C "postavi __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Sada da biste prisilili aplikaciju da se pokrene bez administratorskih prava i potisnuli UAC prompt, jednostavno prevucite željeni exe fajl na ovu bat datoteku na radnoj površini.

Nakon toga, Registry Editor bi trebao pokrenuti bez da se pojavi UAC prompt. Otvorite upravitelj procesa i dodajte kolonu Povišen(Sa višim nivoom dozvole), vidjet ćete da sistem ima proces regedit.exe sa statusom koji nije povišen (pokreće se sa korisničkim pravima).

Pokušajte urediti bilo koji parametar u HKLM grani. Kao što vidite, pristup za uređivanje registra u ovoj grani je odbijen (ovaj korisnik nema prava da upisuje u grane sistemskog registra). Ali možete dodavati i uređivati ​​ključeve u vlastitoj grani registra korisnika - HKCU.

Na isti način možete pokrenuti određenu aplikaciju kroz bat datoteku, samo navedite putanju do izvršne datoteke.

run-app-as-non-admin.bat

Postavite ApplicationPath="C:\Program Files\MyApp\testapp.exe"
cmd /min /C "postavi __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Možete dodati i kontekstni meni, koji dodaje mogućnost pokretanja svih aplikacija bez povišenja. Da biste to učinili, kreirajte sljedeću reg datoteku i uvezite je u registar.

Windows Registry Editor verzija 5.00


@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Nakon toga, da biste pokrenuli bilo koju aplikaciju bez administratorskih prava, samo odaberite stavku "" u kontekstnom izborniku.

__COMPAT_LAYER varijabla okruženja i parametar RunAsInvoker

Varijabla okruženja __COMPAT_LAYER vam omogućava da postavite različite razine kompatibilnosti za aplikacije (tab Kompatibilnost u svojstvima exe datoteke). Koristeći ovu varijablu, možete odrediti postavke kompatibilnosti s kojima bi se program trebao pokrenuti. Na primjer, da biste pokrenuli aplikaciju u načinu kompatibilnosti sa sustavom Windows 7 i rezoluciji 640x480, postavite:

set __COMPAT_LAYER=Win7RTM 640x480

Među opcijama varijable __COMPAT_LAYER koje su nam zanimljive izdvajamo sljedeće parametre:

  • RunAsInvoker- pokretanje aplikacije s privilegijama roditeljskog procesa bez UAC zahtjeva.
  • RunAsHighest- pokretanje aplikacije sa maksimalnim pravima koja su dostupna korisniku (UAC zahtjev se pojavljuje ako korisnik ima administratorska prava).
  • RunAsAdmin- pokrenite aplikaciju s administratorskim pravima (uvijek se pojavljuje AUC prompt).

One. Parametar RunAsInvoker ne daje administratorska prava, već samo blokira izgled UAC prozora.

UAC(Kontrola korisničkog naloga) je tehnologija kontrole naloga koja se prvi put pojavila u Windows Vista i starije. Ova tehnologija sprečava programe da izvršavaju radnje koje zahtijevaju administratorska prava. Kada program izvrši takve radnje, njegov rad se obustavlja i korisniku se prikazuje prozor sa zahtjevom na zaštićenoj radnoj površini (tako da je nemoguće programski pritisnuti dugme OK). Na primjer, ako vaš program treba da izvrši promjene u ključu registratora HKEY_LOCAL_MACHINE, tada će joj trebati administratorska prava.
Da biste riješili ovaj problem, možete koristiti implementaciju manifest datoteke u projektu, koju će operativni sistem pročitati i automatski odrediti parametre potrebne za pokretanje.
Hajde da razmislimo o uvođenju datoteke manifesta u aplikaciju " Windows Form" Da biste to učinili, otvorite Visual Studio (u ovom primjeru se koristi verzija 2012) i kreirajte projekat " Windows Form" otvori " Solution Explorer(Solution Explorer), koji pruža organizovani pregled projekata i njihovih datoteka, idite na meni Pogled» - « Solution Explorer" Desni klik na " Solution Explorer" po nazivu projekta i izaberite iz kontekstnog menija, " Dodati» - « Kreiraj element...».

Otvoriće se novi prozor " Dodavanje novog elementa -..." potražite element Visual C# pod nazivom " Datoteka manifesta aplikacije", odaberite ga i kliknite na " Dodati».

U " Solution Explorer„Imat ćete novu stavku s imenom datoteke manifesta. Također će se automatski otvoriti u uređivaču koda.

Da biste konfigurirali prava potrebna za pokretanje aplikacije, morate odrediti nivo sigurnosti i opisati element “ requestedExecutionLevel" Ovaj element nema podređene elemente i ima sljedeće atribute:
1) Nivo- Obavezno. Postavlja nivo sigurnosti koji je potreban aplikaciji. Za ovaj atribut su dostupne sljedeće vrijednosti:
  • asInvoker- aplikacija počinje s pravima nadređenog procesa. To znači da ako pokrenete program iz aplikacije koja je već pokrenuta s administratorskim pravima, on će automatski imati ista prava. Ovaj način rada Microsoft preporučuje u većini slučajeva. One. To su oni programi koji ne zahtijevaju administratorska prava;
  • najvišeAvailable— aplikacija se pokreće s većim pravima nego što ih ima trenutni korisnik. Regedit.exe, Mmc.exe se pokreću sa ovim pravima;
  • requireAdministrator- traže se puna administratorska prava. One. potrebno za aplikacije koje se ne mogu pokrenuti bez administratorskih prava.

Instaliranje aplikacija " ClickOnce" je moguće samo sa vrijednošću "asInvoker". Bilo koja druga vrijednost neće dozvoliti instalaciju.

2) uiAccess- Opciono. Označava da li aplikacija zahtijeva pristup zaštićenim elementima korisničkog sučelja za implementaciju funkcija pristupačnosti. Dostupne vrijednosti" istinito" i " false", zadana vrijednost je " false". Značenje" istinito" moraju imati samo potpisane aplikacije i biti pokrenute iz foldera "\Program Files\" i "\windows\system32\". Najčešće to nije potrebno.
Da bi program prilikom pokretanja zahtijevao podizanje prava na nivo administratora, zamijenite atribut “ Nivo" zadana vrijednost " asInvoker" na " requireAdministrator».

Konstruirajte rješenje pritiskom na " F6" Ako ste sve učinili ispravno, tada će se u operativnim sistemima Windows Vista i starijim na ikoni izvršne datoteke programa pojaviti ikona štita, što ukazuje da ovaj program zahtijeva podizanje prava.

Da biste provjerili dozvole vaše aplikacije, možete koristiti donju listu.
string s = novi WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator) ? "Administrator" : "Redovni korisnik"; Ako imate konzolnu aplikaciju, princip rada je isti.

Hm, razlika između jednog i drugog je samo u tome kako se podešavaju parametri kompatibilnosti, u prvom slučaju - ručno, u drugom - isto, samo preko čarobnjaka. Ali svejedno hvala na detaljnom odgovoru))

Hvala, znam))))))))))))))))))

Ok, ja sam admin (možda malo nepismen, ali nadam se da ću stići...) Kako mi je dozvoljeno da pokrenem ovu aplikaciju (i samo ovu)? Istovremeno, kako ne bi stalno trčao na svoju mašinu (da unese lokalnu administratorsku lozinku, koju ne bi trebao znati) kada treba da pokrene ovu aplikaciju.

Veoma sam vam zahvalan što ste me podsjetili na dio predavanja na temu “Operativni sistemi”. Daću vam još jedan, sada već klasičan primjer:

Ponekad korisnik mora promijeniti svoju lozinku za prijavu. Sam korisnik nema prava pristupa bazi lozinki. Međutim, program koji koristi za promjenu lozinke radi s povišenim pravima. Što mu omogućava da na kraju promijeni lozinku.

Dakle, moj slučaj je sličan. Kako da "kažem" sistemu da bi se program trebao pokrenuti s povišenim pravima? U ovom slučaju, pokrenut će ga korisnik iz grupe "korisnik"/"power user".

Ovo se zapravo može učiniti pokretanjem programa kao "planirani zadatak" kao drugi korisnik. Sve bi bilo u redu - čak se i pokreće, ali se grafički interfejs (programski prozori) ne prikazuje na radnoj površini korisnika...

Konceptualna kontradikcija??? Gore sam dao primjer - zadatak je sasvim standardan za bilo koji OS. Jednostavno ne želim to rješavati pomoću alata trećih strana (nisu uključeni u Windows Vista). Već sam onemogućio UAC - u svakom slučaju aplikacija radi ispravno samo sa administratorskim pravima, tako je - specifično.... Čini se da nije moguće uključiti ovog korisnika u lokalnu grupu "Administratori" iz sigurnosnih razloga .

Što se tiče scenarija - za runas postoji zastavica koja vam omogućava da zapamtite lozinku, ali u ovom slučaju korisnik će moći da pokrene bilo koji program sa administratorskim pravima.

To znači da ne želim da lansiram softver čiji izvorni kod niko nije video, ništa se ne zna o dobavljaču i čija je web stranica „u rukama ljudi“. Šta je sa korisnicima - eh, da je to bilo dovoljno, onda se ova rasprava ne bi pojavila na forumu..... =(

Voleo bih da verujem da nije sve tako loše.

Podizanje privilegija je možda jedna od ključnih tačaka od kojih zavisi scenario daljeg pentestiranja ili napada. Vrlo često se sve završi u ovoj fazi ako nije moguće “proširiti svoje moći”. Stoga ćemo danas malo govoriti o načinima koji omogućavaju korisniku da poveća svoje privilegije ne samo administratoru, već i sistemu.

Uvod

Povećanje privilegija je malo drugačije u Windowsima i Linuxu. Iako oba operativna sistema nose uobičajeni broj ranjivosti, istraživači primjećuju da je potpuno zakrpljen Windows server mnogo češći od Linux servera koji je ažuriran na najnovije stanje. Osim toga, vrijeme izdavanja Windows zakrpa je često kraće, što povećanje privilegija na Windows-u čini prilično zanimljivim i ambicioznim zadatkom. Njoj ćemo posvetiti našu priču.

Opcije

Dakle, koje mogućnosti imamo da se uzdignemo u Windows svijetu? Prije svega, nedavno je pronađeno dovoljno ranjivosti vezanih za raščlanjivanje fontova u jezgru OS-a, što čini proces eskalacije privilegija prilično jednostavnim ako imate pri ruci odgovarajući exploit. Ako koristite Metasploit, dovoljna je samo jedna komanda da dobijete sistemsku ljusku. Međutim, sve ovo će vjerovatno uspjeti samo ako sistem nije u potpunosti zakrpljen. Ako su sva ažuriranja instalirana na mašini, tada, za razliku od Linuxa, neće biti moguće pronaći SUID binarne datoteke, a varijable okruženja se obično ne prosleđuju uslugama ili procesima sa višim privilegijama. Šta nam ostaje kao rezultat?

Od administratora do sistema, ili ono što svi znaju

Obično, kada razmišljate o eskaliranju privilegija, metoda koja vam odmah pada na pamet je korištenje planera zadataka. U Windows-u možete dodati zadatak koristeći dva uslužna programa: at i schtasks. Drugi će pokrenuti zadatak u ime korisnika koji je dodao zadatak, dok će se prvi pokrenuti u ime sistema. Standardni trik za koji ste vjerovatno čuli koji vam omogućava da pokrenete konzolu sa sistemskim pravima:

U 13:01 /interaktivni cmd

Druga stvar koja vam pada na pamet je dodavanje servisa koji će pokrenuti potrebnu datoteku / izvršiti naredbu:

@echo off @break off title root Cls echo Kreiranje usluge. sc create evil binpath= "cmd.exe /K start" type= own type= interakcija > nul 2>&1 echo Pokretanje usluge. sc start evil > nul 2>&1 echo U pripravnosti... ping 127.0.0.1 -n 4 > nul 2>&1 echo Uklanjanje usluge. echo. sc delete evil > nul 2>&1

Treći metod je zamjena sistemskog uslužnog programa C:\windows\system32\sethc.exe, na primjer, cmd. Ako se nakon ovoga odjavite i pritisnete tipku Shift nekoliko puta, pojavit će se konzola sa sistemskim pravima.

Što se tiče automatizovanih metoda, Metasploit i njegov getsystem odmah padaju na pamet. Alternativna opcija je PsExec iz Sysinternals-a (psexec -i -s -d cmd.exe).

Ići ćemo drugim putem

Sve ove metode imaju zajednički nedostatak: potrebne su privilegije administratora. To znači da eskaliramo privilegije sa privilegovanog naloga. U većini slučajeva, kada ste dobili administratorska prava, imate gomilu opcija kako da se još više uzdignete. Dakle, to nije baš težak zadatak. Danas ćemo govoriti o metodama za eskalaciju privilegija koje ne koriste nikakve 0-dnevne ranjivosti, pod pretpostavkom da imamo normalan sistem i nalog običnog neprivilegovanog korisnika.

Potraga za vjerodajnicama

Jedan od pouzdanih i stabilnih načina za povećanje privilegija i učvršćivanje u sistemu je dobijanje lozinki administratora ili korisnika sa višim privilegijama. A sada je vrijeme da se prisjetimo automatizirane instalacije softvera. Ako upravljate domenom koja uključuje veliku flotu mašina, definitivno ne želite ići i ručno instalirati softver na svaku od njih. I trebat će toliko vremena da neće biti dovoljno za druge zadatke. Stoga se koriste instalacije bez nadzora koje generiraju datoteke koje sadrže administratorske lozinke u svom najčistijem obliku. Što je jednostavno blago i za pentestere i za napadače.

Instalacije bez nadzora

U slučaju automatizovane instalacije, na klijentu ostaje fajl Unattended.xml, koji je za nas prilično interesantan, koji se obično nalazi ili u %WINDIR%\Panther\Unattend\ ili u %WINDIR%\Panther\ i može pohranite administratorsku lozinku u čistom tekstu. S druge strane, da biste dobili ovu datoteku sa servera, nije vam potrebna nikakva autentifikacija. Potrebno je samo pronaći server “Windows Deployment Services”. Da biste to učinili, možete koristiti skriptu auxiliary/scanner/dcerpc/windows_deployment _services iz Metasploita. Iako Windows Deployment Services nije jedini način za izvođenje automatske instalacije, datoteka Unattended.xml se smatra standardom, tako da se njeno otkrivanje može smatrati uspješnim.

GPP

XML datoteke preferencija grupnih politika često sadrže skup šifriranih vjerodajnica koje se mogu koristiti za dodavanje novih korisnika, kreiranje dijeljenja itd. Srećom, metoda šifriranja je dokumentirana, tako da lako možete dobiti lozinke u njihovom čistom obliku. Štaviše, Metasploit tim je već uradio sve za vas - samo koristite /post/windows/gather/credentials/gpp.rb modul. Ukoliko vas zanimaju detalji, onda su sve potrebne informacije dostupne na ovom linku.

Korisnička prava

Vrlo često je eskalacija privilegija posljedica pogrešno konfiguriranih korisničkih prava. Na primjer, kada je korisnik domene lokalni administrator (ili Power User) na hostu. Ili kada su korisnici domena (ili članovi grupa domena) lokalni administratori na svim hostovima. U ovom slučaju nećete morati ništa da radite. Ali takve opcije se ne pojavljuju često.

AlwaysInstallElevated

Ponekad administratori dozvoljavaju redovnim korisnicima da sami instaliraju programe, obično putem sljedećih ključeva registratora:

HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

HKCU\SOFTWARE\Policies\Microsoft\Window s\Installer\AlwaysInstallElevated

Oni govore sistemu da svaka MSI datoteka mora biti instalirana s povišenim privilegijama (NT AUTHORITY\SYSTEM). U skladu s tim, koristeći posebno kreiranu datoteku, možete ponovo izvršiti radnje u ime sistema i nadograditi svoje privilegije.

Metasploit uključuje poseban modul exploit/windows/local/always_install_elevated, koji kreira MSI datoteku sa posebnom izvršnom datotekom koja je ugrađena u nju, koju izdvaja i izvršava instalater sa sistemskim privilegijama. Jednom izvršena, MSI datoteka prekida instalaciju (pozivanjem posebno kreiranog nevažećeg VBS-a) kako bi spriječila da se radnja prijavi na sistem. Osim toga, ako pokrenete instalaciju sa /quiet prekidačem, korisnik neće ni vidjeti grešku.

Nedostaje autostart

Često se dešava da sistem vodi evidenciju o fajlu koji treba automatski da se pokrene, čak i nakon što je sam fajl već potonuo u zaborav. Možda je neki servis pogrešno uklonjen - nema izvršne datoteke, ali ostaje unos u registratoru i svaki put kada neuspješno pokrenete sistem pokušava ga pokrenuti, popunjavajući dnevnik događaja porukama o kvarovima. Ova situacija se također može iskoristiti za proširenje vaših moći. Prvi korak je pronaći sve takve napuštene zapise. Na primjer, korištenjem uslužnog programa autorunsc iz Sysinternalsa.

Autorunsc.exe -a | findstr /n /R "Datoteka\ nije\ pronađena"

Nakon čega, kao što ste pretpostavili, ostaje samo da na neki način ubacite svog kandidata na mjesto nedostajuće datoteke.

Magija citata

Da, da, navodnici ne samo da mogu igrati okrutnu šalu u SQL upitima, dozvoljavajući ubrizgavanje, već i pomoći u podizanju privilegija. Problem je prilično star i poznat je još od NZ vremena. Stvar je u tome da putanje do izvršnih datoteka nekih servisa nisu okružene navodnicima (na primjer, ImagePath=C:\Program Files\Common Files\Network Associates\McShield\McShield.exe), a u put. U ovom slučaju, ako napadač kreira datoteku koja će dodati nove administratore sistemu ili izvršiti neke druge radnje, i nazove je C:\Program Files\common.exe, onda kada se servis sljedeći put pokrene, to će biti uobičajeno. exe koji će biti pokrenut, a preostali dio putanje će biti uzet kao argument(i). Jasno je da neprivilegirani korisnik neće moći ništa staviti u Program Files, ali izvršna datoteka servisa može se nalaziti u drugom direktoriju, odnosno korisnik će imati priliku ubaciti svoj vlastiti fajl.

Da biste koristili ovu tehniku, morate pronaći ranjivu uslugu (koja neće koristiti navodnike na putu do svoje binarne datoteke). To se radi na sljedeći način:

Wmic usluga dobije ime,prikazno ime,pathname, startmode |findstr /i "auto" |findstr /i /v "c: \windows\\" |findstr /i /v """

Istina, na XP-u će to zahtijevati administratorske privilegije, pa je bolje koristiti sljedeću metodu tamo: nabavite listu usluga - sc upit, zatim pogledajte informacije za svaku uslugu - sc qc ime usluge.

Sve po planu

Drugi mehanizam koji može pomoći u podizanju prava i na koji se obično zaboravlja je planer zadataka. Uslužni program schtasks vam omogućava da dodijelite zadatke određenim događajima. Najzanimljiviji su nam ONIDLE, ONLOGON i ONSTART. Kao što nazivi sugerišu, ONIDLE će se izvršavati svaki put kada je računar u stanju mirovanja, ONLOGON i ONSTART - kada se korisnik prijavi, odnosno kada se sistem pokrene. Stoga se svakom događaju može dodijeliti poseban zadatak. Na primjer, kada se sistem pokrene, kopirajte zlonamjerni binarni program/keylogger/… negdje i pokrenite ga. Kada se korisnici prijave, pokrenite dumper kreditnih kartica. Ukratko, sve je ograničeno samo vašom maštom i zadatkom.

Trikovi sa dozvolama

Dozvole za datoteke su obično prva odbrana koja nas sprečava da povećamo svoje privilegije. Bilo bi primamljivo jednostavno prepisati neku sistemsku datoteku (na primjer, isti sethc.exe spomenut na samom početku članka) i odmah dobiti sistemske privilegije. Ali sve su to samo snovi; u stvari, imamo samo dozvolu da to čitamo, što nam ne daje apsolutno ništa. No, ne treba objesiti nos, jer ni s dozvolama nije sve tako glatko - ovdje, kao i drugdje, postoje zamke čije znanje vam omogućava da nemoguće učinite mogućim.

Jedan od sistemskih direktorija zaštićen ovim mehanizmom posebno je zanimljiv sa stanovišta eskalacije privilegija - Program Files. Neprivilegiranim korisnicima je zabranjen pristup tamo. Međutim, ponekad se dešava da tokom procesa instalacije instalateri pogrešno postave dozvole za fajlove, što dovodi do toga da svi korisnici dobiju potpuni pristup izvršnim datotekama. Šta iz ovoga sledi - već ste pogodili.

Još jedno ograničenje je da običnom smrtniku nije dozvoljeno da piše u korijen sistemskog diska. Međutim, na primjer, na XP-u, kada kreirate novi direktorij u korijenu diska, grupa BUILTIN\Users prima dozvole FILE_APPEND_DATA i FILE_WRITE_DATA (čak i ako je vlasnik foldera administrator):

BUILTIN\Korisnici:(OI)(CI)R BUILTIN\Korisnici:(CI)(poseban pristup:) FILE_APPEND_DATA BUILTIN\Korisnici:(CI)(poseban pristup:) FILE_WRITE_DATA

Na "sedam" se dešava skoro ista stvar, samo grupa AUTHENTICED KORISNIKA dobija dozvolu. Kako ovo ponašanje može postati problem? Samo se neke aplikacije instaliraju izvan zaštićenih direktorija, što olakšava zamjenu njihovih izvršnih datoteka. Na primjer, takav incident se dogodio sa Metasploit Framework-om u slučaju njegove višekorisničke instalacije. Ova greška je ispravljena u verziji 3.5.2, a uslužni program je premješten u Program Files.


Kako tražiti takve direktorije/datoteke

Pronalaženje direktorija s pogrešnim dozvolama je već pola bitke. Međutim, prvo ga morate pronaći. Da biste to učinili, možete koristiti sljedeća dva alata: AccessChk i Cacls/ICacls. Da biste pronašli "slabe" direktorije koristeći AccessChk, trebat će vam ove naredbe:

Accesschk.exe -uwdqs korisnici c:\ accesschk.exe -uwdqs “Autenticirani korisnici” c:\

Za pretraživanje datoteka sa "slabim" dozvolama, koristite sljedeće:

Accesschk.exe -uwqs korisnici c:\*.* accesschk.exe -uwqs “Ovlašćeni korisnici” c:\*.*

Isto se može učiniti koristeći Cacls/ICacls:

Poziva "c:\Programske datoteke" /T | findstr Korisnici

Trikovi sa uslugama

Druga opcija za napredovanje u sistemu je da iskoristite prednosti pogrešnih konfiguracija i servisnih grešaka. Kao što pokazuje praksa, ne samo datoteke i mape, već i usluge koje rade u sistemu mogu imati pogrešne dozvole. Da biste ih otkrili, možete koristiti AccessChk uslužni program poznatog Marka Russinovicha:

Accesschk.exe –uwcqv *

Biće najohrabrujuće vidjeti dozvolu SERVICE_ALL_ACCESS za autentificirane korisnike ili napredne korisnike. Ali velikim uspjehom se može smatrati i sljedeće:

  • SERVICE_CHANGE_CONFIG - možemo promijeniti izvršni fajl usluge;
  • WRITE_DAC - dozvole se mogu mijenjati, što rezultira dobivanjem dozvole SERVICE_CHANGE_CONFIG;
  • WRITE_OWNER - možete postati vlasnik i promijeniti dozvole;
  • GENERIC_WRITE - nasljeđuje dozvole SERVICE_CHANGE_CONFIG ;
  • GENERIC_ALL - nasljeđuje SERVICE_CHANGE_CONFIG dozvole.

Ako ustanovite da je jedna (ili više) ovih dozvola postavljena na neprivilegirane korisnike, vaše šanse za eskalaciju vaših privilegija se dramatično povećavaju.

Kako povećati?

Recimo da ste pronašli odgovarajuću uslugu, vrijeme je da radite na njoj. Uslužni program za konzolu sc će vam pomoći u tome. Prvo dobijamo kompletnu informaciju o servisu koji nas zanima, recimo da je upnphost:

Sc qc upnphost

Konfigurirajmo ga koristeći isti uslužni program:

Sc config vulnsrv binpath= "net user john zdravo /add && net administratori lokalne grupe john /add" type= interakcija sc config upnphost obj= “.\LocalSystem” password=“”

Kao što vidite, sljedeći put kada se servis pokrene, umjesto izvršne datoteke, izvršit će se naredba net user john hello /add && net localgroup Administratori john /add, dodajući novog korisnika john sa lozinkom hello u sistem. Sve što ostaje je da ručno ponovo pokrenete uslugu:

Net stop upnphost net start upnphost

To je sva magija.

šta je rezultat?

Jednom davno sam pročitao članak u časopisu koji je izložio osnovne tehnike za povećanje privilegija u Windowsu. Tada nisam tome pridavao veliki značaj, ali teorija mi se zaglavila u glavi i jednom mi je mnogo pomogla. Dakle, nadam se da ćete u ovom članku pronaći nešto novo za sebe što će vam jednog dana pomoći da savladate još jednu barijeru.

Danas ćemo govoriti o eskalaciji Windows privilegija. Naučit ćete kako napadač može eskalirati privilegije i kako se zaštititi od toga.

Sve informacije su samo u informativne svrhe. Ni uredništvo stranice ni autor članka nisu odgovorni za njegovu nepravilnu upotrebu.

Podizanje privilegija uz BeRoot

Većina metoda podizanja privilegija povezana je s greškama u konfiguraciji instaliranog softvera, bilo da se radi o putanji do izvršne datoteke servisa, koja nije okružena navodnicima i koja sadrži razmak (ovu situaciju prilično zanimljivo rješava Windows) ili pogrešno postavite prava na direktorij s aplikacijom.

Čovjek je lijeno stvorenje i ne želi svaki put sve to ručno provjeriti. Stoga se prije ili kasnije morao pojaviti alat koji bi automatizirao ovu rutinu.

Sekundarna ručica za prijavu

Još jedan zanimljiv trik uključuje korištenje usluge sekundarne prijave. Ova usluga vam omogućava da pokrenete programe, Microsoftove konzole za upravljanje i elemente kontrolne table kao administrator, čak i ako trenutni korisnik pripada samo grupi Korisnici ili Power Users. Poenta je u tome da ovaj servis ne briše ručke prilikom kreiranja novih procesa.

Za nas je važno da su skoro sve verzije Windows-a (x32 i x64) podložne ovoj ranjivosti: od Viste do Windows 2012 Servera. Ali postoje i ograničenja: da bi uspješno eskalirao privilegije, sistem mora imati instaliran PowerShell 2.0 ili noviji, kao i dva ili više CPU jezgara. Metasploit Framework ima poseban modul exploit/windows/local/ms16_032_secondary_logon_handle_privesc.

Njegova upotreba implicira da već imamo meterpreter sesiju, koju moramo specificirati u parametrima: set SESSION 1. Pa, u slučaju uspješne eksploatacije, imat ćemo još jednu sesiju sa povišenim privilegijama.

\ pentestlab > wmic qfe lista | pronađi "3139914"

Zaključak

Koliko god se trudio da sve moguće opcije za povećanje privilegija uklopim u jedan članak, malo je vjerojatno da će to uspjeti ili će članak narasti do gigantskih razmjera i postati vam nezanimljiv. Dakle, vrijeme je da to proglasimo za dan. O zaštiti ćemo govoriti u posebnom članku.