Το άρθρο αυτό ανήκει στη σειρά Εγκληματολογία WordPress: πρακτικοί οδηγοί για ασφάλεια, ανάκτηση και μετάβαση WordPress.

Εισαγωγή

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

Γιατί Αποτυγχάνουν οι Σαρωτές

  • Ανίχνευση βάσει υπογραφών: βρίσκει μόνο γνωστά μοτίβα κακόβουλου λογισμικού
  • Συσκότιση: οι επιτιθέμενοι κωδικοποιούν τον κακόβουλο κώδικα για να αποφύγουν τις υπογραφές
  • Κώδικας που μοιάζει νόμιμος: κακόβουλο λογισμικό κρυμμένο σε κανονικές συναρτήσεις
  • Μολύνσεις της βάσης: πολλοί σαρωτές ελέγχουν μόνο αρχεία
  • Εκτέλεση με χρονική καθυστέρηση: κώδικας που τρέχει μόνο υπό συγκεκριμένες συνθήκες

Στήσιμο του Εγκληματολογικού Περιβάλλοντος

Εργαλεία που Χρειάζεστε

  • Πρόσβαση SSH στον server
  • Επεξεργαστή κειμένου με υποστήριξη regex (VS Code, Sublime)
  • phpMyAdmin ή πρόσβαση MySQL από τη γραμμή εντολών
  • Καθαρή εγκατάσταση WordPress για σύγκριση
  • Δεδομένα παρακολούθησης ακεραιότητας αρχείων (αν υπάρχουν)

Δημιουργήστε Εγκληματολογικό Στιγμιότυπο

  1. Κατεβάστε όλα τα αρχεία του site σε τοπικό μηχάνημα
  2. Εξαγάγετε ολόκληρη τη βάση
  3. Καταγράψτε τις τρέχουσες χρονοσημάνσεις των αρχείων
  4. Σημειώστε πού βρίσκονται τα access logs του server

Κυνήγι Κακόβουλου Λογισμικού στα Αρχεία

Ύποπτα Μοτίβα Αρχείων

Αναζητήστε τα εξής στον φάκελο wp-content:

  • Αρχεία PHP στον φάκελο uploads
  • Αρχεία με τυχαία ονόματα (abc123.php, x.php)
  • Αρχεία με πρόσφατες ημερομηνίες τροποποίησης που δεν κάνατε εσείς
  • Κρυφά αρχεία (.file.php)
  • Αρχεία με πολλαπλές επεκτάσεις (image.jpg.php)

Υπογραφές Κακόβουλου Κώδικα

Αναζητήστε στα περιεχόμενα των αρχείων:

  • eval( σε συνδυασμό με base64_decode
  • preg_replace με τροποποιητή /e
  • assert( με παράμετρο string
  • create_function(
  • call_user_func( με δυναμικό όνομα συνάρτησης
  • $_GET, $_POST, $_REQUEST που περνούν σε eval/system
  • shell_exec, passthru, system, exec
  • file_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 ανύπαρκτων αρχείων
  • Σφάλματα άρνησης πρόσβασης από ασυνήθιστες τοποθεσίες

Ακεραιότητα Αρχείων Πυρήνα

Σύγκριση με Καθαρή Εγκατάσταση

  1. Κατεβάστε φρέσκο WordPress της ίδιας έκδοσης
  2. Συγκρίνετε τους φακέλους wp-includes και wp-admin
  3. Κάθε τροποποιημένο ή επιπλέον αρχείο είναι ύποπτο

Checksums του WordPress

wp core verify-checksums

Αυτή η εντολή WP-CLI συγκρίνει τα αρχεία πυρήνα σας με τα επίσημα checksums.

Ανάλυση Χρονολογίου

  1. Εντοπίστε πότε πιθανότατα έγινε η μόλυνση (χρονοσημάνσεις αρχείων, logs)
  2. Συσχετίστε με αλλαγές που έγιναν (εγκαταστάσεις plugins, αλλαγές θέματος)
  3. Ελέγξτε αν υπάρχουν αντίγραφα πριν από εκείνη την ημερομηνία
  4. Εξετάστε ποια πρόσβαση δόθηκε εκείνη την περίοδο

Τεκμηρίωση

Για κάθε εύρημα, καταγράψτε:

  • Διαδρομή αρχείου ή θέση στη βάση
  • Το απόσπασμα κακόβουλου κώδικα
  • Πότε πιθανότατα προστέθηκε
  • Τι κάνει (αν μπορείτε να το προσδιορίσετε)
  • Πώς πιθανότατα εγχύθηκε

Συμπέρασμα

Η χειροκίνητη εγκληματολογία είναι χρονοβόρα αλλά αναγκαία. Οι σαρωτές είναι σημείο εκκίνησης, όχι η τελική λέξη. Μάθετε να σκέφτεστε σαν επιτιθέμενος: πού θα κρύβατε κακόβουλο κώδικα αν θέλατε να επιβιώσει από έναν σαρωτή; Εκεί θα βρείτε ό,τι έχασαν τα εργαλεία.