Πληροφορίες

Εργασία Εξαμήνου 2020-2021
Καβαλιέρου Θάλεια-Ελπίς (Α.Μ. 171009)
Για περισσότερες πληροφορίες, ανατρέχετε στο README.pdf

1. Το σύστημα διεξαγωγής των επιθέσεων

Docker Swarm

Για τις ανάγκες της άσκησης, υλοποιήθηκε ένα σμήνος από Docker Engines. Οι μηχανές του συστήματος ακολουθούν την αρχιτεκτονική που παρουσιάζεται στην εικόνα, με μία Manager Engine και ένα διαφορετικό αριθμό από Worker Engines για κάθε άσκηση.
swarm diagram Πηγή: Docker Docks
Για περισσότερες πληροφορίες, 1.1 Το σύστημα διεξαγωγής των επιθέσεων

2. DoS/DDoS

Denial-of-Service Attack

Ως επίθεση DoS προσδιορίζεται «η αποτροπή εγκεκριμένης πρόσβασης σε πόρους ή η καθυστέρηση χρονικά κρίσιμων λειτουργιών» [1]. Στην πορεία της άσκησης θα δούμε πώς, μία τέτοια επίθεση, μπορεί να αποκλείσει μία μηχανή του σμήνους από την εξυπηρέτηση αιτημάτων εγκεκριμένων χρηστών.
Για περισσότερες πληροφορίες, 1.0 Εισαγωγή

Αρχικά, ερευνήθηκε το δίκτυο 172.19.0.0/16, για μηχανές ευπαθείς σε μία επίθεση DoS, με το σαρωτή δικτύων nmap [2]. Από τη σάρωση βρέθηκε η μηχανή με IP 172.19.0.5, στην οποία έτρεχε μία υπηρεσία http στη port 80. nmap http Περιγραφή στη σελίδα 5

Η επίθεση πραγματοποιήθηκε με τη βοήθεια του εργαλείου hping3 [3]. Μέσω αυτού, κατακλύστηκε η port 80 της μηχανής-στόχου με πακέτα SYN ( 1.2.1 Διεξαγωγή της επίθεσης).

Three-Way Handshake

Τα πακέτα SYN αποτελούν το πρώτο μέρος του three-way handshake του TCP. Όπως φαίνεται και στην εικόνα, προκειμένου να εγκαθιδρυθεί η επικοινωνία μεταξύ ενός client και ενός server, ανταλλάσσονται τα εξής πακέτα: SYN,SYN-ACK,ACK. Στην επίθεση DoS/SYN Flooding σκοπός είναι η αποστολή ενός τεράστιου αριθμού πακέτων SYN, αναγκάζοντας τον server να απαντήσει με πακέτα SYN-ACK, χωρίς την αποστολή των πακέτων ACK ώστε να ολοκληρωθεί η διαδικασία.
TCP three way handshake
Πηγή Εικόνας
Για περισσότερες πληροφορίες, 1.2 Η επίθεση DoS

Από την πλευρά της μηχανής-στόχου, ο εντοπισμός της επίθεσης έγινε με δύο εργαλεία.

Αφοτου εντοπίστηκε η επίθεση, σχεδιάστηκαν τα αντίμετρα για την αντιμετώπιση της. Η εφαρμογή των αντιμέτρων έγινε με το iptables [6].
iptables nvL 1.2.3 Αντιμετώπιση της επίθεσης

Επιπλέον: Python/Scapy

Πέραν του εργαλείου hping3, είναι εφικτό να πραγματοποιηθεί η επίθεση και με ένα αυτοσχέδιο εργαλείο, σε γλώσσα Python, με τη βιβλιοθήκη Scapy. Το πρόγραμμα μπορείτε να βρείτε στο φάκελο DoS-DDoS/tools.
Για περισσότερες πληροφορίες, 1.2.4 Επιπλέον: Εργαλείο για την υλοποίηση της επίθεσης DoS με Python/Scapy

Για την επίθεση DDoS αξιοποιήθηκε το εργαλείο ansible [7]. Μέσω αυτού, ενορχηστρώθηκαν οι υπόλοιπες μηχανές του σμήνους, ώστε να διεξάγουν επιθέσεις DoS στη μηχανή-στόχο.

