Entschlüsseln Sie das in der .rdg-Datei gespeicherte RDP-Passwort

11

Gibt es eine Möglichkeit, ein in einer .rdg-Datei ( Remote Desktop Connection Manager ) gespeichertes Kennwort zu entschlüsseln , sofern Sie den Benutzernamen und das Kennwort des Benutzers kennen, der es erstellt hat?

Ich weiß, dass das Passwort basierend auf dem Benutzer, der es erstellt hat, verschlüsselt ist. Der Benutzer ist ein Domänenbenutzer, und ich versuche, die .rdg-Datei zu Hause zu verwenden (Domäne nicht verfügbar). Kann ich als Domain-Benutzer "simulieren", da ich den Benutzernamen und das Passwort kenne? Denken Sie daran, dass der Netzwerkzugriff auf die Domäne nicht verfügbar ist. Der physische Zugriff auf das Originalgerät ist ebenfalls nicht verfügbar.

Ich habe diese Methode ausprobiert , aber (nicht überraschend) bekomme ich

"Ausnahme beim Aufrufen von DecryptString mit 2 Argumenten: Fehler beim Entschlüsseln mit XXXX-Anmeldeinformationen"

(XXX ist mein aktuelles Home-Login.)

pkExec
quelle

Antworten:

15

Hier ist ein Powershell-Skript, das die Arbeit erledigt ...

Öffnen Sie die RDG-Datei mit dem Editor, um das verschlüsselte Kennwort zu erhalten. Ich stellte fest, dass RDG die von mir gespeicherten 'Profile' sowie die pro Server gespeicherten Passwörter enthielt.

Verwenden Sie jetzt denselben Computer und dasselbe Windows-Konto, mit dem die RDG-Datei erstellt wurde, um die folgenden Powershell-Befehle auszuführen und das Kennwort anzuzeigen. Sie müssen dasselbe Konto zum Entschlüsseln verwenden.

> $PwdString = 'EnCryptEdStringFRoMRDGfile=='
> Copy-Item 'C:\Program Files (x86)\Microsoft\Remote Desktop Connection Manager\RDCMan.exe' 'C:\temp\RDCMan.dll'
> Import-Module 'C:\temp\RDCMan.dll'
> $EncryptionSettings = New-Object -TypeName RdcMan.EncryptionSettings
> [RdcMan.Encryption]::DecryptString($PwdString, $EncryptionSettings)

Quelle: https://blog.prudhomme.wtf/use-powershell-to-decrypt-password-stored-in-a-rdg-file/ von THOMAS PRUD'HOMME

Ken
quelle
3
Externe Links können unterbrochen werden oder nicht verfügbar sein. In diesem Fall wäre Ihre Antwort nicht hilfreich. Bitte fügen Sie die wesentlichen Informationen in Ihre Antwort ein und verwenden Sie den Link zur Zuordnung und weiteren Lektüre. Vielen Dank.
Fixer1234
1
Ich liebe es, wie Sie den gleichen Link posten, den ich in meiner ursprünglichen Frage gepostet habe, und sagen, dass er nicht funktioniert (da es keinen Netzwerkzugriff auf die Domain gibt)
pkExec
@pkExec Diese Methode hat bei mir funktioniert. Ich vermute, es gibt noch einen anderen Weg, um das Domain-Problem zu lösen. (Sie benötigen wahrscheinlich Zugriff auf das Domänenbenutzerkonto, das das Kennwort verschlüsselt hat, und dies kann bedeuten, dass Sie erneut eine Verbindung zur Domäne herstellen müssen.)
jpaugh
1

Verwenden Sie das folgende Powershell-Skript, um alle Kennwörter in einer RDG-Datei auf einmal zu entschlüsseln. https://github.com/nettitude/PoshC2/blob/master/resources/modules/Decrypt-RDCMan.ps1

Falls der Link fehlschlägt, finden Sie hier den Inhalt als Referenz:

function Decrypt-RDCMan ($FilePath) {
<#
.SYNOPSIS

This script should be able to decrpt all passwords stored in the RDCMan config file

Function: Decrypt-RDCMan
Author:Ben Turner @benpturner, Rich Hicks @scriptmonkey_

.EXAMPLE

Decrypt-RDCMan -FilePath
#>
    if (!$FilePath) {
        [xml]$config = Get-Content "$env:LOCALAPPDATA\microsoft\remote desktop connection manager\rdcman.settings"
        $Xml = Select-Xml -Xml $config -XPath "//FilesToOpen/*"
        $Xml | select-object -ExpandProperty "Node"| % {Write-Output "Decrypting file: " $_.InnerText; Decrypt-RDCMan $_.InnerText}
    } else {
    [xml]$Types = Get-Content $FilePath

    $Xml = Select-Xml -Xml $Types -XPath "//logonCredentials"

    # depending on the RDCMan version we may need to change the XML search 
    $Xml | select-object -ExpandProperty "Node" | % { $pass = Decrypt-DPAPI $_.Password; $_.Domain + "\" + $_.Username + " - " + $Pass + " - " + "Hash:" + $_.Password + "`n" } 

    # depending on the RDCMan version, we may have to use search through the #text field in the XML structure 
    $Xml | select-object -ExpandProperty "Node" | % { $pass = Decrypt-DPAPI $_.Password."#text"; $_.Domain + "\" + $_.Username + "`n" + $Pass + " - Hash: " + $_.Password."#text" + "`n"}
    }
}

function Decrypt-DPAPI ($EncryptedString) {
    # load the Security Assembly into the PS runspace
    Add-Type -assembly System.Security
    $encoding= [System.Text.Encoding]::ASCII
    $uencoding = [System.Text.Encoding]::UNICODE

    # try and decrypt the password with the CurrentUser Scope
    try {
        $encryptedBytes = [System.Convert]::FromBase64String($encryptedstring)
        $bytes1 = [System.Security.Cryptography.ProtectedData]::Unprotect($encryptedBytes, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)
        [System.Text.Encoding]::Convert([System.Text.Encoding]::UNICODE, $encoding, $bytes1) | % { $myStr1 += [char]$_}
        echo $myStr1
    } 
    catch {
        # try and decrypt the password with the LocalMachine Scope only if the CurrentUser fails
        try {
            $encryptedBytes = [System.Convert]::FromBase64String($encryptedstring)
            $bytes1 = [System.Security.Cryptography.ProtectedData]::Unprotect($encryptedBytes, $null, [System.Security.Cryptography.DataProtectionScope]::LocalMachine)
            [System.Text.Encoding]::Convert([System.Text.Encoding]::UNICODE, $encoding, $bytes1) | % { $myStr1 += [char]$_}
            echo $myStr1
        }
        catch {
            echo "Could not decrypt password"
        }
    }
}

Führen Sie das Skript in Powershell ISE aus, das die Funktionen registrieren soll. Dann einfach ausführen:

Decrypt-RDCMan -FilePath MyRDGfile.rdg

Sahil Shah
quelle
Der obige Link ist defekt. Es ist das, was erscheint ein ähnliches Programm sein hier .
G-Man sagt 'Reinstate Monica'