22 - Pentesting SSH/SFTP
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)
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
SSH (Secure Shell ή Secure Socket Shell) είναι ένα πρωτόκολλο δικτύου που επιτρέπει μια ασφαλή σύνδεση σε έναν υπολογιστή μέσω ενός μη ασφαλούς δικτύου. Είναι απαραίτητο για τη διατήρηση της εμπιστευτικότητας και της ακεραιότητας των δεδομένων κατά την πρόσβαση σε απομακρυσμένα συστήματα.
Default port: 22
SSH servers:
openSSH – OpenBSD SSH, που περιλαμβάνεται σε διανομές BSD, Linux και Windows από τα Windows 10
Dropbear – Υλοποίηση SSH για περιβάλλοντα με χαμηλή μνήμη και πόρους επεξεργαστή, που περιλαμβάνεται στο OpenWrt
PuTTY – Υλοποίηση SSH για Windows, ο πελάτης χρησιμοποιείται συνήθως αλλά η χρήση του διακομιστή είναι σπανιότερη
CopSSH – Υλοποίηση του OpenSSH για Windows
SSH libraries (implementing server-side):
wolfSSH – Βιβλιοθήκη διακομιστή SSHv2 γραμμένη σε ANSI C και στοχευμένη για ενσωματωμένα, RTOS και περιορισμένα περιβάλλοντα πόρων
Apache MINA SSHD – Η βιβλιοθήκη Apache SSHD java βασίζεται στο Apache MINA
paramiko – Βιβλιοθήκη πρωτοκόλλου Python SSHv2
ssh-audit είναι ένα εργαλείο για την επιθεώρηση της διαμόρφωσης του ssh server & client.
https://github.com/jtesta/ssh-audit είναι ένα ενημερωμένο fork από https://github.com/arthepsy/ssh-audit/
Χαρακτηριστικά:
Υποστήριξη πρωτοκόλλου SSH1 και SSH2;
ανάλυση της διαμόρφωσης του SSH client;
λήψη banner, αναγνώριση συσκευής ή λογισμικού και λειτουργικού συστήματος, ανίχνευση συμπίεσης;
συλλογή αλγορίθμων ανταλλαγής κλειδιών, host-key, κρυπτογράφησης και κωδικών αυθεντικοποίησης μηνυμάτων;
έξοδος πληροφοριών αλγορίθμου (διαθέσιμο από, αφαιρέθηκε/απενεργοποιήθηκε, μη ασφαλές/αδύναμο/παλαιό, κ.λπ.);
έξοδος συστάσεων αλγορίθμου (προσθήκη ή αφαίρεση με βάση την αναγνωρισμένη έκδοση λογισμικού);
έξοδος πληροφοριών ασφαλείας (σχετικά ζητήματα, ανατεθείσα λίστα CVE, κ.λπ.);
ανάλυση συμβατότητας έκδοσης SSH με βάση τις πληροφορίες αλγορίθμου;
ιστορικές πληροφορίες από OpenSSH, Dropbear SSH και libssh;
λειτουργεί σε Linux και Windows;
χωρίς εξαρτήσεις
Αυτό ανακαλύπτεται από προεπιλογή από το nmap. Αλλά μπορείτε επίσης να χρησιμοποιήσετε το sslcan ή το sslyze.
ssh
Σε ορισμένες εκδόσεις του OpenSSH μπορείτε να κάνετε μια επίθεση χρονισμού για να καταμετρήσετε τους χρήστες. Μπορείτε να χρησιμοποιήσετε ένα module του metasploit για να εκμεταλλευτείτε αυτό:
Ορισμένα κοινά ssh διαπιστευτήρια εδώ και εδώ και παρακάτω.
Αν γνωρίζετε μερικά ssh ιδιωτικά κλειδιά που θα μπορούσαν να χρησιμοποιηθούν... ας το δοκιμάσουμε. Μπορείτε να χρησιμοποιήσετε το σενάριο nmap:
Ή το βοηθητικό module του MSF:
Or use ssh-keybrute.py
(native python3, lightweight and has legacy algorithms enabled): snowdroppe/ssh-keybrute.
Ορισμένα συστήματα έχουν γνωστά ελαττώματα στον τυχαίο σπόρο που χρησιμοποιείται για τη δημιουργία κρυπτογραφικού υλικού. Αυτό μπορεί να έχει ως αποτέλεσμα μια δραματικά μειωμένη περιοχή κλειδιών που μπορεί να παραβιαστεί. Προγεννημένα σύνολα κλειδιών που δημιουργήθηκαν σε συστήματα Debian που επηρεάζονται από αδύνατο PRNG είναι διαθέσιμα εδώ: g0tmi1k/debian-ssh.
Πρέπει να κοιτάξετε εδώ για να αναζητήσετε έγκυρα κλειδιά για τη μηχανή του θύματος.
crackmapexec χρησιμοποιώντας το πρωτόκολλο ssh
μπορεί να χρησιμοποιήσει την επιλογή --kerberos
για να πιστοποιηθεί μέσω kerberos.
Για περισσότερες πληροφορίες εκτελέστε crackmapexec ssh --help
.
Vendor
Usernames
Passwords
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 server χρησιμοποιώντας όνομα χρήστη και κωδικό πρόσβασης, μπορείτε να προσπαθήσετε να εκτελέσετε μια επίθεση MitM για να κλέψετε αυτές τις διαπιστευτήρια:
Διαδρομή επίθεσης:
Ανακατεύθυνση κυκλοφορίας: Ο επιτιθέμενος παρακάμπτει την κυκλοφορία του θύματος στη μηχανή του, αποτελεσματικά παρεμβαίνοντας στην προσπάθεια σύνδεσης στον SSH server.
Παρεμβολή και καταγραφή: Η μηχανή του επιτιθέμενου λειτουργεί ως proxy, καταγράφοντας τις λεπτομέρειες σύνδεσης του χρήστη προσποιούμενη ότι είναι ο νόμιμος SSH server.
Εκτέλεση εντολών και αναμετάδοση: Τέλος, ο server του επιτιθέμενου καταγράφει τις διαπιστευτήρια του χρήστη, προωθεί τις εντολές στον πραγματικό SSH server, τις εκτελεί και στέλνει τα αποτελέσματα πίσω στον χρήστη, κάνοντάς το διαδικασία να φαίνεται ομαλή και νόμιμη.
SSH MITM κάνει ακριβώς αυτό που περιγράφεται παραπάνω.
Για να καταγράψετε την πραγματική MitM μπορείτε να χρησιμοποιήσετε τεχνικές όπως ARP spoofing, DNS spoofing ή άλλες που περιγράφονται στις επιθέσεις spoofing δικτύου.
Εάν θέλετε να διασχίσετε ένα δίκτυο χρησιμοποιώντας ανακαλυφθέντα SSH ιδιωτικά κλειδιά σε συστήματα, χρησιμοποιώντας κάθε ιδιωτικό κλειδί σε κάθε σύστημα για νέους υπολογιστές, τότε SSH-Snake είναι αυτό που χρειάζεστε.
Το SSH-Snake εκτελεί τις παρακάτω εργασίες αυτόματα και αναδρομικά:
Στο τρέχον σύστημα, βρείτε οποιαδήποτε SSH ιδιωτικά κλειδιά,
Στο τρέχον σύστημα, βρείτε οποιουσδήποτε υπολογιστές ή προορισμούς (user@host) που μπορεί να γίνουν αποδεκτά τα ιδιωτικά κλειδιά,
Προσπαθήστε να SSH σε όλους τους προορισμούς χρησιμοποιώντας όλα τα ανακαλυφθέντα ιδιωτικά κλειδιά,
Εάν συνδεθείτε επιτυχώς σε έναν προορισμό, επαναλάβετε τα βήματα #1 - #4 στο συνδεδεμένο σύστημα.
Είναι εντελώς αυτοαναπαραγώγιμο και αυτοδιαδιδόμενο -- και εντελώς χωρίς αρχεία.
Είναι κοινό για τους SSH servers να επιτρέπουν τη σύνδεση του χρήστη root από προεπιλογή, κάτι που θέτει σημαντικό κίνδυνο ασφάλειας. Η απενεργοποίηση της σύνδεσης root είναι ένα κρίσιμο βήμα για την ασφάλιση του server. Η μη εξουσιοδοτημένη πρόσβαση με διαχειριστικά δικαιώματα και οι επιθέσεις brute force μπορούν να μετριαστούν κάνοντας αυτή την αλλαγή.
Για να απενεργοποιήσετε τη σύνδεση root στο OpenSSH:
Επεξεργαστείτε το αρχείο ρυθμίσεων SSH με: sudoedit /etc/ssh/sshd_config
Αλλάξτε την ρύθμιση από #PermitRootLogin yes
σε PermitRootLogin no
.
Επαναφορτώστε τη ρύθμιση χρησιμοποιώντας: sudo systemctl daemon-reload
Επανεκκινήστε τον SSH server για να εφαρμοστούν οι αλλαγές: sudo systemctl restart sshd
Υπάρχει μια κοινή παράλειψη που συμβαίνει με τις ρυθμίσεις SFTP, όπου οι διαχειριστές σκοπεύουν οι χρήστες να ανταλλάσσουν αρχεία χωρίς να επιτρέπουν την απομακρυσμένη πρόσβαση στο shell. Παρά την ρύθμιση χρηστών με μη διαδραστικά shells (π.χ., /usr/bin/nologin
) και την περιορισμένη πρόσβαση σε μια συγκεκριμένη διαδρομή, παραμένει ένα κενό ασφαλείας. Οι χρήστες μπορούν να παρακάμψουν αυτούς τους περιορισμούς ζητώντας την εκτέλεση μιας εντολής (όπως /bin/bash
) αμέσως μετά τη σύνδεση, πριν αναλάβει το καθορισμένο μη διαδραστικό shell τους. Αυτό επιτρέπει την μη εξουσιοδοτημένη εκτέλεση εντολών, υπονομεύοντας τα προγραμματισμένα μέτρα ασφαλείας.
Εδώ είναι ένα παράδειγμα ασφαλούς διαμόρφωσης SFTP (/etc/ssh/sshd_config
– openSSH) για τον χρήστη noraj
:
Αυτή η ρύθμιση θα επιτρέπει μόνο SFTP: απενεργοποιώντας την πρόσβαση στο shell αναγκάζοντας την εντολή εκκίνησης και απενεργοποιώντας την πρόσβαση TTY, αλλά και απενεργοποιώντας κάθε είδους προώθηση θυρών ή σήραγγες.
Εάν έχετε πρόσβαση σε έναν SFTP server, μπορείτε επίσης να σήραγγες την κίνησή σας μέσω αυτού, για παράδειγμα χρησιμοποιώντας την κοινή προώθηση θυρών:
Το sftp έχει την εντολή "symlink". Επομένως, αν έχετε δικαιώματα εγγραφής σε κάποιο φάκελο, μπορείτε να δημιουργήσετε symlinks από άλλους φακέλους/αρχεία. Καθώς πιθανότατα είστε παγιδευμένοι μέσα σε ένα chroot, αυτό δεν θα είναι ιδιαίτερα χρήσιμο για εσάς, αλλά, αν μπορείτε να πρόσβαση στο δημιουργημένο symlink από μια υπηρεσία χωρίς chroot (για παράδειγμα, αν μπορείτε να αποκτήσετε πρόσβαση στο symlink από το διαδίκτυο), θα μπορούσατε να ανοίξετε τα symlinked αρχεία μέσω του διαδικτύου.
Για παράδειγμα, για να δημιουργήσετε ένα symlink από ένα νέο αρχείο "froot" σε "/":
Αν μπορείτε να αποκτήσετε πρόσβαση στο αρχείο "froot" μέσω του διαδικτύου, θα μπορείτε να καταγράψετε τον φάκελο root ("/") του συστήματος.
Σε περιβάλλον υψηλής ασφάλειας, είναι κοινή πρακτική να επιτρέπεται μόνο η αυθεντικοποίηση με βάση κλειδιά ή η αυθεντικοποίηση δύο παραγόντων αντί για την απλή αυθεντικοποίηση με βάση τον κωδικό πρόσβασης. Αλλά συχνά οι ισχυρότερες μέθοδοι αυθεντικοποίησης ενεργοποιούνται χωρίς να απενεργοποιούνται οι ασθενέστερες. Ένας συχνός περίπτωση είναι η ενεργοποίηση του publickey
στη διαμόρφωση του openSSH και η ρύθμισή του ως η προεπιλεγμένη μέθοδος, αλλά χωρίς να απενεργοποιηθεί το password
. Έτσι, χρησιμοποιώντας τη λειτουργία verbose του πελάτη SSH, ένας επιτιθέμενος μπορεί να δει ότι έχει ενεργοποιηθεί μια ασθενέστερη μέθοδος:
Για παράδειγμα, αν έχει οριστεί ένα όριο αποτυχίας αυθεντικοποίησης και δεν έχετε ποτέ την ευκαιρία να φτάσετε στη μέθοδο κωδικού πρόσβασης, μπορείτε να χρησιμοποιήσετε την επιλογή PreferredAuthentications
για να αναγκάσετε τη χρήση αυτής της μεθόδου.
Επανεξέταση της διαμόρφωσης του διακομιστή SSH είναι απαραίτητη για να ελέγξετε ότι μόνο οι αναμενόμενες μέθοδοι είναι εξουσιοδοτημένες. Η χρήση της αναλυτικής λειτουργίας στον πελάτη μπορεί να βοηθήσει να δείτε την αποτελεσματικότητα της διαμόρφωσης.
Μπορείτε να βρείτε ενδιαφέροντες οδηγούς για το πώς να σκληρύνετε το SSH στο https://www.ssh-audit.com/hardening_guides.html
Συμβουλή για bug bounty: εγγραφείτε στο Intigriti, μια premium πλατφόρμα bug bounty που δημιουργήθηκε από hackers, για hackers! Ελάτε μαζί μας στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε βραβεία έως $100,000!
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)