Οι κωδικοί πρόσβασης αποτελούν πολλές φορές το πιο αδύναμο κρίκο σε ένα σύστημα και για αυτό το λόγο συνεχίζουμε την περιήγηση στα εργαλεία που ανήκουν στην κατηγορία των password crackers. Αυτή τη φορά θα μελετήσουμε το Medusa password cracker, ένα αρκετά γνωστό open source εργαλείο.
Πρόκειται για ένα εργαλείο το οποίο μπορεί να λειτουργήσει με μεγάλη ταχύτητα σαν brute-forcer στοιχείων σύνδεσης σε ένα σύστημα. Όπως έχουμε εξηγήσει και σε παλαιότερα άρθρα brute force (ή αλλιώς επίθεση ωμής βίας) χαρακτηρίζουμε την εξαντλητική δοκιμή πιθανών κλειδιών που παράγουν ένα κρυπτογράφημα, ώστε να αποκαλυφθεί το αρχικό μήνυμα. Ο σκοπός του Μedusa είναι η υποστήριξη όσο δυνατόν περισσότερων πρωτοκόλλων και υπηρεσιών που υποστηρίζουν την απομακρυσμένη αυθεντικοποίηση (π.χ. ssh). Μερικά από τα πλεονεκτήματα της συγκεκριμένης εφαρμογής συνοψίζονται παρακάτω:
- Παράλληλη χρήση: Το brute forcing μπορεί να πραγματοποιηθεί απέναντι σε πολλαπλούς hosts, χρήστες ή κωδικούς πρόσβασης ταυτόχρονα.
- Eυελιξία: Οι πληροφορίες που αφορούν το στόχο (host/χρήστης/κωδικός πρόσβασης) μπορούν να προσδιοριστούν με διαφορετικούς τρόπους.
- Υποστήριξη πολλαπλών πρωτοκόλλων: Το Μedusa μπορεί να υποστηρίξει διαφορετικές υπηρεσίες και πρωτόκολλα (π.χ. SMP, HTTP, POP3, MS-SQL, SSHv2 κ.α.)
Πώς να το εγκαταστήσετε
To Μedusa προσφέρεται για λειτουργικά συστήματα Linux, Windows και MacOS. Στην πολύ γνωστή έκδοση λειτουργικού συστήματος για penetration tester, Kali Linux θα βρείτε το Μedusa προ-εγκατεστημένο.
Linux
Αρχικά θα πρέπει να ανανεώσετε τα repositories σας και να εγκαταστήσετε τα dependencies που χρειάζονται:
sudo apt-get update && sudo apt-get install unrar-free git-core openssl mediainfo |
Στη συνέχεια, θα πρέπει να εγκαταστήσετε την έκδοση 3 της Python (απαραίτητη από την έκδοση v0.3.0 του Μedusa και έπειτα) χρησιμοποιώντας τις κατάλληλες εντολές ανάλογα με την έκδοση του λειτουργικού σας συστήματος.
Στη συνέχεια, δημιουργήστε ένα γκρουπ και ένα χρήστη με το όνομα medusa. Αυτό χρειάζεται για να εξασφαλίσουμε ότι το εργαλείο δεν θα επηρεάσει την ασφάλεια του υπολογιστή μας και θα τρέχει απομονωμένο:
sudo addgroup –system medusa sudo adduser –disabled-password –system –home /var/lib/medusa –gecos “Μedusa” –ingroup medusa medusa |
Έπειτα κλωνοποιήστε το Git repo για το Μedusa:
sudo mkdir /opt/medusa && sudo chown medusa:medusa /opt/medusa sudo git clone https://github.com/pymedusa/Medusa.git /opt/medusa sudo chown -R medusa:medusa /opt/medusa |
Για συστήματα SysVinit, θα πρέπει να αντιγράψετε το service init.d:
Για Ubuntu:
sudo cp -v /opt/medusa/runscripts/init.ubuntu /etc/init.d/medusa |
Για Debian:
sudo cp -v /opt/medusa/runscripts/init.debian /etc/init.d/medusa |
Βεβαιωθείτε ότι το νέο service έχει τα κατάλληλα δικαιώματα:
sudo chown root:root /etc/init.d/medusa sudo chmod 644 /etc/init.d/medusa |
Ανανεώστε και ξεκινήστε το καινούριο service:
sudo update-rc.d medusa defaults sudo service medusa start |
Για συστήματα Upstart, θα πρέπει να αντιγράψετε το service init.d:
sudo cp -v /opt/medusa/runscripts/init.upstart /etc/init/medusa.conf |
Βεβαιωθείτε ότι το νέο service έχει τα κατάλληλα δικαιώματα:
sudo chown root:root /etc/init/medusa.conf
sudo chmod 644 /etc/init/medusa.conf |
Ανανεώστε και ξεκινήστε το καινούριο service:
sudo service medusa start |
Για συστήματα Systemd, θα πρέπει να αντιγράψετε το service init.d:
sudo cp -v /opt/medusa/runscripts/init.systemd /etc/systemd/system/medusa.service |
Βεβαιωθείτε ότι το νέο service έχει τα κατάλληλα δικαιώματα:
sudo chown root:root /etc/systemd/system/medusa.service
sudo chmod 644 /etc/systemd/system/medusa.service |
Ξεκινήσετε και ελέγξτε το status του καινούριου service:
sudo systemctl enable medusa
sudo systemctl start medusa sudo systemctl status medusa |
Κάντε το Μedusa να τρέχει κατά το startup (προαιρετικό):
sudo systemctl enable medusa.service |
Για να βεβαιωθείτε ότι όλα πήγαν καλά ελέγξτε αν το Μedusa είναι προσβάσιμο στη διεύθυνση: http://localhost:8081
Windows
Λόγω του ότι η εγκατάσταση του εργαλείου σε Windows περιβάλλον μπορεί να είναι ιδιαίτερα περίπλοκη για αρκετούς χρήστες, οι δημιουργοί του Μedusa δημιούργησαν έναν Windows installer το οποίο μπορεί να κατεβάσει όλα τα απαραίτητα αρχεία και να προχωρήσει με την εγκατάστασή τους. Μπορεί επίσης να δημιουργήσει ένα service έτσι ώστε το Μedusa να ξεκινάει αυτόματα με την εκκίνηση των Windows.
Αρχικά θα πρέπει να επισκεφθείτε την επίσημη Github σελίδα του εργαλείου και να κατεβάσετε την τελευταία διαθέσιμη έκδοση.
Στο φάκελο που μόλις έχετε κατεβάσει εντοπίστε τον installer και εκτελέστε τον. Αυτό που θα δείτε στην οθόνη σας μοιάζει με την παρακάτω εικόνα.
Για να προχωρήσετε την εγκατάσταση πατήστε την επιλογή Next και στη συνέχεια διαλέξτε το φάκελο εγκατάστασης. Επιλέξτε πάλι την επιλογή Next για να προχωρήσετε. Το επόμενο παράθυρο θα σας ρωτήσει αν επιθυμείτε να δημιουργηθεί συντόμευση για το εργαλείο στο αρχικό μενού.
Το αμέσως επόμενο παράθυρο θα σας ρωτήσει για την πόρτα στην οποία θα θέλετε να τρέχει το Μedusa. Συνίσταται να αφήσετε την default τιμή ως έχει και να προχωρήσετε στην εγκατάσταση πατώντας το κουμπί Next.
Στο επόμενο παράθυρο θα ερωτηθείτε για το αν επιθυμείτε να δημιουργήσετε συντόμευση του εργαλείου στην επιφάνεια εργασίας σας.
Το προτελευταίο παράθυρο της εγκατάστασης θα σας δείξει μία σύνοψη των ρυθμίσεων που έχετε επιλέξει και τα dependencies τα οποία πρόκειται να εγκατασταθούν μαζί με το Μedusa. Αν επιλέξετε το κουμπί Install τα απαραίτητα αρχεία θα αρχίσουν να κατεβαίνουν και στη συνέχεια η εγκατάσταση θα ολοκληρωθεί αφού πατήσετε το κουμπί Finish.
Αν όλα πήγαν καλά μπορείτε να ανοίξετε οποιονδήποτε browser και να επισκεφτείτε το web interface του Μedusa στη διεύθυνση: http://localhost:8081.
Πως να το χρησιμοποιήσετε
Για να δείτε όλες τις διαθέσιμες επιλογές του εργαλείου και την αντίστοιχη περιγραφή τους ανοίξτε ένα terminal και πληκτρολογήστε Μedusa.
root@kali-:~# medusa Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net> Syntax: Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT] -h [TEXT] : Target hostname or IP address -H [FILE] : File containing target hostnames or IP addresses -u [TEXT] : Username to test -U [FILE] : File containing usernames to test -p [TEXT] : Password to test -P [FILE] : File containing passwords to test -C [FILE] : File containing combo entries. See README for more information. -O [FILE] : File to append log information to -e [n/s/ns] : Additional password checks ([n] No Password, [s] Password = Username) -M [TEXT] : Name of the module to execute (without the .mod extension) -m [TEXT] : Parameter to pass to the module. This can be passed multiple times with a different parameter each time and they will all be sent to the module (i.e. -m Param1 -m Param2, etc.) -d : Dump all known modules -n [NUM] : Use for non-default TCP port number -s : Enable SSL -g [NUM] : Give up after trying to connect for NUM seconds (default 3) -r [NUM] : Sleep NUM seconds between retry attempts (default 3) -R [NUM] : Attempt NUM retries before giving up. The total number of attempts will be NUM + 1. -c [NUM] : Time to wait in usec to verify socket is available (default 500 usec). -t [NUM] : Total number of logins to be tested concurrently -T [NUM] : Total number of hosts to be tested concurrently -L : Parallelize logins using one username per thread. The default is to process the entire username before proceeding. -f : Stop scanning host after first valid username/password found. -F : Stop audit after first valid username/password found on any host. -b : Suppress startup banner -q : Display module's usage information -v [NUM] : Verbose level [0 - 6 (more)] -w [NUM] : Error debug level [0 - 10 (more)] -V : Display version -Z [TEXT] : Resume scan based on map of previous scan
Παραδείγματα των διαφορετικών εντολών που μπορείτε να τρέξετε, ανάλογα το πρωτόκολλο επίθεσης, μπορείτε να βρείτε παρακάτω:
Εύρεση κωδικού πρόσβασης για συγκεκριμένο username
Όπως ήδη έχουμε αναφέρει το Μedusa είναι ένα πολύ γρήγορο εργαλείο, ικανό να δουλεύει μαζί με διαφορετικά πρωτόκολλα.
Παραδείγματος χάρη, αν θέλετε να «σπάσετε» τον ssh κωδικό πρόσβασης για ένα συγκεκριμένο username, μπορείτε να χρησιμοποιήσετε την τεχνική της επίθεσης λεξικού (dictionary attack). Η παράμετρος -u χρησιμοποιείται για να δηλωθεί συγκεκριμένο username και η -P για να δηλωθεί το dictionary αρχείο:
medusa -h 192.168.1.108 -u stormi -P pass.txt -M ssh |
Εύρεση username για ένα συγκεκριμένο password
Στην ανάποδη περίπτωση, όπου στη κατοχή σας έχετε τον κωδικό πρόσβασης και θέλετε να ελέγξετε σε ποιο username (για το ssh service ή κάποιο άλλο) αντιστοιχεί μπορείτε να χρησιμοποιήσετε την ίδια τεχνική – dictionary attack:
medusa -h 192.168.1.108 -U user.txt -p 123 -M ssh |
Εύρεση username και αντίστοιχου κωδικού πρόσβασης
Συνδυαστικά, αν θέλετε να βρείτε username και password (για το ssh service ή κάποιο άλλο) μπορείτε να τρέξετε το παρακάτω, πάλι με την τεχνική dictionary attack. Η παράμετρος -U ενεργοποιεί το dictionary mode για πιθανά username και η -P για πιθανούς κωδικούς πρόσβασης.
medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ssh |
Αποθήκευση αποτελέσματος στο δίσκο
Για λόγους συντήρησης και καλύτερης ανάγνωσης μπορείτε να εγγράψετε τα αποτελέσματα των Μedusa εντολών σε αρχείο. Για το λόγο αυτό χρησιμοποιήστε τη παράμετρο -Ο και στη συνέχεια τον επιθυμητό τίτλο του αρχείου:
medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ssh -O log.txt |
Συνεχίζοντας την επίθεση
Πολλές φορές μια επίθεση μπορεί να σταματά ή να ακυρώνεται καταλάθος, οπότε χρησιμοποιώντας τη παράμετρο -Ζ μπορείτε να συνεχίσετε την επίθεση τρέχοντας την τελευταία αποτυχημένη εντολή αντί να ξεκινήσετε από την αρχή:
medusa -h 192.168.1.108 -U user.txt -P pass.txt -M ssh -Z h1u2u3. |
Επίθεση σε συγκεκριμένη πόρτα
Οι network admins πολλές φορές αλλάζουν το νούμερο της πόρτας ενός service σε ένα άλλο. Στις προηγούμενες περιπτώσεις, όπου εξετάσαμε το ssh service, το Μedusa έτρεξε την επίθεση για την πόρτα 22, την default πόρτα του ssh.
Παρόλα αυτά, χρησιμοποιώντας την παράμετρο -n μπορείτε να τρέξετε την επίθεση επιλέγοντας εσείς το νούμερο της πόρτας που θέλετε να ελέγξετε, και όχι τη default πόρτα του service.
Έστω λοιπόν ότι σκανάροντας ένα συγκεκριμένο δίκτυο βρήκαμε ότι η πόρτα στην οποία τρέχει το ssh είναι η 2222 και όχι η 22. Για το λόγο αυτό θα πρέπει να τρέξουμε την παρακάτω εντολή
Πως σας φάνηκε το Μedusa; Θα το προτιμούσατε;