139,445 - Pentesting SMB
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Το Network Basic Input Output System** (NetBIOS)** είναι ένα λογισμικό πρωτόκολλο σχεδιασμένο για να επιτρέπει στις εφαρμογές, τους υπολογιστές και τους επιτραπέζιους υπολογιστές εντός ενός τοπικού δικτύου (LAN) να αλληλεπιδρούν με το υλικό του δικτύου και να διευκολύνουν τη μετάδοση δεδομένων μέσω του δικτύου. Η αναγνώριση και η τοποθεσία των λογισμικών εφαρμογών που λειτουργούν σε ένα δίκτυο NetBIOS επιτυγχάνονται μέσω των ονομάτων NetBIOS τους, τα οποία μπορούν να είναι έως 16 χαρακτήρες σε μήκος και συχνά διαφέρουν από το όνομα του υπολογιστή. Μια συνεδρία NetBIOS μεταξύ δύο εφαρμογών ξεκινά όταν μία εφαρμογή (που λειτουργεί ως πελάτης) εκδίδει μια εντολή για να "καλέσει" μια άλλη εφαρμογή (που λειτουργεί ως διακομιστής) χρησιμοποιώντας TCP Port 139.
Τεχνικά, η Θύρα 139 αναφέρεται ως ‘NBT over IP’, ενώ η Θύρα 445 αναγνωρίζεται ως ‘SMB over IP’. Το ακρωνύμιο SMB σημαίνει ‘Server Message Blocks’, το οποίο είναι επίσης σύγχρονα γνωστό ως το Common Internet File System (CIFS). Ως πρωτόκολλο δικτύου επιπέδου εφαρμογής, το SMB/CIFS χρησιμοποιείται κυρίως για να επιτρέπει κοινή πρόσβαση σε αρχεία, εκτυπωτές, σειριακές θύρες και να διευκολύνει διάφορες μορφές επικοινωνίας μεταξύ κόμβων σε ένα δίκτυο.
Για παράδειγμα, στο πλαίσιο των Windows, τονίζεται ότι το SMB μπορεί να λειτουργεί απευθείας πάνω από TCP/IP, εξαλείφοντας την ανάγκη για NetBIOS πάνω από TCP/IP, μέσω της χρήσης της θύρας 445. Αντίθετα, σε διάφορα συστήματα, παρατηρείται η χρήση της θύρας 139, υποδεικνύοντας ότι το SMB εκτελείται σε συνδυασμό με το NetBIOS πάνω από TCP/IP.
Το Server Message Block (SMB) πρωτόκολλο, που λειτουργεί σε ένα client-server μοντέλο, έχει σχεδιαστεί για να ρυθμίζει την πρόσβαση σε αρχεία, καταλόγους και άλλους πόρους δικτύου όπως εκτυπωτές και δρομολογητές. Χρησιμοποιείται κυρίως μέσα στη σειρά λειτουργικών συστημάτων Windows, το SMB διασφαλίζει την οπισθοδρομική συμβατότητα, επιτρέποντας στις συσκευές με νεότερες εκδόσεις του λειτουργικού συστήματος της Microsoft να αλληλεπιδρούν ομαλά με αυτές που εκτελούν παλαιότερες εκδόσεις. Επιπλέον, το έργο Samba προσφέρει μια δωρεάν λύση λογισμικού, επιτρέποντας την υλοποίηση του SMB σε συστήματα Linux και Unix, διευκολύνοντας έτσι την επικοινωνία μεταξύ πλατφορμών μέσω του SMB.
Οι κοινές χρήσεις, που αντιπροσωπεύουν τυχαία μέρη του τοπικού συστήματος αρχείων, μπορούν να παρέχονται από έναν διακομιστή SMB, καθιστώντας τη ιεραρχία ορατή σε έναν πελάτη εν μέρει ανεξάρτητη από τη πραγματική δομή του διακομιστή. Οι Access Control Lists (ACLs), που καθορίζουν τα δικαιώματα πρόσβασης, επιτρέπουν λεπτομερή έλεγχο πάνω στις άδειες χρηστών, συμπεριλαμβανομένων χαρακτηριστικών όπως execute
, read
και full access
. Αυτές οι άδειες μπορούν να ανατεθούν σε μεμονωμένους χρήστες ή ομάδες, με βάση τις κοινές χρήσεις, και είναι διακριτές από τις τοπικές άδειες που έχουν οριστεί στον διακομιστή.
Η πρόσβαση στην κοινή χρήση IPC$ μπορεί να αποκτηθεί μέσω μιας ανώνυμης κενής συνεδρίας, επιτρέποντας την αλληλεπίδραση με υπηρεσίες που εκτίθενται μέσω ονομασμένων σωλήνων. Το εργαλείο enum4linux
είναι χρήσιμο για αυτό το σκοπό. Χρησιμοποιούμενο σωστά, επιτρέπει την απόκτηση:
Πληροφοριών για το λειτουργικό σύστημα
Λεπτομερειών για το γονικό τομέα
Συγκέντρωσης τοπικών χρηστών και ομάδων
Πληροφοριών για διαθέσιμες κοινές χρήσεις SMB
Της αποτελεσματικής πολιτικής ασφάλειας του συστήματος
Αυτή η λειτουργικότητα είναι κρίσιμη για τους διαχειριστές δικτύου και τους επαγγελματίες ασφάλειας για να αξιολογήσουν τη θέση ασφάλειας των υπηρεσιών SMB (Server Message Block) σε ένα δίκτυο. Το enum4linux
παρέχει μια ολοκληρωμένη εικόνα του περιβάλλοντος SMB του στοχευμένου συστήματος, που είναι απαραίτητη για την αναγνώριση πιθανών ευπαθειών και τη διασφάλιση ότι οι υπηρεσίες SMB είναι σωστά ασφαλισμένες.
Η παραπάνω εντολή είναι ένα παράδειγμα του πώς μπορεί να χρησιμοποιηθεί το enum4linux
για να εκτελέσει πλήρη καταμέτρηση σε έναν στόχο που καθορίζεται από το target_ip
.
Αν δεν ξέρετε τι είναι το NTLM ή θέλετε να μάθετε πώς λειτουργεί και πώς να το εκμεταλλευτείτε, θα βρείτε πολύ ενδιαφέρουσα αυτή τη σελίδα σχετικά με το NTLM όπου εξηγείται πώς λειτουργεί αυτό το πρωτόκολλο και πώς μπορείτε να το εκμεταλλευτείτε:
Για να αναζητήσετε πιθανά exploits για την έκδοση SMB, είναι σημαντικό να γνωρίζετε ποια έκδοση χρησιμοποιείται. Εάν αυτή η πληροφορία δεν εμφανίζεται σε άλλα εργαλεία που χρησιμοποιούνται, μπορείτε να:
Χρησιμοποιήσετε το MSF auxiliary module _auxiliary/scanner/smb/smb_version
Ή αυτό το script:
Αυτές οι πληροφορίες θα πρέπει ήδη να έχουν συλλεχθεί από το enum4linux και enum4linux-ng
Oneliner
xdg-open smb://cascade.htb/
smb://friendzone.htb/general/
Είναι πάντα προτιμότερο να ελέγξετε αν μπορείτε να έχετε πρόσβαση σε οτιδήποτε, αν δεν έχετε διαπιστευτήρια δοκιμάστε να χρησιμοποιήσετε null διαπιστευτήρια/χρήστης επισκέπτης.
Είναι πιθανό να είστε περιορισμένοι στο να εμφανίσετε οποιουσδήποτε πόρους της μηχανής-οικοδεσπότη και όταν προσπαθείτε να τους καταγράψετε, φαίνεται ότι δεν υπάρχουν πόροι για σύνδεση. Έτσι, μπορεί να αξίζει να προσπαθήσετε να συνδεθείτε χειροκίνητα σε έναν πόρο. Για να καταμετρήσετε τους πόρους χειροκίνητα, μπορεί να θέλετε να αναζητήσετε απαντήσεις όπως NT_STATUS_ACCESS_DENIED και NT_STATUS_BAD_NETWORK_NAME, όταν χρησιμοποιείτε μια έγκυρη συνεδρία (π.χ. null session ή έγκυρα διαπιστευτήρια). Αυτά μπορεί να υποδεικνύουν αν ο πόρος υπάρχει και δεν έχετε πρόσβαση σε αυτόν ή αν ο πόρος δεν υπάρχει καθόλου.
Κοινά ονόματα πόρων για στόχους Windows είναι
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Κοινά ονόματα πόρων από Network Security Assessment 3rd edition)
Μπορείτε να προσπαθήσετε να συνδεθείτε σε αυτούς χρησιμοποιώντας την παρακάτω εντολή
ή για αυτό το σενάριο (χρησιμοποιώντας μια κενή συνεδρία)
παραδείγματα
PowerShell
CMD κονσόλα
MMC Snap-in (γραφικό)
explorer.exe (γραφικό), εισάγετε \\<ip>\
για να δείτε τις διαθέσιμες μη κρυφές κοινές χρήσεις.
Διαβάστε τις προηγούμενες ενότητες για να μάθετε πώς να συνδεθείτε με διαπιστευτήρια/Pass-the-Hash.
Commands:
mask: καθορίζει τη μάσκα που χρησιμοποιείται για να φιλτράρει τα αρχεία μέσα στον κατάλογο (π.χ. "" για όλα τα αρχεία)
recurse: ενεργοποιεί την αναδρομή (προεπιλογή: απενεργοποιημένη)
prompt: απενεργοποιεί την προτροπή για ονόματα αρχείων (προεπιλογή: ενεργοποιημένη)
mget: αντιγράφει όλα τα αρχεία που ταιριάζουν με τη μάσκα από τον κεντρικό υπολογιστή στη μηχανή του πελάτη
(Πληροφορίες από τη σελίδα man του smbclient)
Snaffler****
CrackMapExec αράχνη.
-M spider_plus [--share <share_name>]
--pattern txt
Ιδιαίτερα ενδιαφέρον από τις κοινές είναι τα αρχεία που ονομάζονται Registry.xml
καθώς μπορεί να περιέχουν κωδικούς πρόσβασης για χρήστες που έχουν ρυθμιστεί με αυτόματη σύνδεση μέσω Πολιτικής Ομάδας. Ή τα αρχεία web.config
καθώς περιέχουν διαπιστευτήρια.
Η κοινή χρήση SYSVOL είναι αναγνώσιμη από όλους τους αυθεντικοποιημένους χρήστες στο τομέα. Εκεί μπορείτε να βρείτε πολλά διαφορετικά batch, VBScript και PowerShell σενάρια. Πρέπει να ελέγξετε τα σενάρια μέσα σε αυτό καθώς μπορεί να βρείτε ευαίσθητες πληροφορίες όπως κωδικούς πρόσβασης.
Μπορεί να είστε σε θέση να διαβάσετε το μητρώο χρησιμοποιώντας κάποια ανακαλυφθέντα διαπιστευτήρια. Το Impacket reg.py
σας επιτρέπει να δοκιμάσετε:
Η προεπιλεγμένη ρύθμιση του διακομιστή Samba βρίσκεται συνήθως στο /etc/samba/smb.conf
και μπορεί να έχει κάποιες επικίνδυνες ρυθμίσεις:
Η εντολή smbstatus
παρέχει πληροφορίες σχετικά με τον διακομιστή και για ποιοι είναι συνδεδεμένοι.
Μπορείτε να αυθεντικοποιηθείτε στο kerberos χρησιμοποιώντας τα εργαλεία smbclient και rpcclient:
crackmapexec μπορεί να εκτελέσει εντολές καταχρώντας οποιαδήποτε από τις mmcexec, smbexec, atexec, wmiexec με το wmiexec να είναι η προεπιλεγμένη μέθοδος. Μπορείτε να υποδείξετε ποια επιλογή προτιμάτε να χρησιμοποιήσετε με την παράμετρο --exec-method
:
Και οι δύο επιλογές θα δημιουργήσουν μια νέα υπηρεσία (χρησιμοποιώντας \pipe\svcctl μέσω SMB) στη μηχανή του θύματος και θα τη χρησιμοποιήσουν για να εκτελέσουν κάτι (psexec θα ανεβάσει ένα εκτελέσιμο αρχείο στο ADMIN$ share και smbexec θα δείξει σε cmd.exe/powershell.exe και θα βάλει στα επιχειρήματα το payload --file-less technique--). Περισσότερες πληροφορίες σχετικά με psexec και smbexec. Στο kali βρίσκεται στο /usr/share/doc/python3-impacket/examples/
Using parameter-k
μπορείτε να αυθεντικοποιηθείτε μέσω kerberos αντί για NTLM
Εκτελέστε κρυφά μια εντολή shell χωρίς να αγγίξετε τον δίσκο ή να εκτελέσετε μια νέα υπηρεσία χρησιμοποιώντας DCOM μέσω port 135. Στο kali βρίσκεται στο /usr/share/doc/python3-impacket/examples/
Χρησιμοποιώντας παράμετρο -k
μπορείτε να αυθεντικοποιηθείτε μέσω kerberos αντί για NTLM
Εκτέλεση εντολών μέσω του Προγραμματιστή Εργασιών (χρησιμοποιώντας \pipe\atsvc μέσω SMB). Στο kali βρίσκεται στο /usr/share/doc/python3-impacket/examples/
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Αυτό δεν συνιστάται, μπορεί να αποκλείσετε έναν λογαριασμό αν υπερβείτε τις μέγιστες επιτρεπόμενες προσπάθειες
Αυτή η επίθεση χρησιμοποιεί το εργαλείο Responder για να καταγράψει τις συνεδρίες αυθεντικοποίησης SMB σε ένα εσωτερικό δίκτυο και να τις μεταφέρει σε μια στόχο μηχανή. Εάν η αυθεντικοποίηση είναι επιτυχής, θα σας ρίξει αυτόματα σε ένα σύστημα shell. Περισσότερες πληροφορίες σχετικά με αυτή την επίθεση εδώ.
Η βιβλιοθήκη Windows URLMon.dll προσπαθεί αυτόματα να αυθεντικοποιηθεί στον υπολογιστή όταν μια σελίδα προσπαθεί να αποκτήσει πρόσβαση σε κάποιο περιεχόμενο μέσω SMB, για παράδειγμα: img src="\\10.10.10.10\path\image.jpg"
Αυτό συμβαίνει με τις συναρτήσεις:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Οι οποίες χρησιμοποιούνται από ορισμένους περιηγητές και εργαλεία (όπως το Skype)
Παρόμοια με το SMB Trapping, η τοποθέτηση κακόβουλων αρχείων σε ένα σύστημα στόχο (μέσω SMB, για παράδειγμα) μπορεί να προκαλέσει μια προσπάθεια αυθεντικοποίησης SMB, επιτρέποντας την παγίδευση του hash NetNTLMv2 με ένα εργαλείο όπως το Responder. Το hash μπορεί στη συνέχεια να σπάσει εκτός σύνδεσης ή να χρησιμοποιηθεί σε μια SMB relay attack.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Όνομα χρήστη(ες)
Κοινές κωδικοί πρόσβασης
(κενό)
(κενό)
guest
(κενό)
Administrator, admin
(κενό), password, administrator, admin
arcserve
arcserve, backup
tivoli, tmersrvd
tivoli, tmersrvd, admin
backupexec, backup
backupexec, backup, arcada
test, lab, demo
password, test, lab, demo
Ρύθμιση
Περιγραφή
browseable = yes
Επιτρέπεται η καταγραφή των διαθέσιμων κοινών πόρων στην τρέχουσα κοινή χρήση;
read only = no
Απαγορεύεται η δημιουργία και η τροποποίηση αρχείων;
writable = yes
Επιτρέπεται στους χρήστες να δημιουργούν και να τροποποιούν αρχεία;
guest ok = yes
Επιτρέπεται η σύνδεση στην υπηρεσία χωρίς τη χρήση κωδικού πρόσβασης;
enable privileges = yes
Τηρούνται τα δικαιώματα που έχουν ανατεθεί σε συγκεκριμένο SID;
create mask = 0777
Ποια δικαιώματα πρέπει να ανατεθούν στα νεοδημιουργηθέντα αρχεία;
directory mask = 0777
Ποια δικαιώματα πρέπει να ανατεθούν στους νεοδημιουργηθέντες καταλόγους;
logon script = script.sh
Ποιο σενάριο πρέπει να εκτελείται κατά την είσοδο του χρήστη;
magic script = script.sh
Ποιο σενάριο πρέπει να εκτελείται όταν κλείνει το σενάριο;
magic output = script.out
Πού πρέπει να αποθηκεύεται η έξοδος του μαγικού σεναρίου;