Använda PowerShell för att höja privilegiet för lokala konton

Använda PowerShell för att höja privilegiet för lokala konton

Privilegeeskalering är att en angripare använder de nuvarande rättigheterna för ett konto för att få ytterligare, vanligtvis en högre nivå av åtkomst till systemet. Även om privilegieupptrappning kan vara resultatet av utnyttjande av nolldagssårbarheter, eller arbetet av förstklassiga hackare som utför en riktad attack, eller skickligt maskerad skadlig programvara, beror det oftast på felkonfiguration av datorn eller kontot. För att utveckla attacken ytterligare använder angripare ett antal individuella sårbarheter, vilket tillsammans kan leda till en katastrofal dataläcka.

Varför ska användare inte ha lokala administratörsrättigheter?

Om du är en säkerhetsproffs kan det verka självklart att användare inte ska ha lokala administratörsrättigheter, eftersom detta:

  • Gör deras konton mer sårbara för olika attacker
  • Gör samma attacker mycket allvarligare

Tyvärr är detta fortfarande en mycket kontroversiell fråga för många organisationer och åtföljs ibland av heta diskussioner (se t.ex. min handledare säger att alla användare måste vara lokala administratörer). Utan att gå in på detaljerna i den här diskussionen tror vi att angriparen fick lokala administratörsrättigheter på systemet som undersöks, antingen genom en exploatering eller för att maskinerna inte var ordentligt skyddade.

Steg 1 Omvänd DNS-upplösning med PowerShell

Som standard är PowerShell installerat på många lokala arbetsstationer och på de flesta Windows-servrar. Och även om det inte är utan överdrift att det anses vara ett otroligt användbart automations- och kontrollverktyg, är det lika kapabelt att förvandla sig själv till ett nästan osynligt fillös skadlig programvara (ett hackningsprogram som inte lämnar spår efter attacken).

I vårt fall börjar angriparen utföra nätverksspaning med hjälp av ett PowerShell-skript, sekventiellt itererande över nätverkets IP-adressutrymme, försöker avgöra om en given IP löser sig till en värd, och i så fall vad är nätverksnamnet på denna värd.
Det finns många sätt att utföra denna uppgift, men med hjälp av cmdleten Skaffa sig-ADComputer är ett bra alternativ eftersom det returnerar en riktigt rik uppsättning data om varje nod:

 import-module activedirectory Get-ADComputer -property * -filter { ipv4address -eq ‘10.10.10.10’}

Om hastigheten på stora nätverk är ett problem kan en DNS-återuppringning användas:

[System.Net.Dns]::GetHostEntry(‘10.10.10.10’).HostName

Använda PowerShell för att höja privilegiet för lokala konton

Den här metoden för att lista värdar i ett nätverk är mycket populär, eftersom de flesta nätverk inte använder en säkerhetsmodell med nollförtroende och inte övervakar interna DNS-förfrågningar för misstänkta aktivitetsskurar.

Steg 2: Välj ett mål

Slutresultatet av detta steg är att få en lista över server- och arbetsstationsvärdnamn som kan användas för att fortsätta attacken.

Använda PowerShell för att höja privilegiet för lokala konton

Från namnet verkar 'HUB-FILER'-servern som ett värdigt mål, sedan Med tiden samlar filservrar som regel ett stort antal nätverksmappar och överdriven åtkomst till dem av för många människor.

Genom att surfa med Windows Explorer kan vi upptäcka närvaron av en öppen delad mapp, men vårt nuvarande konto kan inte komma åt den (troligen har vi bara listningsrättigheter).

Steg 3: Lär dig ACL

Nu, på vår HUB-FILER-värd- och målresurs, kan vi köra ett PowerShell-skript för att hämta ACL. Vi kan göra detta från den lokala maskinen, eftersom vi redan har lokala administratörsrättigheter:

(get-acl hub-filershare).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags –auto

Utföranderesultat:

Använda PowerShell för att höja privilegiet för lokala konton

Av den ser vi att gruppen Domänanvändare endast har tillgång till listningen, men Helpdesk-gruppen har också rätt att ändra.

Steg 4: Kontoidentifiering

Löpning Skaffa-ADGroupMember, kan vi få alla medlemmar i den här gruppen:

Get-ADGroupMember -identity Helpdesk

Använda PowerShell för att höja privilegiet för lokala konton

I den här listan ser vi ett datorkonto som vi redan har identifierat och redan har tillgång till:

Använda PowerShell för att höja privilegiet för lokala konton

Steg 5: Använd PSExec för att köra som ett datorkonto

PsExec från Microsoft Sysinternals låter dig köra kommandon inom ramen för systemkontot SYSTEM@HUB-SHAREPOINT, som vi vet är medlem i Helpdesk-målgruppen. Det vill säga, vi behöver bara göra:

PsExec.exe -s -i cmd.exe

Nåväl, då har du full tillgång till målmappen HUB-FILERshareHR, eftersom du arbetar inom ramen för HUB-SHAREPOINT-datorkontot. Och med denna åtkomst kan data kopieras till en bärbar lagringsenhet eller på annat sätt hämtas och överföras över nätverket.

Steg 6: Upptäck denna attack

Denna speciella sårbarhet för justering av kontoprivilegier (datorkonton som får åtkomst till nätverksresurser istället för användarkonton eller tjänstekonton) kan upptäckas. Men utan rätt verktyg är detta mycket svårt att göra.

För att upptäcka och förhindra denna kategori av attacker kan vi använda DataAdvantage för att identifiera grupper med datorkonton i dem och sedan neka åtkomst till dem. DataAlert går längre och låter dig skapa ett meddelande specifikt för denna typ av scenario.

Skärmdumpen nedan visar ett anpassat meddelande som aktiveras varje gång ett datorkonto får åtkomst till data på en övervakad server.

Använda PowerShell för att höja privilegiet för lokala konton

Nästa steg med PowerShell

Vill veta mer? Använd "blogg"-upplåsningskoden för fri tillgång till fullo PowerShell och Active Directory Basics videokurs.

Källa: will.com

Lägg en kommentar