Browse Source

Upload files to ''

master
cs161069 3 years ago
parent
commit
a6eecb6b9d
  1. 135
      HowTo.adoc
  2. 8
      dict_false
  3. 9
      dict_true

135
HowTo.adoc

@ -0,0 +1,135 @@
# ΑΣΦΑΛΕΙΑ ΔΙΚΤΥΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 2020-2021
ΑΜ 161069
ΝΙΚΟΛΑΚΑΚΗΣ ΟΡΕΣΤΗΣ ΠΕΤΡΟΣ
Στην εργασία θα αναφερθούμε πως να κανουμε προσομοίωση και αντιμετώπιση επίθεσης DDos, προσομοίωση SSH Brute Force, Local/Remote SSH Forwarding και VPN.
Για την υλοποίηση των παραπάνω θα χρησιμοποιήσουμε το docker και το swarmlab
*Τι είναι το docker*
video::wi-MGFhrad0[youtube]
To Docker είναι μια πλατφόρμα λογισμικού ανοιχτού κώδικα που υλοποιεί Εικονικοποίηση σε επίπεδο Λειτουργικού Συστήματος. Ουσιαστικά το Docker προσφέρει αυτοματοποιημένες διαδικασίες για την ανάπτυξη εφαρμογών σε απομονωμένες Περιοχές Χρήστη που ονομάζονται Software Containers.
*http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/sec.adoc.html[Swarmlab^]*
Πρώτα κάνουμε εγκατάσταση του docker ακολουθώντας τις οδηγίες απο http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html[εδω^].
Μετά κάνουμε clone το swarmlab απο το https://git.swarmlab.io:3000/swarmlab/swarmlab-sec[git εδώ^] και ακολουθούμε http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/sec.adoc.html[ τις οδηγίες^].
Αρχικά δημιουργμούμε φάκελο μεσα στο swarmlab με το όνομα που θέλουμε και μπαίνουμε στον φάκελο με τερματικό. Εκεί θα ξεκινήσουμε τα containers με τις εντολές *create* και *up size=X* οπου Χ ο αριθμός εικονικών συστημάτων που θέλουμε.
Για παράδειγμα βάζω Χ=5.
```
../install/usr/share/swarmlab.io/sec/swarmlab-sec create
../install/usr/share/swarmlab.io/sec/swarmlab-sec up size=5
```
Μόλις ολοκληρωθεί η διαδικασία κανω *login* στον *master*
```
../install/usr/share/swarmlab.io/sec/swarmlab-sec login
```
*1.DDos*
Έπειτα εκτελούμε αυτές τις εντολές για να εγκαταστήσουμε το εργαλείο *hping3*.
```
sudo apt update
sudo apt install hping3 -y
```
Επιλέγουμε την περιοχή μας και την πόλη μας κατα την εγκατάσταση του εργαλείου.
Για να βρούμε τις IP των workers εκτελούμε:
```
ifconfig eth0 | grep inet | awk '{print $2}'
```
Η εντολή αυτη μας δινει την IPv4 του master. Xρησιμοποιούμε αυτην την IPv4 εκτός απο το τελευταιο byte(αριθμο) για να βρούμε και τους workers στο δίτκυο με την εντολή:
```
nmap -sP χχχ.χχχ.χχχ.*| grep worker
```
*οπου χχχ.χχχ.χχχ ο αριθμός δικτύου του master*
Επιλέγουμε έναν worker και κανουμε login με την IP του
```
ssh docker@<IP_Worker>
```
Παταμε *yes* στην σύνδεση.
Tα στοιχεία των worker και του master είναι:
*USERNAME: docker |
PASSWORD: docker*
*Παράλληλα ανοιγουμε άλλο ένα παράθυρο τερματικού και συνδεόμαστε πάλι στον master.*
Από το δεύτερο παράθυρο που είμαστε συνδεδεμένοι στον *master* εκτελούμε το *hping3* για να ξεκινήσουμε την Dos attack.
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*
```
sudo hping3 -p 80 --flood --icmp <IP_WORKER>
```
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*
Στοn *worker* στην πόρτα 80 θα μπορούσαμε να είχαμε ανοίξει έναν σερβερ apache2 οπου και εκεί κάνουμε επίθεση.
Εκτελούμε στον worker
```
sudo timeout 2s tcpdump -v -i eth0 icmp and src <IP_WORKER>
```
Για να βλέπουμε την κίνηση που δημιουργεί η επίθεση μας.
Τώρα βάζουμε μέσω *iptables* τους κανόνες για να αντιμετωπίσουμε την επίθεση. Επιτρέπουμε μόνο ένα πακέτο icmp ανα δευτερόλεπτο.
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*
```
sudo iptables -N icmp_def
sudo iptables -A INPUT -p icmp -j icmp_def
sudo iptables -A icmp_def -m limit --limit 1/s --limit-burst 3 -j RETURN
sudo iptables -A icmp_def -j DROP
sudo timeout 2s tcpdump -v -i eth0 icmp and src <IP_WORKER>
```
Βλέπουμε λοιπόν μεγάλη διαφορά στα πακέτα πριν και μετά από τους κανόνες.
*2.SSH Brute Force Attack*
Ακολουθώντας πάντα την διαδικασία συνδεσης στον *Master* συνδέομαι.
Σε αυτο το παράδειγμα ο master θα κανει την επίθεση SSH Brute Force Attack στον worker που έχουμε επιλέξει χρησιμοποιώντας το *hydra*.
Εκετελούμε τις εντολές για να εγκαταστήσουμε το *Hydra*:
```
sudo apt update
sudo apt install hydra -y
```
*Οπου <IP_WORKER> ΒΑΖΟΥΜΕ τoν worker που έχουμε επιλέξει.*
Με την *IP του Worker* και τα λεξικα *dict_false & dict_true* ξεκινάμε την επίθεση:
```
hydra -l docker -P dict_false <IP_WORKER> -t 6 ssh
hydra -l docker -P dict_true <IP_WORKER> -t 6 ssh
```
Παρατηρούμε οτι το λεξικό που περιέχει την σωστή λεξη (docker) *dict_true* μας επιστρεφει αποτέλεσμα στην επίθεση.
Για να αντιμετωπίσουμε αυτή την επίθεση *στον worker* χρησιμοποιούμε το εργαλείο *fail2ban*.
Συνδεόμαστε στον *worker* και εκτελούμε τις παρακάτω εντολές για να το εγκαταστήσουμε.
```
sudo apt update
sudo apt-get install fail2ban -y
sudo apt install rsyslog -y
```
Για να μην πειραχτεί το αρχειο jail.conf το αντιγράφουμε στον ίδιο φάκελο στο αρχείο jail.local:
```
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo touch /var/log/auth.log
sudo chown root.root /var/log/auth.log
sudo chmod 600 /var/log/auth.log
sudo service ssh restart
sudo service rsyslog restart
sudo service fail2ban restart
```
Και έτσι αντιμετώπιζω μια ssh brute force attack χρησιμοποιώντας τις default ρυθμίσεις του *fail2ban*

8
dict_false

@ -0,0 +1,8 @@
orestis
12345
123456789
asfaleia
admin
diktua
eksetastiki
paradosi

9
dict_true

@ -0,0 +1,9 @@
orestis
12345
123456789
asfaleia
admin
diktua
eksetastiki
paradosi
docker
Loading…
Cancel
Save