Στο προηγούμενο άρθρο της σειράς SCADA Hacking, κατασκευάσαμε ένα εξελιγμένο, χαμηλής αλληλεπίδρασης SCADA honeypot με το conpot.
Σε αυτό το άρθρο, θα δοκιμάσουμε το Honeypot που φτιάξαμε για να δούμε πώς φαίνεται σε κάποιον που προσπαθεί να μας κάνει επίθεση. Είναι ζωτικής σημασίας το HoneyPot μας να μοιάζει και να ενεργεί σαν ένα αυθεντικό σύστημα SCADA, αν θέλουμε να δελεάσουμε τους επιτιθέμενους να επιτεθούν στο honeypot που φτιάξαμε.
Ας χρησιμοποιήσουμε κάποια εργαλεία hacking/pentesting SCADA για να ελέγξουμε πώς θα φαινόταν το honeypot μας σε έναν επιτιθέμενο.
Table of Contents
Βήμα #1 Σάρωση με το nmap
Πρώτα, ας το σαρώσουμε με το nmap. Τρέχουμε τα Kali. Στη συνέχεια, ας χρησιμοποιήσουμε το nmap με το switch -A για να συλλέξουμε πληροφορίες σχετικά με τις υπηρεσίες του.
kali> nmap -A -Pn -p1-1000 192.168.181.186
Όπως μπορείτε να δείτε στο παραπάνω στιγμιότυπο οθόνης, το nmap βρήκε τη θύρα 80 ανοιχτή, αλλά μπορείτε επίσης να εντοπίσει το Siemens SIMATIC S7-200 και με άλλες εντολές. Βρήκε επίσης ανοιχτές τις tcpwrapped θύρες 102(S7-200) και 502 (modbus).
Για να διαπιστώσουμε αν κάποια θύρα UDP είναι ανοιχτή ή πιο συγκεκριμένα η θύρα 161 για το SMNP, μπορούμε να χρησιμοποιήσουμε ένα nmap script, το snmp-sysdescr, δίνοντας την παρακάτω εντολή,
kali > nmap -sU -p161 192.168.181.186 –script snmp-sysdescr
Σε αυτή την περίπτωση, βρήκε τη θύρα UDP 161 ανοιχτή και την αναγνώρισε ως snmp.
Βήμα #2 Σάρωση με το Metasploit στο Honeypot
Όπως γνωρίζετε, στο Metasploit υπάρχουν πολυάριθμες βοηθητικές ενότητες εκμετάλλευσης που έχουν σχεδιαστεί για συστήματα SCADA. Ας ρίξουμε μια ματιά σε μερικές από αυτές και ας τις δοκιμάσουμε στο Honeypot μας.
Πρώτον, ας χρησιμοποιήσουμε το modbusdetect module. Αυτό το module έχει σχεδιαστεί για να προσδιορίζει αν το modbus εκτελείται στον στόχο.
Για να εκκινήσετε το module πληκτρολογήστε,
kali > use auxiliary/scanner/scada/modbusdetect
Στη συνέχεια, πρέπει να ορίσουμε τη διεύθυνση IP του απομακρυσμένου κεντρικού υπολογιστή (RHOST) και στη συνέχεια να την εκμεταλλευτούμε.
Όπως μπορείτε να δείτε παραπάνω, ο σαρωτής αναγνώρισε ότι το modbus εκτελείται στο Honeypot. Μέχρι στιγμής, όλα καλά. Μοιάζει με ένα αυθεντικό σύστημα SCADA.
Στη συνέχεια, ας δούμε την ενότητα modbus_findclientid. Αυτή η ενότητα έχει σχεδιαστεί για να απαριθμεί τα αναγνωριστικά του πελάτη στο σύστημα SCADA.
Για να το εκκινήσετε, πληκτρολογήστε,
kali> use auxiliary/scanner/scada/modbus_findunitid
και στη συνέχεια,
kali> show options
Σημειώστε ότι πρέπει να ορίσουμε μόνο το RHOST για αυτόν τον σαρωτή.
kali > set RHOST 192.168.181.185
Όταν πληκτρολογήσουμε exploit, βλέπουμε ότι αυτός ο σαρωτής θα αρχίσει να απαριθμεί το stationID κάθε πελάτη στο σύστημα.
Τέλος, ας χρησιμοποιήσουμε το modbus client module για να γράψουμε δεδομένα σε ένα πηνίο.
Αυτή η ενότητα θα μας επιτρέψει να γράψουμε δεδομένα στα πηνία ή τους καταχωρητές του πελάτη modbus. Όπως μπορείτε να φανταστείτε, αυτό θα μπορούσε να προκαλέσει χάος σε ένα σύστημα SCADA, καθώς θα μπορούσε να ενεργοποιήσει ή να απενεργοποιήσει τα PLC ή να αλλάξει τη λειτουργία τους.
kali > use auxiliary/scanner/scad/modbusclient
Αυτή η ενότητα απαιτεί να επιλέξουμε το ACTION WRITE_COIL ή WRITE REGISTER. Επιπλέον, πρέπει να επιλέξουμε το UNIT_NUMBER (το αναγνωριστικό πελάτη) και τέλος, τα δεδομένα που θέλουμε να στείλουμε στο πηνίο ή στον καταχωρητή. Δεδομένου ότι εδώ θα στείλουμε δεδομένα στο πηνίο, μπορούμε να επιλέξουμε μόνο 0 ή 1 (απενεργοποίηση ή ενεργοποίηση).
Τέλος, πληκτρολογούμε run.
Όπως βλέπουμε στο παραπάνω στιγμιότυπο οθόνης, αλλάξαμε με επιτυχία τα δεδομένα στην επιλεγμένο coil. Όπως μπορείτε να φανταστείτε, μπορούμε να περάσουμε από κάθε coil και να αλλάξουμε τα δεδομένα του.
Όπως μπορείτε να δείτε, το conpot SCADA honeypot που κατασκευάσαμε εμφανίζεται και αντιδρά ακριβώς όπως ένα αυθεντικό σύστημα SCADA!
Βήμα #3 Παρακολούθηση του Honeypot
Ιδανικά, το honeypot θα πρέπει να διαθέτει κάποιο σύστημα παρακολούθησης εισβολών/ασφάλειας, όπως το Snort, το Splunk, το Suricata ή άλλα. Χωρίς αυτά, μπορούμε ακόμα να παρακολουθούμε τις δραστηριότητες μέσω τυπικών εργαλείων παρακολούθησης Linux, όπως,
-
/var/log/syslog – περιέχει όλα τα μηνύματα εκτός από αυτά που σχετίζονται με τον έλεγχο ταυτότητας. Αναλύοντας, βρήκα μόνο μηνύματα του kernel και thermald. Κάθε γραμμή περιέχει: ημερομηνία, όνομα κεντρικού υπολογιστή, πρόγραμμα που παρήγαγε το μήνυμα, αναγνωριστικό διεργασίας και μήνυμα καταγραφής.
-
/var/log/auth.log – περιέχει πληροφορίες εξουσιοδότησης του συστήματος, συμπεριλαμβανομένων των συνδέσεων χρηστών μέσω των διαχειριστών οθόνης και σύνδεσης, των αιτήσεων πρόσβασης sudo, του μηχανισμού ελέγχου ταυτότητας για το crontab, του system daemon policykit κ.λ.π. Αυτό το αρχείο καταγραφής βρίσκεται στις διανομές Debian Linux, αλλά κάποιες άλλες χρησιμοποιούν το /var/log/secure αντί αυτού.
-
/var/log/btmp – παρακολουθεί τις αποτυχημένες προσπάθειες σύνδεσης. Είναι ένα δυαδικό αρχείο και μπορεί να διαβαστεί με την εντολή last.
-
/var/log/dpkg.log και /var/log/yum.log – περιέχουν μηνύματα σχετικά με εγκαταστάσεις ή αναβαθμίσεις για διάφορους διαχειριστές πακέτων