Όπως έχουμε παρουσιάσει αρκετά εργαλεία που σας βοήθησαν στις δοκιμές εισβολής σε server, σήμερα θα δούμε το Snort το οποίο είναι στην αμυντική πλευρά για να μας βοηθήσει στον εντοπισμό εισβολών και συγκεκριμένων επιθέσεων.

Το Snort είναι ένα ανοιχτού κώδικα εργαλείο ανίχνευση εισβολής (Intrusion Detection). Όπως και τα άλλα ανοιχτού κωδικά εργαλεία που έχουμε παρουσιάσει κατά καιρούς στο Kali Linux ή στην κατηγορία Pentesting, τα οποία έχουν να κάνουν με επίτευξη εισβολής, το Snort είναι εργαλείο που στέκεται στην αντίθετη πλευρά. Χρησιμοποιείται από αναλυτές συστημάτων ασφάλειας, διαχειριστές δικτύου και pentesters σε όλο τον κόσμο για να ρυθμίσουν συστήματα και servers που θα αναγνωρίζουν και θα εντοπίζουν επιθέσεις σε συνδυασμό με άλλα συστήματα αποτροπής τους (όπως το CrowdSec).

Το Snort συνοδεύεται από αρκετούς έτοιμους κανόνες για τον έλεγχο και τον εντοπισμό επιθέσεων, αλλά ενδέχεται να μην έχει όλους τους κανόνες που μπορεί να απαιτούνται συγκεκριμένα από κάποιον χρήστη. Ας δούμε λοιπόν πώς μπορούμε να προσθέσουμε τους δικούς μας κανόνες στο Snort και να ελέγξουμε για επιθέσεις.

Advertisements

Εγκατάσταση Snort

Για τις δοκιμές μας χρησιμοποιούμε έναν server από την DigitalOcean που φτιάξαμε δωρεάν (το παρακάτω σας δίνει δωρεάν κουπόνι $100 για νέους λογαριασμούς προς κατανάλωση εντός δύο μηνών):

Αφού στήσαμε έναν Debian Server, αφιερώσαμε 10 λεπτά για την ασφάλεια του αλλά και την ασφάλεια SSH, κάναμε εγκατάσταση το Snort με την εντολή:

sudo apt install snort

Στη συνέχεια, θα σας ζητήσει να ορίσετε τη διεπαφή δικτύου που θα ακούει. Θα σας δώσει το eth0 από προεπιλογή. Αν δεν έχετε κάποια ιδιαίτερη ανάγκη, μπορείτε απλώς να το αφαιρέστε και να το αφήστε κενό και στη συνέχεια να πατήστε Enter. Για όλες τις άλλες λεπτομέρειες που ζητά, αφήστε τα ως προεπιλογή και πατήστε Enter. 

Εκτελέστε μια βασική δοκιμή ασφαλείας με το Snort


Αφού εγκαταστήσετε το Snort καλό είναι να εισαγάγετε την ακόλουθη εντολή για να εκτελέσετε μια βασική δοκιμή ασφαλείας με το Snort, σύμφωνα με τους κανόνες που δίνονται από προεπιλογή:

snort -c /etc/snort/snort.conf -l /var/log/snort/

Με αυτό τον τρόπο μπορείτε να δείτε όλους τους κανόνες που εφαρμόζονται και όλες τις δοκιμές που έχει πραγματοποιήσει το πρόγραμμα.

Προσθέστε τους δικούς σας κανόνες στο Snort


Ας προχωρήσουμε τώρα στον πραγματικό στόχο αυτού του άρθρου, δηλαδή να δημιουργήσουμε τους δικούς μας κανόνες στο Snort. 

Πρώτα, μεταβείτε στο /etc/snort. Στη συνέχεια, δημιουργήστε ένα αρχείο κανόνα με την επέκταση .rules και προσθέστε τον κανόνα σας στο αρχείο, με όλες τις δυνατότητες που πρέπει να δοκιμάσετε για την επίθεση που θέλετε να ελέγξετε. Στη συνέχεια, αποθηκεύστε το αρχείο. 

Ένα απλό παράδειγμα, ας πούμε ότι θέλουμε έναν κανόνα για τον έλεγχο μιας επίθεσης TCP SYN, οπότε φτιάχνουμε ένα αρχείο που ονομάζεται tcpsyn-task.rules

alert tcp any any -> any any (flags: S; msg: "under SYN Flood Attack"; sid:100002; rev:1;)

Το flag έχει οριστεί το S καθώς η πρόθεσή μας είναι να ανιχνευθούν τα πακέτα SYN από το εξωτερικό δίκτυο σε οποιαδήποτε θύρα στο δίκτυο μας. Εάν εντοπίσει ένα πακέτο, δίνει ένα μήνυμα στο αρχείο ειδοποιήσεων ότι το σύστημα είναι «under SYN flood attack». Περισσότερα για την ανατομία των Snort κανόνων δείτε τις παραπομπές.

Αφού αποθηκεύσετε το αρχείο θα πρέπει τώρα να συμπεριλάβετε αυτόν τον κανόνα στο αρχείο διαμόρφωσης του Snort για να ξέρει που θα το βρεί.

Έτσι, στην ίδια θέση του αρχείου των κανόνων σας, θα βρείτε ένα αρχείο με το όνομα snort.conf. Ανοίξτε το χρησιμοποιώντας π.χ. VIM , προσθέστε την ακόλουθη γραμμή εντολών και αποθηκεύστε το.

include /etc/snort/tcpsyn-task.rules

Μόλις τελειώσετε με αυτό, ο κανόνας σας θα προστεθεί στο Snort. Στη συνέχεια εκτελείτε την εντολή snort μαζί με τον κανόνα που προστέθηκε πρόσφατα. Για αυτό, εκτελείτε την ακόλουθη εντολή:

sudo snort -v --c /etc/snort/snort.conf
Advertisements

Ελέγξτε το μήνυμα ειδοποίησης στις πληροφορίες καταγραφής

Φτιάξαμε έναν πρώτο κανόνα, τώρα απλώς εκτελέστε την ακόλουθη εντολή για να ελέγξετε την έξοδο:

tail -f /var/log/snort/alert

Εάν εμφανιστεί το μήνυμα προειδοποίησης που έχετε δώσει, αυτό σημαίνει ότι η επίθεση έχει πραγματοποιηθεί. Διαφορετικά, δεν θα εμφανιστεί.

Για να σας δείξω τα αποτελέσματα, έχω ξεκινήσει μια επίθεση από ένα άλλο μηχάνημά μου. Από αυτήν την έξοδο μπορούμε να συμπεράνουμε ότι έχει πραγματοποιηθεί μια επίθεση TCP SYN.

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> xx.xxx.xx.x:80

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> xx.xxx.xx.x:80

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> xx.xxx.xx.x:80

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> xx.xxx.xx.x:80

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> xx.xxx.xx.x:80

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> xx.xxx.xx.x:80

-.979898 [**] [1:10000001:0] under SYN Flood Attack [**]
 [Priority: 0] {TCP}<ip address>:52008 -> 35.222.85.5:80

Παραπομπές