Bruke PowerShell for å heve privilegiet til lokale kontoer

Bruke PowerShell for å heve privilegiet til lokale kontoer

Privilege-eskalering er bruken av en angriper av gjeldende rettigheter til en konto for å få ytterligere, vanligvis et høyere nivå av tilgang til systemet. Selv om privilegieeskalering kan være et resultat av å utnytte nulldagssårbarheter, eller arbeidet til førsteklasses hackere som utfører et målrettet angrep, eller smart forkledd skadelig programvare, skyldes det oftest feilkonfigurering av datamaskinen eller kontoen. Ved å utvikle angrepet videre bruker angripere en rekke individuelle sårbarheter, som sammen kan føre til en katastrofal datalekkasje.

Hvorfor skal ikke brukere ha lokale administratorrettigheter?

Hvis du er en sikkerhetsekspert, kan det virke åpenbart at brukere ikke bør ha lokale administratorrettigheter, da dette:

  • Gjør kontoene deres mer sårbare for ulike angrep
  • Gjør de samme angrepene mye mer alvorlige

Dessverre, for mange organisasjoner er dette fortsatt et veldig kontroversielt spørsmål og er noen ganger ledsaget av heftige diskusjoner (se f.eks. min veileder sier at alle brukere må være lokale administratorer). Uten å gå inn på detaljene i denne diskusjonen, tror vi at angriperen fikk lokale administratorrettigheter på systemet som undersøkes, enten gjennom en utnyttelse eller fordi maskinene ikke var ordentlig beskyttet.

Trinn 1 Omvendt DNS-oppløsning med PowerShell

Som standard er PowerShell installert på mange lokale arbeidsstasjoner og på de fleste Windows-servere. Og selv om det ikke er uten overdrivelse at det anses som et utrolig nyttig automatiserings- og kontrollverktøy, er det like i stand til å transformere seg selv til et nesten usynlig filløs skadelig programvare (et hackingprogram som ikke etterlater spor etter angrepet).

I vårt tilfelle begynner angriperen å utføre nettverksrekognosering ved å bruke et PowerShell-skript, sekvensielt iterere over nettverkets IP-adresserom, og prøver å finne ut om en gitt IP løses til en vert, og i så fall hva er nettverksnavnet til denne verten.
Det er mange måter å utføre denne oppgaven på, men ved å bruke cmdleten Få-ADComputer er et solid alternativ fordi det returnerer et virkelig rikt sett med data om hver node:

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

Hvis hastighet på store nettverk er et problem, kan en DNS-tilbakeringing brukes:

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

Bruke PowerShell for å heve privilegiet til lokale kontoer

Denne metoden for å føre opp verter på et nettverk er veldig populær, siden de fleste nettverk ikke bruker en null-tillit sikkerhetsmodell og ikke overvåker interne DNS-forespørsler for mistenkelige utbrudd av aktivitet.

Trinn 2: Velg et mål

Sluttresultatet av dette trinnet er å få en liste over server- og arbeidsstasjonsvertsnavn som kan brukes til å fortsette angrepet.

Bruke PowerShell for å heve privilegiet til lokale kontoer

Fra navnet virker 'HUB-FILER'-serveren som et verdig mål, siden over tid akkumulerer filservere som regel et stort antall nettverksmapper og overdreven tilgang til dem av for mange mennesker.

Surfing med Windows Utforsker lar oss oppdage tilstedeværelsen av en åpen delt mappe, men vår nåværende konto kan ikke få tilgang til den (sannsynligvis har vi bare oppføringsrettigheter).

Trinn 3: Lær tilgangskontrollister

Nå, på vår HUB-FILER-vert og målandel, kan vi kjøre et PowerShell-skript for å få tilgangskontrollisten. Vi kan gjøre dette fra den lokale maskinen, siden vi allerede har lokale administratorrettigheter:

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

Utførelsesresultat:

Bruke PowerShell for å heve privilegiet til lokale kontoer

Av den ser vi at Domain Users-gruppen kun har tilgang til oppføringen, men Helpdesk-gruppen har også rettigheter til å endre.

Trinn 4: Kontoidentifikasjon

Løping Få-ADGroupMember, kan vi få alle medlemmene i denne gruppen:

Get-ADGroupMember -identity Helpdesk

Bruke PowerShell for å heve privilegiet til lokale kontoer

I denne listen ser vi en datamaskinkonto som vi allerede har identifisert og allerede har fått tilgang til:

Bruke PowerShell for å heve privilegiet til lokale kontoer

Trinn 5: Bruk PSExec til å kjøre som en datamaskinkonto

PsExec fra Microsoft Sysinternals lar deg utføre kommandoer i sammenheng med systemkontoen SYSTEM@HUB-SHAREPOINT, som vi vet er medlem av Helpdesk-målgruppen. Det vil si, vi trenger bare å gjøre:

PsExec.exe -s -i cmd.exe

Vel, da har du full tilgang til målmappen HUB-FILERshareHR, siden du jobber i konteksten til HUB-SHAREPOINT-datamaskinkontoen. Og med denne tilgangen kan dataene kopieres til en bærbar lagringsenhet eller på annen måte hentes og overføres over nettverket.

Trinn 6: Oppdager dette angrepet

Dette spesielle sikkerhetsproblemet for justering av kontoprivilegier (datakontoer som får tilgang til nettverksandeler i stedet for brukerkontoer eller tjenestekontoer) kan oppdages. Men uten de riktige verktøyene er dette veldig vanskelig å gjøre.

For å oppdage og forhindre denne kategorien angrep kan vi bruke DataAdvantage å identifisere grupper med datakontoer i dem, og deretter nekte tilgang til dem. DataAlert går lenger og lar deg lage et varsel spesielt for denne typen scenario.

Skjermbildet nedenfor viser et tilpasset varsel som vil utløses hver gang en datamaskinkonto får tilgang til data på en overvåket server.

Bruke PowerShell for å heve privilegiet til lokale kontoer

Neste trinn med PowerShell

Vil du vite mer? Bruk "blogg"-opplåsingskoden for gratis tilgang til det fulle PowerShell og Active Directory Grunnleggende videokurs.

Kilde: www.habr.com

Legg til en kommentar