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

DLL Hijacking – Επιπόλαιος προγραμματισμός, ολέθριες συνέπειες!

Τον Αύγουστο του 2010 ο HD Moore, δημιουργός του Metasploit, ανακάλυψε μια νέα κλάση αδυναμιών που συναντώνται σε δεκάδες εφαρμογές Windows. Το θέμα πήρε μεγάλη δημοσιότητα, εν μέρει επειδή οι αδυναμίες δεν αφορούν στο ίδιο το λειτουργικό σύστημα αλλά στον επιπόλαιο τρόπο κατά τον οποίο ορισμένες εφαρμογές ψάχνουν για δυναμικές βιβλιοθήκες…

Αναλυτικότερα, κάθε φορά που επιχειρείται το άνοιγμα ενός συγκεκριμένου τύπου αρχείου μέσα από κάποια σχετική εφαρμογή, τότε αυτή ενδέχεται να προσπαθήσει να φορτώσει ένα απαραίτητο DLL χωρίς όμως να καθορίζει σαφώς τη θέση του. Αντίθετα, καλεί τη συνάρτηση LoadLibrary() του Windows API, η οποία παίρνει ως όρισμα *μόνο* το όνομα της ζητούμενης βιβλιοθήκης και την αναζητά μέσα σ’ ένα σαφώς καθορισμένο σύνολο φακέλων, με σαφώς καθορισμένη σειρά.

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

Το όλο φαινόμενο περιγράφεται με τον όρο DLL Hijacking κι ο HD Moore κυκλοφορεί ένα εργαλείο, το DLL Hijack Audit Kit, το οποίο κάθε ενδιαφερόμενος μπορεί να τρέξει στο δικό του Windows box προκειμένου να διαπιστώσει ποιες από τις εφαρμογές του είναι ευπαθείς. Μετά από λεπτομερή έρευνα και σειρά ελέγχων, το DLL Hijack Audit Kit επιστρέφει τα extensions και τις εφαρμογές που καταλαβαίνουν τους σχετικούς τύπους αρχείων, οι οποίες είναι ευπαθείς σε DLL Hijacking.

Προκειμένου να κατανοήσουμε το πρόβλημα στις πραγματικές του διαστάσεις, ας δούμε κατ’ αρχάς πώς μπορούμε να χρησιμοποιήσουμε κι εμείς το DLL Hijack Audit Kit, στους δικούς μας υπολογιστές, ώστε να βρούμε ποιες από τις εφαρμογές που έχουμε ή/και δουλεύουμε είναι ευπαθείς.

Ακολούθως, θα δούμε στην πράξη πώς μπορεί να γίνει εκμετάλλευση αυτής της αδυναμίας, μ’ άλλα λόγια πώς είναι δυνατόν ν’ αποκτήσει κάποιος *πλήρη* πρόσβαση σ’ ένα απομακρυσμένο Windows box. Προς τούτο θα καταφύγουμε στις υπηρεσίες του Metasploit, αφού ο HD Moore έχει ήδη εφοδιάσει την πλατφόρμα με το κατάλληλο exploit.

Αναζήτηση ευάλωτων εφαρμογών

Για τις ανάγκες των δοκιμών μας δουλέψαμε σ’ ένα VMware VM με λειτουργικό Windows 7 32bit Ultimate Edition. Εγκατεστημένο ήταν το Office 2007 SP2 (default installation) καθώς και κάποιες μικρότερες, βοηθητικές εφαρμογές, όπως το Adobe Reader και το Daemon Tools Lite. Λειτουργικό σύστημα, εφαρμογές και προγράμματα ήταν όλα πλήρως αναβαθμισμένα. Παρουσιάζουμε τώρα τη διαδικασία αναζήτησης εφαρμογών, αναλυτικά και βήμα προς βήμα.

Βήμα 1. Κατεβάστε το DLL Hijack Audit Kit (direct download link στο Dropbox). Θα πάρετε το συμπιεσμένο αρχείο DLLHijackAuditKit.7z, το οποίο πέρα από το Audit Kit περιλαμβάνει *και* το Process Monitor της Sysinternals (η εταιρεία έχει αγοραστεί από τη Microsoft).

Σημείωση: Μπορείτε αν θέλετε να πάρετε το DLL Hijack Audit Kit από σχετικό link που θα βρείτε σε σχετικό blog post του Moore. Σε μια τέτοια περίπτωση, μην ξεχάσετε να κατεβάσετε *ξεχωριστά* το Process Monitor μιας και ο Moore δεν το συμπεριλαμβάνει στο πακέτο που διανέμει.

Βήμα 2. Στο Windows box που θέλετε να ελέγξετε απενεργοποιείστε -προσωρινά- το όποιο antivirus/antimalware τρέχετε. Αν αυτή η ενέργεια σάς ανησυχεί, κόψτε και τη σύνδεση στο Internet: Ούτως ή άλλως, προς το παρόν δεν θα τη χρειαστείτε.

Βήμα 2

Βήμα 3. Μέσα σ’ έναν φάκελο με αντιπροσωπευτικό όνομα αποσυμπιέστε τα περιεχόμενα του αρχείου DLLHijackAuditKit.7z (για την αποσυμπίεση μπορείτε να καταφύγετε στο δωρεάν 7-Zip). Εμείς αρχικά αποσυμπιέσαμε το DLLHijackAuditKit.7z μέσα στο φάκελο "mnassfdjsdw", μετά όμως το μετανιώσαμε και τον μετονομάσαμε σε "DLL Hijack Audit Kit". Ναι, ξέρουμε, φορές γινόμαστε βαρετοί.

