Πλευρικές μετακινήσεις — Πρακτικό εργαστήριο
Στήνετε έναν ελεγκτή domain Active Directory σκόπιμα κακώς ρυθμισμένο και έναν σταθμό επίθεσης Kali, και τα δύο σε Docker. Ξεκινάτε από μια ελάχιστη πρόσβαση δικτύου και προχωράτε, βήμα προς βήμα, μέχρι να διαβάσετε ένα αρχείο που είναι προορισμένο για έναν λογαριασμό υπηρεσίας.
Τι θα ξέρετε να κάνετε
- Προμήθεια ενός πλήρους domain AD με μία εντολή, χωρίς εικονική μηχανή Windows.
- Σύνδεση αναγνώρισης, password spray, απαρίθμησης των shares, διαρροής διαπιστευτηρίων και εναλλαγής ταυτότητας — η πιο συχνή αλυσίδα επίθεσης σε εσωτερικό pentest το 2026.
- Σύνταξη μιας υπερασπίσιμης αναφοράς ενώπιον πελάτη, με τη διορθωτική ενέργεια που αναμένεται σε κάθε κρίκο.
Πλάνο του εργαστηρίου
- Εκκίνηση του lab
- Βήμα 1 — αναγνώριση δικτύου
- Βήμα 2 — password spray
- Βήμα 3 — απαρίθμηση των shares
- Βήμα 4 — ανάγνωση του share
team-notes - Βήμα 5 — εναλλαγή ταυτότητας προς
svc_sql - Βήμα 6 — ανάγνωση του flag
- Αναφορά
- Λίστα ελέγχου
- Καθαρισμός
Τι χρειάζεστε
- Docker Desktop 4.x σε λειτουργία (Windows, macOS ή Linux).
- Το repository
inskillsec-docusaurusκλωνοποιημένο τοπικά. - Περίπου 4 GB ελεύθερου χώρου δίσκου και 3 GB ελεύθερης RAM.
Εκκίνηση του lab
cd inskillsec-docusaurus/labs/docker/module-10-mouvements-lateraux
docker compose up -d
Η πρώτη εκκίνηση διαρκεί περίπου ένα λεπτό στην πλευρά του DC (provision του domain,
δημιουργία των χρηστών, τοποθέτηση των shares). Ο επιτιθέμενος
περιμένει αυτόματα να γίνει healthy ο DC πριν ξεκινήσει. Μπορείτε
να παρακολουθήσετε την provision:
docker logs -f m10-dc01
Όταν δείτε τη γραμμή [m10] === Daemon en premier plan ===, η
provision έχει ολοκληρωθεί. Ανοίξτε τότε ένα shell στον επιτιθέμενο:
docker compose exec attaquant bash
Βρίσκεστε τώρα σε ένα Kali στο δίκτυο 10.20.30.0/24 με
στόχο τον dc01.corp.acme.local στο 10.20.30.10.
Βήμα 1 — αναγνώριση δικτύου
Δεν έχετε κανένα διαπιστευτήριο. Σαρώνετε τον DC για να εντοπίσετε τις κλασικές θύρες ενός ελεγκτή domain.
nmap -Pn -p22,53,88,135,139,389,445,464,636,3268,3269 10.20.30.10
Τι πρέπει να δείτε:
- Ανοιχτές
88/tcp(Kerberos) και464/tcp(Kerberos password change) — τυπική υπογραφή ενός DC. - Ανοιχτές
389/tcpκαι636/tcp(LDAP και LDAPS). - Ανοιχτή
445/tcp(SMB). - Ανοιχτές
3268/tcpκαι3269/tcp(global catalog).
Σημειώστε κάθε θύρα στην αναφορά σας: είναι ο χάρτης σας του πεδίου.
Γιατί στοχεύουμε αυτές τις θύρες και όχι άλλες
Ένας DC Windows εκθέτει μια πολύ αναγνωρίσιμη δικτυακή υπογραφή. Ο
συνδυασμός Kerberos + LDAP + global catalog είναι σχεδόν αδύνατο να
συγχυστεί με άλλη εφαρμογή. Αν σαρώσετε ολόκληρο ένα /24 από
διακομιστές, η εμφάνιση αυτών των θυρών σας λέει αμέσως «αυτός είναι ο
DC, συγκεντρωθείτε εδώ». Τα υπόλοιπα (SMB, RPC endpoint mapper) είναι
ανοιχτά σε πολλούς διακομιστές Windows που δεν είναι DC.
Βήμα 2 — password spray
Υποθέτετε τρία κοινά ονόματα χρηστών (alice, bob,
svc_sql) και δοκιμάζετε μια μικρή wordlist εποχιακών
κωδικών πρόσβασης.
echo -e "alice\nbob\nsvc_sql" > /tmp/users.txt
echo -e "Summer2025!\nWinter2024!\nPassword1" > /tmp/passwords.txt
crackmapexec smb 10.20.30.10 \
-u /tmp/users.txt \
-p /tmp/passwords.txt \
--continue-on-success
Εντοπίστε τις γραμμές που ξεκινούν με [+]: υποδεικνύουν μια
επιτυχημένη πιστοποίηση. Πρέπει να λάβετε τουλάχιστον
bob:Summer2025!.
Γιατί αυτοί οι τρεις χρήστες και όχι άλλοι
Σε πραγματικό pentest, η λίστα χρηστών προέρχεται από OSINT (LinkedIn,
εταιρικός ιστότοπος, διαρροή email). Εδώ την προσομοιώνουμε: στοιχηματίζουμε ότι
η επιχείρηση έχει μια λογίστρια (alice), υποστήριξη επιπέδου 1 (bob) και
τουλάχιστον έναν λογαριασμό υπηρεσίας SQL Server (svc_sql). Αυτή η ελάχιστη
λίστα αποδεικνύει ένα σημαντικό σημείο: μερικά καλά ονόματα αρκούν
για να ξεκινήσει το spray. Δεν χρειάζεστε μια λίστα 500
χρηστών για να βρείτε την πρώτη πρόσβαση.
Γιατί περιορίζουμε σε τρεις κωδικούς πρόσβασης
Το password spray διαφέρει από το brute force στη διακριτικότητά του: λίγοι κωδικοί πρόσβασης δοκιμάζονται ενάντια σε πολλούς χρήστες, χωρίς ποτέ να υπερβαίνουν την πολιτική κλειδώματος. Τρεις εποχιακοί υποψήφιοι είναι ήδη αρκετοί για να βρείτε λογαριασμούς HR, support ή νεοεισερχόμενων που δεν έχουν ακόμη αλλάξει τον κωδικό πρόσβασής τους. Αν δοκιμάσετε πάρα πολλά, κλειδώνετε λογαριασμούς και ο διαχειριστής εντοπίζει την επίθεση.
Βήμα 3 — απαρίθμηση των shares
Από το πλαίσιο του bob, απαριθμήστε τα προσβάσιμα shares:
crackmapexec smb 10.20.30.10 -u bob -p 'Summer2025!' --shares
Πρέπει να δείτε να εμφανίζονται:
| Share | Δικαιώματα | Σχόλιο |
|---|---|---|
sysvol | READ | Τυπικό share AD, συχνά κενό |
netlogon | READ | Τυπικό share AD, συχνά κενό |
team-notes | READ | Εσωτερικές σημειώσεις της ομάδας support |
backups | (κανένα) | Άρνηση — αυτός είναι ο τελικός μας στόχος |
Ο bob μπορεί να διαβάσει το team-notes αλλά όχι το backups. Εκεί θα
ψάξουμε ένα pivot.
Βήμα 4 — ανάγνωση του share team-notes
smbclient '//10.20.30.10/team-notes' -U 'bob%Summer2025!' \
-c 'ls; mget *; exit'
Ανακτάτε δύο αρχεία: README-Onboarding.txt και
deploy-notes.md. Διαβάστε τα:
cat README-Onboarding.txt
cat deploy-notes.md
Ψάξτε για κάθε αναφορά κωδικού πρόσβασης, διαπιστευτηρίου, λογαριασμού. Πρέπει να
πέσετε πάνω σε αυτή τη φράση στο README-Onboarding.txt:
connecte-toi avec le compte de service svc_sql. Le mot de passe est "Password1"
Κατέχετε το pivot: svc_sql:Password1.
Τι αποδεικνύει αυτό το εύρημα σε μια αναφορά
Ένα διαπιστευτήριο σε καθαρό κείμενο σε ένα share προσβάσιμο σε κάθε πιστοποιημένο χρήστη είναι το εύρημα pentest νούμερο 1 το 2026. Συνδυάζει τρία ελαττώματα:
- Ένα share ανοιχτό υπερβολικά ευρέως (σε όλους τους χρήστες του domain αντί για μια περιορισμένη ομάδα).
- Έναν κωδικό πρόσβασης υπηρεσίας που δεν έχει αλλάξει (Password1 χρησιμοποιείται εδώ και 2 χρόνια σύμφωνα με το onboarding).
- Ένα onboarding που συνιστά τη διαβίβαση κωδικών πρόσβασης μέσω κοινόχρηστου αρχείου αντί για θησαυροφυλάκιο.
Καθένα από αυτά τα σημεία πρέπει να εμφανίζεται ρητά στην ενότητα «διορθωτικά μέτρα» της αναφοράς σας.
Βήμα 5 — εναλλαγή ταυτότητας προς svc_sql
Επαληθεύστε πρώτα ότι ο svc_sql έχει όντως πρόσβαση στο backups, ενώ
ο bob δεν είχε δικαίωμα:
smbclient '//10.20.30.10/backups' -U 'bob%Summer2025!' -c 'ls' 2>&1 | head -3
# → NT_STATUS_ACCESS_DENIED
smbclient '//10.20.30.10/backups' -U 'svc_sql%Password1' -c 'ls' 2>&1 | head -5
# → λίστα αρχείων
Είναι πράγματι ο ίδιος πόρος και η άρνηση πέφτει αποκλειστικά χάρη στην ταυτότητα που αλλάζει. Μόλις πλευρικοποιήσατε χωρίς exploit — απλώς με ένα κακά τακτοποιημένο διαπιστευτήριο.
Βήμα 6 — ανάγνωση του flag
smbclient '//10.20.30.10/backups' -U 'svc_sql%Password1' \
-c 'get secret.txt /tmp/flag.txt; exit'
cat /tmp/flag.txt
Ψάξτε τη γραμμή που ξεκινά με Le drapeau que vous cherchez :.
Το αναμενόμενο flag είναι:
FLAG-M10-CREDENTIAL-LEAK-CHAIN-2026
Αποθηκεύστε το, θα μπει στην αναφορά σας.
Αναφορά
Γράψτε το rapport/lateralisation-m10.md στον προσαρτημένο τόμο
(/home/pentester/labs/rapport/) με πέντε ενότητες:
- Περίληψη — δύο φράσεις: «ξεκινώντας από μόνο μια πρόσβαση δικτύου, απέκτησα ανάγνωση ενός share προορισμένου για έναν λογαριασμό υπηρεσίας». Διευκρινίστε τη διαδρομή σε μία γραμμή.
- Αλυσίδα επίθεσης — μια αριθμημένη λίστα των έξι παραπάνω βημάτων, με για καθένα την ακριβή εντολή και ένα screenshot ή απόσπασμα εξόδου.
- Εντοπισμένες αδυναμίες — ένα σημείο ανά κρίκο: αδύναμος κωδικός
πρόσβασης στον
bob, shareteam-notesυπερβολικά ανοιχτό, διαπιστευτήριο σε καθαρό κείμενο σε αρχείο, κωδικός πρόσβασης υπηρεσίας που δεν άλλαξε ποτέ. - Διορθωτικά μέτρα — για κάθε αδυναμία, μια συγκεκριμένη ενέργεια (πολιτική κωδικών πρόσβασης, θησαυροφυλάκιο ομάδας, περιορισμός του share σε μια ομάδα support, προγραμματισμένη περιστροφή των λογαριασμών υπηρεσίας, μετάβαση σε gMSA).
- Αποδείξεις — οι εντολές που εκτελέστηκαν, τα αρχεία που ανακτήθηκαν, το τελικό flag. Ένας αναγνώστης που δεν παρακολούθησε την επίθεση πρέπει να μπορεί να την ξαναπαίξει χωρίς να σας θέσει ερωτήσεις.
Λίστα ελέγχου
- Το
docker compose up -dολοκληρώθηκε χωρίς σφάλμα και τοdocker compose psδείχνει τα δύο containersrunningμε τονdc01healthy. - Το
nmapαπαρίθμησε τις αναμενόμενες θύρες AD (88, 389, 445 τουλάχιστον). - Το password spray βρήκε τουλάχιστον
bob:Summer2025!. - Το
crackmapexec --sharesαπαρίθμησε τοteam-notesπροσβάσιμο σε ανάγνωση και τοbackupsσε άρνηση από τονbob. - Διαβάσατε το
README-Onboarding.txtκαι εντοπίσατε το διαπιστευτήριο τουsvc_sqlσε καθαρό κείμενο. - Ο
bobδεν μπορεί να διαβάσει τοbackups(NT_STATUS_ACCESS_DENIED) αλλά οsvc_sqlμπορεί. - Ανακτήσατε το
secret.txtκαι το flagFLAG-M10-CREDENTIAL-LEAK-CHAIN-2026. - Η αναφορά σας
lateralisation-m10.mdπεριέχει τις πέντε αναμενόμενες ενότητες.
Τι δεν καλύπτει αυτό το lab
- Λειτουργικό Kerberoasting. Τα SPN είναι ορατά στους
svc_sqlκαιsvc_backup(μπορείτε να το επαληθεύσετε με τοimpacket-GetUserSPNs), αλλά η υλοποίηση Kerberos του Samba AD 4.19+ απορρίπτει τα αιτήματα TGS του impacket μεKRB_AP_ERR_INAPP_CKSUM. Η έννοια αντιμετωπίζεται στο μάθημα 10.1. Για να την εκμεταλλευτείτε πραγματικά, πηγαίνετε στο HackTheBox Forest ή στο TryHackMe Attacktive Directory που χρησιμοποιούν ένα πραγματικό AD Windows. - AS-REP Roasting — για τον ίδιο λόγο, το Samba επιβάλλει την προ-πιστοποίηση.
- NTLM relay — θα απαιτούσε έναν πελάτη Windows στο compose. Καλύπτεται επίσης θεωρητικά στο 10.1.
Καθαρισμός
Όταν τελειώσετε:
cd inskillsec-docusaurus/labs/docker/module-10-mouvements-lateraux
docker compose down -v
Το -v αφαιρεί επίσης τους τόμους που περιέχουν τη βάση LDAP AD, το
sysvol και τα shares. Το επόμενο up θα ξεκινήσει από ένα domain
φρέσκο προμηθευμένο.