Uniwa 2020 ask Security
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
13 KiB

3 years ago
# Task of Security of Networks and Comunication
Uniwa 2020 Athens Άσκηση Εξαμήνου
## Ζητούμενα
1.Υλοποίηση συστήματος για την προσομοίωσηDos/DDos Attack.
-Χρησιμοποιήστε το hping3(https://tools.kali.org/information-gathering/hping3, https://www.howtoinstall.me/ubuntu/18-04/hping3/ ) εργαλείο για την πραγματοποίηση Dos και DDos Attack σε μέλη του σμήνους.
-Χρησιμοποιήστε τα tcpdump, netstat εργαλεία για την εύρεση, ανάλυση και παρουσίαση των συγκεκριμένων επιθέσεων.
-Δημιουργήστε iptables rules για την αντιμετώπιση των επιθέσεων.
3 years ago
2.Υλοποίηση συστήματος για την προσομοίωση “SSH Brute Force Attacks”(Patator, THC Hydra, Medusa, Metasploit)Patator, THC Hydra, Medusa, Metasploit).
-Χρησιμοποιήστε εργαλεία της προτίμησής σας για την εύρεση, ανάλυση και παρουσίαση της συγκεκριμένης επίθεσης.
-Χρησιμοποιήστε το εργαλείο Fail2Ban για την αντιμετώπιση της επίθεσης.
-Τροποποιήστε το ssh-server έτσι ώστε να επιτρέπει μόνο συνδέσεις μέσω key.
3 years ago
3.Δημιουργήστε Local/Remote SSH Forwarding για την παροχή υπηρεσιών στο σμήνος που έχετε στη διάθεσή σας.
4.Δημιουργήστε VPN (http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/ex-5_iptables.adoc.html)για την παροχή υπηρεσιών στο σμήνος που έχετε στη διάθεσή σας.
### Ξεκινώντας
Για να μπορέσετε να τρέξετε το πρόγραμμα θα πρέπει να έχετε εγκατστημένο και λειτουργικό το docker οδηγίες για την εγκατάσταση του οποίου καθλως και μια συνοπτική περιγραφή δίνει ο καθγήτης μας στον ακόλουθο σύνδεσμο [docker](http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html).
Εν συνεχεία θα χρειαστέι να ακολουθήστε τις οδηγίες που μας δίνει πάλι ο καθηγητής μας στον ακόλουθο σύνδεσμο [swarmlab-sec](http://docs.swarmlab.io/SwarmLab-HowTos/labs/sec/sec.adoc.html) , για την εγκατάσταση και χρήση ενός σμήνους υπολογιστών πάνω στους οποίους θα εκτελεστεί το παρόν project.
Στο τέλος θα έχουμε καταλήξει με εναν φάκελο με το όνομα swarmlab-sec εντός του οποίου στο terminal θα πάμε να δημιουργήσουμε το δικό μας project μας :
3 years ago
```
mkdir vpn
mkdir <mydirname>
cd <mydirname>
swarmlab-sec up size=5
```
Μετά από μια μικρή αναμονή έχουν "ανέβει" οι υπολογιστές μας και αφού εκτελέσουμε :
3 years ago
```
swarmlab-sec login
```
είμαστε πλέον στον master μας και συγκεκριμένα στο φάκελο project, μα έδώ κάνουμε μία παυση
3 years ago
### Pulling
3 years ago
Ηρθε η ώρα να κατεβάσουμε απο το repo τα αρχεία που θα χρειαστούμε:
3 years ago
-Το αρχείο *passwd_list* το αντιγράφουμε χύμα στον φάκελο που ονομάσαμε για το project μας
-Aπο τον φάκελο *backup_files>vpn+backup* αντιγράφουμε όλα τα αρχεία και τα βάζουμε στον τοπικό φακέλο μας με όνομα *vpn* που δημιουργήσαμε πριν λιγο.
-Απο τον φάκελο project αντιγράφουμε όλα τα αρχεία εκτός από τα **'sec-vpn-*.ovpn'** στον τοπικό φάκελο *project*
3 years ago
### Return to terminal
3 years ago
Αφού επιστρέψαμε τρέχουμε στον master την εντολή :
3 years ago
```
ifconfig
3 years ago
```
και βλέπουμε την ip που έχουμε μετα την τοποθετουμε όπως φαινεται στο ακλολουθο παράδειγμα με αστερισκο στο τελευταιο ψηφίο
3 years ago
```
nmap -sP 172.21.0.* | grep Nmap | cut -d' ' -f5-6
```
-Το αποτέλεσμα που θα πάρουμε το τοποθετούμε **αφού αφαιρέσουμε την πρώτη σειρα** στο αρχείο *inventory.yml* στη θέση των άλλων ip ενώ **αφού αφιρέσουμε και την δεύερη σειρα** τις τοποθετούμε και στο αρχείο *inventory_w.yml*
-Ομοίως αλλαζουμε την ip στο *test3.yml* με αυτή που θα έχει ο αμυνόμενος worker της επίθεσης dos-ddos .
-Τέλος στη medusa_script.sh βάζουμε την τελευταία ip που πηραμε καθώς ο τελευταίος worker θα παιξει τον ρόλο του server στο ερώτημα 2.
3 years ago
## Ξεκινώντας επί της ουσίας
3 years ago
Είμαστε στον master και τρεχουμε με τη σειρα τις δυο εξης εντολες-scrit:
```
./first_script.sh
./second_script.sh
```
To πρώτο script κανει στον master **apt update εγκαθστα ansible και sshpass** ενώ προσθετει και μια γραμμη για να μην ζητάει κωδικό το sshpass και τέλος τρέχει με **ansible to test.yml** για ολους του υπολογιστές οπου φτιαχνει εναν *φακελο για αποθήκευση δεδομένων* εγκαθιστά το *openvpn* που θα χρειαστεί στο ερώτημα 4 μεταφέρει τα *iptables_rules.sh* και *fail2ban_script.sh* στον τοπικό χώρο των υπολογιστών και εκτελει και την εντολή *ls -al* για τεσταρισμα.
Το δευτερο script τρέχει με **ansible to test2.yml** για ολους τους workers οπου μεταφέρει και εκτελεί τοπικά το script_update.sh μεταφέρει τοπικά το medusa_script.sh και εγκαθιστά το hping3 και το sshpass.
## Ερώτημα 1
### dos attack
medusa_script.sh uptade install medusa passwd_file ip
##### >worker on ip 3 *dos attacker-attacks master* runs:
```
sudo hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source 172.21.0.2
```
##### >master *defender* runs:
```
sudo tcpdump -i eth0
```
##### >worker on ip 4 *προσπαθει μεσω του μαστερ να ζητησει το google.gr* runs:
```
curl http://www.google.gr
```
μα δεν τα καταφερνει καθως ο master δεν δυναται πλέον να δώσει υπηρεσία ... H επίθεση ήταν επιτυχής και το εντοπίσαμε, οπότε τη σταμταμε από τον worker on ip 3*
### ddos attack
##### >master *defender* runs:
```
./ddos_atck_script.sh
```
το οποίο τρεχει με ansible για ολους τους workers το *test3.yml* ,οι οποίοι επιτίθονται στον master χρησιμοποιόντας μάλιστα την παράμετρο async 120 poll 0 ωστε να διαρκέσει η επίθεση 120 δευτερόλεπτα , να μη χρειαστεί να την διακόψουμε εμέις και να μπορέσουμε να εξέλθουμε από το script για να εντοπίσουμε την επίθεση και να την αποκρούσουμε πριν περασουν τα 120 δευτερόλεπτα με τις εξής εντολές:
```
sudo tcpdump -i eth0
./ansible_iptables.sh #δινει τα απαραίτητα iptables μέσω ansible σε όλους τους υπολογιστές
```
##### >worker on ip 4 *προσπαθει μεσω του μαστερ να ζητησει το google.gr ξανά* runs:
```
curl http://www.google.gr
```
και αυτή τη φορά τα καταφερνει καθως ο master είναι προστατευμένος από τους νέους κανόνες ... H επίθεση απέτυχε και εμεις τελειώσαμε το ερώτημα 1 παραθέτοντας το ανάλογο **βιντεάκι** με αναλυτικότερο "τρέξιμο"
[![Watch the video](https://img.youtube.com/vi/6Enp_9V8SBg/maxresdefault.jpg)](https://youtu.be/6Enp_9V8SBg)
## Ερώτημα 2
### brute force attack
##### >worker on ip6 *SERVER* runs:
```
sudo iptables -L #to check that it is almost empty except previous task's rules
```
##### >worker on ip 3 *brute-force attacker-attacks server* runs:
```
./medusa_script.sh # update/install medusa/copys passwd_file localy/ attacks
```
και καταφέρνει να "σπάσει" τον κωδικό τον οποίο μας επιστρέφει. Με τις ακόλουθες εντολες συνδεόμαστε ssh με στον server
```
ssh docker@172.21.0.6 # "docker" για κωδικο
ifconfig # ωστε να δουμε οτι μπηκαμε
ls -l # να δουμε τα αρχεια του σερβερ
exit # επιστρεφουμε πισω στον worker on ip 3
```
##### >master *needs to protect everyone* runs:
```
./ansible_fail2ban.sh #σε όλους τους υπολογιστες και κανει:update/install rsyslog/start fail2ban/copy+edit jail.local/restart
```
##### >worker on ip 3 *brute-force attacker-attacks server again* runs:
```
./medusa_script.sh
```
όμως σε αυτη την επίθεση το fail2ban λειτουργησε και έριξε ban στον επιτιθέμενο από την τρίτη λανθασμένη προσπάθεια..
για του λόγου το αληθες :
##### >worker on ip6 *SERVER* runs:
```
sudo cat /var/log/auth.log | grep "Failed password" #ελεγχος του αρχείου και ανίχνευση της επίθεσης
sudo iptables -L #έχουμε νέο κανόνα REJECT σε αυτον που μας επιτέθηκε
```
για του λόγου το αληθες :point_down: :film_projector:
[![Watch the video](https://img.youtube.com/vi/DNn9b4G0Lh8/maxresdefault.jpg)](https://youtu.be/DNn9b4G0Lh8)
### sshkey authorization
3 years ago
Εδώ πρεπει να παμε σε όλους τους **workers** και να τρέξουμε :
```
cd /project/
./sshkey_script.sh #script δημιουργίας και μεταφορας κλειδιου στον σερβερ
```
και στον **master** μόνο την δευτερη ανωτέρω εντολή
Εν συνεχεία:
##### >worker on ip6 *SERVER* runs:
```
cd .ssh # μεταβαινει στον φακελο
ls -al # ελεγχει τα στοιχεια που υπαρχουν
vi authorized_keys # μπαινει στα κλειδια και βλεπει οτι ηρθανε όλα
sudo vi /etc/ssh/sshd_config # επεξεργαζεται το αρχειο ωστε να συνδεονται όλοι μονο με ssh key (change PassAuthntication "no")
sudo service ssh restart # restart to engage the rule
```
##### >any worker except *SERVER* runs:
```
ssh docker@172.21.0.6
```
και απλά συνδεεται χωρις κωδικό... επιβεβαιώνεται στο ακόλουθο **βίντεο**:
[![Watch the video](https://img.youtube.com/vi/LurgUcQBuhs/maxresdefault.jpg)](https://youtu.be/LurgUcQBuhs)
## Ερώτημα 3
### Local/Remote SSH Forwarding
3 years ago
Explain what these tests test and why
```
Give an example
```
## Deployment
Add additional notes about how to deploy this on a live system
## Built With
* [Dropwizard](http://www.dropwizard.io/1.0.2/docs/) - The web framework used
* [Maven](https://maven.apache.org/) - Dependency Management
* [ROME](https://rometools.github.io/rome/) - Used to generate RSS Feeds
## Contributing
Please read [CONTRIBUTING.md](https://gist.github.com/PurpleBooth/b24679402957c63ec426) for details on our code of conduct, and the process for submitting pull requests to us.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags).
## Authors
* **Billie Thompson** - *Initial work* - [PurpleBooth](https://github.com/PurpleBooth)
See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project.
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
## Acknowledgments
* Hat tip to anyone whose code was used
* Inspiration
* etc