Το προφίλ μας στο Google Plus
1

Το WannaCry του Linux και η εκμετάλλευσή του

Η πρόσφατη ιστορία με το WannaCry, το ransomware που ταχύτατα μόλυνε εκατοντάδες χιλιάδες υπολογιστές Windows σε όλο τον πλανήτη, θύμισε σε πολλούς πόσο σημαντικό είναι να διατηρούμε το λειτουργικό μας σύστημα ενημερωμένο. Αλλά ευπαθή δεν αποδεικνύονται μόνο τα μηχανήματα με Windows.

Λίγο η αναβλητικότητα των διαχειριστών, λίγο η νοοτροπία του “αυτά συμβαίνουν σε άλλους”, και το αποτέλεσμα είναι πως για άλλη μια φορά ένα Windows malware βρήκε πρόσφορο έδαφος κι εξαπλώθηκε ταχύτατα σε όλο τον πλανήτη. Κάποιος θα προσέθετε –και θα είχε 100% δίκιο– ότι υπάρχουν δύο ακόμα λόγοι για τη διάδοση κακόβουλου λογισμικού όπως το WannaCry ή WannaCrypt, όπως αλλιώς ονομάζεται: α) οι χρήστες Windows είναι ιλιγγιωδώς πολλοί, β) στην πλειονότητά τους έχουν ελλιπείς τεχνικές γνώσεις και άγνοια περί βασικών θεμάτων ασφαλείας. Έτσι, τα συστήματά τους είναι μη-ενημερωμένα ή/και αφελώς ρυθμισμένα — συνεπώς κι ευπαθή.

Στον αντίποδα έχουμε τους χρήστες και τους διαχειριστές συστημάτων Linux. Κατά κύριο λόγο είναι τεχνικά καταρτισμένοι, ενώ γνωρίζουν αρκετά και για το πώς δουλεύουν τα exploits και οι επιθέσεις που τα εκμεταλλεύονται. Την ίδια στιγμή όμως ο πυρήνας του Linux, οι υπηρεσίες, τα προγράμματα στο userland και οι εφαρμογές που προσφέρονται μέσω Internet, εξακολουθούν να αναπτύσσονται και να συντηρούνται από ανθρώπους — και οι άνθρωποι κάνουν λάθη. Όταν λοιπόν ερευνητές ασφαλείας ανακαλύπτουν αδυναμίες που αφορούν, π.χ., σε δημοφιλείς υπηρεσίες που συναντάμε σε διανομές Linux, εκδοχές του BSD κ.ο.κ., καθόλου δεν πρέπει να εκπλησσόμεθα.

Καλωσόρισες SambaCry!
Όπως διαπιστώθηκε λίγες μέρες μετά το ξέσπασμα του WannaCry, τα Windows δεν είναι το μόνο σύστημα με ευπάθεια remote execution μέσω του πρωτοκόλλου SMB (Server Message Block). Το ίδιο συμβαίνει και με συστήματα Linux που τρέχουν τη σουίτα διαμοίρασης αρχείων SAMBA. Το σχετικό bug μάλιστα ήταν εκεί για επτά ολόκληρα χρόνια και κανείς δεν το ‘χε παρατηρήσει.

Ο λόγος γίνεται για το CVE-2017-7494, μια ευπάθεια απομακρυσμένης εκτέλεσης που υφίσταται στις εκδόσεις της Samba από την 3.5.0 και νεότερες. Το SambaCry, όπως ονομάστηκε το bug, από τεχνικής σκοπιάς είναι εντελώς διαφορετικό από το EternalBlue, ένα από τα bugs που εκμεταλλεύεται το WannaCry. Πράγματι, ενώ το EternalBlue αποτελεί ένα buffer overflow exploit, το δε SambaCry αφορά στο αυθαίρετο (μη-εξουσιοδοτημένο) φόρτωμα βιβλιοθηκών. Για την εκμετάλλευση του SambaCry ο επιτιθέμενος αρκεί ν’ ανεβάσει μια κατάλληλη βιβλιοθήκη σ’ ένα Samba share στο οποίο επιτρέπεται η εγγραφή αρχείων. Σε πολλές εγκαταστάσεις της σουίτας, για την ευκολία των χρηστών υπάρχει τουλάχιστον ένα τέτοιο share. Έχει ρόλο κοινόχρηστου χώρου διαμοίρασης αρχείων, για τους μόνιμους χρήστες του τοπικού δικτύου ή και για τους περιστασιακούς. Η βιβλιοθήκη που ανεβάζει ο επιτιθέμενος στο share, λοιπόν, είναι δυνατό να διαβαστεί από τον Samba server, ο οποίος και θα εκτελέσει τον κώδικα που περιλαμβάνει.

