31 KiB
22 - Ελεγχος Εισβολής SSH/SFTP
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks AWS)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Συμβουλή για bug bounty: Εγγραφείτε στο Intigriti, μια πρεμιέρα πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς! Γίνετε μέλος μας στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε αμοιβές έως και $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Βασικές Πληροφορίες
SSH (Secure Shell ή Secure Socket Shell) είναι ένα πρωτόκολλο δικτύου που επιτρέπει μια ασφαλή σύνδεση σε έναν υπολογιστή μέσω ενός μη ασφαλούς δικτύου. Είναι απαραίτητο για τη διατήρηση της εμπιστευτικότητας και ακεραιότητας των δεδομένων κατά την πρόσβαση σε απομακρυσμένα συστήματα.
Προεπιλεγμένη θύρα: 22
22/tcp open ssh syn-ack
Διακομιστές SSH:
- openSSH – OpenBSD SSH, περιλαμβάνεται σε διανομές BSD, Linux και Windows από τα Windows 10 και μετά
- Dropbear – Υλοποίηση SSH για περιβάλλοντα με περιορισμένη μνήμη και επεξεργαστικούς πόρους, περιλαμβάνεται στο OpenWrt
- PuTTY – Υλοποίηση SSH για Windows, ο client χρησιμοποιείται συχνά, αλλά η χρήση του διακομιστή είναι σπάνια
- CopSSH – υλοποίηση του OpenSSH για Windows
Βιβλιοθήκες SSH (υλοποίηση στην πλευρά του διακομιστή):
- libssh – πολυπλατφορμική βιβλιοθήκη C που υλοποιεί το πρωτόκολλο SSHv2 με δεσμεύσεις σε Python, Perl και R; χρησιμοποιείται από το KDE για sftp και από το GitHub για τη υποδομή git SSH
- wolfSSH – Βιβλιοθήκη διακομιστή SSHv2 γραμμένη σε ANSI C και σχεδιασμένη για ενσωματωμένα, RTOS και περιβάλλοντα με πεεριορισμένους πόρους
- Apache MINA SSHD – Η βιβλιοθήκη Java Apache SSHD βασίζεται στο Apache MINA
- paramiko – Βιβλιοθήκη πρωτοκόλλου Python SSHv2
Απαρίθμηση
Ανάκτηση Μπάνερ
nc -vn <IP> 22
Αυτοματοποιημένο 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;
- Χωρίς εξαρτήσεις
usage: ssh-audit.py [-1246pbcnjvlt] <host>
-1, --ssh1 force ssh version 1 only
-2, --ssh2 force ssh version 2 only
-4, --ipv4 enable IPv4 (order of precedence)
-6, --ipv6 enable IPv6 (order of precedence)
-p, --port=<port> port to connect
-b, --batch batch output
-c, --client-audit starts a server on port 2222 to audit client
software config (use -p to change port;
use -t to change timeout)
-n, --no-colors disable colors
-j, --json JSON output
-v, --verbose verbose output
-l, --level=<level> minimum output level (info|warn|fail)
-t, --timeout=<secs> timeout (in seconds) for connection and reading
(default: 5)
$ python3 ssh-audit <IP>
Δημόσιο κλειδί SSH του διακομιστή
Δείτε το σε λειτουργία (Asciinema)
ssh-keyscan -t rsa <IP> -p <PORT>
Αδύναμοι Αλγόριθμοι Κρυπτογράφησης
Αυτό ανακαλύπτεται από προεπιλογή από το nmap. Αλλά μπορείτε επίσης να χρησιμοποιήσετε το sslscan ή το sslyze.
Σενάρια Nmap
nmap -p22 <ip> -sC # Send default nmap scripts for SSH
nmap -p22 <ip> -sV # Retrieve version
nmap -p22 <ip> --script ssh2-enum-algos # Retrieve supported algorythms
nmap -p22 <ip> --script ssh-hostkey --script-args ssh_hostkey=full # Retrieve weak keys
nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check authentication methods
Shodan
ssh
Επίθεση με βία στα ονόματα χρηστών, τους κωδικούς πρόσβασης και τα ιδιωτικά κλειδιά
Απαρίθμηση Ονομάτων Χρηστών
Σε μερικές εκδόσεις του OpenSSH μπορείτε να κάνετε μια επίθεση χρονισμού για να απαριθμήσετε τους χρήστες. Μπορείτε να χρησιμοποιήσετε ένα ενότητα του metasploit για να εκμεταλλευτείτε αυτό:
msf> use scanner/ssh/ssh_enumusers
Βίαιη επίθεση
Κάποια συνηθισμένα διαπιστευτήρια ssh εδώ και εδώ και παρακάτω.
Βίαιη επίθεση με Ιδιωτικό Κλειδί
Αν γνωρίζετε κάποια ιδιωτικά κλειδιά ssh που θα μπορούσαν να χρησιμοποιηθούν... ας το δοκιμάσουμε. Μπορείτε να χρησιμοποιήσετε το script nmap:
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
Ή MSF βοηθητική μονάδα:
msf> use scanner/ssh/ssh_identify_pubkeys
Ή χρησιμοποιήστε το ssh-keybrute.py
(φυσικό python3, ελαφρύ και έχει ενεργοποιημένους παλαιούς αλγόριθμους): snowdroppe/ssh-keybrute.
Γνωστά κακά κλειδιά μπορούν να βρεθούν εδώ:
{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %}
Αδύναμα κλειδιά 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, όπου οι διαχειριστές σκοπεύουν να επιτρέψουν στους χρήστες να ανταλλάσσουν αρχεία χωρίς να ενεργοποιούν τη
ssh -v noraj@192.168.1.94 id
...
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to 192.168.1.94 ([192.168.1.94]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending command: id
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
uid=1000(noraj) gid=100(users) groups=100(users)
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2412, received 2480 bytes, in 0.1 seconds
Bytes per second: sent 43133.4, received 44349.5
debug1: Exit status 0
$ ssh noraj@192.168.1.94 /bin/bash
Εδώ υπάρχει ένα παράδειγμα ασφαλούς ρύθμισης SFTP (/etc/ssh/sshd_config
- openSSH) για τον χρήστη noraj
:
Match User noraj
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
PermitTTY no
Αυτή η διαμόρφωση θα επιτρέψει μόνο το SFTP: απενεργοποίηση της πρόσβασης στο κέλυφος με την επιβολή της εντολής εκκίνησης και απενεργοποίηση της πρόσβασης TTY αλλά και απενεργοποίηση όλων των ειδών προώθησης θυρών ή τούνελινγκ.
SFTP Tunneling
Αν έχετε πρόσβαση σε ένα διακομιστή SFTP, μπορείτε επίσης να τουνελώσετε την κίνησή σας μέσω αυτού, για παράδειγμα χρησιμοποιώντας την κοινή προώθηση θυρών:
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
SFTP Symlink
Το sftp έχει την εντολή "symlink". Επομένως, αν έχετε δικαιώματα εγγραφής σε κάποιο φάκελο, μπορείτε να δημιουργήσετε συμβολικούς συνδέσμους για άλλους φακέλους/αρχεία. Εφόσον πιθανότατα βρίσκεστε παγιδευμένοι μέσα σε ένα chroot αυτό δεν θα είναι ιδιαίτερα χρήσιμο για εσάς, αλλά, αν μπορείτε να έχετε πρόσβαση στον δημιουργημένο συμβολικό σύνδεσμο από ένα υπηρεσία χωρίς chroot (για παράδειγμα, αν μπορείτε να έχετε πρόσβαση στον σύνδεσμο από το web), θα μπορούσατε να ανοίξετε τα αρχεία που έχουν συμβολικοώθεί μέσω του web.
Για παράδειγμα, για να δημιουργήσετε ένα συμβολικό σύνδεσμο από ένα νέο αρχείο "froot" προς "/":
sftp> symlink / froot
Μέθοδοι Πιστοποίησης
Σε περιβάλλοντα υψηλής ασφάλειας, είναι συνηθισμένο να ενεργοποιούνται μόνο οι μέθοδοι πιστοποίησης βασισμένες σε κλειδιά ή δύο παραγόντων αντί για την απλή πιστοποίηση βασισμένη σε κωδικό πρόσβασης. Ωστόσο, συχνά οι ισχυρότερες μέθοδοι πιστοποίησης ενεργοποιούνται χωρίς να απενεργοποιούνται οι ασθενέστερες. Ένα συχνό παράδειγμα είναι η ενεργοποίηση της publickey
στη διαμόρφωση του openSSH και η ορισμός της ως προεπιλεγμένης μεθόδου, χωρίς όμως να απενεργοποιείται η password
. Έτσι, χρησιμοποιώντας τη λεπτομερή λειτουργία του πελάτη SSH, ένας επιτιθέμενος μπορεί να δει ότι μια ασθενέστερη μέθοδος είναι ενεργοποιημένη:
ssh -v 192.168.1.94
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
Για παράδειγμα, εάν έχει οριστεί ένα όριο αποτυχίας πιστοποίησης και δεν έχετε ποτέ την ευκαιρία να φτάσετε στη μέθοδο κωδικού πρόσβασης, μπορείτε να χρησιμοποιήσετε την επιλογή PreferredAuthentications
για να αναγκάσετε τη χρήση αυτής της μεθόδου.
ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password
Είναι απαραίτητο να ελέγξετε τη διαμόρφωση του διακομιστή SSH για να βεβαιωθείτε ότι είναι εξουσιοδοτημένες μόνο οι αναμενόμενες μεθόδοι. Η χρήση της λειτουργίας verbose στον πελάτη μπορεί να βοηθήσει να δείτε την αποτελεσματικότητα της διαμόρφωσης.
Αρχεία ρυθμίσεων
ssh_config
sshd_config
authorized_keys
ssh_known_hosts
known_hosts
id_rsa
Fuzzing
- https://packetstormsecurity.com/files/download/71252/sshfuzz.txt
- https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2
References
- Μπορείτε να βρείτε ενδιαφέρουσες οδηγίες για την ενίσχυση του SSH στο https://www.ssh-audit.com/hardening_guides.html
- https://community.turgensec.com/ssh-hacking-guide
Συμβουλή για bug bounty: Εγγραφείτε στο Intigriti, μια προηγμένη πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς! Γίνετε μέλος στο https://go.intigriti.com/hacktricks σήμερα, και αρχίστε να κερδίζετε αμοιβές έως $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
HackTricks Automatic Commands
Protocol_Name: SSH
Port_Number: 22
Protocol_Description: Secure Shell Hardening
Entry_1:
Name: Hydra Brute Force
Description: Need Username
Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 {IP} ssh
Entry_2:
Name: consolesless mfs enumeration
Description: SSH enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit'
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια στο GitHub.