Skip to main content

Ενεργή αναγνώριση — Πρακτικό εργαστήριο

Ξανακάνετε την επίδειξη μόνος/η σας. Τρία containers, μια καθαρή μεθοδολογία, μια αναφορά που θα παραδίδατε σε πελάτη. Είναι ο σκελετός της αναγνώρισης που θα σας ακολουθεί σε όλη την καριέρα σας.

Διάρκεια: 90 λεπτά έως 2 ώρες.

Παραδοτέο: ~/labs/rapport/reconnaissance.md (2 σελίδες) και όλα τα τεχνουργήματα στο ~/labs/scans/ + ~/labs/captures/.

Το lab σε μία εντολή

Η ενότητα 01 εισήγαγε το lab Docker με ένα container. Εδώ περνάμε σε τρία containers στο ίδιο ιδιωτικό δίκτυο: έναν επιτιθέμενο Kali και δύο στόχους με πολύ διαφορετικό προφίλ, για να σας αναγκάσουμε να διαφοροποιήσετε τις σαρώσεις σας. Το compose κάνει όλη τη δουλειά:

cd labs/docker/module-04-recon-active
docker compose up -d

Τριάντα δευτερόλεπτα αργότερα, έχετε ένα δίκτυο 10.20.30.0/24 με τρία μηχανήματα μέσα. Σαν να σαρώνατε ένα πραγματικό εσωτερικό τμήμα.


Τι πρέπει να παραδώσετε​

Στο τέλος του εργαστηρίου, θα έχετε, στο ~/labs/ μέσα στο container επιτιθέμενου (διατηρημένο στον host σας):

  1. scans/decouverte.txt — έξοδος του αρχικού ARP scan.
  2. scans/12-ports.nmap + scans/20-ports.nmap — πλήρεις σαρώσεις TCP ανά στόχο.
  3. scans/12-versions.nmap + scans/20-versions.nmap — σαρώσεις εκδόσεων.
  4. scans/20-nse.nmap — στοχευμένα scripts NSE στις αναμενόμενες ευπάθειες.
  5. scans/20-udp.nmap + scans/20-snmp.txt — recon UDP και απόθεμα SNMP.
  6. scans/20-smb.txt — απαρίθμηση SMB (κοινόχρηστοι πόροι, χρήστες, πολιτική).
  7. scans/12-web.txt — αναγνώριση web (whatweb, gobuster, curl).
  8. captures/scan-syn.pcap — ίχνος tcpdump μιας σάρωσης SYN.
  9. scans/scapy-verification.txt — έξοδος του script Scapy.
  10. rapport/reconnaissance.md — δύο σελίδες, επιβεβλημένη δομή.

Προαπαιτούμενα​

Πρέπει να έχετε ολοκληρώσει την ενότητα 01: Docker Desktop λειτουργικό, εικόνα inskillsec/kali-lab ήδη χτισμένη. Διαφορετικά, ανατρέξτε στο εργαστήριο της ενότητας 01 για το πρώτο build (περίπου δέκα λεπτά).

Γρήγορη επαλήθευση:

docker images inskillsec/kali-lab
docker info | grep -i "operating"

Αν το inskillsec/kali-lab δεν εμφανίζεται, το compose θα το χτίσει στην πρώτη εντολή — περιμένετε.


Βήμα 1 — Εκκίνηση του lab (2 λεπτά)​

cd labs/docker/module-04-recon-active
docker compose up -d

Τρία containers ξεκινούν: ο επιτιθέμενος (10.20.30.5), ο πλούσιος στόχος Linux (10.20.30.20) και ο καθαρός στόχος web (10.20.30.12).

Ελέγξτε την υγεία:

cd ..
./verifier-lab.sh module-04-recon-active # bash / macOS / Linux / WSL
.\verifier-lab.ps1 module-04-recon-active # PowerShell

Πρέπει να δείτε τρεις υπηρεσίες running. Αν το m04-cible-linux παραμένει σε starting, περιμένετε τριάντα δευτερόλεπτα ακόμη: το Metasploitable 2 ξεκινά πολλές υπηρεσίες (Apache, Samba, MySQL, PostgreSQL, distccd, SNMP…) πριν είναι έτοιμο.

Μπείτε στον επιτιθέμενο:

cd module-04-recon-active
docker compose exec attaquant bash

Δημιουργήστε τη δομή εξόδου:

mkdir -p ~/labs/{scans,captures,rapport}
cd ~/labs
Ορισμός — γιατί αυτό το lab χρειάζεται cap_add: NET_ADMIN, NET_RAW