To CVE-2017-7494 αντιμετωπίστηκε γρήγορα από τους developers της Samba, οπότε ο καλύτερος τρόπος για την προστασία από το bug είναι η αναβάθμιση της σουίτας. Το πρόβλημα είναι σοβαρότερο με τα NAS. Η αναβάθμιση για τέτοια boxes συχνά σημαίνει ότι πρέπει να κατεβάσουμε το κατάλληλο firmware από το site του κατασκευαστή, ο οποίος όμως δεν είναι σίγουρο ότι θα βιαστεί να κυκλοφορήσει νεότερη έκδοση, απαλλαγμένη από το SambaCry. Αν μάλιστα μιλάμε για μοντέλα που πλέον δεν υποστηρίζονται, δεν έχει νόημα να περιμένουμε από τον κατασκευαστή να κάνει μια εξαίρεση και να κυκλοφορήσει update.

Επίδειξη επίθεσης με το Metasploit
Έχει ήδη κυκλοφορήσει ένα exploit module για το Metasploit, το οποίο εκμεταλλεύεται το SambaCry και δουλεύει σε στόχους αρχιτεκτονικής x86, x86-64 και ARM (μην ξεχνάτε τα NAS boxes). Στη συνέχεια του άρθρου εργαζόμαστε από το Kali Linux κι επιδεικνύουμε μια επίθεση που πραγματοποιείται με τη βοήθεια του Μetasploit, προς έναν Linux Samba server ο οποίος είναι ευπαθής κατά το CVE-2017-7494. Με την ευκαιρία δείχνουμε και πώς σκανάρουμε hosts εντός του τοπικού δικτύου μέσα από το Metasploit, αλλά και πώς χρησιμοποιούμε τα exploit modules της πλατφόρμας.

Αρχίζουμε ενημερώνοντας το Kali Linux, αν μη τι άλλο επειδή έτσι ίσως αναβαθμιστεί και το Metasploit και συνεπώς θα ‘χουμε το exploit module για το CVE-2017-7494:

apt-get update
apt-get upgrade

Ξεκινάμε το Metasploit, φροντίζοντας ώστε να επικοινωνεί με την PostgreSQL. Θέλουμε να σκανάρουμε όλα τα μηχανήματα του τοπικού δικτύου και τις σχετικές πληροφορίες να τις αποθηκεύσουμε στη βάση του Metasploit. Στο prompt της πλατφόρμας, πληκτρολογούμε:

db_nmap -Pn -sS -sV -O 192.168.193.0/24

(Τα μηχανήματα του τοπικού μας δικτύου έχουν διευθύνσεις IP της μορφής 192.168.193.*, εσείς βεβαίως βάλτε τη μορφή των διευθύνσεων για το δικό σας δίκτυο.) Μόλις το scanning ολοκληρωθεί, δίνουμε

hosts

και βλέπουμε τα μηχανήματα που εντοπίστηκαν κι αποθηκεύτηκαν στη βάση του Metasploit.

Το db_nmap που μόλις τρέξαμε δεν αποθήκευσε στη βάση του Metasploit μόνο τα hosts που βρήκε, αλλά και τις ενεργές υπηρεσίες που έχουν.

Το db_nmap που μόλις τρέξαμε δεν αποθήκευσε στη βάση του Metasploit μόνο τα hosts που βρήκε, αλλά και τις ενεργές υπηρεσίες που έχουν.

Εξετάζοντας τα έως τώρα αποτελέσματα, εύκολα διαπιστώνουμε ότι έχουμε έναν host με Windows, τρεις με Linux κι έναν με OpenBSD. Δύο από τα Linux hosts έχουν τη Samba ενεργοποιημένη, οπότε θα επικεντρώσουμε την προσοχή μας σε αυτά. Το exploit που ψάχνουμε είναι για Linux και συγκεκριμένα για τη Samba. Αν θέλουμε να δούμε όλα τα σχετικά exploits για τη Samba στο Linux, στη γραμμή εντολών του Metasploit γράφουμε use exploit/linux/samba και πατάμε δύο φορές το πλήκτρο [Tab].

