ถอดรหัสรหัสผ่าน RDP ที่เก็บไว้ในไฟล์. rdg


12

มีวิธีถอดรหัสรหัสผ่านที่เก็บไว้ในไฟล์. rdg ( Remote Desktop Connection Manager ) หรือไม่ซึ่งจะทำให้คุณทราบชื่อผู้ใช้และรหัสผ่านของผู้ใช้ที่สร้างขึ้นมา

ฉันรู้ว่ารหัสผ่านถูกเข้ารหัสตามผู้ใช้ที่สร้างขึ้น ผู้ใช้เป็นผู้ใช้โดเมนและฉันพยายามใช้ไฟล์. rdg ที่บ้าน (โดเมนใช้งานไม่ได้) ฉันสามารถ "จำลอง" เป็นผู้ใช้โดเมนได้หรือไม่เนื่องจากฉันรู้ชื่อผู้ใช้ + รหัสผ่าน โปรดจำไว้ว่าการเข้าถึงเครือข่ายไปยังโดเมนนั้นไม่สามารถใช้งานได้ การเข้าถึงตัวเครื่องยังไม่สามารถใช้งานได้จริง

ฉันได้ลองวิธีนี้แล้ว แต่ฉันก็แปลกใจ

"ข้อยกเว้นการเรียก DecryptString มี 2 อาร์กิวเมนต์: ไม่สามารถถอดรหัสโดยใช้ข้อมูลรับรอง XXXX"

(XXX คือการเข้าสู่ระบบที่บ้านปัจจุบันของฉัน)

คำตอบ:


15

นี่คือสคริปต์ Powershell ที่จะทำงาน ...

เปิดไฟล์ RDG ด้วย notepad เพื่อรับรหัสผ่านที่เข้ารหัส ฉันพบว่า RDG มี 'โปรไฟล์' ที่ฉันบันทึกไว้รวมถึงรหัสผ่านที่บันทึกต่อเซิร์ฟเวอร์

ตอนนี้ใช้คอมพิวเตอร์และบัญชี windows เดียวกับที่สร้างไฟล์ RDG เพื่อเรียกใช้คำสั่ง 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 ที่ควรลงทะเบียนฟังก์ชั่น จากนั้นเรียกใช้ง่าย:

Decrypt-RDCMan -FilePath MyRDGfile.rdg


ลิงก์ด้านบนใช้งานไม่ได้ นอกจากนี้สิ่งที่ดูเหมือนจะเป็นโปรแกรมที่คล้ายกันที่นี่
G-Man พูดว่า 'Reinstate Monica'

0

Nirsoft Remote Desktop PassViewสำหรับเวอร์ชันเก่าหรือการกู้คืนรหัสผ่านเครือข่าย Nirsoftสำหรับไฟล์ RDG เวอร์ชันใหม่ควรช่วย

ใช้รุ่น x64 บน Windows รุ่น 64 บิต


3
คุณอาจสับสนไฟล์ RDP ด้วย RDG พวกเขาแตกต่าง.
pkExec
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.