Βήμα 4. Ανοίξτε τον φάκελο με το Audit Kit κι εκτελέστε το 01_StartAudit.bat – αλλά με δικαιώματα Administrator! Στα Windows 7, π.χ., κάντε δεξί κλικ πάνω στο εν λόγω αρχείο, από το αναδυόμενο μενού διαλέξτε Run as administrator και στο dialog box του User Account Control πατήστε στο Yes. Το Audit Kit θ’ αρχίσει τους ελέγχους, κατά τη διάρκεια των οποίων θ’ ανοίξει ένα Command Prompt window, το Process Monitor και καμιά 75ρια χιλιάδες παράθυρα εφαρμογών, dialog boxes και pop-ups. Μη θορυβηθείτε, πρόκειται για φυσιολογική συμπεριφορά. Μην επιχειρήσετε να κλείσετε κανένα από τα παράθυρα που ανοίγουν, ενώ αντισταθείτε *σθεναρά* στον πειρασμό ν’ ασχοληθείτε με τις ερωτήσεις των dialog boxes. Στο δε Command Prompt window φαίνονται οι διάφορες προεκτάσεις αρχείων που δοκιμάζει το Audit Kit. Όταν ολοκληρωθεί η διαδικασία, στο ίδιο παράθυρο θα δείτε το μήνυμα "Press any key to continue…". Πατήστε λοιπόν αυτό το "any key".

Βήμα 4-1

Βήμα 4-2

Βήμα 5. Κλείστε όλα τα παράθυρα εκτός από εκείνο του Process Monitor. Σ’ αυτό πατήστε [CTRL+S] και στο παράθυρο με τίτλο Save To File που θα εμφανιστεί φροντίστε ώστε το format να ‘ναι Comma-Separated Values (CSV). Αφήστε το όνομα (Logfile.CSV) καθώς και τη θέση (ο φάκελος του Audit Kit) του υπό δημιουργία logfile ως έχουν. Χάρη *και* στο Process Monitor, το πρόγραμμα του HD Moore είναι πλέον σε θέση να ‘χει μια λίστα μ’ όλες τις εφαρμογές του συστήματος σας οι οποίες ανοίγουν τους τύπους αρχείων που μόλις δοκίμασε.

Βήμα 5

Βήμα 6. Από τον φάκελο με το Audit Kit εκτελέστε το 02_Analyze.bat – πάντα με δικαιώματα Administrator! Στα Windows 7, π.χ., κάντε δεξί κλικ πάνω στο εν λόγω αρχείο, από το αναδυόμενο μενού διαλέξτε Run as administrator και στο dialog box του User Account Control πατήστε στο Yes. Αμέσως το Audit Kit θ’ αρχίσει να δοκιμάζει την ανθεκτικότητα ως προς το DLL Hijacking *όλων* των εφαρμογών που παρατίθενται στο Logfile.CSV. Ξανά θ’ ανοίξουν διάφορα παράθυρα, αυτή τη φορά όμως το Audit Kit θα τελειώσει γρηγορότερα τη δουλειά του και μετά, στο Command Prompt window, θα εμφανίσει το μήνυμα "Press any key to continue…". Πατήστε ένα πλήκτρο.

Βήμα 6-1

Βήμα 6-2

Βήμα 7-1. Κάθε υποφάκελος του Exploits έχει όνομα που φανερώνει α) ποια εγκατεστημένη εφαρμογή είναι ευάλωτη ως προς το DLL Hijacking, β) ποια filetypes χρησιμοποιήθηκαν για να κάνει το Audit Kit τους ελέγχους του και γ) ποιο είναι το όνομα της βιβλιοθήκης που φορτώθηκε πρόωρα, πριν η LoadLibrary() βρει την κανονική!Βήμα 7. Μέσα στον φάκελο του Audit Kit θα ‘χει τώρα δημιουργηθεί ένας νέος, με όνομα "Exploits". Κάθε υποφάκελος του Exploits έχει όνομα που φανερώνει

  1. ποια εγκατεστημένη εφαρμογή είναι ευάλωτη ως προς το DLL Hijacking,
  2. ποια filetypes χρησιμοποιήθηκαν για να κάνει το Audit Kit τους ελέγχους του και
  3. ποιο είναι το όνομα της βιβλιοθήκης που φορτώθηκε πρόωρα, πριν η LoadLibrary() βρει την κανονική!

Μέσα σε καθέναν από αυτούς τους φακέλους υπάρχει ένα αρχείο με τύπο ίδιον μ’ αυτόν που εμπεριέχεται στο όνομα του φακέλου, καθώς και το DLL που φορτώθηκε αντί εκείνου που σκόπευε ο προγραμματιστής της εφαρμογής. Στην περίπτωση του Audit Kit, το εκάστοτε DLL λειτουργεί ως αθώο proof of concept: Με διπλό (ή απλό) κλικ πάνω στο συνοδευτικό αρχείο ξεκινάει η αντίστοιχη εφαρμογή κι εξαιτίας του "εμβόλιμου" DLL ανοίγει το Calculator των Windows!

Βήμα 7-2

Στην περίπτωση των δικών μας δοκιμών, βρήκαμε αδυναμίες στις ακόλουθες εφαρμογές:

Εφαρμογή Όνομα εκτελέσιμου Filetypes που οδήγησαν σε DLL Hijacking
PowerPoint 2007 powerpnt.exe POT, PPA, PPT, PWZ, SLDM
Office Groove 2007 groove.exe GLK, GRV, GTA, VCG
Remote Desktop Connection mstsc.exe RDP
Daemon Tools Lite dtlite.exe MDF, MDS, MDX
Windows Address Book wab.exe CONTACT, GROUP, P7C, WAP

Κάτι μας λέει ότι αν φτάσατε έως εδώ τότε σίγουρα έχουμε την προσοχή σας. Ωραία λοιπόν, συνεχίζουμε με περισσότερη δράση!

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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