Το Tab completion, όπως το ξέρουμε από το BASH, δουλεύει και στην κονσόλα του Metasploit. Στο εικονιζόμενο παράδειγμα το εφαρμόζουμε ώστε να δούμε όλα τα διαθέσιμα exploits για τη Samba στο Linux.

Το Tab completion, όπως το ξέρουμε από το BASH, δουλεύει και στην κονσόλα του Metasploit. Στο εικονιζόμενο παράδειγμα το εφαρμόζουμε ώστε να δούμε όλα τα διαθέσιμα exploits για τη Samba στο Linux.

Υπάρχουν πέντε τέτοια exploits. Προκειμένου να εντοπίσουμε εκείνο που τώρα θέλουμε, πατάμε το συνδυασμό πλήκτρων [CTRL+C] και καταφεύγουμε στην εντολή info. Για παράδειγμα, γράφουμε

info exploit/linux/samba/is_known_pipename

και διαβάζουμε την περιγραφή για το is_known_pipeline. Εναλλακτικά, από έναν web browser πηγαίνουμε στην Exploit Database και κάνουμε μια αναζήτηση για το CVE του exploit — εν προκειμένω για το CVE-2017-7494. Στα αποτελέσματα της αναζήτησης θα δούμε και το όνομα του exploit module.

Αναζητήσεις για exploits μπορούμε να κάνουμε κι από το βολικό site της Exploit Database.

Αναζητήσεις για exploits μπορούμε να κάνουμε κι από το βολικό site της Exploit Database.

Το exploit που ψάχνουμε, λοιπόν, είναι το is_known_pipename. Το φορτώνουμε δίνοντας:

use exploit/linux/samba/is_known_pipename

Παρατηρήστε ότι το prompt του Metasploit αλλάζει, ώστε να περιλαμβάνει το όνομα του exploit που μόλις φορτώσαμε. Κάθε exploit δέχεται παραμέτρους, τις οποίες βλέπουμε πληκτρολογώντας:

options

Ιδού οι παράμετροι που δέχεται το exploit για την εκμετάλλευση του SambaCry. Από τις υποχρεωτικές, RHOST και RPORT, χρειάζεται να αναθέσουμε τιμή μόνο στην πρώτη. Αναλυτικότερα, θα τις δώσουμε τη διεύθυνση IP του μηχανήματος-στόχου.

Ιδού οι παράμετροι που δέχεται το exploit για την εκμετάλλευση του SambaCry. Από τις υποχρεωτικές, RHOST και RPORT, χρειάζεται να αναθέσουμε τιμή μόνο στην πρώτη. Αναλυτικότερα, θα τις δώσουμε τη διεύθυνση IP του μηχανήματος-στόχου.

Η RHOST είναι υποχρεωτική κι αποθηκεύει τη διεύθυνση IP του στόχου. Έχουμε δύο υποψήφιους στόχους, με διευθύνσεις IP 192.168.193.240 και 192.168.193.250 (δεν αρκεί μόνο η έξοδος της εντολής hosts, αλλά χρειάζεται και η έξοδος της services). Ας δοκιμάσουμε με το vogar.colder.is (192.168.193.240):

set RHOST 192.168.193.240

Επαληθεύουμε ότι η ανάθεση τιμής στην RHOST πέτυχε, δίνοντας:

options

Είναι ο στόχος, με IP αυτό που έχουμε αναθέσει στην παράμετρο RHOST, πράγματι ευπαθής ως προς το CVE-2017-7494; Πριν καν επιχειρήσουμε να εξαπολύσουμε μια επίθεση, μπορούμε να κάνουμε έναν απλό έλεγχο με την εντολή check του Metasploit:

check

Μετά από έναν απλό έλεγχο, χωρίς να γίνει κάποια προσπάθεια για exploitation, όλα δείχνουν ότι ο στόχος μας είναι ευπαθής ως προς το CVE-2017-7494 -- ή αλλιώς SambaCry.