Ένα κλασικό container Docker τρέχει με περιορισμένο σύνολο capabilities Linux. Δεν μπορεί να τροποποιήσει τις διεπαφές δικτύου του, ούτε να κατασκευάσει ακατέργαστα πακέτα (SYN χωρίς ACK για παράδειγμα), ούτε να τρέξει tcpdump. Είναι καλό για έναν διακομιστή web, είναι θανάσιμο για ένα επιθετικό lab.

Δύο δυνατότητες είναι απαραίτητες εδώ. Το NET_RAW επιτρέπει το άνοιγμα raw sockets, αυτών που χρησιμοποιεί το Nmap για το -sS (SYN scan), αυτών που χρησιμοποιεί το Scapy για να κατασκευάσει ένα πακέτο με το χέρι, αυτών που χρησιμοποιούν τα arp-scan και tcpdump για να διαβάσουν απευθείας τα πλαίσια Ethernet. Το NET_ADMIN επιτρέπει τον χειρισμό των διαδρομών και την τροποποίηση των διεπαφών — χρήσιμο για ορισμένα scripts NSE και για το arp-scan σε ορισμένους πυρήνες.

Το compose της ενότητας 04 τα προσθέτει μόνο στο container επιτιθέμενου:

cap_add:
- NET_ADMIN
- NET_RAW

Οι στόχοι δεν έχουν αυτό το δικαίωμα — δεν έχουν κανέναν λόγο να σαρώσουν οτιδήποτε. Είναι η αρχή του ελάχιστου προνομίου, εφαρμοσμένη στο επίπεδο του container.


Βήμα 2 — Ανακάλυψη επιπέδου 2 (5 λεπτά)​

Το σημείο εκκίνησης κάθε εσωτερικής αναγνώρισης: ποιος μιλά σε αυτό το τμήμα;

sudo arp-scan --interface=eth0 --localnet | tee scans/decouverte.txt

Βλέπετε τρεις γραμμές (ή τέσσερις, με την πύλη 10.20.30.1 του δικτύου Docker). Σημειώστε τις δύο IP-στόχους:

export CIBLE_LINUX=10.20.30.20
export CIBLE_WEB=10.20.30.12

Μια εναλλακτική ανακάλυψη, χωρίς ARP:

sudo nmap -sn 10.20.30.0/24 -oN scans/decouverte-nmap.txt

Οι δύο μέθοδοι πρέπει να επιστρέφουν τον ίδιο αριθμό κεντρικών υπολογιστών. Μια απόκλιση θα αποκάλυπτε πρόβλημα στο lab σας.

Ορισμός — γιατί το ARP είναι η πιο αξιόπιστη ανακάλυψη σε εσωτερικό δίκτυο

Σε ένα τοπικό τμήμα δικτύου, κάθε κεντρικός υπολογιστής πρέπει να γνωρίζει τη διεύθυνση MAC των γειτόνων του για να τους στείλει ένα πακέτο. Αυτός ο μηχανισμός, το ARP, δεν μπορεί να φιλτραριστεί: ακόμη και ένα μηχάνημα με μπλοκαρισμένο ICMP, φιλτραρισμένο TCP, όλες τις θύρες κλειστές, πρέπει να απαντήσει σε ένα αίτημα ARP για να παραμείνει προσβάσιμο από την πύλη του. Είναι πρωτόκολλο επιπέδου 2, κάτω από οτιδήποτε μπορεί να δει ένα εφαρμογικό firewall.

Γι' αυτό ένας σοβαρός επιτιθέμενος ξεκινά πάντα με ARP όταν βρίσκεται στο τμήμα. Ένα ping sweep (nmap -sn) αρκεί σε πολλά δίκτυα, αλλά σε ένα LAN όπου οι σταθμοί είναι σκληρυμένοι και αρνούνται το ICMP, το ARP παραμένει ο μόνος αξιόπιστος τρόπος καταμέτρησης των ζωντανών κεντρικών υπολογιστών. Το να το συνηθίσετε από την εβδομάδα 1 θα σας γλιτώσει από το να χάσετε τη μισή ενός δικτύου σε πραγματική αποστολή.

Προσοχή: το ARP λειτουργεί μόνο στο ίδιο τμήμα με εσάς. Αν ο επιτιθέμενός σας δρομολογείται προς άλλο VLAN, το ARP δεν επιστρέφει πια τίποτα. Σε αυτή την περίπτωση, πρέπει είτε να κάνετε pivot, είτε να περάσετε σε δικτυακές ανακαλύψεις (ICMP, TCP SYN σε πιθανές θύρες).


Βήμα 3 — Θύρες TCP (10 λεπτά)​

Σαρώστε όλες τις θύρες TCP σε κάθε στόχο. Σε Docker, η σύνδεση είναι τέλεια, μπορούμε να ανεβάσουμε τον ρυθμό:

sudo nmap -sS -Pn -p- --min-rate 4000 $CIBLE_LINUX -oN scans/20-ports.nmap
sudo nmap -sS -Pn -p- --min-rate 4000 $CIBLE_WEB -oN scans/12-ports.nmap

Προς επαλήθευση:

  • Το 10.20.30.20 ανοίγει περίπου είκοσι θύρες (21, 22, 23, 25, 53, 80, 111, 139, 445, 512-514, 1099, 1524, 2049, 2121, 3306, 3632, 5432, 5900, 6000, 6667, 8009, 8180…). Το προφίλ ενός ιστορικά κακά συντηρημένου διακομιστή.
  • Το 10.20.30.12 ανοίγει μόνο τη θύρα 80. Ένας πρόσφατος διακομιστής, καλά διατηρημένος, ένας μόνο ρόλος. Το προφίλ των μισών σύγχρονων ιστότοπων.

Σημειώστε, στο rapport/, τον ακριβή αριθμό ανοιχτών θυρών ανά στόχο. Ένας στόχος με περισσότερες από είκοσι ανοιχτές θύρες είναι σχεδόν πάντα ένα εσκεμμένο lab ή ένας ξεχασμένος διακομιστής σε παραγωγή. Είναι ισχυρό σήμα ήδη από την ανάγνωση της εκτελεστικής αναφοράς.


Βήμα 4 — Εκδόσεις (10 λεπτά)​

Πάρτε τις λίστες ανοιχτών θυρών και επαναλάβετε το -sV μόνο σε αυτές τις θύρες:

sudo nmap -sV -p 80 $CIBLE_WEB -oN scans/12-versions.nmap

sudo nmap -sV -p 21,22,23,25,53,80,111,139,445,512-514,1099,1524,2049,3306,3632,5432,5900,6000,6667,8009,8180 \
$CIBLE_LINUX -oN scans/20-versions.nmap

Κοιτάξτε τι αποκαλύπτει το Nmap:

grep -E "vsftpd|OpenSSH|Samba|MySQL|Apache|Postgres|distcc" scans/20-versions.nmap
grep -E "nginx|X-Powered" scans/12-versions.nmap

Θα έπρεπε να διαβάσετε:

  • vsftpd 2.3.4 (ο παλιός φίλος της ενότητας 01)
  • Samba smbd 3.X - 4.X
  • MySQL 5.0.51a
  • Apache/2.2.8
  • distccd v1
  • nginx 1.27.x (header Server μη κρυμμένο)

Παραδοτέο: στο rapport/, για κάθε στόχο, σημειώστε τις 5 πιο ενδιαφέρουσες υπηρεσίες με την ακριβή έκδοσή τους. Αυτό είναι το υλικό σας για το τμήμα «Αποτελέσματα» της αναφοράς.


Βήμα 5 — Στοχευμένα scripts NSE (10 λεπτά)​

Τα scripts NSE (Nmap Scripting Engine) μετατρέπουν το Nmap από σαρωτή θυρών σε εργαλείο επιβεβαίωσης ευπαθειών. Εκτελούμε μόνο σχετικά scripts για ό,τι βρήκαμε — ποτέ --script vuln στα τυφλά, που μπορεί να σπάσει υπηρεσίες.

Στον στόχο Linux:

sudo nmap --script "ftp-vsftpd-backdoor,smb-vuln-cve2009-3103,smb-enum-shares,smb-os-discovery,http-vuln-*" \
-p 21,80,139,445 $CIBLE_LINUX -oN scans/20-nse.nmap

Στον στόχο web:

sudo nmap --script "http-headers,http-title,http-methods,http-robots.txt,http-enum" \
-p 80 $CIBLE_WEB -oN scans/12-nse.nmap

Παραδοτέο: στο rapport/, η λίστα των CVE που επιβεβαιώθηκαν από NSE με τη σχετική IP και την αναφορά CVE. Για τον στόχο Linux, θα έπρεπε να βρείτε το backdoor vsftpd 2.3.4 (CVE-2011-2523) και πιθανώς το Samba usermap (CVE-2007-2447).

Ορισμός — γιατί ποτέ nmap --script vuln σε ευρεία σάρωση

Το --script vuln ομαδοποιεί περίπου 150 scripts NSE, μερικά από τα οποία είναι καταστροφικά. Ορισμένα δοκιμάζουν μια ευπάθεια προκαλώντας εσκεμμένα την επικίνδυνη συμπεριφορά — ένα buffer overflow που ρίχνει την υπηρεσία, ένα ερώτημα SQL που κλειδώνει έναν πίνακα, μια κακοσχηματισμένη αποστολή που βάζει έναν δρομολογητή σε βρόχο.

Σε εργαστήριο, κανένα πρόβλημα. Σε παραγωγή σε πελάτη, ένα καλά τοποθετημένο --script vuln μπορεί να θέσει μια βάση δεδομένων εκτός λειτουργίας για τρεις ώρες. Έχετε το συμβόλαιο που σας εξουσιοδοτεί να δοκιμάσετε, δεν έχετε το συμβόλαιο που σας εξουσιοδοτεί να σπάσετε.

Ο κανόνας: εκτελούμε NSE ανά συγκεκριμένη κατηγορία, ανάλογα με ό,τι αποκάλυψε η σάρωση εκδόσεων. Βλέπετε SMB; Στοχευμένο smb-vuln-*. Βλέπετε HTTP; http-headers, http-methods. Βλέπετε FTP; ftp-anon, ftp-vsftpd-backdoor. Κάθε script αναφερόμενο ρητά στην εντολή σας, με τη λογική στην αναφορά. Αυτό επιτρέπει επίσης στον πελάτη να επαναλάβει τις σαρώσεις σας για να επαληθεύσει τις διορθώσεις του.


Βήμα 6 — UDP και SNMP (10 λεπτά)​

Το UDP είναι πιο αργό και συχνά ξεχασμένο. Ακριβώς γι' αυτό πρέπει να πάτε εκεί.

sudo nmap -sU --top-ports 25 $CIBLE_LINUX -oN scans/20-udp.nmap

Αν το SNMP (161/udp) είναι ανοιχτό:

snmpwalk -v 2c -c public $CIBLE_LINUX sysDescr
snmpwalk -v 2c -c public $CIBLE_LINUX hrSWRunName > scans/20-snmp.txt
snmpwalk -v 2c -c public $CIBLE_LINUX iso.3.6.1.2.1.4.20 >> scans/20-snmp.txt

Δοκιμάστε άλλες συχνές communities:

onesixtyone -c /usr/share/wordlists/onesixtyone/dict.txt $CIBLE_LINUX -o scans/20-community-strings.txt

Παραδοτέο: ο αριθμός των communities SNMP που βρέθηκαν και μια περίληψη του αποθέματος (OS, διεργασίες, διεπαφές) στο rapport/.

Ορισμός — SNMP, ο ξεχασμένος θησαυρός των εταιρικών δικτύων

Το SNMP (Simple Network Management Protocol) χρονολογείται από το 1988. Χρησιμεύει στην απομακρυσμένη παρακολούθηση και διαχείριση διακοπτών, δρομολογητών, εκτυπωτών, διακομιστών — οτιδήποτε τρέχει έναν πράκτορα. Η έκδοση 1 χρησιμοποιεί μια community string, έναν κοινόχρηστο κωδικό πρόσβασης σε καθαρό κείμενο, σχεδόν πάντα αφημένη στην προεπιλεγμένη τιμή της: public για ανάγνωση, private για εγγραφή.

Αυτό που κάνει το SNMP εξαιρετικό για έναν επιτιθέμενο: διαβασμένο σε καθαρό κείμενο, παρέχει ολόκληρο το λογισμικό και υλικό απόθεμα της μηχανής. Έκδοση συστήματος, λίστα διεργασιών, διευθύνσεις δικτύου, πίνακες ARP, πίνακες δρομολόγησης, συνδεδεμένοι χρήστες, προσαρτημένοι κοινόχρηστοι πόροι. Σε πραγματικό δίκτυο, ένα snmpwalk σε καλά ρυθμισμένο διακομιστή είναι καλύτερο από συνδυασμό whoami; ip addr; ps aux; ss -tunap.

Η έκδοση 3 διορθώνει τα πάντα — αυθεντικοποίηση, κρυπτογράφηση, έλεγχο πρόσβασης. Αλλά το 2026, η πλειοψηφία των διακοπτών και εκτυπωτών εξακολουθεί να τρέχει SNMPv1/v2c με το public άθικτο. Είναι σχεδόν τέλειος δείκτης της ωριμότητας ενός δικτύου: ένα περιβάλλον όπου το SNMP δεν είναι ποτέ προσβάσιμο με public έχει ελεγχθεί. Αλλού, είναι η πλουσιότερη πόρτα εισόδου σας.


Βήμα 7 — Βαθιά απαρίθμηση SMB (15 λεπτά)​

Η θύρα 445 είναι ο καλύτερος φίλος σας εσωτερικά. Στο Metasploitable 2, είναι ανοιχτή και διαρρέει σχεδόν ό,τι μπορεί να διαρρεύσει ένα domain.

# Banner + signing
nxc smb $CIBLE_LINUX

# Κοινόχρηστοι πόροι σε null session (χωρίς αναγνωριστικό)
nxc smb $CIBLE_LINUX -u '' -p '' --shares > scans/20-shares.txt

# Χρήστες μέσω RID cycling
enum4linux-ng -R $CIBLE_LINUX -oJ scans/20-rid.json

# Πολιτική κωδικού πρόσβασης
enum4linux-ng -P $CIBLE_LINUX > scans/20-policy.txt

# Όλα σε ένα αναγνώσιμο αρχείο
enum4linux $CIBLE_LINUX > scans/20-smb.txt 2>&1

Παραδοτέο: στο rapport/, σημειώστε:

  • αν signing: False (επιτρέπει το relay NTLM)
  • τη λίστα κοινόχρηστων πόρων προσβάσιμων σε null session (τυπικά tmp σε εγγραφή στο Metasploitable 2)
  • τον αριθμό απαριθμημένων χρηστών
  • την πολιτική κωδικού πρόσβασης (ελάχιστο μήκος, κλείδωμα)

Βήμα 8 — Αναγνώριση web (15 λεπτά)​

Ο στόχος web δεν παρουσιάζει καμία εκμεταλλεύσιμη ευπάθεια. Αλλά διαρρέει τεράστια μόλις σκάψουμε λίγο. Είναι η περίπτωση των μισών εσωτερικών ιστότοπων που θα σαρώσετε σε αποστολή.

# Εφαρμογικό fingerprint
whatweb -a 3 http://$CIBLE_WEB > scans/12-web.txt
echo "---" >> scans/12-web.txt

# Headers και status
curl -s -I http://$CIBLE_WEB/ >> scans/12-web.txt
echo "---" >> scans/12-web.txt

# robots.txt και sitemap
curl -s http://$CIBLE_WEB/robots.txt >> scans/12-web.txt
echo "---" >> scans/12-web.txt
curl -s http://$CIBLE_WEB/sitemap.xml >> scans/12-web.txt
echo "---" >> scans/12-web.txt

# Brute force στα paths (μικρή στοχευμένη λίστα)
gobuster dir -u http://$CIBLE_WEB \
-w /usr/share/seclists/Discovery/Web-Content/common.txt \
-q -o scans/12-gobuster.txt

# Έλεγχος ενδιαφερόντων paths που βρέθηκαν
for p in "/admin/" "/api/v1/" "/backup/" "/.env.example" "/package.json"; do
echo "=== $p ==="
curl -s -o /dev/null -w "HTTP %{http_code}\n" http://$CIBLE_WEB$p
done > scans/12-paths.txt

# Ανάκτηση του .env.example και του package.json
curl -s http://$CIBLE_WEB/.env.example > scans/12-env-example.txt
curl -s http://$CIBLE_WEB/package.json > scans/12-package.txt

Κοιτάξτε τι διαρρέει το .env.example:

cat scans/12-env-example.txt

Εκεί βρίσκετε: το όνομα του διακομιστή SMB (dev-server), τη θύρα MySQL, έναν λογαριασμό μόνο για ανάγνωση (intranet_ro). Είναι ακριβώς το είδος τεχνουργήματος που αφήνεται σε δημόσια repositories από αφηρημάδα, και που δίνει σε έναν επιτιθέμενο την πρώτη του λίστα λογαριασμών προς δοκιμή.

Και το package.json:

cat scans/12-package.txt

Εκθέτει μια ακριβή εφαρμογική έκδοση και όλες τις εξαρτήσεις με τις εκδόσεις τους. Με αυτό, μπορείτε να ψάξετε τις γνωστές CVE κάθε εξάρτησης στο nvd.nist.gov — χωρίς καν να αγγίξετε τον στόχο.