Distributed Denial-of-Service

Οι επιθέσεις Distributed-DoS δεν είναι άλλο από επιθέσεις DoS, που διεξάγονται από πολυάριθμες πηγές. Κάθε πηγή στέλνει ασταμάτητα και με μικρή συχνότητα πακέτα προς τον ίδιο στόχο επιτυγχάνοντας, έτσι, σημαντικότερα αποτελέσματα.
Για περισσότερες πληροφορίες, 1.3 Η επίθεση DDoS

Οι παραμετροποιήσεις για την αξιοποίηση του ansible, καθώς και το playbook με τις οδηγίες που ακολούθησαν οι μηχανές του σμήνους, βρίσκονται στο φάκελο DoS-DDoS/ansible. Η πλήρης ανάπτυξη του κώδικα, 1.3 Η επίθεση DDoS, σελ. 13.

3. SSH Brute Force Attack

Secure Shell

Το Secure Shell [8] , εν συντομία SSH, αποτελεί ένα ασφαλές πρωτόκολλο για τη δικτυακή επικοινωνία μεταξύ δύο μελών του ίδιου δικτύου. Μέσω του SSH, οι hosts μπορούν να εγκαθιδρύσουν ένα ασφαλές, κρυπτογραφημένο κανάλι ακολουθώντας την αρχιτεκτονική client-server.
Για περισσότερες πληροφορίες, 2.Υλοποίηση συστήματος για την προσομοίωση SSH Brute Force Attack

Μία επίθεση ωμής βίας στο πρωτόκολλο SSH αποπειράται να παραβιάσει τις αρχές ασφαλείας του και να επιτρέψει την πρόσβαση ενός κακόβουλου χρήστη στο υπολογιστικό σύστημα του ευπαθούς στόχου.
Η προσομοίωση της επίθεσης έγινε με δύο τρόπους: με το Metasploit [9] framework και με ένα αυτοσχέδιο εργαλείο (Python/Paramiko).

  • Metasploit
    Η επίθεση διεξήχθη από μία εικονική μηχανή με λειτουργικό Kali,Linux, προς την εικονική μηχανή Metasploitable.
    Για περισσότερες πληροφορίες, 2.1.1 Διεξαγωγή της επίθεσης με Metasploit
    Από το framework, επιλέχθηκε το module scanner/ssh/ssh_login, το οποίο παραμετροποιήθηκε, όπως φαίνεται στην εικόνα που ακολουθεί. Επιπλέον, φαίνεται και το αποτέλεσμα με το τρέξιμο του module.
    Inkedmetasploit LI
    2.1.1 Διεξαγωγή της επίθεσης με Metasploit, σελ. 16

  • Python/Paramiko
    Αξιοποιώντας τη βιβλιοθήκη Paramiko, η λειτουργικότητα της οποίας αφορά την εγκαθίδρυση καναλιών επικοινωνίας με το πρωτόκολλο SSH, σχεδιάστηκε το πρόγραμμα που μπορείτε να βρείτε στο SSH-Brute-Force/tools. Είχε τα ίδια αποτελέσματα με αυτά του Metasploit.
    ssh brute paramiko
    2.1.2 Διεξαγωγή της επίθεσης με εργαλείο Python/Paramiko

Επιπλέον: Αξιοποίηση του σμήνους

Η επίθεση, που παρουσιάστηκε στις προηγούμενες ενότητες, πραγματοποιήθηκε με ένα μικρό, σε έκταση, αρχείο. Σε μία πραγματική επίθεση θα χρειαζόμασταν ένα με δεκάδες, και ίσως εκατοντάδες, γραμμές από πιθανούς κωδικούς πρόσβασης. Η επίθεση, τότε, θα χρειαζόταν αρκετό χρόνο, μέχρι να βρει το σωστό κωδικό.
Από τη στιγμή, όμως, που έχουμε στη διάθεση μας ένα σμήνος από μηχανές, είναι δυνατό να εκτελεστεί η επίθεση εκ μέρους κάθε μέλους του. Σε αυτή την ενότητα, αξιοποιήθηκε ένα σμήνος από 15 Docker Engines όπου, η κάθε μηχανή ερευνούσε διαφορετικούς πιθανούς κωδικούς ενός αρχείου 1557 γραμμών.
Η πλήρης παρουσίαση της επίθεσης, 2.1.3 Επιπλέον: Αξιοποίηση του Docker swarm.

Σε κάθε περίπτωση, η επίθεση αντιμετωπίστηκε, αρχικά, με το Fail2ban [10]. Για τον επιτυχή αποκλεισμό των κακόβουλων χρηστών, έγιναν οι ακόλουθες παραμετροποιήσεις του αρχείου jail.local.
config
2.2 Αντιμετώπιση της επίθεσης με Fail2ban

Ωστόσο, η καλύτερη τακτική για την εξασφάλιση του SSH είναι η απενεργοποίηση της επιλογής εισόδου με κωδικό πρόσβασης.
pass no
2.3 Εγκαθίδρυση καναλιού μόνο με key
Με τη ρύθμιση που προηγήθηκε, η εγκαθίδρυση των καναλιών SSH θα γίνεται μόνο με ένα ζεύγος κλειδιών. Με τη βοήθεια της εργαλειοθήκης του OpenSSH μπορεί να παραχθεί ένα κατάλληλο ζεύγος, τρέχοντας την εντολή ssh-keygen.

4. Local/Remote Port Forwarding

SSH Port Forwarding

Ο μηχανισμός SSH Fort Porwarding δημιουργεί ένα SSH Tunnel, το οποίο προσδίδει αξιοπιστία στην επικοινωνία μεταξύ υπολογιστικών συστημάτων χάρη στην κρυπτογράφηση που παρέχει το πρωτόκολλο SSH. Μπορεί να πραγματοποιηθεί με τρεις τρόπους: τοπικά (Local Port Forwarding), απομακρυσμένα (Remote Port Forwarding) ή δυναμικά (Dynamic Port Forwarding).
port forwarding
Πηγή Εικόνας
Για περισσότερες πληροφορίες, 3. Δημιουργία Local/Remote SSH Forwarding για την παροχή υπηρεσιών στο σμήνος

  • Local Port Forwarding
    Η δημιουργία του tunnel έγινε μεταξύ της Manager Engine και της Worker Engine με IP 172.19.0.5. Σκοπός, η πρόσβαση του πίνακα example5 της βάσης δεδομένων που έτρεχε στη δεύτερη.
    Η εντολή
    Σύνδεση στη βάση δεδομένων του απομακρυσμένου χρήστη
    3.1 Δημιουργία Local Port Forwarding

  • Remote Port Forwarding
    Με ελάχιστες διαφορές, δημιουργήθηκε και ένα tunnel με τη μέθοδο Remote Port Forwarding
    remote
    3.2 Δημιουργία Remote Port Forwarding

5. Δημιουργία VPN στο σμήνος

VPN

Τα Εικονικά Ιδιωτικά Δίκτυα(VPN, Virtual Private Networks) αποτελούν μία τεχνολογία για τη διασύνδεση υπολογιστικών συστημάτων με ασφαλείς μεθόδους. Επιλύουν ζητήματα επέκτασης των ιδιωτικών δικτύων, χωρίς να είναι κοστοβόρα ή να υστερούν σε ασφάλεια. Για περισσότερες πληροφορίες, 4. Δημιουργία VPN στο σμήνος

Η δημιουργία του VPN έγινε βάσει των οδηγιών http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-5_iptables.adoc.html.
Τα αρχεία που δημιουργήθηκαν από την περάτωση της διαδικασίας, εκτός του φακέλου pki, βρίσκονται στο swarmVPN/vpn-files. Τα βήματα παρουσιάζονται, αναλυτικά, στο link:README.pdf#page=28[4. Δημιουργία


1. NIST Glossary, https://csrc.nist.gov/glossary/term/DoS, NIST SP 800-12 Rev.1
2. nmap
3. hping3
4. Wikipedia,Netstat
5. tcpdump
6. Wikipedia,iptables
7. Ansible Documentation
8. Wikipedia,SSH
9. Metasploit
10. Fail2ban