22 - Pentesting SSH/SFTP
Συμβουλή για bug bounty: Εγγραφείτε στο Intigriti, μια πρεμιέρα πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς! Γίνετε μέλος μας στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε αμοιβές έως και $100,000!
Βασικές Πληροφορίες
SSH (Secure Shell ή Secure Socket Shell) είναι ένα πρωτόκολλο δικτύου που επιτρέπει μια ασφαλή σύνδεση σε έναν υπολογιστή μέσω ενός μη ασφαλούς δικτύου. Είναι απαραίτητο για τη διατήρηση της εμπιστευτικότητας και ακεραιότητας των δεδομένων κατά την πρόσβαση σε απομακρυσμένα συστήματα.
Προεπιλεγμένη θύρα: 22
Διακομιστές SSH:
openSSH – OpenBSD SSH, περιλαμβάνεται σε διανομές BSD, Linux και Windows από τα Windows 10 και μετά
Dropbear – Υλοποίηση SSH για περιβάλλοντα με περιορισμένη μνήμη και επεξεργαστικούς πόρους, περιλαμβάνεται στο OpenWrt
PuTTY – Υλοποίηση SSH για Windows, ο client χρησιμοποιείται συχνά, αλλά η χρήση του διακομιστή είναι σπάνια
CopSSH – υλοποίηση του OpenSSH για Windows
Βιβλιοθήκες SSH (υλοποίηση στην πλευρά του διακομιστή):
wolfSSH – Βιβλιοθήκη διακομιστή SSHv2 γραμμένη σε ANSI C και σχεδιασμένη για ενσωματωμένα, RTOS και περιβάλλοντα με πεεριορισμένους πόρους
Apache MINA SSHD – Η βιβλιοθήκη Java Apache SSHD βασίζεται στο Apache MINA
paramiko – Βιβλιοθήκη πρωτοκόλλου Python SSHv2
Απαρίθμηση
Ανάκτηση Μπάνερ
Αυτοματοποιημένο ssh-audit
Το ssh-audit είναι ένα εργαλείο για τον έλεγχο διαμόρφωσης του διακομιστή και του πελάτη ssh.
Το https://github.com/jtesta/ssh-audit είναι ένα ενημερωμένο fork από το https://github.com/arthepsy/ssh-audit/
Χαρακτηριστικά:
Υποστήριξη διακομιστή πρωτοκόλλου SSH1 και SSH2;
Ανάλυση διαμόρφωσης πελάτη SSH;
Λήψη banner, αναγνώριση συσκευής ή λογισμικού και λειτουργικού συστήματος, ανίχνευση συμπίεσης;
Συγκέντρωση αλγορίθμων ανταλλαγής κλειδιών, κλειδιών κεντρικής αυθεντικοποίησης, κρυπτογράφησης και κώδικα ελέγχου αυθεντικότητας μηνυμάτων;
Πληροφορίες αλγορίθμου εξόδου (διαθέσιμο από, αφαιρεμένο/απενεργοποιημένο, μη ασφαλές/αδύναμο/παλιό, κλπ);
Συστάσεις αλγορίθμου εξόδου (προσθήκη ή αφαίρεση βάσει αναγνωρισμένης έκδοσης λογισμικού);
Πληροφορίες ασφάλειας εξόδου (σχετικά θέματα, ανατεθειμένη λίστα CVE, κλπ);
Ανάλυση συμβατότητας έκδοσης SSH βάσει πληροφοριών αλγορίθμου;
Ιστορικές πληροφορίες από OpenSSH, Dropbear SSH και libssh;
Λειτουργεί σε Linux και Windows;
Χωρίς εξαρτήσεις
Δημόσιο κλειδί SSH του διακομιστή
Δείτε το σε λειτουργία (Asciinema)
Αδύναμοι Αλγόριθμοι Κρυπτογράφησης
Αυτό ανακαλύπτεται από προεπιλογή από το nmap. Αλλά μπορείτε επίσης να χρησιμοποιήσετε το sslscan ή το sslyze.
Σενάρια Nmap
Shodan
ssh
Επίθεση με βία στα ονόματα χρηστών, τους κωδικούς πρόσβασης και τα ιδιωτικά κλειδιά
Απαρίθμηση Ονομάτων Χρηστών
Σε μερικές εκδόσεις του OpenSSH μπορείτε να κάνετε μια επίθεση χρονισμού για να απαριθμήσετε τους χρήστες. Μπορείτε να χρησιμοποιήσετε ένα ενότητα του metasploit για να εκμεταλλευτείτε αυτό:
Κάποια συνηθισμένα διαπιστευτήρια ssh εδώ και εδώ και παρακάτω.
Βίαιη επίθεση με Ιδιωτικό Κλειδί
Αν γνωρίζετε κάποια ιδιωτικά κλειδιά ssh που θα μπορούσαν να χρησιμοποιηθούν... ας το δοκιμάσουμε. Μπορείτε να χρησιμοποιήσετε το script nmap:
Ή MSF βοηθητική μονάδα:
Ή χρησιμοποιήστε το ssh-keybrute.py
(φυσικό python3, ελαφρύ και έχει ενεργοποιημένους παλαιούς αλγόριθμους): snowdroppe/ssh-keybrute.
Γνωστά κακά κλειδιά μπορούν να βρεθούν εδώ:
Αδύναμα κλειδιά SSH / Προβλέψιμο PRNG Debian
Κάποια συστήματα έχουν γνωστές ελαττώσεις στον τυχαίο σπόρο που χρησιμοποιείται για τη δημιουργία κρυπτογραφικού υλικού. Αυτό μπορεί να οδηγήσει σε μειωμένο χώρο κλειδιών που μπορεί να αποκρυπτογραφηθεί με βία. Προ-δημιουργημένα σύνολα κλειδιών που δημιουργήθηκαν σε συστήματα Debian που επηρεάζονται από αδύναμο PRNG είναι διαθέσιμα εδώ: g0tmi1k/debian-ssh.
Θα πρέπει να ψάξετε εδώ για να αναζητήσετε έγκυρα κλειδιά για το μηχάνημα θύματος.
Kerberos
crackmapexec χρησιμοποιώντας το πρωτόκολλο ssh
μπορεί να χρησιμοποιήσει την επιλογή --kerberos
για πιστοποίηση μέσω kerberos.
Για περισσότερες πληροφορίες εκτελέστε crackmapexec ssh --help
.
Προεπιλεγμένα Διαπιστευτήρια
Προμηθευτής | Ονόματα Χρηστών | Κωδικοί Πρόσβασης |
APC | apc, device | apc |
Brocade | admin | admin123, password, brocade, fibranne |
Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
D-Link | admin, user | private, admin, user |
Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin |
Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
Juniper | netscreen | netscreen |
NetApp | admin | netapp123 |
Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
SSH-MitM
Αν βρίσκεστε στο τοπικό δίκτυο όπως το θύμα που θα συνδεθεί στο διακομιστή SSH χρησιμοποιώντας όνομα χρήστη και κωδικό πρόσβασης, μπορείτε να προσπαθήσετε να εκτελέσετε μια επίθεση MitM για να κλέψετε αυτές τις διαπιστευτήρια:
Διαδρομή επίθεσης:
Ανακατεύθυνση Κίνησης: Ο επιτιθέμενος ανακατευθύνει την κίνηση του θύματος στο μηχάνημά του, αποκτώντας αποτελεσματικά τη σύνδεση με τον διακομιστή SSH.
Ανάκτηση και Καταγραφή: Το μηχάνημα του επιτιθέμενου λειτουργεί ως διακομιστής μεσολάβησης, καταγράφοντας τα στοιχεία σύνδεσης του χρήστη προσποιούμενος ότι είναι ο νόμιμος διακομιστής SSH.
Εκτέλεση Εντολών και Μετάδοση: Τέλος, ο διακομιστής του επιτιθέμενου καταγράφει τα διαπιστευτήρια του χρήστη, προωθεί τις εντολές στον πραγματικό διακομιστή SSH, τις εκτελεί και στέλνει τα αποτελέσματα πίσω στον χρήστη, κάνοντας τη διαδικασία να φαίνεται ομαλή και νόμιμη.
SSH MITM κάνει ακριβώς αυτό που περιγράφεται παραπάνω.
Για να καταγράψετε την πραγματοποίηση της πραγματικής MitM μπορείτε να χρησιμοποιήσετε τεχνικές όπως η ARP spoofing, η DNS spoofing ή άλλες που περιγράφονται στις επιθέσεις διαπλάτησης δικτύου.
SSH-Snake
Αν θέλετε να διατρέξετε ένα δίκτυο χρησιμοποιώντας ανακαλυφθέντα ιδιωτικά κλειδιά SSH σε συστήματα, χρησιμοποιώντας κάθε ιδιωτικό κλειδί σε κάθε σύστημα για νέους οικοδεσπότες, τότε το SSH-Snake είναι αυτό που χρειάζεστε.
Το SSH-Snake εκτελεί αυτόματα και αναδρομικά τις ακόλουθες εργασίες:
Στο τρέχον σύστημα, βρείτε οποιαδήποτε ιδιωτικά κλειδιά SSH,
Στο τρέχον σύστημα, βρείτε οποιουσδήποτε οικοδεσπότες ή προορισμούς (χρήστης@οικοδεσπότη) που μπορεί να γίνουν δεκτοί τα ιδιωτικά κλειδιά,
Προσπαθήστε να συνδεθείτε με SSH σε όλους τους προορισμούς χρησιμοποιώντας όλα τα ανακαλυφθέντα ιδιωτικά κλειδιά,
Αν συνδεθείτε με επιτυχία σε έναν προορισμό, επαναλάβετε τα βήματα #1 - #4 στο συνδεδεμένο σύστημα.
Είναι πλήρως αυτοαναπαραγόμενο και αυτοδιαισθητούμενο - και εντελώς χωρίς αρχεία.
Λανθασμένες Ρυθμίσεις Παραμετροποίησης
Σύνδεση ως Root
Συνήθως οι διακομιστές SSH επιτρέπουν τη σύνδεση του χρήστη root από προεπιλογή, πράγμα που αποτελεί σημαντικό κίνδυνο ασφάλειας. Η απενεργοποίηση της σύνδεσης ως root είναι ένα κρίσιμο βήμα για την ασφάλεια του διακομιστή. Η μη εξουσιοδοτημένη πρόσβαση με διαχειριστικά δικαιώματα και οι επιθέσεις με βία στον κωδικό πρόσβασης μπορούν να αντιμετωπιστούν με αυτήν την αλλαγή.
Για Απενεργοποίηση της Σύνδεσης ως Root στο OpenSSH:
Επεξεργασία του αρχείου ρυθμίσεων SSH με:
sudoedit /etc/ssh/sshd_config
Αλλαγή της ρύθμισης από
#PermitRootLogin yes
σεPermitRootLogin no
.Επαναφόρτωση της ρύθμισης χρησιμοποιώντας:
sudo systemctl daemon-reload
Επανεκκίνηση του διακομιστή SSH για να εφαρμοστούν οι αλλαγές:
sudo systemctl restart sshd
Επίθεση Βίας SFTP
Εκτέλεση Εντολών SFTP
Συχνά συμβαίνει ένα κοινό λάθος με τις ρυθμίσεις SFTP, όπου οι διαχειριστές σκοπεύουν να επιτρέψουν στους χρήστες να ανταλλάσσουν αρχεία χωρίς να ενεργοποιούν τη
Εδώ υπάρχει ένα παράδειγμα ασφαλούς ρύθμισης SFTP (/etc/ssh/sshd_config
- openSSH) για τον χρήστη noraj
:
Αυτή η διαμόρφωση θα επιτρέψει μόνο το SFTP: απενεργοποίηση της πρόσβασης στο κέλυφος με την επιβολή της εντολής εκκίνησης και απενεργοποίηση της πρόσβασης TTY αλλά και απενεργοποίηση όλων των ειδών προώθησης θυρών ή τούνελινγκ.
SFTP Tunneling
Αν έχετε πρόσβαση σε ένα διακομιστή SFTP, μπορείτε επίσης να τουνελώσετε την κίνησή σας μέσω αυτού, για παράδειγμα χρησιμοποιώντας την κοινή προώθηση θυρών:
SFTP Symlink
Το sftp έχει την εντολή "symlink". Επομένως, αν έχετε δικαιώματα εγγραφής σε κάποιο φάκελο, μπορείτε να δημιουργήσετε συμβολικούς συνδέσμους για άλλους φακέλους/αρχεία. Εφόσον πιθανότατα βρίσκεστε παγιδευμένοι μέσα σε ένα chroot αυτό δεν θα είναι ιδιαίτερα χρήσιμο για εσάς, αλλά, αν μπορείτε να έχετε πρόσβαση στον δημιουργημένο συμβολικό σύνδεσμο από ένα υπηρεσία χωρίς chroot (για παράδειγμα, αν μπορείτε να έχετε πρόσβαση στον σύνδεσμο από το web), θα μπορούσατε να ανοίξετε τα αρχεία που έχουν συμβολικοώθεί μέσω του web.
Για παράδειγμα, για να δημιουργήσετε ένα συμβολικό σύνδεσμο από ένα νέο αρχείο "froot" προς "/":
Μέθοδοι Πιστοποίησης
Σε περιβάλλοντα υψηλής ασφάλειας, είναι συνηθισμένο να ενεργοποιούνται μόνο οι μέθοδοι πιστοποίησης βασισμένες σε κλειδιά ή δύο παραγόντων αντί για την απλή πιστοποίηση βασισμένη σε κωδικό πρόσβασης. Ωστόσο, συχνά οι ισχυρότερες μέθοδοι πιστοποίησης ενεργοποιούνται χωρίς να απενεργοποιούνται οι ασθενέστερες. Ένα συχνό παράδειγμα είναι η ενεργοποίηση της publickey
στη διαμόρφωση του openSSH και η ορισμός της ως προεπιλεγμένης μεθόδου, χωρίς όμως να απενεργοποιείται η password
. Έτσι, χρησιμοποιώντας τη λεπτομερή λειτουργία του πελάτη SSH, ένας επιτιθέμενος μπορεί να δει ότι μια ασθενέστερη μέθοδος είναι ενεργοποιημένη:
Για παράδειγμα, εάν έχει οριστεί ένα όριο αποτυχίας πιστοποίησης και δεν έχετε ποτέ την ευκαιρία να φτάσετε στη μέθοδο κωδικού πρόσβασης, μπορείτε να χρησιμοποιήσετε την επιλογή PreferredAuthentications
για να αναγκάσετε τη χρήση αυτής της μεθόδου.
Είναι απαραίτητο να ελέγξετε τη διαμόρφωση του διακομιστή SSH για να βεβαιωθείτε ότι είναι εξουσιοδοτημένες μόνο οι αναμενόμενες μεθόδοι. Η χρήση της λειτουργίας verbose στον πελάτη μπορεί να βοηθήσει να δείτε την αποτελεσματικότητα της διαμόρφωσης.
Αρχεία ρυθμίσεων
Fuzzing
References
Μπορείτε να βρείτε ενδιαφέρουσες οδηγίες για την ενίσχυση του SSH στο https://www.ssh-audit.com/hardening_guides.html
Συμβουλή για bug bounty: Εγγραφείτε στο Intigriti, μια προηγμένη πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς! Γίνετε μέλος στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε αμοιβές έως $100,000!
HackTricks Automatic Commands
Last updated