Writable Sys Path +Dll Hijacking Privesc
Εισαγωγή
Εάν ανακαλύψετε ότι μπορείτε να γράψετε σε έναν φάκελο διαδρομής συστήματος (σημειώστε ότι αυτό δεν θα λειτουργήσει εάν μπορείτε να γράψετε σε έναν φάκελο διαδρομής χρήστη), είναι πιθανό να μπορείτε να αναβαθμίσετε τα δικαιώματά σας στο σύστημα.
Για να το κάνετε αυτό, μπορείτε να καταχραστείτε μια Διαδρομή Dll Hijacking, όπου θα καταχωρήσετε μια βιβλιοθήκη που φορτώνεται από ένα υπηρεσία ή διεργασία με περισσότερα δικαιώματα από εσάς, και επειδή αυτή η υπηρεσία φορτώνει μια Dll που πιθανόν δεν υπάρχει καν στο σύστημα, θα προσπαθήσει να τη φορτώσει από τη Διαδρομή Συστήματος όπου μπορείτε να γράψετε.
Για περισσότερες πληροφορίες σχετικά με το τι είναι η Διαδρομή Dll Hijacking ελέγξτε:
pageDll HijackingΑνέβασμα δικαιωμάτων με Dll Hijacking
Εύρεση ελλιπούς Dll
Το πρώτο πράγμα που χρειάζεστε είναι να αναγνωρίσετε μια διεργασία που εκτελείται με περισσότερα δικαιώματα από εσάς και προσπαθεί να φορτώσει μια Dll από τη Διαδρομή Συστήματος στην οποία μπορείτε να γράψετε.
Το πρόβλημα σε αυτές τις περιπτώσεις είναι ότι πιθανόν αυτές οι διεργασίες ήδη εκτελούνται. Για να βρείτε ποιες Dll λείπουν από τις υπηρεσίες που χρειάζεστε, πρέπει να εκκινήσετε το procmon το συντομότερο δυνατόν (πριν φορτωθούν οι διεργασίες). Έτσι, για να βρείτε τις λείπουσες .dlls, κάντε τα εξής:
Δημιουργήστε τον φάκελο
C:\privesc_hijacking
και προσθέστε τη διαδρομήC:\privesc_hijacking
στη μεταβλητή περιβάλλοντος System Path. Μπορείτε να το κάνετε χειροκίνητα ή με PS:
Εκκινήστε το
procmon
και πηγαίνετε στιςΕπιλογές
-->Ενεργοποίηση καταγραφής εκκίνησης
και πατήστεΟΚ
στην ειδοποίηση.Στη συνέχεια, επανεκκινήστε. Όταν ο υπολογιστής επανεκκινηθεί, το
procmon
θα αρχίσει να καταγράφει γεγονότα αμέσως.Μόλις ξεκινήσει τα Windows, εκτελέστε ξανά το
procmon
, θα σας πει ότι έχει τρέξει και θα σας ζητήσει αν θέλετε να αποθηκεύσετε τα γεγονότα σε ένα αρχείο. Πείτε ναι και αποθηκεύστε τα γεγονότα σε ένα αρχείο.Αφού δημιουργηθεί το αρχείο, κλείστε το ανοιχτό παράθυρο του
procmon
και ανοίξτε το αρχείο με τα γεγονότα.Προσθέστε αυτά τα φίλτρα και θα βρείτε όλες τις Dlls που κάποιη διεργασία προσπάθησε να φορτώσει από τον εγγράψιμο φάκελο της διαδρομής του συστήματος:
Λείπουν Dlls
Εκτελώντας αυτό σε ένα εικονικό (vmware) μηχάνημα με Windows 11, πήρα αυτά τα αποτελέσματα:
Σε αυτήν την περίπτωση, τα .exe είναι άχρηστα, οι λείπουσες DLLs ήταν από:
Υπηρεσία | Dll | Εντολή CMD |
---|---|---|
Task Scheduler (Schedule) | WptsExtensions.dll |
|
Diagnostic Policy Service (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
Αφού βρήκα αυτό, βρήκα αυτήν την ενδιαφέρουσα ανάρτηση σε ιστολόγιο που εξηγεί επίσης πώς να καταχραστείτε το WptsExtensions.dll για ανέλιξη προνομίων. Αυτό είναι αυτό που θα κάνουμε τώρα.
Εκμετάλλευση
Έτσι, για να αναβαθμίσετε τα προνόμια, θα καταχραστούμε τη βιβλιοθήκη WptsExtensions.dll. Έχοντας τη διαδρομή και το όνομα, απλά χρειάζεται να δημιουργήσουμε την κακόβουλη dll.
Μπορείτε να δοκιμάσετε οποιοδήποτε από αυτά τα παραδείγματα. Μπορείτε να εκτελέσετε φορτία όπως: να λάβετε ένα αντίστροφο κέλυφος, να προσθέσετε ένα χρήστη, να εκτελέσετε ένα beacon...
Σημειώστε ότι όχι όλες οι υπηρεσίες τρέχουν με NT AUTHORITY\SYSTEM
, κάποιες τρέχουν επίσης με NT AUTHORITY\LOCAL SERVICE
που έχει λιγότερα προνόμια και δεν θα μπορέσετε να δημιουργήσετε ένα νέο χρήστη καταχρώντας τα δικαιώματά του.
Ωστόσο, αυτός ο χρήστης έχει το προνόμιο seImpersonate
, οπότε μπορείτε να χρησιμοποιήσετε το potato suite για ανέλιξη προνομίων. Έτσι, σε αυτήν την περίπτωση, ένα αντίστροφο κέλυφος είναι μια καλύτερη επιλογή από το να προσπαθήσετε να δημιουργήσετε ένα χρήστη.
Τη στιγμή που γράφτηκε αυτό, η υπηρεσία Task Scheduler τρέχει με Nt AUTHORITY\SYSTEM.
Έχοντας δημιουργήσει την κακόβουλη Dll (στην περίπτωσή μου χρησιμοποίησα ένα x64 αντίστροφο κέλυφος και πήρα ένα κέλυφος πίσω, αλλά ο Defender τον σκότωσε επειδή ήταν από το msfvenom), αποθηκεύστε το στον εγγράψιμο φάκελο της διαδρομής του συστήματος με το όνομα WptsExtensions.dll και επανεκκινήστε τον υπολογιστή (ή επανεκκινήστε την υπηρεσία ή κάντε ό,τι χρειάζεται για να επανεκκινήσετε την επηρεασμένη υπηρεσία/πρόγραμμα).
Όταν η υπηρεσία επανεκκινηθεί, η dll θα πρέπει να φορτωθεί και να εκτελεστεί (μπορείτε να επαναχρησιμοποιήσετε το κόλπο του procmon για να ελέγξετε αν η βιβλιοθήκη φορτώθηκε όπως αναμενόταν).
Last updated