Ορισμός — τα σιωπηλά «information disclosures», αυτές οι διαρροές που δεν σπάνε τίποτα

Το OWASP δεν κατατάσσει τη διαρροή πληροφορίας στο Top 10 ως κρίσιμη — επειδή από μόνη της δεν συμβιβάζει τίποτα. Κανένα shell δεν αποκτάται, κανένας κωδικός δεν διαρρέει, κανένα δεδομένο πελάτη δεν εκτίθεται. Ένα .env.example σε διακομιστή δεν είναι παραβίαση, είναι νόμιμο αρχείο.

Αλλά στην πραγματική ζωή ενός επιτιθέμενου, αυτές οι διαρροές είναι το καύσιμο όλων των υπολοίπων. Το όνομα εσωτερικού διακομιστή που αναφέρεται σε παράδειγμα ρύθμισης γίνεται μια IP προς στόχευση. Μια λίστα εξαρτήσεων με εκδόσεις γίνεται λίστα υποψήφιων CVE. Μια διεύθυνση email διαχειριστή αφημένη σε σχόλιο HTML γίνεται στόχος phishing. Ένα banner Nginx σε 1.14.0 γίνεται εισιτήριο αναγνώρισης για δοκιμή των CVE αυτού του κλάδου.

Γι' αυτό ένας σοβαρός έλεγχος αφιερώνει χρόνο σε αυτά τα ευρήματα, ακόμη κι όταν δεν οδηγούν πουθενά μεμονωμένα. Η αναφορά προς τον πελάτη τα καταγράφει υπό «έκθεση πληροφορίας», με την υπονοούμενη σύσταση: αφαιρέστε αυτά τα αρχεία ή κρύψτε αυτά τα headers, όχι επειδή είναι άμεσα εκμεταλλεύσιμα, αλλά επειδή κάνουν τον επιτιθέμενο να κερδίζει τις είκοσι ώρες που θα είχε περάσει μαντεύοντας.


Βήμα 9 — Καταγραφή tcpdump (10 λεπτά)​

Δεν υπάρχει Wireshark σε Docker (χωρίς γραφική διεπαφή). Καταγράφουμε με tcpdump, ανοίγουμε το PCAP στον host μας με Wireshark.

Σε πρώτο τερματικό του container επιτιθέμενου:

sudo tcpdump -i eth0 -w captures/scan-syn.pcap host $CIBLE_LINUX and tcp

Σε δεύτερο τερματικό του container επιτιθέμενου (docker compose exec attaquant bash από τον host σας):

sudo nmap -sS -p 22,80,445,3389 10.20.30.20

Επιστρέφοντας στο πρώτο τερματικό, Ctrl+C στο tcpdump.

Επαληθεύστε την καταγραφή:

tcpdump -r captures/scan-syn.pcap -c 20
capinfos captures/scan-syn.pcap # αν είναι διαθέσιμο

Στον host σας, το αρχείο εμφανίζεται στο labs/docker/module-04-recon-active/attaquant-home/captures/scan-syn.pcap. Ανοίξτε το με τοπικό Wireshark.

Εφαρμόστε το φίλτρο:

tcp.flags.syn == 1 and tcp.flags.ack == 0 and ip.dst == 10.20.30.20

Μετρήστε τα πακέτα που στάλθηκαν, επαληθεύστε ότι η πηγή είναι όντως 10.20.30.5 (ο επιτιθέμενος).

Παραδοτέο: το PCAP + ένα screenshot του Wireshark που δείχνει το φίλτρο.


Βήμα 10 — Scapy σε άσκηση (5 λεπτά)​

Γράψτε το scapy_check.py στο ~/labs/:

#!/usr/bin/env python3
from scapy.all import IP, TCP, sr1

CIBLES = {
"10.20.30.20": [21, 22, 23, 80, 139, 445, 3306],
"10.20.30.12": [80, 443, 22],
}

for ip, ports in CIBLES.items():
print(f"\n=== {ip} ===")
for p in ports:
r = sr1(IP(dst=ip) / TCP(dport=p, flags="S"), timeout=2, verbose=0)
if r is None:
print(f" {p}/tcp filtered")
elif r.haslayer(TCP):
flags = int(r[TCP].flags)
if flags == 0x12:
print(f" {p}/tcp open (SYN/ACK)")
elif flags & 0x04:
print(f" {p}/tcp closed (RST)")
else:
print(f" {p}/tcp ? (flags={hex(flags)})")

Εκτελέστε:

sudo python3 scapy_check.py | tee scans/scapy-verification.txt

Παραδοτέο: η έξοδος πρέπει να αντιστοιχεί σε ό,τι είπε το Nmap στο βήμα 3. Μια απόκλιση = πρόβλημα προς κατανόηση — λάθος διεπαφή, διακριτικό φιλτράρισμα, ελλείπουσα δυνατότητα.


Βήμα 11 — Συγγραφή της αναφοράς (25 λεπτά)​

Ανοίξτε το rapport/reconnaissance.md. Δύο σελίδες. Όχι περισσότερο.

# Αναφορά αναγνώρισης — Lab εβδομάδα 4 (ημερομηνία)

## 1. Εκτελεστική περίληψη (μέγιστο 5 γραμμές)
Χαρτογράφηση δύο κεντρικών υπολογιστών στο τμήμα 10.20.30.0/24. Δύο αντίθετα
προφίλ: ένας ιστορικά πολύ φλύαρος διακομιστής Linux, και ένα intranet nginx
σωστά ρυθμισμένο αλλά που διαρρέει το λογισμικό του απόθεμα.
Προτεραιότητες για την επόμενη φάση: 1) vsftpd 2.3.4, 2) Samba usermap,
3) απαρίθμηση λογαριασμών MySQL χωρίς κωδικό.

## 2. Εύρος και μέθοδος
- Δίκτυο: 10.20.30.0/24, δίκτυο Docker bridge, απομονωμένο.
- Επιτιθέμενος: Kali 10.20.30.5 (container inskillsec/kali-lab).
- Μέθοδος: ARP → ping sweep → SYN scan όλων των θυρών → -sV στοχευμένο →
NSE ανά κατηγορία → UDP top-25 → απαρίθμηση SMB → αναγνώριση web →
επαλήθευση Scapy.

## 3. Αποτελέσματα — 10.20.30.20 (στόχος Linux, "dev-server")
- OS: Ubuntu 8.04 (SNMP + banner Apache).
- Αξιοσημείωτες θύρες TCP: 21, 22, 80, 139, 445, 3306, 3632, 5432, 5900, 8180…
- Ευπάθειες επιβεβαιωμένες από NSE:
- CVE-2011-2523 (vsftpd 2.3.4 backdoor)
- CVE-2007-2447 (Samba usermap script)
- Λογαριασμοί απαριθμημένοι μέσω null session: root, msfadmin, user, service…
- SNMP community "public": πλήρες απόθεμα αναγνώσιμο.
- Κοινόχρηστος πόρος /tmp προσβάσιμος σε εγγραφή μέσω null session.
- Προτεραιότητα 1 για εκμετάλλευση: backdoor vsftpd (εύκολο, σιωπηλό).

## 4. Αποτελέσματα — 10.20.30.12 (στόχος web, "intranet")
- Διακομιστής: nginx 1.27.x, header Server φλύαρος.
- Εφαρμογή: Intranet-App 2.3.1 (Node.js).
- Καμία CVE επιβεβαιωμένη απευθείας.
- Εκθέσεις πληροφορίας:
- /.env.example — παρέχει όνομα διακομιστή SMB και λογαριασμό MySQL ro.
- /package.json — εκθέτει 8 εξαρτήσεις με εκδόσεις.
- /admin/ και /api/v1/ υπάρχουν αλλά προστατευμένα (401/403).
- robots.txt απαριθμεί 17 εσωτερικά paths που δεν υπάρχουν απαραίτητα
όλα, αλλά δείχνουν την αναμενόμενη αρχιτεκτονική.
- Προτεραιότητα για εκμετάλλευση: αναζήτηση CVE στις 8 εξαρτήσεις
που απαριθμούνται στο package.json.

## 5. Σχέδιο για τις ενότητες 5 έως 8
1. Εκμετάλλευση vsftpd 2.3.4 (ήδη δοκιμασμένο στην ενότητα 01).
2. Εκμετάλλευση Samba usermap script (Metasploit).
3. Εξαγωγή των hashes όλων των τοπικών λογαριασμών.
4. Επαναχρησιμοποίηση των εξαγμένων διαπιστευτηρίων κατά του intranet.

## 6. Τεχνουργήματα
- scans/12-ports.nmap, scans/20-ports.nmap: πλήρεις σαρώσεις TCP.
- scans/12-versions.nmap, scans/20-versions.nmap: σαρώσεις εκδόσεων.
- scans/12-nse.nmap, scans/20-nse.nmap: στοχευμένα NSE.
- scans/20-udp.nmap, scans/20-snmp.txt: recon UDP.
- scans/20-smb.txt, scans/20-rid.json, scans/20-policy.txt: SMB.
- scans/12-web.txt, scans/12-gobuster.txt, scans/12-env-example.txt: web.
- captures/scan-syn.pcap: καταγραφή tcpdump.
- scans/scapy-verification.txt: ανεξάρτητη επαλήθευση Scapy.

Πλέγμα αυτοαξιολόγησης​

  • Το scans/decouverte.txt περιέχει δύο IP-στόχους.
  • Δύο αρχεία *-ports.nmap — όλες οι θύρες TCP σαρωμένες.
  • Δύο αρχεία *-versions.nmap — ανίχνευση εκδόσεων.
  • Στοχευμένη σάρωση NSE ανά στόχο (ποτέ --script vuln στα τυφλά).
  • Σάρωση UDP top-25 στον στόχο Linux.
  • Έξοδος snmpwalk αποθηκευμένη αν το SNMP είναι ανοιχτό.
  • Απαρίθμηση SMB: banner + κοινόχρηστοι πόροι + χρήστες + πολιτική.
  • Αναγνώριση web: whatweb + gobuster + .env.example + package.json.
  • Καταγραφή tcpdump μιας σάρωσης SYN, PCAP ανοίξιμο σε Wireshark host.
  • Script Scapy εκτελεσμένο, έξοδος αποθηκευμένη, συνεπής με το Nmap.
  • Αναφορά 2 σελίδων δομημένη σύμφωνα με το παραπάνω πρότυπο.
  • Καμία εντολή δεν εκτελέστηκε εκτός του υποδικτύου 10.20.30.0/24.

Τι μπλοκάρει συνήθως​

ΣύμπτωμαΠιθανή αιτίαΔιόρθωση
arp-scan: permission deniedΔεν προστέθηκαν οι capabilities NET_RAWΕλέγξτε το cap_add: στο compose, docker compose down έπειτα up -d.
nmap -sS απορρίπτεταιΟμοίως — χωρίς raw socketΟμοίως.
Το tcpdump δεν δείχνει τίποταΛάθος διεπαφήip -brief address στο container για να βρείτε τη διεπαφή Docker.
Το -sV δείχνει unknown παντούΟ στόχος δεν είναι ακόμη έτοιμοςΠεριμένετε 30 δευτ., το docker compose ps πρέπει να δείχνει healthy για τον στόχο.
Το SNMP δεν απαντάΤο Metasploitable 2 δεν έχει ζεσταθεί ακόμηΠεριμένετε 30 δευτ. ακόμη, ή docker compose restart cible-linux.
Το enum4linux-ng πολύ αργόΦυσιολογικό — πολλές κλήσεις RPCΥπομονή, ποτέ δεν είναι γρήγορο.
gobuster: connection refusedΤο cible-web επανεκκινείταιdocker compose logs cible-web, ελέγξτε τη σύνταξη nginx.
Το Wireshark δεν ανοίγει το PCAPΔιαδρομή στον host, όχι στο containerΠάρτε το αρχείο από το labs/docker/module-04-recon-active/attaquant-home/captures/.

Τι κρατάτε από αυτό το εργαστήριο​

  • Μια μεθοδολογία σάρωσης αναπαραγώγιμη κατά γράμμα σε 90 λεπτά, έγκυρη για οποιοδήποτε εσωτερικό τμήμα.
  • Μια αναφορά αναγνώρισης που μπορείτε, αυτούσια, να προσθέσετε ως παράρτημα σε pentest πελάτη.
  • Την κατανόηση του κόστους σε θόρυβο κάθε επιλογής Nmap.
  • Τη συνήθεια να καταγράφετε τη δική σας κίνηση — αυτό είναι το πρώτο βήμα προς την αποφυγή σε red team.
  • Μια ταξινομημένη λίστα ευπαθειών προς εκμετάλλευση στις ενότητες 5, 7, 8, 9.
  • Μια συγκεκριμένη απόδειξη ότι ένας ιστότοπος χωρίς εκμεταλλεύσιμη ευπάθεια μπορεί να διαρρεύσει σοκαριστική ποσότητα πληροφορίας — μάθημα που πρέπει να κρατήσουν οι πελάτες σας.

Επόμενο βήμα: το κουίζ της ενότητας. Έπειτα μπαίνουμε στη σάρκα του pentest — την αναζήτηση και εκμετάλλευση ευπαθειών.