Μετά από έναν απλό έλεγχο, χωρίς να γίνει κάποια προσπάθεια για exploitation, όλα δείχνουν ότι ο στόχος μας είναι ευπαθής ως προς το CVE-2017-7494 — ή αλλιώς SambaCry.

Ωραία, ο στόχος μοιάζει να είναι πράγματι ευπαθής. Προκειμένου να εξαπολύσουμε την επίθεσή μας, αρκεί να γράψουμε:

exploit

Δείτε τα αποτελέσματα στο screenshot που ακολουθεί, διαβάστε και τη σχετική περιγραφή.

Η εκμετάλλευση του exploit για το SambaCry ήταν επιτυχής! Αν και στο τερματικό δεν απεικονίζεται κάποιο σχετικό prompt, το μήνυμα "Command shell session 1 opened" φανερώνει ότι έχουμε shell access στον απομακρυσμένο host. Πληκτρολογώντας μερικές εντολές (βλέπε εκείνες στο κόκκινο υπόβαθρο) βεβαιωνόμαστε ότι πράγματι κινούμαστε εντός του μηχανήματος-στόχου, έχοντας μάλιστα πρόσβαση στο λογαριασμό του ίδιου του root!

Η εκμετάλλευση του exploit για το SambaCry ήταν επιτυχής! Αν και στο τερματικό δεν απεικονίζεται κάποιο σχετικό prompt, το μήνυμα “Command shell session 1 opened” φανερώνει ότι έχουμε shell access στον απομακρυσμένο host. Πληκτρολογώντας μερικές εντολές (βλέπε εκείνες στο κόκκινο υπόβαθρο) βεβαιωνόμαστε ότι πράγματι κινούμαστε εντός του μηχανήματος-στόχου, έχοντας μάλιστα πρόσβαση στο λογαριασμό του ίδιου του root!

One Response to “Το WannaCry του Linux και η εκμετάλλευσή του”

  1. hlias | 02/07/2017 at 12:07

    Καλημερα.
    κανω καποιους πειραματισμους στο τοπικο δυκτιο μου και μου δημιουργειται μια απορια,
    Εξοδος εντολης:
    1)netdiscover -P -r 192.168.1.0/24

    IP At MAC Address Count Len MAC Vendor / Hostname

    192.168.1.5 fc:aa:14:09:6d:ac 1 60 Unknown vendor
    192.168.1.1 38:d8:2f:2f:2a:00 1 60 Unknown vendor
    192.168.1.3 cc:73:14:13:ad:cf 1 60 Unknown vendor
    192.168.1.6 90:f6:52:08:df:18 1 60 Unknown vendor

    — Active scan completed, 4 Hosts found.
    2)Εξοδος εντολης:msf > db_nmap -Pn -sS -sV -O 192.168.1.0/24…….
    msf > hosts

    Hosts

    address mac name os_name os_flavor os_sp purpose info comments
    ——- — —- ——- ——— —– ——- —- ——–
    192.168.1.1 38:D8:2F:2F:2A:00 192.168.1.1 Linux 2.6.X server
    192.168.1.6 90:f6:52:08:df:18 192.168.1.6 Windows 2008 IP server
    192.168.1.10 90:f6:52:08:df:18 Windows Vista client
    ΔΙΑΦΟΡΕΤΙΚΗ ΕΞΟΔΟΣ (ΔΙΑΦΟΡΕΤΙΚΕΣ IP ΓΙΑΤΙ;
    ΔΗΛΑΔΗ ΠΑΙΡΝΩ ΜΕ ΔΙΑΦΟΡΕΤΙΚΟ ΤΡΟΠΟ ΤΙΣ IP ΤΩΝ ΕΝ ΕΝΕΡΓΕΙΑ Η/Υ ΤΟΥ lan αλλα μου δινει
    διαφερετικες δ/νσεις IP ο καθε τροπος,μηπως κατι δεν κανω καλα;
    ΕΥΧΑΡΙΣΤΩ
    (ΑΥΤΟ ΠΟΥ ΣΑΣ ΔΙΝΩ ΕΙΝΑΙ ΜΙΑ ΔΙΚΙΜΗ ΑΠΟ ΤΙΣ ΠΟΛΛΕΣ ΠΟΥ ΕΧΩ ΚΑΝΕΙ)

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων