Εν ολίγοις: Οι αυτοματοποιημένες επιθέσεις σε διακομιστές ιστού εξελίσσονται σε κύματα: προγράμματα σαρώνουν το διαδίκτυο για προσβάσιμους διακομιστές, τους κατατάσσουν με βάση εξωτερικά χαρακτηριστικά και δοκιμάζουν μαζικά γνωστές ευπάθειες όπως το PHP2Shell. Το μέγεθος της επιχείρησης δεν παίζει ρόλο. Προστασία προσφέρουν μια PHP με patch, μια μικρή επιφάνεια επίθεσης και μια παρακολούθηση που εντοπίζει γρήγορα τις επιτυχίες.
Η αφορμή: «Ποιον να ενδιαφέρει ο ιστότοπός μας;»
Αυτή την ερώτηση ακούμε συχνά μετά το PHP2Shell, ιδίως από μικρότερες επιχειρήσεις. Η ειλικρινής απάντηση: πιθανότατα κανέναν προσωπικά. Αλλά σε ευπάθειες αυτού του είδους δεν χρειάζεται. Οι επιθέσεις εκτελούνται από προγράμματα που δεν αναζητούν ονόματα, αλλά ευκαιρίες.
Η BSI (Ομοσπονδιακή Υπηρεσία Ασφάλειας Πληροφορικής της Γερμανίας) υπολόγιζε στο PHP2Shell σε γρήγορη, μεγάλης κλίμακας εκμετάλλευση. Η Cloudflare ανέφερε απόπειρες επίθεσης και ότι οι επιτιθέμενοι άλλαζαν τα μοτίβα τους για να παρακάμψουν κανόνες προστασίας. Και τα δύο ταιριάζουν με ό,τι συμβαίνει τακτικά σε κρίσιμες ευπάθειες σε ευρέως διαδεδομένο λογισμικό.
Πώς εξελίσσονται οι αυτοματοποιημένες επιθέσεις σε διακομιστές ιστού
Οι αυτοματοποιημένες καμπάνιες ακολουθούν συνήθως παρόμοιο μοτίβο. Η παρακάτω επισκόπηση περιγράφει τις φάσεις γενικά, χωρίς λεπτομέρειες επίθεσης:
| Φάση | Τι συμβαίνει | Τι βοηθά ενάντια σε αυτό |
|---|---|---|
| Αναζήτηση | Προγράμματα ελέγχουν μεγάλα εύρη διευθύνσεων ή δημόσιους καταλόγους, όπως τα αρχεία πιστοποιητικών, για προσβάσιμους διακομιστές ιστού | λίγα δημόσια προσβάσιμα συστήματα, απογραφή όλων των διευθύνσεων |
| Κατάταξη | Αξιολογούνται οι απαντήσεις: διακομιστής ιστού, έκδοση PHP, CMS, τυπικές διαδρομές | απόκρυψη πληροφοριών έκδοσης, αφαίρεση περιττών αρχείων |
| Δοκιμή | γνωστές ευπάθειες δοκιμάζονται μαζικά, συχνά χωρίς προηγούμενη κατάταξη | τρέχουσα PHP, επανεκκίνηση, WAF ως πρόσθετο επίπεδο |
| Εδραίωση | σε περίπτωση επιτυχίας τοποθετείται μια πίσω πόρτα, όπως ένα webshell ή ένα cronjob | περιορισμένα δικαιώματα εγγραφής, καμία εκτέλεση PHP σε φακέλους μεταφόρτωσης |
| Αξιοποίηση | ο διακομιστής χρησιμοποιείται, για παράδειγμα για spam, κρυπτονόμισμα, ανακατευθύνσεις ή κλοπή δεδομένων | παρακολούθηση διεργασιών, αρχείων και εξερχόμενων συνδέσεων |
Σημαντική είναι η τρίτη γραμμή. Πολλές καμπάνιες δεν κάνουν καν τον κόπο να κατατάξουν τους διακομιστές με ακρίβεια εκ των προτέρων. Δοκιμάζουν απλώς ό,τι είναι προσβάσιμο. Γι' αυτό η διακριτικότητα από μόνη της δεν προστατεύει.
Γιατί οι επιθέσεις έρχονται σε κύματα
Οι αυτοματοποιημένες καμπάνιες σπάνια τρέχουν μία φορά και ποτέ ξανά. Τυπικό είναι ένα μοτίβο κυμάτων. Το πρώτο κύμα ακολουθεί λίγο μετά τη δημοσιοποίηση μιας ευπάθειας, συχνά ακόμη με ανώριμα εργαλεία. Περισσότερα κύματα έρχονται όταν οι επιτιθέμενοι βελτιώνουν τα εργαλεία τους ή τα προσαρμόζουν σε κανόνες προστασίας. Η Cloudflare παρατήρησε στο PHP2Shell ακριβώς αυτό: αλλαγμένα μοτίβα επίθεσης για παράκαμψη των κανόνων.
Για εσάς αυτό σημαίνει: ένας διακομιστής που επιβίωσε αλώβητος από το πρώτο κύμα δεν είναι μόνιμα ασφαλής, όσο δεν έχει patch. Και ένας διακομιστής που στήθηκε πρόσφατα γίνεται στόχος από τη στιγμή που είναι προσβάσιμος. Όποιος εκδίδει π.χ. ένα νέο πιστοποιητικό TLS, κάνει το όνομα ορατό σε δημόσια αρχεία πιστοποιητικών, που τα αξιολογούν και οι σαρωτές. Ένα νέο σύστημα πρέπει γι' αυτό να συνδέεται στο δίκτυο μόνο όταν έχει ήδη ενημερωθεί.
Γιατί οι μικρές επιχειρήσεις επηρεάζονται εξίσου
Για τις αυτοματοποιημένες επιθέσεις δεν μετράει η αξία ενός μεμονωμένου στόχου, αλλά το πλήθος. Ο διακομιστής μιας μικρής επιχείρησης προσφέρει υπολογιστική ισχύ, ένα domain με καλή φήμη, αποστολή email και ενίοτε δεδομένα πελατών. Για τους επιτιθέμενους αυτό αρκεί.
Προστίθεται και το εξής: οι μικρότερες επιχειρήσεις δεν έχουν συχνά δική τους IT που να εγκαθιστά αμέσως τις ενημερώσεις. Οι διακομιστές τους παραμένουν περισσότερο ευάλωτοι και καταλήγουν γι' αυτό πιο συχνά στις λίστες αποτελεσμάτων των σαρωτών. Όποιος κάνει πρώτος patch, βγαίνει από αυτές τις λίστες.
Ένα ακόμη σημείο είναι η αλυσίδα εφοδιασμού. Πολλοί μικροί ιστότοποι βρίσκονται σε διακομιστές πρακτορείων ή μικρών παρόχων φιλοξενίας, όπου τρέχουν δεκάδες έργα πελατών το ένα δίπλα στο άλλο. Για τους επιτιθέμενους ένας τέτοιος διακομιστής είναι ιδιαίτερα αποδοτικός, επειδή μία μόνο επιτυχία επηρεάζει πολλούς ιστότοπους ταυτόχρονα. Ο κίνδυνός σας δεν εξαρτάται τότε μόνο από τη δική σας επιμέλεια, αλλά και από εκείνη του παρόχου υπηρεσιών σας.
Οι σαρώσεις στα logs σας είναι φυσιολογικές και δεν αποτελούν απόδειξη διάρρηξης. Μια επιτυχής επίθεση φαίνεται από άλλα ίχνη: νέα αρχεία, ξένες διεργασίες, άγνωστοι λογαριασμοί, ασυνήθιστες εξερχόμενες συνδέσεις.
Τι μπορείτε να ελέγξετε μόνοι σας
Μια ματιά στα logs δείχνει πόσο έντονα σαρώνεται ο διακομιστής σας. Οι παρακάτω εντολές μόνο διαβάζουν και δεν αλλάζουν τίποτα:
# Οι δέκα διευθύνσεις με τα περισσότερα αιτήματα στο τρέχον log πρόσβασης
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Αιτήματα που απαντήθηκαν με «δεν βρέθηκε», κατά συχνότητα
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# Αποκαλύπτει ο διακομιστής την έκδοση PHP στην κεφαλίδα;
curl -sI https://www.example.de/ | grep -i "x-powered-by"
Πολλά αιτήματα σε διαδρομές που δεν υπάρχουν είναι τυπικός θόρυβος σάρωσης. Πιο προσεκτικοί πρέπει να γίνετε όταν σε τέτοια αιτήματα ακολουθούν ξαφνικά επιτυχείς απαντήσεις, όταν σε φακέλους μεταφόρτωσης καλούνται αρχεία που δεν γνωρίζετε ή όταν ο χρήστης του διακομιστή ιστού ξεκινά διεργασίες που κανονικά δεν ξεκινά ποτέ. Επιβεβαιωμένα χαρακτηριστικά αναγνώρισης ειδικά για το PHP2Shell δεν υπάρχουν μέχρι στιγμής, η αξιολόγηση βασίζεται γι' αυτό σε τέτοιες ανωμαλίες συμπεριφοράς. Πώς αναλύετε τα logs πιο σε βάθος, περιγράφει ο οδηγός Ανάλυση logs διακομιστή ιστού. Αν το τρίτο ερώτημα δείχνει έκδοση PHP, αξίζει η ρύθμιση expose_php = Off· υπόβαθρο θα βρείτε στο Απόκρυψη πληροφοριών έκδοσης.
Τα επίπεδα προστασίας με τη σωστή σειρά
- Ενημέρωση και επανεκκίνηση της PHP: Χωρίς αυτό το βήμα όλα τα άλλα μέτρα μένουν μπάλωμα.
- Μείωση της επιφάνειας επίθεσης: απενεργοποιήστε ή τοποθετήστε πίσω από σύνδεση τους ιστότοπους που δεν χρησιμοποιούνται, τα συστήματα δοκιμών και τα παλιά microsites.
- Κανόνες στα όρια: Ένα Web Application Firewall με συντηρημένο σύνολο κανόνων, για παράδειγμα το OWASP Core Rule Set με ModSecurity, συγκρατεί ένα μέρος των προσπαθειών.
- Επιβράδυνση των επαναλαμβανόμενων προσπαθειών: Εργαλεία όπως το Fail2ban αποκλείουν διευθύνσεις που παράγουν ύποπτα πολλά σφάλματα. Απέναντι σε κατανεμημένες σαρώσεις βοηθά μόνο περιορισμένα.
- Παρακολούθηση: Κρατήστε υπό έλεγχο τις διεργασίες του χρήστη του διακομιστή ιστού, τα νέα αρχεία PHP και τις εξερχόμενες συνδέσεις, ώστε μια επιτυχής επίθεση να μη μένει απαρατήρητη για εβδομάδες.
Πώς βοηθά συγκεκριμένα η PHP SOS;
- Καταγραφή της επιφάνειας επίθεσης: Εντοπίζουμε ποια από τα συστήματά σας είναι προσβάσιμα από έξω και τι αποκαλύπτουν για τον εαυτό τους.
- Patch και σκλήρυνση: Ενημερώνουμε την PHP, κάνουμε επανεκκίνηση και μειώνουμε τις πληροφορίες έκδοσης, τα δικαιώματα εγγραφής και τις περιττές υπηρεσίες.
- Κανόνες και αποκλεισμοί: Ρυθμίζουμε κανόνες WAF και μηχανισμούς αποκλεισμού κατάλληλους για την εφαρμογή σας.
- Συνεχής παρακολούθηση: Αναφέρουμε ύποπτες διεργασίες, αρχεία και συνδέσεις προτού μια επιτυχία γίνει περιστατικό.
Πώς μοιάζει αυτό σε συνεχή λειτουργία, περιγράφει το Security monitoring για διακομιστές ιστού.
Συμπέρασμα
Οι αυτοματοποιημένες επιθέσεις δεν ρωτούν σε ποιον ανήκει ένας διακομιστής. Ρωτούν μόνο αν είναι ευάλωτος. Η καλύτερη απάντηση σε αυτό είναι ανεπιτήδευτη: patch γρήγορα, προσφορά λίγων πραγμάτων, προσεκτικό βλέμμα. Όποιος το κάνει, θα συνεχίσει να σαρώνεται, αλλά δεν θα βρίσκεται πια.
Συχνές ερωτήσεις
Είναι οι μικρές επιχειρήσεις στόχος αυτοματοποιημένων επιθέσεων;
Ναι. Οι αυτοματοποιημένες σαρώσεις ελέγχουν προσβάσιμους διακομιστές χωρίς να κοιτούν τον διαχειριστή. Το αν πίσω βρίσκεται ένας όμιλος ή μια τεχνική επιχείρηση, δεν παίζει ρόλο για το λογισμικό. Καθοριστικό είναι αν ο διακομιστής φαίνεται ευάλωτος.
Από τι αναγνωρίζω σαρώσεις στα logs μου;
Τυπικά είναι πολλά αιτήματα σε διαδρομές που δεν υπάρχουν καθόλου στον ιστότοπό σας, συχνά από εναλλασσόμενες διευθύνσεις και με ύποπτα αναγνωριστικά. Τέτοιες εγγραφές είναι φυσιολογικές και δεν αποτελούν ακόμη απόδειξη επιτυχούς επίθεσης, δείχνουν όμως ότι ο διακομιστής σας ελέγχεται.
Βοηθά να κρύψω την έκδοση PHP;
Κάνει κάπως δυσκολότερο για τους σαρωτές να κατατάξουν στοχευμένα τον διακομιστή σας και είναι μια λογική βασική ρύθμιση. Δεν προστατεύει όμως από επιθέσεις που απλώς δοκιμάζουν κάθε διακομιστή. Η ενημέρωση παραμένει υποχρέωση.
Μπορώ να αποτρέψω εντελώς τις σαρώσεις;
Όχι. Κάθε δημόσια προσβάσιμος διακομιστής σαρώνεται τακτικά. Στόχος δεν είναι να αποτραπούν οι σαρώσεις, αλλά να μη βρίσκουν τίποτα: τρέχον λογισμικό, μικρή επιφάνεια επίθεσης και παρακολούθηση που αναφέρει ανωμαλίες.