Como os valores de HKCU podem ser modificados pelos usuários, COM Hijacking pode ser usado como um mecanismo persistente. Usando procmon, é fácil encontrar registros COM pesquisados que não existem e que um atacante poderia criar para persistir. Filtros:
Operações RegOpenKey.
onde o Resultado é NOME NÃO ENCONTRADO.
e o Caminho termina com InprocServer32.
Uma vez que você tenha decidido qual COM inexistente imitar, execute os seguintes comandos. Tenha cuidado se decidir imitar um COM que é carregado a cada poucos segundos, pois isso pode ser excessivo.
Componentes COM do Agendador de Tarefas que podem ser sequestrados
As Tarefas do Windows usam Gatilhos Personalizados para chamar objetos COM e, como são executadas através do Agendador de Tarefas, é mais fácil prever quando serão acionadas.
# Mostrar CLSIDs COM$Tasks =Get-ScheduledTaskforeach ($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"Nome da Tarefa: " $Task.TaskNameWrite-Host"Caminho da Tarefa: " $Task.TaskPathWrite-Host"CLSID: " $Task.Actions.ClassIdWrite-Host}}}}# Saída de Exemplo:# Nome da Tarefa: Exemplo# Caminho da Tarefa: \Microsoft\Windows\Exemplo\# CLSID: {1936ED8A-BD93-3213-E325-F38D112938E1}# [mais como o anterior...]
Verificando a saída, você pode selecionar uma que será executada toda vez que um usuário fizer login, por exemplo.
Agora, ao procurar pelo CLSID {1936ED8A-BD93-3213-E325-F38D112938EF} em HKEY_CLASSES_ROOT\CLSID e em HKLM e HKCU, você geralmente encontrará que o valor não existe em HKCU.
# Exists in HKCR\CLSID\Get-ChildItem-Path"Registry::HKCR\CLSID\{1936ED8A-BD93-3213-E325-F38D112938EF}"NameProperty------------InprocServer32 (default) : C:\Windows\system32\some.dllThreadingModel:Both# Exists in HKLMGet-Item-Path"HKLM:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"|ft-AutoSizeNameProperty------------{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1} (default) : MsCtfMonitor task handler# Doesn't exist in HKCUPSC:\> 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.
Então, você pode apenas criar a entrada HKCU e toda vez que o usuário fizer login, seu backdoor será ativado.