Το άρθρο αυτό ανήκει στη σειρά Εγκληματολογία WordPress: πρακτικοί οδηγοί για ασφάλεια, ανάκτηση και μετάβαση WordPress.
Εισαγωγή
Οι σαρωτές ασφάλειας πιάνουν το προφανές κακόβουλο λογισμικό. Οι εκλεπτυσμένοι επιτιθέμενοι όμως ξέρουν τι ψάχνουν οι σαρωτές και σχεδιάζουν τον κώδικά τους ώστε να αποφεύγει την ανίχνευση. Ο οδηγός αυτός διδάσκει χειροκίνητες τεχνικές εγκληματολογίας: πώς να βρείτε ό,τι χάνουν τα αυτοματοποιημένα εργαλεία.
Γιατί Αποτυγχάνουν οι Σαρωτές
- Ανίχνευση βάσει υπογραφών: βρίσκει μόνο γνωστά μοτίβα κακόβουλου λογισμικού
- Συσκότιση: οι επιτιθέμενοι κωδικοποιούν τον κακόβουλο κώδικα για να αποφύγουν τις υπογραφές
- Κώδικας που μοιάζει νόμιμος: κακόβουλο λογισμικό κρυμμένο σε κανονικές συναρτήσεις
- Μολύνσεις της βάσης: πολλοί σαρωτές ελέγχουν μόνο αρχεία
- Εκτέλεση με χρονική καθυστέρηση: κώδικας που τρέχει μόνο υπό συγκεκριμένες συνθήκες
Στήσιμο του Εγκληματολογικού Περιβάλλοντος
Εργαλεία που Χρειάζεστε
- Πρόσβαση SSH στον server
- Επεξεργαστή κειμένου με υποστήριξη regex (VS Code, Sublime)
- phpMyAdmin ή πρόσβαση MySQL από τη γραμμή εντολών
- Καθαρή εγκατάσταση WordPress για σύγκριση
- Δεδομένα παρακολούθησης ακεραιότητας αρχείων (αν υπάρχουν)
Δημιουργήστε Εγκληματολογικό Στιγμιότυπο
- Κατεβάστε όλα τα αρχεία του site σε τοπικό μηχάνημα
- Εξαγάγετε ολόκληρη τη βάση
- Καταγράψτε τις τρέχουσες χρονοσημάνσεις των αρχείων
- Σημειώστε πού βρίσκονται τα access logs του server
Κυνήγι Κακόβουλου Λογισμικού στα Αρχεία
Ύποπτα Μοτίβα Αρχείων
Αναζητήστε τα εξής στον φάκελο wp-content:
- Αρχεία PHP στον φάκελο uploads
- Αρχεία με τυχαία ονόματα (abc123.php, x.php)
- Αρχεία με πρόσφατες ημερομηνίες τροποποίησης που δεν κάνατε εσείς
- Κρυφά αρχεία (.file.php)
- Αρχεία με πολλαπλές επεκτάσεις (image.jpg.php)
Υπογραφές Κακόβουλου Κώδικα
Αναζητήστε στα περιεχόμενα των αρχείων:
eval(σε συνδυασμό μεbase64_decodepreg_replaceμε τροποποιητή/eassert(με παράμετρο stringcreate_function(call_user_func(με δυναμικό όνομα συνάρτησης$_GET,$_POST,$_REQUESTπου περνούν σε eval/systemshell_exec,passthru,system,execfile_put_contentsμε είσοδο χρήστη- Έντονα κωδικοποιημένα strings (gzinflate, str_rot13, base64)
Εντοπισμός Κρυμμένων Backdoors
Συνήθεις τοποθεσίες backdoors:
- wp-includes/class-wp-*.php (ψεύτικα αρχεία πυρήνα)
- wp-content/themes/theme-name/functions.php
- wp-content/plugins/plugin-name/plugin-name.php
- wp-config.php (έγχυση στην αρχή ή στο τέλος)
- .htaccess (κανόνες rewrite προς κακόβουλα scripts)
- Αρχεία index.php σε διάφορους φακέλους
Κυνήγι Κακόβουλου Λογισμικού στη Βάση
Έλεγχος wp_options
SELECT option_name, option_value FROM wp_options
WHERE option_value LIKE '%eval%'
OR option_value LIKE '%base64%'
OR option_value LIKE '%script%';
Έλεγχος Περιεχομένου Άρθρων
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%<script%'
OR post_content LIKE '%javascript:%'
OR post_content LIKE '%onclick=%';
Έλεγχος User Meta
SELECT * FROM wp_usermeta
WHERE meta_value LIKE '%eval%'
OR meta_value LIKE '%base64%';
Ύποπτοι Λογαριασμοί Διαχειριστή
SELECT u.ID, u.user_login, u.user_email, u.user_registered
FROM wp_users u
JOIN wp_usermeta m ON u.ID = m.user_id
WHERE m.meta_key = 'wp_capabilities'
AND m.meta_value LIKE '%administrator%';
Ανάλυση Logs
Μοτίβα στα Access Logs
Ψάξτε για:
- Αιτήματα POST προς ασυνήθιστα αρχεία PHP
- Αιτήματα με παραμέτρους κωδικοποιημένες σε base64
- Πολλαπλές αποτυχημένες προσπάθειες σύνδεσης
- Αιτήματα προς wp-includes ή wp-admin από ασυνήθιστες IP
- User-agent strings με απόπειρες SQL injection
Ανάλυση Error Logs
Τα σφάλματα PHP συχνά αποκαλύπτουν κακόβουλο λογισμικό:
- Συντακτικά σφάλματα σε αρχεία που δεν τροποποιήσατε
- Αποτυχημένα require/include ανύπαρκτων αρχείων
- Σφάλματα άρνησης πρόσβασης από ασυνήθιστες τοποθεσίες
Ακεραιότητα Αρχείων Πυρήνα
Σύγκριση με Καθαρή Εγκατάσταση
- Κατεβάστε φρέσκο WordPress της ίδιας έκδοσης
- Συγκρίνετε τους φακέλους wp-includes και wp-admin
- Κάθε τροποποιημένο ή επιπλέον αρχείο είναι ύποπτο
Checksums του WordPress
wp core verify-checksums
Αυτή η εντολή WP-CLI συγκρίνει τα αρχεία πυρήνα σας με τα επίσημα checksums.
Ανάλυση Χρονολογίου
- Εντοπίστε πότε πιθανότατα έγινε η μόλυνση (χρονοσημάνσεις αρχείων, logs)
- Συσχετίστε με αλλαγές που έγιναν (εγκαταστάσεις plugins, αλλαγές θέματος)
- Ελέγξτε αν υπάρχουν αντίγραφα πριν από εκείνη την ημερομηνία
- Εξετάστε ποια πρόσβαση δόθηκε εκείνη την περίοδο
Τεκμηρίωση
Για κάθε εύρημα, καταγράψτε:
- Διαδρομή αρχείου ή θέση στη βάση
- Το απόσπασμα κακόβουλου κώδικα
- Πότε πιθανότατα προστέθηκε
- Τι κάνει (αν μπορείτε να το προσδιορίσετε)
- Πώς πιθανότατα εγχύθηκε
Συμπέρασμα
Η χειροκίνητη εγκληματολογία είναι χρονοβόρα αλλά αναγκαία. Οι σαρωτές είναι σημείο εκκίνησης, όχι η τελική λέξη. Μάθετε να σκέφτεστε σαν επιτιθέμενος: πού θα κρύβατε κακόβουλο κώδικα αν θέλατε να επιβιώσει από έναν σαρωτή; Εκεί θα βρείτε ό,τι έχασαν τα εργαλεία.