.rdg 파일에 저장된 RDP 암호 해독


12

.rdg ( 원격 데스크톱 연결 관리자 ) 파일에 저장된 암호를 해독하여 암호 를 만든 사용자의 사용자 이름과 암호를 알고있는 방법이 있습니까?

비밀번호를 작성한 사용자를 기반으로 비밀번호가 암호화되어 있음을 알고 있습니다. 사용자가 도메인 사용자이며 집에서 .rdg 파일을 사용하려고합니다 (도메인을 사용할 수 없음). 사용자 이름과 비밀번호를 알고 있기 때문에 도메인 사용자 인 "시뮬레이션"을 할 수 있습니까? 도메인에 대한 네트워크 액세스는 불가능합니다. 원래 머신에 대한 물리적 액세스도 사용할 수 없습니다.

나는 이 방법 을 시도 했지만 (놀랍지 않게) 나는 얻는다.

"2 개의 인수로 DecryptString 호출시 예외 : XXXX 자격 증명을 사용하여 해독하지 못했습니다"

(XXX는 현재 홈 로그인입니다.)

답변:


15

다음은 작업을 수행하는 Powershell 스크립트입니다.

암호화 된 비밀번호를 얻으려면 메모장으로 RDG 파일을여십시오. RDG에 내가 저장 한 '프로필'과 서버 당 저장된 비밀번호가 포함되어 있음을 발견했습니다.

이제 RDG 파일을 생성 한 동일한 컴퓨터 및 Windows 계정을 사용하여 다음 powershell 명령을 실행하여 암호를 확인하십시오. 암호를 해독하려면 동일한 계정을 사용해야합니다.

> $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)

출처 : https://blog.prudhomme.wtf/use-powershell-to-decrypt-password-stored-in-a-rdg-file/ 게시자 : THOMAS PRUD'HOMME


3
외부 링크가 끊어 지거나 사용할 수없는 경우 답변이 유용하지 않습니다. 답변에 필수 정보를 포함시키고 귀속 및 추가 정보를위한 링크를 사용하십시오. 감사.
fixer1234

1
도메인에 대한 네트워크 액세스가 없기 때문에 원래 질문에 게시 한 것과 동일한 링크를 게시하는 방법을 좋아합니다.
pkExec

@pkExec이 방법은 저에게 효과적이었습니다. 도메인 문제를 해결하는 다른 방법이 있다고 생각합니다. (암호를 암호화 한 도메인 사용자 계정에 액세스해야하므로 도메인에 다시 연결해야 할 수도 있습니다.)
jpaugh

2

다음 Powershell 스크립트를 사용하여 RDG 파일의 모든 비밀번호를 한 번에 해독하십시오. https://github.com/nettitude/PoshC2/blob/master/resources/modules/Decrypt-RDCMan.ps1

링크가 실패한 경우 참조 할 내용은 다음과 같습니다.

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

기능을 등록해야하는 스크립트를 Powershell ISE에서 실행하십시오. 그런 다음 간단한 실행 :

암호 해독 RDCMan -FilePath MyRDGfile.rdg


위의 링크가 끊어졌습니다. 여기 비슷한 프로그램이있는 것 같습니다 .
G-Man, '복지국 Monica'1

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.