Windows Local Privilege Escalation
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
As jy nie weet wat Windows Toegangstokens is nie, lees die volgende bladsy voordat jy voortgaan:
Access TokensKyk na die volgende bladsy vir meer inligting oor ACLs - DACLs/SACLs/ACEs:
ACLs - DACLs/SACLs/ACEsAs jy nie weet wat integriteitsvlakke in Windows is nie, moet jy die volgende bladsy lees voordat jy voortgaan:
Integrity LevelsDaar is verskillende dinge in Windows wat jou kan verhoed om die stelsel te evalueer, uitvoerbare lêers te loop of selfs jou aktiwiteite te ontdek. Jy moet die volgende bladsy lees en al hierdie verdedigings meganismes evalueer voordat jy die privilege escalasie evaluering begin:
Windows Security ControlsKyk of die Windows weergawe enige bekende kwesbaarheid het (kyk ook na die toegepaste patches).
Hierdie webwerf is handig om gedetailleerde inligting oor Microsoft-sekuriteitskwesbaarhede te soek. Hierdie databasis het meer as 4,700 sekuriteitskwesbaarhede, wat die massiewe aanvaloppervlak wat 'n Windows-omgewing bied, toon.
Op die stelsel
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
winpeas (Winpeas het watson ingebed)
Plaaslik met stelselinligting
Github repos van exploits:
Enige geloofsbriewe/lekke inligting wat in die omgewing veranderlikes gestoor is?
Jy kan leer hoe om dit aan te skakel in https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
Besonderhede van PowerShell-pyplyn-uitvoerings word geregistreer, wat uitgevoerde opdragte, opdrag-aanroepe en dele van skrifte insluit. egter, volledige uitvoeringsbesonderhede en uitvoerresultate mag nie vasgelê word nie.
Om dit te aktiveer, volg die instruksies in die "Transkripsie-lêers" afdeling van die dokumentasie, en kies "Module Logging" in plaas van "Powershell Transcription".
Om die laaste 15 gebeurtenisse van PowersShell-logs te sien, kan jy uitvoer:
'n Volledige aktiwiteit en volle inhoud rekord van die skrip se uitvoering word vasgevang, wat verseker dat elke blok kode gedokumenteer word soos dit loop. Hierdie proses behou 'n omvattende ouditspoor van elke aktiwiteit, waardevol vir forensiese ondersoek en die analise van kwaadwillige gedrag. Deur alle aktiwiteit op die tydstip van uitvoering te dokumenteer, word gedetailleerde insigte in die proses verskaf.
Logging events for the Script Block kan gevind word binne die Windows Event Viewer by die pad: Application and Services Logs > Microsoft > Windows > PowerShell > Operational. Om die laaste 20 gebeurtenisse te sien, kan jy gebruik maak van:
Jy kan die stelsel kompromitteer as die opdaterings nie met httpS versoek word nie, maar met http.
Jy begin deur te kyk of die netwerk 'n nie-SSL WSUS-opdatering gebruik deur die volgende uit te voer:
As you have not provided the complete text to translate, I cannot proceed with the translation. Please provide the relevant English text you would like translated to Afrikaans.
En as HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
gelyk is aan 1
.
Dan, dit is uitbuitbaar. As die laaste register gelyk is aan 0, sal die WSUS-invoer geïgnoreer word.
Om hierdie kwesbaarhede te benut, kan jy gereedskap soos: Wsuxploit, pyWSUS gebruik - Dit is MiTM gewapende uitbuitingskripte om 'valse' opdaterings in nie-SSL WSUS-verkeer in te spuit.
Lees die navorsing hier:
WSUS CVE-2020-1013
Lees die volledige verslag hier. Basies, dit is die fout wat hierdie fout uitbuit:
As ons die mag het om ons plaaslike gebruiker proxy te wysig, en Windows Updates die proxy gebruik wat in Internet Explorer se instellings geconfigureer is, het ons dus die mag om PyWSUS plaaslik te loop om ons eie verkeer te onderskep en kode as 'n verhoogde gebruiker op ons bates te loop.
Verder, aangesien die WSUS-diens die huidige gebruiker se instellings gebruik, sal dit ook sy sertifikaatwinkel gebruik. As ons 'n self-onderteken sertifikaat vir die WSUS-hostnaam genereer en hierdie sertifikaat in die huidige gebruiker se sertifikaatwinkel voeg, sal ons in staat wees om beide HTTP en HTTPS WSUS-verkeer te onderskep. WSUS gebruik geen HSTS-agtige meganismes om 'n vertroue-op-eerste-gebruik tipe validasie op die sertifikaat te implementeer nie. As die sertifikaat wat aangebied word vertrou word deur die gebruiker en die korrekte hostnaam het, sal dit deur die diens aanvaar word.
Jy kan hierdie kwesbaarheid uitbuit met die gereedskap WSUSpicious (sodra dit bevry is).
'n Plaaslike privilige-eskalasie kwesbaarheid bestaan in Windows domein omgewings onder spesifieke toestande. Hierdie toestande sluit omgewings in waar LDAP-handtekening nie afgedwing word nie, gebruikers self-regte het wat hulle toelaat om Hulpbron-gebaseerde Beperkte Afvaardiging (RBCD) te konfigureer, en die vermoë vir gebruikers om rekenaars binne die domein te skep. Dit is belangrik om daarop te let dat hierdie vereistes nagekom word met standaardinstellings.
Vind die uitbuiting in https://github.com/Dec0ne/KrbRelayUp
Vir meer inligting oor die vloei van die aanval, kyk https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
As hierdie 2 registers geaktiveer is (waarde is 0x1), kan gebruikers van enige privilige *.msi
lêers as NT AUTHORITY\SYSTEM installeer (uitvoer).
If you have a meterpreter session you can automate this technique using the module exploit/windows/local/always_install_elevated
Gebruik die Write-UserAddMSI
opdrag van power-up om binne die huidige gids 'n Windows MSI-binary te skep om voorregte te verhoog. Hierdie skrip skryf 'n vooraf gecompileerde MSI-installer wat vra vir 'n gebruiker/groep toevoeging (so jy sal GIU-toegang nodig hê):
Just execute the created binary to escalate privileges.
Lees hierdie tutoriaal om te leer hoe om 'n MSI-wrapper te skep met hierdie gereedskap. Let daarop dat jy 'n ".bat" lêer kan omhul as jy net wil uitvoer opdraglyne.
MSI WrapperGenereer met Cobalt Strike of Metasploit 'n nuwe Windows EXE TCP payload in C:\privesc\beacon.exe
Open Visual Studio, kies Skep 'n nuwe projek en tik "installer" in die soekboks. Kies die Setup Wizard projek en klik Volgende.
Gee die projek 'n naam, soos AlwaysPrivesc, gebruik C:\privesc
vir die ligging, kies plaas oplossing en projek in dieselfde gids, en klik Skep.
Hou aan om Volgende te klik totdat jy by stap 3 van 4 kom (kies lêers om in te sluit). Klik Voeg by en kies die Beacon payload wat jy pas gegenereer het. Klik dan op Voltooi.
Beklemtoon die AlwaysPrivesc projek in die Oplossing Verkenner en in die Eienskappe, verander TargetPlatform van x86 na x64.
Daar is ander eienskappe wat jy kan verander, soos die Skrywer en Fabrikant wat die geïnstalleerde app meer wettig kan laat lyk.
Regsklik op die projek en kies Sien > Aangepaste Aksies.
Regsklik op Installeer en kies Voeg Aangepaste Aksie by.
Dubbelklik op Toepassing Gids, kies jou beacon.exe lêer en klik OK. Dit sal verseker dat die beacon payload uitgevoer word sodra die installer gedraai word.
Onder die Aangepaste Aksie Eienskappe, verander Run64Bit na Waar.
Laastens, bou dit.
As die waarskuwing File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'
vertoon word, maak seker jy stel die platform op x64.
Om die installasie van die kwaadwillige .msi
lêer in agtergrond uit te voer:
Om hierdie kwesbaarheid te benut, kan jy gebruik maak van: exploit/windows/local/always_install_elevated
Hierdie instellings bepaal wat gelog word, so jy moet aandag gee
Windows Event Forwarding, is interessant om te weet waar die logs gestuur word
LAPS is ontwerp vir die bestuur van plaaslike Administrateur wagwoorde, wat verseker dat elke wagwoord uniek, ewekansig, en gereeld opgedateer word op rekenaars wat aan 'n domein gekoppel is. Hierdie wagwoorde word veilig binne Active Directory gestoor en kan slegs deur gebruikers wat voldoende regte deur ACLs toegeken is, toegang verkry, wat hulle toelaat om plaaslike admin wagwoorde te sien indien gemagtig.
LAPSAs aktief, plank-teks wagwoorde word in LSASS (Local Security Authority Subsystem Service) gestoor. Meer inligting oor WDigest op hierdie bladsy.
Begin met Windows 8.1, het Microsoft verbeterde beskerming vir die Plaaslike Sekuriteitsowerheid (LSA) bekendgestel om pogings deur onbetroubare prosesse te blokkeer om sy geheue te lees of kode in te spuit, wat die stelsel verder beveilig. Meer inligting oor LSA-beskerming hier.
Credential Guard is in Windows 10 bekendgestel. Die doel daarvan is om die geloofsbriewe wat op 'n toestel gestoor is, te beskerm teen bedreigings soos pass-the-hash-aanvalle.| Meer inligting oor Credentials Guard hier.
Domein kredensiale word geverifieer deur die Plaaslike Sekuriteitsowerheid (LSA) en gebruik deur bedryfstelselskomponente. Wanneer 'n gebruiker se aanmelddata geverifieer word deur 'n geregistreerde sekuriteitspakket, word domein kredensiale vir die gebruiker tipies gevestig. Meer inligting oor Gekapte Kredensiale hier.
Jy moet nagaan of enige van die groepe waartoe jy behoort interessante regte het
As jy tot 'n paar bevoorregte groep behoort, mag jy in staat wees om voorregte te verhoog. Leer meer oor bevoorregte groepe en hoe om hulle te misbruik om voorregte te verhoog hier:
Privileged GroupsLeer meer oor wat 'n token is op hierdie bladsy: Windows Tokens. Kyk na die volgende bladsy om meer te leer oor interessante tokens en hoe om hulle te misbruik:
Abusing TokensEerstens, lys die prosesse kyk vir wagwoorde binne die opdraglyn van die proses. Kyk of jy 'n sekere binêre wat loop kan oorskryf of as jy skryfrechten van die binêre gids het om moontlike DLL Hijacking attacks te benut:
Always check for possible electron/cef/chromium debuggers wat loop, jy kan dit misbruik om privaathede te verhoog.
Kontroleer toestemmings van die prosesse se binaire
Kontroleer toestemmings van die vouers van die prosesse se binêre (DLL Hijacking)
Jy kan 'n geheue-dump van 'n lopende proses skep met procdump van sysinternals. Dienste soos FTP het die geloofsbriewe in duidelike teks in geheue, probeer om die geheue te dump en die geloofsbriewe te lees.
Toepassings wat as SYSTEM draai, mag 'n gebruiker toelaat om 'n CMD te genereer, of om gidsen te blaai.
Voorbeeld: "Windows Help en Ondersteuning" (Windows + F1), soek na "opdragprompt", klik op "Klik om Opdragprompt te open"
Kry 'n lys van dienste:
Jy kan sc gebruik om inligting van 'n diens te verkry
Dit word aanbeveel om die binêre accesschk van Sysinternals te hê om die vereiste privaatheidsvlak vir elke diens te kontroleer.
Dit word aanbeveel om te kyk of "Geverifieerde Gebruikers" enige diens kan wysig:
U kan accesschk.exe vir XP hier aflaai
As u hierdie fout het (byvoorbeeld met SSDPSRV):
Sisteemfout 1058 het voorgekom. Die diens kan nie begin nie, hetsy omdat dit gedeaktiveer is of omdat daar geen geaktiveerde toestelle aan dit gekoppel is nie.
U kan dit aktiveer deur
Neem in ag dat die diens upnphost afhanklik is van SSDPSRV om te werk (vir XP SP1)
Nog 'n omweg van hierdie probleem is om te loop:
In die scenario waar die "Geoutentiseerde gebruikers" groep SERVICE_ALL_ACCESS op 'n diens besit, is dit moontlik om die diens se uitvoerbare binaire te wysig. Om sc te wysig en uit te voer:
Privileges kan deur verskeie toestemmings verhoog word:
SERVICE_CHANGE_CONFIG: Laat herkonfigurasie van die diens-binary toe.
WRITE_DAC: Maak toestemming herkonfigurasie moontlik, wat lei tot die vermoë om dienskonfigurasies te verander.
WRITE_OWNER: Laat eienaarskap verkryging en toestemming herkonfigurasie toe.
GENERIC_WRITE: Erf die vermoë om dienskonfigurasies te verander.
GENERIC_ALL: Erf ook die vermoë om dienskonfigurasies te verander.
Vir die opsporing en benutting van hierdie kwesbaarheid, kan die exploit/windows/local/service_permissions gebruik word.
Kontroleer of jy die binary kan wysig wat deur 'n diens uitgevoer word of of jy skryftoestemmings op die gids het waar die binary geleë is (DLL Hijacking). Jy kan elke binary wat deur 'n diens uitgevoer word verkry met wmic (nie in system32 nie) en jou toestemmings nagaan met icacls:
U kan ook sc en icacls gebruik:
Jy moet kyk of jy enige diensregistrasie kan wysig. Jy kan jou regte oor 'n diens registrasie nagaan deur:
Dit moet nagegaan word of Authenticated Users of NT AUTHORITY\INTERACTIVE FullControl
toestemmings het. Indien wel, kan die binêre wat deur die diens uitgevoer word, verander word.
Om die Pad van die uitgevoerde binêre te verander:
As jy hierdie toestemming oor 'n register het, beteken dit jy kan sub-registers van hierdie een skep. In die geval van Windows dienste is dit genoeg om willekeurige kode uit te voer:
AppendData/AddSubdirectory permission over service registryAs die pad na 'n uitvoerbare lêer nie binne aanhalings is nie, sal Windows probeer om elke einde voor 'n spasie uit te voer.
Byvoorbeeld, vir die pad C:\Program Files\Some Folder\Service.exe sal Windows probeer om uit te voer:
Lys alle ongekwoteerde dienspaaie, met uitsluiting van dié wat aan ingeboude Windows-dienste behoort:
Jy kan hierdie kwesbaarheid opspoor en benut met metasploit: exploit/windows/local/trusted\_service\_path
Jy kan handmatig 'n diens-binary met metasploit skep:
Windows laat gebruikers toe om aksies spesifiek te maak wat geneem moet word as 'n diens faal. Hierdie funksie kan geconfigureer word om na 'n binêre te verwys. As hierdie binêre vervangbaar is, mag privilige-escalasie moontlik wees. Meer besonderhede kan gevind word in die amptelike dokumentasie.
Kontroleer toestemmings van die binêre (miskien kan jy een oorskryf en privilige verhoog) en van die mappes (DLL Hijacking).
Kyk of jy 'n konfigurasie-lêer kan wysig om 'n spesiale lêer te lees of of jy 'n binêre lêer kan wysig wat deur 'n Administrateur-rekening uitgevoer gaan word (schedtasks).
'n Manier om swak vouer/lêer toestemmings in die stelsel te vind, is om te doen:
Kyk of jy 'n registrasie of binêre kan oorskryf wat deur 'n ander gebruiker uitgevoer gaan word. Lees die volgende bladsy om meer te leer oor interessante autostart plekke om voorregte te verhoog:
Privilege Escalation with AutorunsSoek na moontlike derdeparty vreemde/kwesbare bestuurders
As jy skrywe toestemmings binne 'n gids op PATH het, kan jy dalk 'n DLL wat deur 'n proses gelaai is, oorneem en privileges verhoog.
Kontroleer toestemmings van al die gidse binne PATH:
Vir meer inligting oor hoe om hierdie kontrole te misbruik:
Writable Sys Path +Dll Hijacking PrivescKyk vir ander bekende rekenaars wat hardgecodeer is in die hosts-lêer
Kyk vir beperkte dienste van buite
Kyk na hierdie bladsy vir Vuurmuur verwante opdragte (lys reëls, skep reëls, skakel af, skakel af...)
Meer opdragte vir netwerk enumerasie hier
Binaar bash.exe
kan ook gevind word in C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
As jy root gebruiker kry, kan jy op enige poort luister (die eerste keer wat jy nc.exe
gebruik om op 'n poort te luister, sal dit via GUI vra of nc
deur die firewall toegelaat moet word).
Om maklik bash as root te begin, kan jy probeer --default-user root
Jy kan die WSL
lêerstelsel verken in die gids C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
Van https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Die Windows-kluis stoor gebruikerskredensiale vir bedieners, webwerwe en ander programme wat Windows kan gebruik om die gebruikers outomaties aan te meld. Op die eerste oogopslag mag dit lyk asof gebruikers hul Facebook-kredensiale, Twitter-kredensiale, Gmail-kredensiale ens. kan stoor, sodat hulle outomaties via blaaiers aanmeld. Maar dit is nie so nie.
Windows-kluis stoor kredensiale wat Windows kan gebruik om die gebruikers outomaties aan te meld, wat beteken dat enige Windows-toepassing wat kredensiale benodig om toegang tot 'n hulpbron (bediener of 'n webwerf) hierdie Kredensiaalbestuurder & Windows-kluis kan gebruik en die verskafde kredensiale kan gebruik in plaas daarvan dat gebruikers die gebruikersnaam en wagwoord heeltyd invoer.
Tensy die toepassings met die Kredensiaalbestuurder kommunikeer, dink ek nie dit is moontlik vir hulle om die kredensiale vir 'n gegewe hulpbron te gebruik nie. So, as jou toepassing die kluis wil gebruik, moet dit op een of ander manier met die kredensiaalbestuurder kommunikeer en die kredensiale vir daardie hulpbron van die standaardopbergkluis aan vra.
Gebruik die cmdkey
om die gestoor kredensiale op die masjien te lys.
Dan kan jy runas
met die /savecred
opsies gebruik om die gestoor geloofsbriewe te gebruik. Die volgende voorbeeld roep 'n afstandlike binêre aan via 'n SMB-aandeel.
Gebruik runas
met 'n verskafde stel geloofsbriewe.
Let wel dat mimikatz, lazagne, credentialfileview, VaultPasswordView, of van Empire Powershells module.
Die Data Protection API (DPAPI) bied 'n metode vir simmetriese versleuteling van data, hoofsaaklik gebruik binne die Windows-bedryfstelsel vir die simmetriese versleuteling van asimmetriese privaat sleutels. Hierdie versleuteling maak gebruik van 'n gebruiker of stelsels geheim om aansienlik by te dra tot entropie.
DPAPI stel die versleuteling van sleutels in staat deur 'n simmetriese sleutel wat afgelei is van die gebruiker se aanmeldgeheime. In scenario's wat stelsels versleuteling betrek, gebruik dit die stelsels domeinverifikasie geheime.
Versleutelde gebruiker RSA sleutels, deur gebruik te maak van DPAPI, word gestoor in die %APPDATA%\Microsoft\Protect\{SID}
gids, waar {SID}
die gebruiker se Security Identifier verteenwoordig. Die DPAPI-sleutel, wat saam met die meester sleutel wat die gebruiker se privaat sleutels in dieselfde lêer beskerm, geleë is, bestaan tipies uit 64 bytes van ewekansige data. (Dit is belangrik om te noem dat toegang tot hierdie gids beperk is, wat verhoed dat die inhoud daarvan gelys kan word via die dir
opdrag in CMD, alhoewel dit gelys kan word deur PowerShell).
U kan die mimikatz module dpapi::masterkey
met die toepaslike argumente (/pvk
of /rpc
) gebruik om dit te ontsleutel.
Die geloofsbriewe lêers wat deur die meester wagwoord beskerm word is gewoonlik geleë in:
U kan die mimikatz module dpapi::cred
met die toepaslike /masterkey
gebruik om te dekripteer.
U kan baie DPAPI masterkeys uit geheue onttrek met die sekurlsa::dpapi
module (as u root is).
PowerShell kredensiale word dikwels gebruik vir scripting en outomatisering take as 'n manier om versleutelde kredensiale gerieflik te stoor. Die kredensiale word beskerm met DPAPI, wat tipies beteken dat dit slegs deur dieselfde gebruiker op dieselfde rekenaar waar dit geskep is, gedekripteer kan word.
Om 'n PS kredensiaal uit die lêer wat dit bevat te dekripteer, kan u doen:
Jy kan hulle vind op HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
en in HKCU\Software\Microsoft\Terminal Server Client\Servers\
Gebruik die Mimikatz dpapi::rdg
module met die toepaslike /masterkey
om enige .rdg lêers te dekripteer
Jy kan baie DPAPI masterkeys uit geheue onttrek met die Mimikatz sekurlsa::dpapi
module
Mense gebruik dikwels die StickyNotes-app op Windows werkstasies om wagwoorde en ander inligting te stoor, sonder om te besef dit is 'n databasislêer. Hierdie lêer is geleë by C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite
en is altyd die moeite werd om te soek en te ondersoek.
Let daarop dat jy Administrator moet wees en onder 'n Hoë Integriteit vlak moet loop om wagwoorde van AppCmd.exe te herstel.
AppCmd.exe is geleë in die %systemroot%\system32\inetsrv\
gids.
As hierdie lêer bestaan, is dit moontlik dat sommige akkrediteer geconfigureer is en kan herstel word.
Hierdie kode is onttrek uit PowerUP:
Kontroleer of C:\Windows\CCM\SCClient.exe
bestaan.
Installeerders word met SYSTEM-regte uitgevoer, baie is kwesbaar vir DLL Sideloading (Inligting van https://github.com/enjoiz/Privesc).
SSH privaat sleutels kan binne die registrasiesleutel HKCU\Software\OpenSSH\Agent\Keys
gestoor word, so jy moet kyk of daar iets interessant daarin is:
As jy enige inskrywing binne daardie pad vind, sal dit waarskynlik 'n gestoor SSH-sleutel wees. Dit word versleuteld gestoor, maar kan maklik ontcijfer word met behulp van https://github.com/ropnop/windows_sshagent_extract. Meer inligting oor hierdie tegniek hier: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/
As die ssh-agent
diens nie loop nie en jy wil hê dit moet outomaties begin by opstart, voer die volgende uit:
Dit lyk of hierdie tegniek nie meer geldig is nie. Ek het probeer om 'n paar ssh sleutels te skep, hulle by te voeg met ssh-add
en via ssh na 'n masjien aan te meld. Die register HKCU\Software\OpenSSH\Agent\Keys bestaan nie en procmon het nie die gebruik van dpapi.dll
tydens die asymmetriese sleutelverifikasie geïdentifiseer nie.
U kan ook na hierdie lêers soek met metasploit: post/windows/gather/enum_unattend
Voorbeeldinhoud:
Soek vir 'n lêer genaamd SiteList.xml
'n Kenmerk was voorheen beskikbaar wat die ontplooiing van pasgemaakte plaaslike administrateur rekeninge op 'n groep masjiene via Groep Beleid Voorkeure (GPP) toegelaat het. Hierdie metode het egter beduidende sekuriteitsfoute gehad. Eerstens, die Groep Beleid Objekte (GPO's), gestoor as XML-lêers in SYSVOL, kon deur enige domein gebruiker toegang verkry word. Tweedens, die wagwoorde binne hierdie GPP's, geënkripteer met AES256 met 'n publiek gedokumenteerde standaard sleutel, kon deur enige geverifieerde gebruiker ontcijfer word. Dit het 'n ernstige risiko ingehou, aangesien dit gebruikers in staat kon stel om verhoogde bevoegdhede te verkry.
Om hierdie risiko te verminder, is 'n funksie ontwikkel om te skandeer vir plaaslik gekapte GPP-lêers wat 'n "cpassword" veld bevat wat nie leeg is nie. Wanneer so 'n lêer gevind word, ontcijfer die funksie die wagwoord en keer 'n pasgemaakte PowerShell objek terug. Hierdie objek sluit besonderhede oor die GPP en die lêer se ligging in, wat help met die identifisering en remediëring van hierdie sekuriteitskwesbaarheid.
Soek in C:\ProgramData\Microsoft\Group Policy\history
of in C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history (voor W Vista) vir hierdie lêers:
Groups.xml
Services.xml
Scheduledtasks.xml
DataSources.xml
Printers.xml
Drives.xml
Om die cPassword te ontcijfer:
Gebruik crackmapexec om die wagwoorde te kry:
Voorbeeld van web.config met geloofsbriewe:
Jy kan altyd die gebruiker vra om sy akrediteerings in te voer of selfs die akrediteerings van 'n ander gebruiker as jy dink hy kan dit weet (let op dat om die kliënt direk vir die akrediteerings te vra regtig riskant is):
Bekende lêers wat 'n tyd gelede wagwoorde in duidelike teks of Base64 bevat het
Soek al die voorgestelde lêers:
Jy moet ook die Blik nagaan om te kyk vir kredensiale daarin
Om wagwoorde wat deur verskeie programme gestoor is te herstel, kan jy gebruik maak van: http://www.nirsoft.net/password_recovery_tools.html
Ander moontlike registrasiesleutels met kredensiale
Onttrek openssh sleutels uit die registrasie.
Jy moet kyk vir db's waar wagwoorde van Chrome of Firefox gestoor word. Kyk ook na die geskiedenis, boekmerke en gunstelinge van die blaaiers sodat dalk sommige wagwoorde is daar gestoor.
Gereedskap om wagwoorde uit blaaiers te onttrek:
Mimikatz: dpapi::chrome
Component Object Model (COM) is 'n tegnologie wat binne die Windows-bedryfstelsel gebou is wat onderlinge kommunikasie tussen sagtewarekomponente van verskillende tale toelaat. Elke COM-komponent is geïdentifiseer deur 'n klas ID (CLSID) en elke komponent stel funksionaliteit bloot deur een of meer interfaces, geïdentifiseer deur interface ID's (IIDs).
COM klasse en interfaces word in die registrasie gedefinieer onder HKEY_CLASSES_ROOT\CLSID en HKEY_CLASSES_ROOT\Interface onderskeidelik. Hierdie registrasie word geskep deur die HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes = HKEY_CLASSES_ROOT.
Binne die CLSIDs van hierdie registrasie kan jy die kind registrasie InProcServer32 vind wat 'n standaardwaarde bevat wat na 'n DLL verwys en 'n waarde genaamd ThreadingModel wat Apartment (Enkel-Draad), Free (Meervoudige-Draad), Both (Enkel of Meervoudig) of Neutral (Draad Neutraal) kan wees.
Basies, as jy enige van die DLL's wat gaan uitgevoer word kan oorskry, kan jy privileges verhoog as daardie DLL deur 'n ander gebruiker uitgevoer gaan word.
Om te leer hoe aanvallers COM Hijacking as 'n volhardingsmeganisme gebruik, kyk:
COM HijackingSoek na lêerinhoud
Soek na 'n lêer met 'n sekere lêernaam
Soek die register vir sleutelname en wagwoorde
MSF-Credentials Plugin is 'n msf plugin wat ek geskep het om automaties elke metasploit POST-module wat soek na kredensiale binne die slagoffer uit te voer. Winpeas soek outomaties na al die lêers wat wagwoorde bevat wat op hierdie bladsy genoem word. Lazagne is 'n ander wonderlike hulpmiddel om wagwoorde uit 'n stelsel te onttrek.
Die hulpmiddel SessionGopher soek na sessies, gebruikersname en wagwoorde van verskeie gereedskap wat hierdie data in duidelike teks stoor (PuTTY, WinSCP, FileZilla, SuperPuTTY, en RDP)
Imagine dat 'n proses wat as SYSTEM loop 'n nuwe proses (OpenProcess()
) met volledige toegang open. Dieselfde proses skep ook 'n nuwe proses (CreateProcess()
) met lae voorregte maar wat al die oop handlers van die hoofproses oorneem.
As jy dan volledige toegang tot die lae voorregte proses het, kan jy die oop handle na die voorregte proses wat geskep is met OpenProcess()
gryp en 'n shellcode injek.
Lees hierdie voorbeeld vir meer inligting oor hoe om hierdie kwesbaarheid te ontdek en te benut.
Lees hierdie ander pos vir 'n meer volledige verduideliking oor hoe om te toets en meer oop handlers van prosesse en threads met verskillende vlakke van toestemmings (nie net volledige toegang nie) te misbruik.
Gedeelde geheue segmente, bekend as pype, stel proseskommunikasie en datatransfer in staat.
Windows bied 'n funksie genaamd Genoemde Pype, wat ongebonde prosesse toelaat om data te deel, selfs oor verskillende netwerke. Dit herinner aan 'n kliënt/bediener argitektuur, met rolle wat gedefinieer is as genoemde pyp bediener en genoemde pyp kliënt.
Wanneer data deur 'n pyp deur 'n kliënt gestuur word, het die bediener wat die pyp opgestel het die vermoë om die identiteit van die kliënt aan te neem, mits dit die nodige SeImpersonate regte het. Om 'n voorregte proses te identifiseer wat via 'n pyp kommunikeer wat jy kan naboots, bied 'n geleentheid om hoër voorregte te verkry deur die identiteit van daardie proses aan te neem sodra dit met die pyp waarmee jy werk, interaksie het. Vir instruksies oor hoe om so 'n aanval uit te voer, kan nuttige gidse gevind word hier en hier.
Ook die volgende hulpmiddel laat jou toe om 'n genoem pyp kommunikasie met 'n hulpmiddel soos burp te onderskep: https://github.com/gabriel-sztejnworcel/pipe-intercept en hierdie hulpmiddel laat jou toe om al die pype te lys en te sien om privescs te vind https://github.com/cyberark/PipeViewer
Wanneer jy 'n shell as 'n gebruiker kry, mag daar geskeduleerde take of ander prosesse wees wat akkrediteer op die opdraglyn. Die onderstaande skrip vang proses opdraglyne elke twee sekondes en vergelyk die huidige toestand met die vorige toestand, wat enige verskille uitset.
As jy toegang het tot die grafiese koppelvlak (deur die konsole of RDP) en UAC is geaktiveer, is dit in sommige weergawes van Microsoft Windows moontlik om 'n terminal of enige ander proses soos "NT\AUTHORITY SYSTEM" van 'n nie-bevoegde gebruiker te laat loop.
Dit maak dit moontlik om bevoegdhede te verhoog en UAC terselfdertyd met dieselfde kwesbaarheid te omseil. Boonop is daar geen behoefte om enigiets te installeer nie en die binêre wat tydens die proses gebruik word, is onderteken en uitgegee deur Microsoft.
Sommige van die geraakte stelsels is die volgende:
Om hierdie kwesbaarheid te benut, is dit nodig om die volgende stappe uit te voer:
You het al die nodige lêers en inligting in die volgende GitHub-repositori:
https://github.com/jas502n/CVE-2019-1388
Lees dit om meer te leer oor Integriteitsvlakke:
Integrity LevelsLees dan hierdie om meer te leer oor UAC en UAC bypasses:
UAC - User Account ControlAs jy reeds op 'n Hoë Integriteitsproses loop, kan die oorgang na SYSTEM maklik wees deur eenvoudig 'n nuwe diens te skep en uit te voer:
Van 'n Hoë Integriteit proses kan jy probeer om die AlwaysInstallElevated registrasie-invoere te aktiveer en 'n omgekeerde shell te installeer met 'n .msi wrapper. Meer inligting oor die betrokke registrasiesleutels en hoe om 'n .msi pakket te installeer hier.
Jy kan die kode hier vind.
As jy daardie token privileges het (waarskynlik sal jy dit in 'n reeds Hoë Integriteit proses vind), sal jy in staat wees om byna enige proses (nie beskermde prosesse nie) met die SeDebug privilege te oopmaak, die token van die proses te kopieer, en 'n arbitraire proses met daardie token te skep. Die gebruik van hierdie tegniek behels gewoonlik om enige proses wat as SYSTEM loop met al die token privileges te kies (ja, jy kan SYSTEM prosesse vind sonder al die token privileges). Jy kan 'n voorbeeld van kode wat die voorgestelde tegniek uitvoer hier vind.
Hierdie tegniek word deur meterpreter gebruik om in getsystem
te eskaleer. Die tegniek bestaan uit die skep van 'n pyp en dan 'n diens te skep/te misbruik om op daardie pyp te skryf. Dan sal die bediener wat die pyp geskep het met die SeImpersonate
privilege in staat wees om die token van die pyp kliënt (die diens) te verpersoonlik en SYSTEM privileges te verkry.
As jy wil meer leer oor naam pype moet jy dit lees.
As jy 'n voorbeeld wil lees van hoe om van hoë integriteit na System te gaan met naam pype moet jy dit lees.
As jy daarin slaag om 'n dll te hijack wat deur 'n proses wat as SYSTEM loop, gelaai word, sal jy in staat wees om arbitrêre kode met daardie toestemmings uit te voer. Daarom is Dll Hijacking ook nuttig vir hierdie soort privilege eskalasie, en, verder, as dit veel makliker is om te bereik vanuit 'n hoë integriteit proses aangesien dit skryftoestemmings op die vouers het wat gebruik word om dlls te laai. Jy kan meer leer oor Dll hijacking hier.
Lees: https://github.com/itm4n/FullPowers
Beste hulpmiddel om na Windows plaaslike privilege eskalasie vektore te soek: WinPEAS
PS
PrivescCheck
PowerSploit-Privesc(PowerUP) -- Kontroleer vir misconfigurasies en sensitiewe lêers (kontroleer hier). Gekies.
JAWS -- Kontroleer vir sommige moontlike misconfigurasies en versamel inligting (kontroleer hier).
privesc -- Kontroleer vir misconfigurasies
SessionGopher -- Dit onttrek PuTTY, WinSCP, SuperPuTTY, FileZilla, en RDP gestoor sessie inligting. Gebruik -Thorough in plaaslik.
Invoke-WCMDump -- Onttrek kredensiale uit Credential Manager. Gekies.
DomainPasswordSpray -- Spray versamelde wagwoorde oor domein
Inveigh -- Inveigh is 'n PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer en man-in-the-middle hulpmiddel.
WindowsEnum -- Basiese privesc Windows enumerasie
Sherlock ~~~~ -- Soek na bekende privesc kwesbaarhede (DEPRECATED vir Watson)
WINspect -- Plaaslike kontroles (Benodig Admin regte)
Exe
Watson -- Soek na bekende privesc kwesbaarhede (moet saamgestel word met VisualStudio) (vooraf saamgestel)
SeatBelt -- Enumerates die gasheer op soek na misconfigurasies (meer 'n versamel inligting hulpmiddel as privesc) (moet saamgestel word) (vooraf saamgestel)
LaZagne -- Onttrek kredensiale uit baie sagteware (vooraf saamgestelde exe in github)
SharpUP -- Port van PowerUp na C#
Beroot ~~~~ -- Kontroleer vir misconfigurasie (uitvoerbare vooraf saamgestelde in github). Nie aanbeveel. Dit werk nie goed in Win10.
Windows-Privesc-Check -- Kontroleer vir moontlike misconfigurasies (exe van python). Nie aanbeveel. Dit werk nie goed in Win10.
Bat
winPEASbat -- Hulpmiddel geskep gebaseer op hierdie pos (dit het nie toegangchk nodig om behoorlik te werk nie, maar dit kan dit gebruik).
Local
Windows-Exploit-Suggester -- Lees die uitvoer van systeminfo en beveel werkende exploits aan (lokale python) Windows Exploit Suggester Next Generation -- Lees die uitvoer van systeminfo en beveel werkende exploits aan (lokale python)
Meterpreter
multi/recon/local_exploit_suggestor
Jy moet die projek saamstel met die korrekte weergawe van .NET (sien dit). Om die geïnstalleerde weergawe van .NET op die slagoffer gasheer te sien kan jy doen:
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)