Как удалить сертификат пользователя при удаленном доступе к его ноутбуку с правами администратора? - PullRequest
0 голосов
/ 18 апреля 2019

При удаленном взаимодействии с использованием сеанса PS и удаленного администратора мне нужно удалить сертификат из хранилища: CurrentUser \ My.

Я заметил, что хотя подобные вопросы уже есть, они НЕ отвечают на мой вопрос.Ни один из них не решает проблему вставки локального пользователя в качестве контекста для команды.

Я попытался повторно просмотреть каталоги ... \ Roaming \ Microsoft \ Crypto \ RSA, изменив хранилище сертификатов на LocalMachine и вставив имя пользователя вручную.Ничего не работает.

ЭТО РАБОТАЕТ

Get-ChildItem cert:"CurrentUser\My" | where {($_.Subject -like "*OU=CO*")} | remove-item -WhatIf 

ЭТО НЕ ДЕЛАЕТ (при активном удаленном сеансе)

 PS C:\Users\Remote Admin: Get-ChildItem cert:"CurrentUser\My" | where {($_.Subject -like "*OU=CO*")} | remove-item -WhatIf

1 Ответ

1 голос
/ 19 апреля 2019

Сертификаты хранятся в Реестре или LocalAppData .

Если у вас есть права администратора, вы можете получить удаленный доступ к реестру через .Net для этого пользователя или файловой системы и при необходимости удалить сертификаты. Вот тест, который я провел.

Сначала я создал фиктивный сертификат на удаленной машине. Это добавляет сертификат в CurrentUser \ My и CurrentUser \ CA

New-SelfSignedCertificate -DnsName "www.fabrikam.com" -CertStoreLocation "Cert:\CurrentUser\My"
Thumbprint                                Subject                              
----------                                -------                     
E5A33C1BB6FBA8A6DA397C6BFE2CE489F751AF10  CN=www.fabrikam.com 

Далее я удаленно обращаюсь к сертификату и удаляю его по отпечатку из хранилища реестра CA.

$computer = 'ComputerA'
$targetSID = 'S-1-5-21-1234567890-1234567890-1234567890-12345' #get-aduser username
$reg = [Microsoft.win32.registryKey]::OpenRemoteBaseKey('Users', $computer) #open remote registry
$avaliableSID = @($($reg.GetSubKeyNames() | Where-Object { $_ -match 'S-\d-\d+-(\d+-){1,14}\d+$' })) #get all users SIDS
if($avaliableSID -contains $targetSID ) #if it contains the one we want
{
    $otherUserStore = $reg.OpenSubKey("$targetSID\software\microsoft\systemcertificates\ca\certificates", $true) #open profile for writing
    $otherUserStore.DeleteSubKey('E5A33C1BB6FBA8A6DA397C6BFE2CE489F751AF10', $false) #delete key and suppress error if missing
}

Затем я удаляю его из Моего магазина в% localappdata%

Remove-Item "\\$computer\c$\users\SOME.USER\appdata\roaming\microsoft\systemcertificates\my\certificates\$thumbprint" -Force #force required or you get access denied

Проверка сертификата: \ currentuser \ my, поскольку этот пользователь не показывает никаких признаков сертификата. Конечно, вы должны добавить проверку ошибок и т. Д., Но этот пример должен помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...