mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/ios-pentesting/ios-universal-links.md
This commit is contained in:
parent
974b01a293
commit
e207df60b9
@ -6,11 +6,11 @@
|
||||
|
||||
Evrensel bağlantılar, kullanıcılar için **kesintisiz bir yönlendirme** deneyimi sunarak içeriği doğrudan uygulamada açar ve Safari yönlendirmesi gereksinimini ortadan kaldırır. Bu bağlantılar **benzersiz** ve güvenlidir, çünkü diğer uygulamalar tarafından talep edilemezler. Bu, web sitesinin kök dizininde bir `apple-app-site-association` JSON dosyası barındırarak sağlanır ve web sitesi ile uygulama arasında doğrulanabilir bir bağlantı kurar. Uygulama yüklü değilse, Safari devralır ve kullanıcıyı web sayfasına yönlendirir, uygulamanın varlığını korur.
|
||||
|
||||
Penetrasyon test uzmanları için `apple-app-site-association` dosyası, **hassas yolları** ortaya çıkarabileceği için özellikle ilgi çekicidir; bu yollar, yayımlanmamış özelliklerle ilgili olanları da içerebilir.
|
||||
Penetrasyon test uzmanları için `apple-app-site-association` dosyası özellikle ilgi çekicidir çünkü **hassas yolları** açığa çıkarabilir, bu yollar henüz yayımlanmamış özelliklerle ilgili olabilir.
|
||||
|
||||
### **Associated Domains Yetkisini Analiz Etme**
|
||||
### **İlişkili Alanlar Yetkisini Analiz Etme**
|
||||
|
||||
Geliştiriciler, Xcode'un Yetenekler sekmesinde **Associated Domains**'i yapılandırarak veya `.entitlements` dosyasını inceleyerek Evrensel Bağlantıları etkinleştirir. Her alan `applinks:` ile başlar. Örneğin, Telegram'ın yapılandırması şu şekilde görünebilir:
|
||||
Geliştiriciler, Xcode'un Yetenekler sekmesinde **İlişkili Alanlar**'ı yapılandırarak veya `.entitlements` dosyasını inceleyerek Evrensel Bağlantıları etkinleştirir. Her alan `applinks:` ile başlar. Örneğin, Telegram'ın yapılandırması şu şekilde görünebilir:
|
||||
```xml
|
||||
<key>com.apple.developer.associated-domains</key>
|
||||
<array>
|
||||
@ -38,13 +38,13 @@ Derlenmiş bir uygulama ile çalışıyorsanız, haklar [bu kılavuzda](extracti
|
||||
> done
|
||||
> ```
|
||||
|
||||
### **Uygulamada Universal Links Yönetimi**
|
||||
### **Uygulamada Evrensel Bağlantıları Yönetme**
|
||||
|
||||
Uygulama, universal linkleri doğru bir şekilde yönetmek için belirli yöntemleri uygulamalıdır. Bakılması gereken ana yöntem [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application) yöntemidir. İşlenen URL'lerin şemasının HTTP veya HTTPS olması kritik öneme sahiptir, diğerleri desteklenmeyecektir.
|
||||
Uygulama, evrensel bağlantıları doğru bir şekilde yönetmek için belirli yöntemleri uygulamalıdır. Bakılması gereken ana yöntem [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application) yöntemidir. İşlenen URL'lerin şemasının HTTP veya HTTPS olması kritik öneme sahiptir, diğerleri desteklenmeyecektir.
|
||||
|
||||
#### **Veri İşleyici Yöntemini Doğrulama**
|
||||
|
||||
Bir universal link bir uygulamayı açtığında, uygulamaya URL ile birlikte bir `NSUserActivity` nesnesi iletilir. Bu URL'yi işlemeye başlamadan önce, güvenlik risklerini önlemek için doğrulamak ve temizlemek önemlidir. İşte süreci gösteren bir Swift örneği:
|
||||
Bir evrensel bağlantı bir uygulamayı açtığında, uygulamaya URL ile birlikte bir `NSUserActivity` nesnesi iletilir. Bu URL'yi işlemeye başlamadan önce, güvenlik risklerini önlemek için doğrulamak ve temizlemek önemlidir. İşte süreci gösteren bir Swift örneği:
|
||||
```swift
|
||||
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
|
||||
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
|
||||
@ -56,7 +56,7 @@ application.open(url, options: [:], completionHandler: nil)
|
||||
return true
|
||||
}
|
||||
```
|
||||
URL'ler dikkatlice ayrıştırılmalı ve doğrulanmalıdır, özellikle parametreler içeriyorlarsa, potansiyel sahtecilik veya hatalı verilerden korunmak için. Aşağıda gösterildiği gibi, `NSURLComponents` API'si bu amaç için faydalıdır:
|
||||
URL'ler dikkatlice ayrıştırılmalı ve doğrulanmalıdır, özellikle parametreler içeriyorlarsa, potansiyel sahtecilik veya hatalı verilerden korunmak için. Bu amaçla `NSURLComponents` API'si aşağıda gösterildiği gibi faydalıdır:
|
||||
```swift
|
||||
func application(_ application: UIApplication,
|
||||
continue userActivity: NSUserActivity,
|
||||
@ -82,30 +82,30 @@ return false
|
||||
}
|
||||
}
|
||||
```
|
||||
**Titiz yapılandırma ve doğrulama** sayesinde, geliştiriciler evrensel bağlantıların kullanıcı deneyimini artırmasını sağlarken güvenlik ve gizlilik standartlarını koruyabilirler.
|
||||
**Titiz yapılandırma ve doğrulama** sayesinde, geliştiriciler evrensel bağlantıların kullanıcı deneyimini artırırken güvenlik ve gizlilik standartlarını korumasını sağlayabilir.
|
||||
|
||||
## Yaygın Zayıflıklar & Pentesting Kontrolleri
|
||||
|
||||
| # | Zayıflık | Nasıl test edilir | Sömürü / Etki |
|
||||
|---|----------|------------------|----------------|
|
||||
| 1 | **AASA dosyasında çok geniş `paths` / `components`** (örneğin `"/": "*"` veya `"/a/*"` gibi joker karakterler). | • İndirilen AASA dosyasını inceleyin ve `*`, sonlandırıcı eğik çizgiler veya `{"?": …}` kurallarını arayın.<br>• Hala kuralı karşılayan bilinmeyen kaynakları talep etmeyi deneyin (`https://domain.com/a/evil?_p_dp=1`). | Evrensel bağlantı kaçırma: aynı alan adını kaydeden kötü niyetli bir iOS uygulaması, bu bağlantıların hepsini talep edebilir ve kimlik avı arayüzü sunabilir. Gerçek bir örnek, Mayıs 2025'teki Temu.com hata ödül raporudur; burada bir saldırgan herhangi bir `/a/*` yolunu kendi uygulamasına yönlendirebilmiştir. |
|
||||
| 2 | **Derin bağlantı yollarının sunucu tarafında doğrulanmaması**. | İzin verilen yolları belirledikten sonra, var olmayan kaynaklara `curl`/Burp istekleri gönderin ve HTTP durum kodlarını gözlemleyin. `404` dışındaki herhangi bir şey (örneğin 200/302) şüphelidir. | Bir saldırgan, izin verilen bir yolun arkasında keyfi içerik barındırabilir ve bunu meşru alan adı aracılığıyla sunarak kimlik avı veya oturum belirteci çalma başarı oranını artırabilir. |
|
||||
| 3 | **Şema/host beyaz listelemesi olmadan uygulama tarafı URL işleme** (CVE-2024-10474 – Mozilla Focus < 132). | Doğrudan `openURL:`/`open(_:options:)` çağrılarını veya keyfi URL'leri ileten JavaScript köprülerini arayın. | Dahili sayfalar, tarayıcının URL çubuğu güvenlik kontrollerini atlayarak `myapp://` veya `https://` URL'lerini gizleyebilir, bu da sahtecilik veya istenmeyen ayrıcalıklı eylemlere yol açabilir. |
|
||||
| 1 | **AASA dosyasında çok geniş `paths` / `components`** (örneğin `"/": "*"` veya `"/a/*` gibi joker karakterler). | • İndirilen AASA'yı inceleyin ve `*`, son eğik çizgiler veya `{"?": …}` kurallarını arayın.<br>• Hala kuralı karşılayan bilinmeyen kaynakları talep etmeyi deneyin (`https://domain.com/a/evil?_p_dp=1`). | Evrensel bağlantı kaçırma: aynı alan adını kaydeden kötü niyetli bir iOS uygulaması, bu bağlantıların hepsini talep edebilir ve oltalama arayüzü sunabilir. Gerçek bir örnek, Mayıs 2025'teki Temu.com hata ödül raporudur; burada bir saldırgan herhangi bir `/a/*` yolunu kendi uygulamasına yönlendirebilmiştir. |
|
||||
| 2 | **Derin bağlantı yollarının sunucu tarafında doğrulanmaması.** | İzin verilen yolları belirledikten sonra, var olmayan kaynaklara `curl`/Burp istekleri gönderin ve HTTP durum kodlarını gözlemleyin. `404` dışındaki herhangi bir şey (örneğin 200/302) şüphelidir. | Bir saldırgan, izin verilen bir yolun arkasında keyfi içerik barındırabilir ve bunu meşru alan adı aracılığıyla sunarak oltalama veya oturum belirteci çalma başarı oranını artırabilir. |
|
||||
| 3 | **Şema/host beyaz listesiz uygulama tarafı URL işleme** (CVE-2024-10474 – Mozilla Focus < 132). | Doğrudan `openURL:`/`open(_:options:)` çağrılarını veya keyfi URL'leri ileten JavaScript köprülerini arayın. | Dahili sayfalar, tarayıcının URL çubuğu güvenlik kontrollerini atlatan `myapp://` veya `https://` URL'lerini gizleyebilir, bu da sahtecilik veya istenmeyen ayrıcalıklı eylemlere yol açabilir. |
|
||||
| 4 | **Yetkilendirmede joker alt alanların kullanımı** (`*.example.com`). | Yetkilendirmelerde `*.` için `grep` yapın. | Herhangi bir alt alan ele geçirilirse (örneğin kullanılmayan bir S3 kovası aracılığıyla), saldırgan otomatik olarak Evrensel Bağlantı bağlamasını kazanır. |
|
||||
|
||||
### Hızlı Kontrol Listesi
|
||||
|
||||
* [ ] Yetkilendirmeleri çıkarın ve her `applinks:` girişini sıralayın.
|
||||
* [ ] Her giriş için AASA dosyasını indirin ve joker karakterler için denetleyin.
|
||||
* [ ] Her giriş için AASA'yı indirin ve joker karakterler için denetleyin.
|
||||
* [ ] Web sunucusunun tanımsız yollar için **404** döndürdüğünü doğrulayın.
|
||||
* [ ] İkili dosyada, **yalnızca** güvenilir hostlar/şemaların işlendiğini onaylayın.
|
||||
* [ ] Uygulama daha yeni `components` sözdizimini kullanıyorsa (iOS 11+), sorgu parametre kurallarını test edin (`{"?":{…}}`).
|
||||
* [ ] İkili dosyada, **yalnızca** güvenilir ana bilgisayarların/şemaların işlendiğini onaylayın.
|
||||
* [ ] Uygulama daha yeni `components` sözdizimini kullanıyorsa (iOS 11+), sorgu parametre kurallarını karıştırın (`{"?":{…}}`).
|
||||
|
||||
## Araçlar
|
||||
|
||||
- [GetUniversal.link](https://getuniversal.link/): Uygulamanızın Evrensel Bağlantılarını ve AASA dosyasını test etmeyi ve yönetmeyi basitleştirmeye yardımcı olur. AASA dosyası bütünlüğünü doğrulamak için alan adınızı girin veya bağlantı davranışını kolayca test etmek için özel kontrol panelini kullanın. Bu araç ayrıca Apple'ın AASA dosyanızı bir sonraki ne zaman dizine ekleyeceğini belirlemenize yardımcı olur.
|
||||
- [Knil](https://github.com/ethanhuang13/knil): Bir alan adı tarafından bildirilen her Evrensel Bağlantıyı doğrudan cihazda **tap-test** yapmanıza olanak tanıyan açık kaynaklı bir iOS aracıdır.
|
||||
- [universal-link-validator](https://github.com/urbangems/universal-link-validator): Sıkı AASA uyumluluk kontrolleri gerçekleştiren ve tehlikeli joker karakterleri vurgulayan CLI / web doğrulayıcıdır.
|
||||
- [Knil](https://github.com/ethanhuang13/knil): Bir alan adı tarafından bildirilen her Evrensel Bağlantıyı doğrudan cihazda **tap-test** yapmanıza olanak tanıyan açık kaynaklı iOS aracı.
|
||||
- [universal-link-validator](https://github.com/urbangems/universal-link-validator): Sıkı AASA uyumluluk kontrolleri gerçekleştiren ve tehlikeli joker karakterleri vurgulayan CLI / web doğrulayıcı.
|
||||
|
||||
## Referanslar
|
||||
|
||||
|
||||
@ -4,9 +4,9 @@
|
||||
|
||||
## Temel Bilgiler
|
||||
|
||||
Microsoft Uzaktan Prosedür Çağrısı (MSRPC) protokolü, bir programın başka bir bilgisayarda bulunan bir programdan hizmet talep etmesini sağlayan bir istemci-sunucu modelidir ve ağın ayrıntılarını anlamadan çalışır. İlk olarak açık kaynak yazılımdan türetilmiş ve daha sonra Microsoft tarafından geliştirilip telif hakkı alınmıştır.
|
||||
Microsoft Uzaktan Prosedür Çağrısı (MSRPC) protokolü, bir programın başka bir bilgisayarda bulunan bir programdan hizmet talep etmesini sağlayan bir istemci-sunucu modelidir ve ağın ayrıntılarını anlamadan çalışır. İlk olarak açık kaynak yazılımlarından türetilmiş ve daha sonra Microsoft tarafından geliştirilip telif hakkı alınmıştır.
|
||||
|
||||
RPC uç noktası haritalayıcısına TCP ve UDP port 135, SMB üzerinden TCP 139 ve 445 (boş veya kimlik doğrulamalı oturum ile) ve TCP port 593 üzerinden bir web hizmeti olarak erişilebilir.
|
||||
RPC uç noktası haritalayıcısı, TCP ve UDP port 135, SMB üzerinde TCP 139 ve 445 (boş veya kimlik doğrulamalı oturum ile) ve TCP port 593 üzerinde bir web hizmeti olarak erişilebilir.
|
||||
```
|
||||
135/tcp open msrpc Microsoft Windows RPC
|
||||
```
|
||||
@ -36,7 +36,7 @@ rpcdump.py <IP> -p 135
|
||||
```
|
||||
Tüm seçenekler `tcp_dcerpc_auditor` hariç, 135 numaralı porttaki MSRPC'yi hedef almak için özel olarak tasarlanmıştır.
|
||||
|
||||
#### Dikkate Değer RPC Arayüzleri
|
||||
#### Dikkate Değer RPC arayüzleri
|
||||
|
||||
- **IFID**: 12345778-1234-abcd-ef00-0123456789ab
|
||||
- **Named Pipe**: `\pipe\lsarpc`
|
||||
@ -61,17 +61,17 @@ Tüm seçenekler `tcp_dcerpc_auditor` hariç, 135 numaralı porttaki MSRPC'yi he
|
||||
- **Açıklama**: Uzakta hizmetleri başlatmak ve durdurmak ve komutları yürütmek için kullanılan hizmet kontrol yöneticisi ve sunucu hizmetleri.
|
||||
- **IFID**: 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57
|
||||
- **Named Pipe**: `\pipe\epmapper`
|
||||
- **Açıklama**: WM aracılığıyla zorla şifre kırma ve bilgi toplama için kullanılan DCOM arayüzü.
|
||||
- **Açıklama**: WM aracılığıyla şifre kırma ve bilgi toplama için kullanılan DCOM arayüzü.
|
||||
|
||||
### IP adreslerini belirleme
|
||||
|
||||
[https://github.com/mubix/IOXIDResolver](https://github.com/mubix/IOXIDResolver) kullanarak, [Airbus araştırmasından](https://www.cyber.airbus.com/the-oxid-resolver-part-1-remote-enumeration-of-network-interfaces-without-any-authentication/) _**IOXIDResolver**_ arayüzü içindeki _**ServerAlive2**_ yöntemini kötüye kullanmak mümkündür.
|
||||
|
||||
Bu yöntem, HTB kutusu _APT_ 'den **IPv6** adresi gibi arayüz bilgilerini almak için kullanılmıştır. 0xdf APT yazımı için [buraya](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) bakın, rpcmap.py kullanarak alternatif bir yöntem içermektedir [Impacket](https://github.com/SecureAuthCorp/impacket/) ile _stringbinding_ (yukarıya bakın).
|
||||
Bu yöntem, HTB kutusu _APT_ 'den **IPv6** adresi gibi arayüz bilgilerini almak için kullanılmıştır. 0xdf APT yazımı için [buraya](https://0xdf.gitlab.io/2021/04/10/htb-apt.html) bakın, rpcmap.py kullanarak alternatif bir yöntem içerir [Impacket](https://github.com/SecureAuthCorp/impacket/) ile _stringbinding_ (yukarıya bakın).
|
||||
|
||||
### Geçerli kimlik bilgileri ile RCE yürütme
|
||||
|
||||
Geçerli bir kullanıcının kimlik bilgileri mevcutsa, [dcomexec.py](https://github.com/fortra/impacket/blob/master/examples/dcomexec.py) kullanarak bir makinede uzaktan kod yürütmek mümkündür.
|
||||
Geçerli bir kullanıcının kimlik bilgileri mevcutsa, bir makinede uzaktan kod yürütmek mümkündür. [dcomexec.py](https://github.com/fortra/impacket/blob/master/examples/dcomexec.py) kullanarak impacket çerçevesinden.
|
||||
|
||||
**Mevcut farklı nesnelerle denemeyi unutmayın**
|
||||
|
||||
@ -85,7 +85,7 @@ Geçerli bir kullanıcının kimlik bilgileri mevcutsa, [dcomexec.py](https://gi
|
||||
|
||||
## MSRPC Arayüzlerinin Otomatik Fuzzing'i
|
||||
|
||||
MS-RPC arayüzleri, büyük ve genellikle belgelenmemiş bir saldırı yüzeyi sunar. Açık kaynak [MS-RPC-Fuzzer](https://github.com/warpnet/MS-RPC-Fuzzer) PowerShell modülü, James Forshaw’ın `NtObjectManager`'ını kullanarak, Windows ikili dosyalarında zaten mevcut olan arayüz meta verilerinden *dinamik olarak* RPC istemci stub'ları oluşturur. Bir stub mevcut olduğunda, modül her prosedürü değiştirilmiş girdilerle bombardıman edebilir ve sonucu kaydedebilir, bu da **tek bir IDL satırı yazmadan RPC uç noktalarının tekrarlanabilir, büyük ölçekli fuzzing'ini mümkün kılar**.
|
||||
MS-RPC arayüzleri, büyük ve genellikle belgelenmemiş bir saldırı yüzeyi sunar. Açık kaynak [MS-RPC-Fuzzer](https://github.com/warpnet/MS-RPC-Fuzzer) PowerShell modülü, James Forshaw’ın `NtObjectManager`'ını kullanarak, Windows ikili dosyalarında zaten mevcut olan arayüz meta verilerinden *dinamik olarak* RPC istemci stub'ları oluşturur. Bir stub mevcut olduğunda, modül her prosedürü değiştirilmiş girdilerle bombardımana tutabilir ve sonucu kaydedebilir, bu da **tek bir IDL satırı yazmadan RPC uç noktalarının tekrarlanabilir, büyük ölçekli fuzzing'ini mümkün kılar**.
|
||||
|
||||
### 1. Arayüzleri envanterleme
|
||||
```powershell
|
||||
@ -118,7 +118,7 @@ Fuzzer, 2 strateji uygular:
|
||||
1. **Varsayılan fuzzer** – rastgele ilkel değerler + karmaşık türler için varsayılan örnekler
|
||||
2. **Sıralı fuzzer** – bağımlılık farkındalığına sahip sıralama (bkz. `docs/Procedure dependency design.md`)
|
||||
|
||||
Her çağrı atomik olarak `log.txt` dosyasına yazılır; bir çökmeden sonra **son satır hemen hatalı prosedürü bildirir**. Her çağrının sonucu da üç JSON dosyasına kategorize edilir:
|
||||
Her çağrı atomik olarak `log.txt` dosyasına yazılır; bir çökmeden sonra **son satır hemen hatalı prosedürü bildirir**. Her çağrının sonucu ayrıca üç JSON dosyasına kategorize edilir:
|
||||
|
||||
* `allowed.json` – çağrı başarılı oldu ve veri döndü
|
||||
* `denied.json` – sunucu *Erişim Reddedildi* ile yanıt verdi
|
||||
@ -129,19 +129,19 @@ Her çağrı atomik olarak `log.txt` dosyasına yazılır; bir çökmeden sonra
|
||||
'.\output\allowed.json' |
|
||||
Import-DataToNeo4j -Neo4jHost 192.168.56.10:7474 -Neo4jUsername neo4j
|
||||
```
|
||||
`Import-DataToNeo4j`, JSON artefaktlarını bir grafik yapısına dönüştürür:
|
||||
`Import-DataToNeo4j`, JSON artefaktlarını bir grafik yapısına dönüştürür; burada:
|
||||
|
||||
* RPC sunucuları, arayüzler ve prosedürler **düğümlerdir**
|
||||
* Etkileşimler (`ALLOWED`, `DENIED`, `ERROR`) **ilişkilerdir**
|
||||
* RPC sunucuları, arayüzler ve prosedürler **düğüm**
|
||||
* Etkileşimler (`ALLOWED`, `DENIED`, `ERROR`) **ilişkiler**dir.
|
||||
|
||||
Cypher sorguları, tehlikeli prosedürleri hızlıca tespit etmek veya bir çökmeden önceki çağrı zincirini tam olarak yeniden oynatmak için kullanılabilir.
|
||||
|
||||
⚠️ Fuzzer *yıkıcıdır*: hizmet çöküşleri ve hatta BSOD'lar bekleyin – her zaman izole bir VM anlık görüntüsünde çalıştırın.
|
||||
|
||||
|
||||
### Otomatik Arayüz Sayımı & Dinamik İstemci Üretimi (NtObjectManager)
|
||||
### Otomatik Arayüz Sayımı & Dinamik İstemci Oluşturma (NtObjectManager)
|
||||
|
||||
PowerShell uzmanı **James Forshaw**, açık kaynak *NtObjectManager* modülü içinde Windows RPC iç yapılarının çoğunu ortaya çıkardı. Bunu kullanarak, herhangi bir RPC sunucu DLL / EXE'sini birkaç saniye içinde **tam özellikli bir istemci stub**'a dönüştürebilirsiniz – IDL, MIDL veya manuel ayrıştırma gerektirmez.
|
||||
PowerShell uzmanı **James Forshaw**, açık kaynak *NtObjectManager* modülü içindeki Windows RPC iç yapılarının çoğunu ortaya çıkardı. Bunu kullanarak, herhangi bir RPC sunucu DLL / EXE'sini birkaç saniye içinde **tam özellikli bir istemci stub**'a dönüştürebilirsiniz – IDL, MIDL veya manuel ayrıştırma gerektirmez.
|
||||
```powershell
|
||||
# Install the module once
|
||||
Install-Module NtObjectManager -Force
|
||||
@ -181,12 +181,12 @@ Authentication (Kerberos / NTLM) ve şifreleme seviyeleri (`PacketIntegrity`, `P
|
||||
|
||||
### Bağlam Bilgisine Duyarlı RPC Fuzzing (MS-RPC-Fuzzer)
|
||||
|
||||
Statik arayüz bilgisi harika, ancak gerçekten istediğiniz şey **kapsam rehberli fuzzing**'dir; bu, *bağlam tutucularını* ve karmaşık parametre zincirlerini anlar. Açık kaynak **MS-RPC-Fuzzer** projesi tam olarak bu iş akışını otomatikleştirir:
|
||||
Statik arayüz bilgisi harika, ancak gerçekten istediğiniz şey **kapsam rehberli fuzzing**'dir; bu, *bağlam tanıtıcılarını* ve karmaşık parametre zincirlerini anlar. Açık kaynak **MS-RPC-Fuzzer** projesi tam olarak bu iş akışını otomatikleştirir:
|
||||
|
||||
1. Hedef ikili tarafından dışa aktarılan her arayüz/prosedürü listeleyin (`Get-RpcServer`).
|
||||
2. Her arayüz için dinamik istemciler oluşturun (`Format-RpcClient`).
|
||||
3. Orijinal **NDR türünü** dikkate alarak giriş parametrelerini rastgele değiştirin (geniş dizeler uzunluğu, tam sayı aralıkları, enumlar).
|
||||
4. Bir çağrıdan dönen *bağlam tutucularını* takip edin ve takip eden prosedürleri otomatik olarak besleyin.
|
||||
4. Bir çağrıdan dönen *bağlam tanıtıcılarını* takip edin ve takip eden prosedürleri otomatik olarak besleyin.
|
||||
5. Seçilen taşıma (ALPC, TCP, HTTP veya adlandırılmış boru) karşısında yüksek hacimli çağrılar yapın.
|
||||
6. Çıkış durumlarını / hataları / zaman aşımını kaydedin ve *arayüz → prosedür → parametre* ilişkilerini ve çökme kümelerini görselleştirmek için bir **Neo4j** içe aktarma dosyası dışa aktarın.
|
||||
|
||||
@ -197,7 +197,7 @@ Invoke-MSRPCFuzzer -Pipe "\\.\pipe\efsrpc" -Auth NTLM `
|
||||
-Iterations 100000 `
|
||||
-OutDir .\results
|
||||
```
|
||||
Bir tek out-of-bounds yazma veya beklenmedik bir istisna, tetikleyen tam opnum + fuzzed yük ile hemen ortaya çıkacaktır - kararlı bir kanıt konsepti istismarı için mükemmel bir başlangıç noktası.
|
||||
Bir tek out-of-bounds yazma veya beklenmedik bir istisna, tetikleyen tam opnum + fuzzed yük ile hemen yüzeye çıkacaktır - kararlı bir kanıt konsepti istismarı için mükemmel bir başlangıç noktası.
|
||||
|
||||
> ⚠️ Birçok RPC hizmeti **NT AUTHORITY\SYSTEM** olarak çalışan süreçlerde yürütülmektedir. Buradaki herhangi bir bellek güvenliği sorunu genellikle yerel ayrıcalık yükselmesine veya (SMB/135 üzerinden açıldığında) *uzaktan kod yürütme* ile sonuçlanır.
|
||||
|
||||
|
||||
@ -4,17 +4,17 @@
|
||||
|
||||
## Temel genel bakış
|
||||
|
||||
**Active Directory**, **ağ yöneticileri**'nin bir ağ içinde **alanlar**, **kullanıcılar** ve **nesneler** oluşturup yönetmelerini sağlayan temel bir teknolojidir. Ölçeklenebilir şekilde tasarlanmış olup, çok sayıda kullanıcıyı yönetilebilir **gruplara** ve **alt gruplara** organize ederken, çeşitli seviyelerde **erişim haklarını** kontrol etmeyi kolaylaştırır.
|
||||
**Active Directory**, **ağ yöneticileri** için **alanlar**, **kullanıcılar** ve **nesneler** oluşturup yönetmeyi verimli bir şekilde sağlayan temel bir teknoloji olarak hizmet eder. Ölçeklenebilir olacak şekilde tasarlanmıştır, böylece çok sayıda kullanıcıyı yönetilebilir **gruplara** ve **alt gruplara** organize ederken, çeşitli seviyelerde **erişim haklarını** kontrol eder.
|
||||
|
||||
**Active Directory** yapısı üç ana katmandan oluşur: **alanlar**, **ağaçlar** ve **ormanlar**. Bir **alan**, ortak bir veritabanını paylaşan **kullanıcılar** veya **cihazlar** gibi nesnelerin bir koleksiyonunu kapsar. **Ağaçlar**, ortak bir yapı ile bağlantılı bu alanların gruplarıdır ve bir **orman**, birbirleriyle **güven ilişkileri** aracılığıyla bağlantılı birden fazla ağacın koleksiyonunu temsil eder; bu, organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli **erişim** ve **iletişim hakları** atanabilir.
|
||||
**Active Directory** yapısı üç ana katmandan oluşur: **alanlar**, **ağaçlar** ve **ormanlar**. Bir **alan**, ortak bir veritabanını paylaşan **kullanıcılar** veya **cihazlar** gibi nesnelerin bir koleksiyonunu kapsar. **Ağaçlar**, ortak bir yapı ile bağlantılı bu alanların gruplarıdır ve bir **orman**, birbirleriyle **güven ilişkileri** aracılığıyla bağlantılı birden fazla ağacın koleksiyonunu temsil eder ve organizasyon yapısının en üst katmanını oluşturur. Bu seviyelerin her birinde belirli **erişim** ve **iletişim hakları** atanabilir.
|
||||
|
||||
**Active Directory** içindeki anahtar kavramlar şunlardır:
|
||||
|
||||
1. **Dizin** – Active Directory nesneleri ile ilgili tüm bilgileri barındırır.
|
||||
2. **Nesne** – Dizin içindeki varlıkları, **kullanıcılar**, **gruplar** veya **paylaşılan klasörler** gibi, ifade eder.
|
||||
3. **Alan** – Dizin nesneleri için bir konteyner görevi görür; bir **orman** içinde birden fazla alanın bir arada bulunabilmesi mümkündür ve her biri kendi nesne koleksiyonunu korur.
|
||||
3. **Alan** – Dizin nesneleri için bir konteyner görevi görür; bir **orman** içinde birden fazla alanın bir arada bulunabilme yeteneğine sahiptir ve her biri kendi nesne koleksiyonunu korur.
|
||||
4. **Ağaç** – Ortak bir kök alanı paylaşan alanların bir gruplamasıdır.
|
||||
5. **Orman** – Active Directory'deki organizasyon yapısının zirvesi olup, aralarında **güven ilişkileri** bulunan birkaç ağaçtan oluşur.
|
||||
5. **Orman** – Active Directory'deki organizasyon yapısının zirvesidir ve aralarında **güven ilişkileri** bulunan birkaç ağaçtan oluşur.
|
||||
|
||||
**Active Directory Domain Services (AD DS)**, bir ağ içinde merkezi yönetim ve iletişim için kritik olan bir dizi hizmeti kapsar. Bu hizmetler şunları içerir:
|
||||
|
||||
@ -34,7 +34,7 @@ Bir AD'yi nasıl **saldıracağını** öğrenmek için **Kerberos kimlik doğru
|
||||
|
||||
## Hile Sayfası
|
||||
|
||||
AD'yi listelemek/sömürmek için hangi komutları çalıştırabileceğinizi hızlıca görmek için [https://wadcoms.github.io/](https://wadcoms.github.io) adresine göz atabilirsiniz.
|
||||
AD'yi listelemek/sömürmek için hangi komutları çalıştırabileceğinizi hızlıca görmek için [https://wadcoms.github.io/](https://wadcoms.github.io) adresine gidebilirsiniz.
|
||||
|
||||
> [!WARNING]
|
||||
> Kerberos iletişimi, eylemleri gerçekleştirmek için **tam nitelikli ad (FQDN)** gerektirir. Bir makineye IP adresiyle erişmeye çalışırsanız, **NTLM kullanır ve Kerberos değil**.
|
||||
@ -68,11 +68,11 @@ Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturu
|
||||
|
||||
- **Ağı zehirle**
|
||||
- Kimlik bilgilerini [**Responder ile hizmetleri taklit ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) toplayın.
|
||||
- [**relay saldırısını istismar ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) bir hosta erişin.
|
||||
- [**relay saldırısını istismar ederek**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) ana makineye erişin.
|
||||
- Kimlik bilgilerini **sahte UPnP hizmetlerini** [**evil-S ile**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) ile açığa çıkararak toplayın.
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- Alan ortamları içindeki iç belgelerden, sosyal medyadan, hizmetlerden (özellikle web) kullanıcı adlarını/isimlerini çıkarın ve ayrıca kamuya açık olanlardan.
|
||||
- Eğer şirket çalışanlarının tam isimlerini bulursanız, farklı AD **kullanıcı adı konvansiyonlarını** deneyebilirsiniz (**[bunu okuyun](https://activedirectorypro.com/active-directory-user-naming-convention/)**). En yaygın konvansiyonlar: _AdSoyad_, _Ad.Soyad_, _AdSoy_ (her birinin 3 harfi), _Ad.Soy_, _ASoyad_, _A.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadA_, _Soyad.A_, 3 _rastgele harf ve 3 rastgele rakam_ (abc123).
|
||||
- Şirket çalışanlarının tam isimlerini bulursanız, farklı AD **kullanıcı adı konvansiyonlarını** deneyebilirsiniz (**[bunu okuyun](https://activedirectorypro.com/active-directory-user-naming-convention/)**). En yaygın konvansiyonlar: _AdSoyad_, _Ad.Soyad_, _AdSoy_ (her birinin 3 harfi), _Ad.Soy_, _ASoyad_, _A.Soyad_, _SoyadAd_, _Soyad.Ad_, _SoyadA_, _Soyad.N_, 3 _rastgele harf ve 3 rastgele rakam_ (abc123).
|
||||
- Araçlar:
|
||||
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
|
||||
@ -126,7 +126,7 @@ password-spraying.md
|
||||
|
||||
### LLMNR/NBT-NS Zehirleme
|
||||
|
||||
**Ağ** protokollerini **zehirleyerek** bazı zorluk **hash'lerini** **elde etme** şansınız olabilir:
|
||||
Bazı zorluk **hash'lerini** elde edebilmek için **ağ** protokollerini **zehirleyerek** **elde edebilirsiniz**:
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
|
||||
@ -136,9 +136,9 @@ password-spraying.md
|
||||
|
||||
Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTLM [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) zorlayarak AD ortamına erişim sağlamayı deneyebilirsiniz.
|
||||
|
||||
### NTLM Kimlik Bilgilerini Çalma
|
||||
### NTLM Kimlik Bilgilerini Çalmak
|
||||
|
||||
Eğer **null veya misafir kullanıcısı** ile **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyaya erişildiğinde **sizinle NTLM kimlik doğrulaması tetiklenecektir**, böylece **NTLM zorluğunu çalabilirsiniz**:
|
||||
Eğer **null veya misafir kullanıcısı** ile **diğer PC'lere veya paylaşımlara erişiminiz varsa**, erişildiğinde **NTLM kimlik doğrulamasını tetikleyecek** (örneğin bir SCF dosyası gibi) **dosyalar yerleştirebilirsiniz**; böylece **NTLM zorluğunu çalabilirsiniz**:
|
||||
|
||||
{{#ref}}
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
@ -166,9 +166,9 @@ Bir hesabı ele geçirmek, **tüm alanı ele geçirmeye başlamak için büyük
|
||||
- Aktif dizinde keşif için başka bir harika araç [**BloodHound**](bloodhound.md). **Çok gizli değildir** (kullandığınız toplama yöntemlerine bağlı olarak), ama **bununla ilgilenmiyorsanız**, kesinlikle denemelisiniz. Kullanıcıların RDP yapabileceği yerleri bulun, diğer gruplara giden yolları keşfedin, vb.
|
||||
- **Diğer otomatik AD listeleme araçları şunlardır:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
|
||||
- [**AD'nin DNS kayıtları**](ad-dns-records.md) ilginç bilgiler içerebilir.
|
||||
- Dizin listelemek için kullanabileceğiniz bir **GUI aracı** **SysInternal** Suite'den **AdExplorer.exe**'dir.
|
||||
- Dizin listelemek için kullanabileceğiniz **GUI'ye sahip bir araç** **AdExplorer.exe**'dir, **SysInternal** Suite'ten.
|
||||
- Ayrıca _userPassword_ & _unixUserPassword_ alanlarında veya hatta _Description_ için kimlik bilgilerini aramak üzere **ldapsearch** ile LDAP veritabanında arama yapabilirsiniz. Diğer yöntemler için [PayloadsAllTheThings'deki AD Kullanıcı yorumundaki Şifre](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) bağlantısına bakın.
|
||||
- **Linux** kullanıyorsanız, [**pywerview**](https://github.com/the-useless-one/pywerview) kullanarak alanı da listeleyebilirsiniz.
|
||||
- **Linux** kullanıyorsanız, [**pywerview**](https://github.com/the-useless-one/pywerview) kullanarak alanı listeleyebilirsiniz.
|
||||
- Ayrıca otomatik araçlar denemek isteyebilirsiniz:
|
||||
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
|
||||
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
|
||||
@ -180,7 +180,7 @@ Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (`net use
|
||||
|
||||
### Kerberoast
|
||||
|
||||
Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan **TGS biletlerini** elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olarak—**çözmeyi** içerir.
|
||||
Kerberoasting, kullanıcı hesaplarına bağlı hizmetler tarafından kullanılan **TGS biletlerini** elde etmeyi ve bunların şifrelemesini—kullanıcı şifrelerine dayalı olan—**çözmeyi** içerir.
|
||||
|
||||
Bununla ilgili daha fazla bilgi:
|
||||
|
||||
@ -194,7 +194,7 @@ Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişimi
|
||||
|
||||
### Yerel Yetki Yükseltme
|
||||
|
||||
Eğer ele geçirilmiş kimlik bilgilerine veya bir oturuma sahipseniz ve bu kullanıcı ile **alan içindeki herhangi bir makineye erişiminiz varsa**, **yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya** çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile **diğer kullanıcıların hash'lerini** bellekte (LSASS) ve yerel olarak (SAM) **dökmek** mümkün olacaktır.
|
||||
Eğer ele geçirilmiş kimlik bilgilerine veya bir oturum açmış bir alan kullanıcısına sahipseniz ve bu kullanıcı ile **alan içindeki herhangi bir makineye erişiminiz varsa**, **yerel olarak yetki yükseltme yollarını bulmaya ve kimlik bilgilerini çalmaya** çalışmalısınız. Çünkü yalnızca yerel yönetici ayrıcalıkları ile diğer kullanıcıların **hash'lerini** bellekte (LSASS) ve yerel olarak (SAM) **dökmek** mümkün olacaktır.
|
||||
|
||||
Bu kitapta [**Windows'ta yerel yetki yükseltme**](../windows-local-privilege-escalation/index.html) hakkında kapsamlı bir sayfa ve bir [**kontrol listesi**](../checklist-windows-privilege-escalation.md) bulunmaktadır. Ayrıca, [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kullanmayı unutmayın.
|
||||
|
||||
@ -210,7 +210,7 @@ Mevcut kullanıcıda **beklenmedik kaynaklara erişim izni veren** **biletler**
|
||||
```
|
||||
### NTLM Relay
|
||||
|
||||
Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTLM [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)** zorlayabilirsiniz.**
|
||||
Eğer aktif dizini listelemeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayışa sahip olacaksınız**. NTLM [**relay saldırılarını**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)** gerçekleştirmeyi başarabilirsiniz.**
|
||||
|
||||
### Bilgisayar Paylaşımlarında Kimlik Bilgilerini Ara | SMB Paylaşımları
|
||||
|
||||
@ -220,7 +220,7 @@ Artık bazı temel kimlik bilgilerine sahip olduğunuza göre, **AD içinde payl
|
||||
|
||||
### NTLM Kimlik Bilgilerini Çal
|
||||
|
||||
Eğer **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyaya bir şekilde erişildiğinde, **sizinle NTLM kimlik doğrulaması tetiklenecektir** böylece **NTLM zorluğunu çalabilirsiniz**:
|
||||
Eğer **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerleştirebilirsiniz** (örneğin bir SCF dosyası) ve bu dosyaya erişildiğinde **NTLM kimlik doğrulamasını tetikleyecek** şekilde ayarlanabilir, böylece **NTLM zorluğunu çalabilir** ve kırabilirsiniz:
|
||||
|
||||
{{#ref}}
|
||||
../ntlm/places-to-steal-ntlm-creds.md
|
||||
@ -234,20 +234,20 @@ Bu güvenlik açığı, herhangi bir kimlik doğrulaması yapılmış kullanıc
|
||||
printnightmare.md
|
||||
{{#endref}}
|
||||
|
||||
## Aktif Dizin'de Yetki Yükseltme ÖZEL yetkiler/oturum ile
|
||||
## Aktif Dizin'de Yetki Yükseltme ÖZEL yetkili kimlik bilgileri/oturum ile
|
||||
|
||||
**Aşağıdaki teknikler için normal bir alan kullanıcısı yeterli değildir, bu saldırıları gerçekleştirmek için bazı özel yetkiler/kimlik bilgilerine ihtiyacınız var.**
|
||||
**Aşağıdaki teknikler için normal bir alan kullanıcısı yeterli değildir, bu saldırıları gerçekleştirmek için bazı özel yetkiler/kimlik bilgileri gereklidir.**
|
||||
|
||||
### Hash çıkarımı
|
||||
|
||||
Umarım [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) dahil olmak üzere bazı yerel yönetici hesaplarını **tehlikeye atmayı başardınız**. [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel olarak yetki yükseltme](../windows-local-privilege-escalation/index.html).\
|
||||
Umarım [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) dahil olmak üzere bazı yerel yönetici hesaplarını **tehdit etmeyi başardınız**. [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel olarak yetki yükseltme](../windows-local-privilege-escalation/index.html).\
|
||||
Sonra, bellek ve yerel olarak tüm hash'leri dökme zamanı.\
|
||||
[**Hash'leri elde etmenin farklı yolları hakkında bu sayfayı okuyun.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
|
||||
### Hash'i Geç
|
||||
|
||||
**Bir kullanıcının hash'ine sahip olduğunuzda**, onu **taklit etmek için** kullanabilirsiniz.\
|
||||
Bu **hash** ile **NTLM kimlik doğrulaması gerçekleştirecek** bir **araç** kullanmalısınız, **veya** yeni bir **sessionlogon** oluşturup bu **hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması gerçekleştirildiğinde**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır.\
|
||||
Bu **hash** ile **NTLM kimlik doğrulamasını gerçekleştirecek** bir **araç** kullanmalısınız, **veya** yeni bir **sessionlogon** oluşturup bu **hash'i** **LSASS** içine **enjekte** edebilirsiniz, böylece herhangi bir **NTLM kimlik doğrulaması yapıldığında**, o **hash kullanılacaktır.** Son seçenek, mimikatz'ın yaptığıdır.\
|
||||
[**Daha fazla bilgi için bu sayfayı okuyun.**](../ntlm/index.html#pass-the-hash)
|
||||
|
||||
### Hash'i Aş/ Anahtarı Geç
|
||||
@ -260,7 +260,7 @@ over-pass-the-hash-pass-the-key.md
|
||||
|
||||
### Bileti Geç
|
||||
|
||||
**Pass The Ticket (PTT)** saldırı yönteminde, saldırganlar **bir kullanıcının kimlik doğrulama biletini çalar**; bunun yerine şifrelerini veya hash değerlerini alırlar. Bu çalınan bilet daha sonra **kullanıcıyı taklit etmek için** kullanılır ve bir ağ içindeki kaynaklara ve hizmetlere yetkisiz erişim sağlar.
|
||||
**Pass The Ticket (PTT)** saldırı yönteminde, saldırganlar **bir kullanıcının kimlik doğrulama biletini** çalarlar, bunun yerine şifrelerini veya hash değerlerini alırlar. Bu çalınan bilet daha sonra **kullanıcıyı taklit etmek için** kullanılır ve bir ağ içindeki kaynaklara ve hizmetlere yetkisiz erişim sağlar.
|
||||
|
||||
{{#ref}}
|
||||
pass-the-ticket.md
|
||||
@ -299,8 +299,8 @@ unconstrained-delegation.md
|
||||
|
||||
### Sınırlı Delegasyon
|
||||
|
||||
Eğer bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, **bir kullanıcıyı taklit ederek bir bilgisayardaki bazı hizmetlere erişim** sağlayabilir.\
|
||||
Sonrasında, eğer bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişim sağlayabilirsiniz.
|
||||
Eğer bir kullanıcı veya bilgisayara "Sınırlı Delegasyon" izni verilmişse, bu, **bir kullanıcının bir bilgisayardaki bazı hizmetlere erişmek için herhangi bir kullanıcıyı taklit etmesine** olanak tanır.\
|
||||
Sonrasında, eğer bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişebilirsiniz.
|
||||
|
||||
{{#ref}}
|
||||
constrained-delegation.md
|
||||
@ -316,7 +316,7 @@ resource-based-constrained-delegation.md
|
||||
|
||||
### İzinler/ACL'ler Kötüye Kullanımı
|
||||
|
||||
Ele geçirilmiş bir kullanıcı, bazı alan nesneleri üzerinde bazı **ilginç yetkilere** sahip olabilir ve bu da size **yanal hareket etme**/**yetki yükseltme** imkanı verebilir.
|
||||
Ele geçirilmiş bir kullanıcı, bazı alan nesneleri üzerinde **ilginç yetkilere** sahip olabilir ve bu da size **yanal hareket etme**/**yetki yükseltme** imkanı verebilir.
|
||||
|
||||
{{#ref}}
|
||||
acl-persistence-abuse/
|
||||
@ -398,7 +398,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
|
||||
|
||||
### Gümüş Bilet
|
||||
|
||||
**Gümüş Bilet saldırısı**, belirli bir hizmet için **geçerli bir Ticket Granting Service (TGS) bileti** oluşturur ve bunu **NTLM hash**'ini kullanarak gerçekleştirir (örneğin, **PC hesabının hash'i**). Bu yöntem, **hizmet yetkilerine erişim** sağlamak için kullanılır.
|
||||
**Gümüş Bilet saldırısı**, belirli bir hizmet için **geçerli bir Ticket Granting Service (TGS) bileti** oluşturur ve bunu **NTLM hash**'ini kullanarak gerçekleştirir (örneğin, **PC hesabının hash'i**). Bu yöntem, **hizmet yetkilerine erişmek** için kullanılır.
|
||||
|
||||
{{#ref}}
|
||||
silver-ticket.md
|
||||
@ -406,7 +406,7 @@ silver-ticket.md
|
||||
|
||||
### Altın Bilet
|
||||
|
||||
Bir **Altın Bilet saldırısı**, bir saldırganın Active Directory (AD) ortamında **krbtgt hesabının NTLM hash'ine** erişim sağlamasıyla ilgilidir. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm **Ticket Granting Tickets (TGT'ler)**'i imzalamak için kullanıldığı için özeldir.
|
||||
Bir **Altın Bilet saldırısı**, bir saldırganın Active Directory (AD) ortamında **krbtgt hesabının NTLM hash'ine** erişim sağlamasını içerir. Bu hesap, AD ağında kimlik doğrulama için gerekli olan tüm **Ticket Granting Tickets (TGT'ler)**'i imzalamak için kullanıldığı için özeldir.
|
||||
|
||||
Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Gümüş bilet saldırısı).
|
||||
|
||||
@ -416,7 +416,7 @@ golden-ticket.md
|
||||
|
||||
### Elmas Bilet
|
||||
|
||||
Bunlar, **yaygın altın bilet tespit mekanizmalarını atlayacak şekilde** sahte altın biletler gibidir.
|
||||
Bunlar, **yaygın altın bilet tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş altın biletler gibidir.
|
||||
|
||||
{{#ref}}
|
||||
diamond-ticket.md
|
||||
@ -424,7 +424,7 @@ diamond-ticket.md
|
||||
|
||||
### **Sertifikalar Hesap Sürekliliği**
|
||||
|
||||
**Bir hesabın sertifikalarına sahip olmak veya bunları talep edebilmek**, kullanıcı hesabında sürekliliği sağlamak için çok iyi bir yoldur (şifreyi değiştirse bile):
|
||||
**Bir hesabın sertifikalarına sahip olmak veya bunları talep edebilmek**, kullanıcı hesabında (şifreyi değiştirse bile) sürekliliği sağlamak için çok iyi bir yoldur:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/account-persistence.md
|
||||
@ -487,7 +487,7 @@ custom-ssp.md
|
||||
|
||||
### DCShadow
|
||||
|
||||
AD'de **yeni bir Domain Controller** kaydeder ve belirtilen nesnelerde **özellikleri** (SIDHistory, SPN'ler...) **güncellemeleri** **log** bırakmadan **itme** işlemi yapar. **DA** yetkilerine sahip olmanız ve **kök alan** içinde olmanız gerekir.\
|
||||
AD'de **yeni bir Domain Controller** kaydeder ve belirli nesnelerde **özellikleri** (SIDHistory, SPN'ler...) **güncellemeleri** **log** bırakmadan **itme** işlemi yapar. **DA** yetkilerine sahip olmanız ve **kök alan** içinde olmanız gerekir.\
|
||||
Yanlış veri kullanırsanız, oldukça kötü loglar ortaya çıkacaktır.
|
||||
|
||||
{{#ref}}
|
||||
@ -496,7 +496,7 @@ dcshadow.md
|
||||
|
||||
### LAPS Sürekliliği
|
||||
|
||||
Daha önce, **LAPS parolalarını okuma iznine sahip olduğunuzda** nasıl yetki yükseltebileceğinizi tartıştık. Ancak, bu parolalar **sürekliliği sağlamak için** de kullanılabilir.\
|
||||
Daha önce, **LAPS parolalarını okuma iznine sahip olduğunuzda** nasıl yetki yükseltebileceğinizi tartıştık. Ancak, bu parolalar **sürekliliği sağlamak** için de kullanılabilir.\
|
||||
Kontrol edin:
|
||||
|
||||
{{#ref}}
|
||||
@ -509,18 +509,18 @@ Microsoft, **Ormanı** güvenlik sınırı olarak görmektedir. Bu, **tek bir al
|
||||
|
||||
### Temel Bilgiler
|
||||
|
||||
Bir [**alan güveni**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>), bir **alan** içindeki bir kullanıcının başka bir **alan** içindeki kaynaklara erişimini sağlayan bir güvenlik mekanizmasıdır. Temelde, iki alanın kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına olanak tanır. Alanlar bir güven oluşturduğunda, güvenin bütünlüğü için kritik olan belirli **anahtarları** **Domain Controller'ları (DC'ler)** arasında değiş tokuş eder ve saklar.
|
||||
Bir [**alan güveni**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>), bir **alan** kullanıcısının başka bir **alan** içindeki kaynaklara erişimini sağlayan bir güvenlik mekanizmasıdır. Temelde, iki alanın kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve kimlik doğrulama doğrulamalarının sorunsuz bir şekilde akmasına olanak tanır. Alanlar bir güven oluşturduğunda, güvenin bütünlüğü için kritik olan belirli **anahtarları** **Domain Controller'ları (DC'ler)** arasında değiş tokuş eder ve saklar.
|
||||
|
||||
Tipik bir senaryoda, bir kullanıcı **güvenilir bir alandaki** bir hizmete erişmek istediğinde, önce kendi alanının DC'sinden **inter-realm TGT** olarak bilinen özel bir bilet talep etmesi gerekir. Bu TGT, her iki alanın üzerinde anlaştığı bir **anahtar** ile şifrelenmiştir. Kullanıcı, bu TGT'yi **güvenilir alanın DC'sine** sunarak bir hizmet bileti (**TGS**) alır. Güvenilir alanın DC'si inter-realm TGT'yi başarılı bir şekilde doğruladığında, bir TGS vererek kullanıcıya hizmete erişim izni verir.
|
||||
|
||||
**Adımlar**:
|
||||
|
||||
1. **Domain 1**'deki bir **istemci bilgisayar**, **Domain Controller (DC1)**'den **Ticket Granting Ticket (TGT)** talep etmek için **NTLM hash**'ini kullanarak süreci başlatır.
|
||||
2. DC1, istemci başarılı bir şekilde kimlik doğrulandıysa yeni bir TGT verir.
|
||||
2. İstemci başarılı bir şekilde kimlik doğrulandıysa, DC1 yeni bir TGT verir.
|
||||
3. İstemci, **Domain 2**'deki kaynaklara erişmek için DC1'den bir **inter-realm TGT** talep eder.
|
||||
4. Inter-realm TGT, DC1 ve DC2 arasında iki yönlü alan güveni kapsamında paylaşılan bir **güven anahtarı** ile şifrelenmiştir.
|
||||
5. İstemci, inter-realm TGT'yi **Domain 2'nin Domain Controller'ı (DC2)**'ye götürür.
|
||||
6. DC2, inter-realm TGT'yi paylaşılan güven anahtarını kullanarak doğrular ve geçerliyse, istemcinin erişmek istediği Domain 2'deki sunucu için bir **Ticket Granting Service (TGS)** verir.
|
||||
6. DC2, inter-realm TGT'yi paylaşılan güven anahtarını kullanarak doğrular ve geçerli ise, istemcinin erişmek istediği Domain 2'deki sunucu için bir **Ticket Granting Service (TGS)** verir.
|
||||
7. Son olarak, istemci bu TGS'yi sunucuya sunar; bu, sunucunun hesap hash'i ile şifrelenmiştir ve Domain 2'deki hizmete erişim sağlar.
|
||||
|
||||
### Farklı Güvenler
|
||||
@ -531,16 +531,16 @@ Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir olanıdır
|
||||
|
||||
**Farklı güvenen ilişkileri**
|
||||
|
||||
- **Ana-Çocuk Güvenleri**: Bu, aynı orman içinde yaygın bir yapılandırmadır; burada bir çocuk alanı otomatik olarak ana alanı ile iki yönlü geçişli bir güvene sahiptir. Temelde, kimlik doğrulama talepleri ana ve çocuk arasında sorunsuz bir şekilde akabilir.
|
||||
- **Çapraz Bağlantı Güvenleri**: "Kısa yol güvenleri" olarak adlandırılan bu güvenler, referans süreçlerini hızlandırmak için çocuk alanları arasında kurulur. Karmaşık ormanlarda, kimlik doğrulama referanslarının genellikle orman köküne kadar gitmesi ve ardından hedef alana inmesi gerekir. Çapraz bağlantılar oluşturarak, yolculuk kısaltılır; bu, coğrafi olarak dağılmış ortamlarda özellikle faydalıdır.
|
||||
- **Ana-Çocuk Güvenleri**: Bu, aynı orman içinde yaygın bir yapılandırmadır; burada bir çocuk alanı otomatik olarak ana alanı ile iki yönlü geçişli bir güvene sahiptir. Temelde, bu, kimlik doğrulama taleplerinin ana ve çocuk arasında sorunsuz bir şekilde akabileceği anlamına gelir.
|
||||
- **Çapraz Bağlantı Güvenleri**: "Kestirme güvenler" olarak adlandırılan bu güvenler, referans süreçlerini hızlandırmak için çocuk alanları arasında kurulur. Karmaşık ormanlarda, kimlik doğrulama referanslarının genellikle orman köküne kadar gitmesi ve ardından hedef alana inmesi gerekir. Çapraz bağlantılar oluşturarak, yolculuk kısaltılır; bu, coğrafi olarak dağılmış ortamlarda özellikle faydalıdır.
|
||||
- **Dış Güvenler**: Farklı, alakasız alanlar arasında kurulan bu güvenler doğası gereği geçişli değildir. [Microsoft'un belgelerine](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) göre, dış güvenler, mevcut ormanın dışında, orman güveni ile bağlı olmayan bir alandaki kaynaklara erişim için yararlıdır. Güvenlik, dış güvenlerle SID filtrelemesi ile artırılır.
|
||||
- **Ağaç-kök Güvenleri**: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Sıklıkla karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına ve iki yönlü geçişliliği sağlamalarına olanak tanır. Daha fazla bilgi [Microsoft'un kılavuzunda](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) bulunabilir.
|
||||
- **Ağaç-kök Güvenleri**: Bu güvenler, orman kök alanı ile yeni eklenen bir ağaç kökü arasında otomatik olarak kurulur. Genellikle karşılaşılmasa da, ağaç-kök güvenleri, yeni alan ağaçlarını bir ormana eklemek için önemlidir; bu, benzersiz bir alan adı korumalarına ve iki yönlü geçişliliği sağlamalarına olanak tanır. Daha fazla bilgi [Microsoft'un kılavuzunda](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) bulunabilir.
|
||||
- **Orman Güvenleri**: Bu tür bir güven, iki orman kök alanı arasında iki yönlü geçişli bir güven olup, güvenlik önlemlerini artırmak için SID filtrelemesi uygular.
|
||||
- **MIT Güvenleri**: Bu güvenler, Windows dışındaki [RFC4120 uyumlu](https://tools.ietf.org/html/rfc4120) Kerberos alanları ile kurulur. MIT güvenleri, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara yönelik daha özel bir yapıdadır.
|
||||
- **MIT Güvenleri**: Bu güvenler, Windows dışındaki, [RFC4120 uyumlu](https://tools.ietf.org/html/rfc4120) Kerberos alanları ile kurulur. MIT güvenleri, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara yönelik daha özel bir yapıdadır.
|
||||
|
||||
#### **Güvenen ilişkilerdeki diğer farklılıklar**
|
||||
|
||||
- Bir güven ilişkisi **geçişli** (A güveniyor B, B güveniyor C, o zaman A güveniyor C) veya **geçişli olmayan** olabilir.
|
||||
- Bir güven ilişkisi **geçişli** (A güveniyor B'ye, B güveniyor C'ye, o zaman A güveniyor C'ye) veya **geçişli olmayan** olabilir.
|
||||
- Bir güven ilişkisi **iki yönlü güven** (her ikisi de birbirine güvenir) veya **bir yönlü güven** (sadece biri diğerine güvenir) olarak kurulabilir.
|
||||
|
||||
### Saldırı Yolu
|
||||
@ -552,13 +552,13 @@ Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir olanıdır
|
||||
|
||||
Saldırganlar, başka bir alandaki kaynaklara erişim sağlamak için üç ana mekanizma kullanabilir:
|
||||
|
||||
- **Yerel Grup Üyeliği**: İlkeler, sunucudaki "Yönetici" grubu gibi makinelerde yerel gruplara eklenebilir ve bu da onlara o makine üzerinde önemli kontrol sağlar.
|
||||
- **Yabancı Alan Grup Üyeliği**: İlkeler, yabancı alandaki grupların da üyesi olabilir. Ancak, bu yöntemin etkinliği güvenin doğasına ve grubun kapsamına bağlıdır.
|
||||
- **Erişim Kontrol Listeleri (ACL'ler)**: İlkeler, belirli kaynaklara erişim sağlamak için bir **ACL**'de, özellikle bir **DACL** içindeki **ACE'ler** olarak belirtilmiş olabilir. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” başlıklı beyaz kağıt değerli bir kaynaktır.
|
||||
- **Yerel Grup Üyeliği**: İlkeler, makinelerdeki yerel gruplara eklenebilir; örneğin, bir sunucudaki “Yöneticiler” grubu, o makine üzerinde önemli kontrol sağlar.
|
||||
- **Yabancı Alan Grup Üyeliği**: İlkeler, yabancı alandaki grupların üyeleri de olabilir. Ancak, bu yöntemin etkinliği güvenin doğasına ve grubun kapsamına bağlıdır.
|
||||
- **Erişim Kontrol Listeleri (ACL'ler)**: İlkeler, belirli kaynaklara erişim sağlamak için bir **ACL**'de belirtilmiş olabilir; özellikle **DACL** içindeki **ACE'ler** olarak. ACL'ler, DACL'ler ve ACE'ler hakkında daha derinlemesine bilgi edinmek isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” başlıklı beyaz kağıt değerli bir kaynaktır.
|
||||
|
||||
### Dış kullanıcılar/gruplar ile izinleri bulma
|
||||
|
||||
**`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`**'yi kontrol ederek, alandaki yabancı güvenlik ilkelerini bulabilirsiniz. Bunlar, **bir dış alan/orman**'dan gelen kullanıcı/gruplardır.
|
||||
**`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`**'i kontrol ederek, alandaki yabancı güvenlik ilkelerini bulabilirsiniz. Bunlar, **bir dış alan/orman**'dan gelen kullanıcı/gruplardır.
|
||||
|
||||
Bunu **Bloodhound** veya powerview kullanarak kontrol edebilirsiniz:
|
||||
```powershell
|
||||
@ -594,8 +594,8 @@ nltest /dclist:sub.domain.local
|
||||
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
|
||||
```
|
||||
> [!WARNING]
|
||||
> **2 güvenilir anahtar** vardır, biri _Çocuk --> Ebeveyn_ ve diğeri _Ebeveyn_ --> _Çocuk_ için.\
|
||||
> Mevcut alan tarafından kullanılanı şu komutla alabilirsiniz:
|
||||
> İki **güvenilir anahtar** vardır, biri _Çocuk --> Ebeveyn_ ve diğeri _Ebeveyn_ --> _Çocuk_ için.\
|
||||
> Mevcut alan tarafından kullanılanı şu şekilde alabilirsiniz:
|
||||
>
|
||||
> ```bash
|
||||
> Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
|
||||
@ -610,19 +610,19 @@ SID-History enjeksiyonunu kullanarak çocuk/ebeveyn alanına Enterprise admin ol
|
||||
sid-history-injection.md
|
||||
{{#endref}}
|
||||
|
||||
#### Yazılabilir Yapılandırma NC'yi Sömürme
|
||||
#### Yazılabilir Konfigürasyon NC'yi Sömürme
|
||||
|
||||
Yapılandırma İsimlendirme Bağlamı (NC) nasıl sömürülebileceğini anlamak kritik öneme sahiptir. Yapılandırma NC, Active Directory (AD) ortamlarında bir orman genelinde yapılandırma verileri için merkezi bir depo işlevi görür. Bu veriler, ormandaki her Alan Denetleyicisi (DC) ile çoğaltılır ve yazılabilir DC'ler, Yapılandırma NC'nin yazılabilir bir kopyasını tutar. Bunu sömürmek için, bir DC üzerinde **SYSTEM ayrıcalıklarına** sahip olmak gerekir, tercihen bir çocuk DC.
|
||||
Konfigürasyon İsimlendirme Bağlamı (NC) nasıl sömürülebileceğini anlamak kritik öneme sahiptir. Konfigürasyon NC, Active Directory (AD) ortamlarında bir orman genelinde konfigürasyon verileri için merkezi bir depo işlevi görür. Bu veriler, ormandaki her Alan Denetleyicisi (DC) ile çoğaltılır ve yazılabilir DC'ler, Konfigürasyon NC'nin yazılabilir bir kopyasını tutar. Bunu sömürmek için, bir DC üzerinde **SYSTEM ayrıcalıklarına** sahip olmak gerekir, tercihen bir çocuk DC.
|
||||
|
||||
**GPO'yu kök DC alanına bağlama**
|
||||
|
||||
Yapılandırma NC'nin Siteler konteyneri, AD ormanındaki tüm alan bağlı bilgisayarların siteleri hakkında bilgi içerir. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile çalışan saldırganlar, GPO'ları kök DC alanlarına bağlayabilir. Bu eylem, bu alanlara uygulanan politikaları manipüle ederek kök alanı tehlikeye atabilir.
|
||||
Konfigürasyon NC'nin Siteler konteyneri, AD ormanındaki tüm alan bağlı bilgisayarların siteleri hakkında bilgi içerir. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile çalışan saldırganlar, GPO'ları kök DC alanlarına bağlayabilir. Bu eylem, bu sitelere uygulanan politikaları manipüle ederek kök alanı tehlikeye atabilir.
|
||||
|
||||
Derinlemesine bilgi için, [SID Filtrelemesini Aşma](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) üzerine araştırmalara göz atılabilir.
|
||||
|
||||
**Ormandaki herhangi bir gMSA'yı tehlikeye atma**
|
||||
|
||||
Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almaktır. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Root anahtarı, Yapılandırma NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile, KDS Root anahtarına erişmek ve ormandaki herhangi bir gMSA için şifreleri hesaplamak mümkündür.
|
||||
Bir saldırı vektörü, alan içindeki ayrıcalıklı gMSA'ları hedef almayı içerir. gMSA'ların şifrelerini hesaplamak için gerekli olan KDS Root anahtarı, Konfigürasyon NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıkları ile, KDS Root anahtarına erişmek ve ormandaki herhangi bir gMSA'nın şifrelerini hesaplamak mümkündür.
|
||||
|
||||
Ayrıntılı analiz ve adım adım rehberlik için:
|
||||
|
||||
@ -634,13 +634,13 @@ Ek dış araştırma: [Golden gMSA Güven Trust Saldırıları](https://improsec
|
||||
|
||||
**Şema değişikliği saldırısı**
|
||||
|
||||
Bu yöntem, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını bekleyerek sabır gerektirir. SYSTEM ayrıcalıkları ile, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verebilir. Bu, yetkisiz erişim ve yeni oluşturulan AD nesneleri üzerinde kontrol sağlama ile sonuçlanabilir.
|
||||
Bu yöntem, yeni ayrıcalıklı AD nesnelerinin oluşturulmasını bekleyerek sabır gerektirir. SYSTEM ayrıcalıkları ile, bir saldırgan AD Şemasını değiştirerek herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verebilir. Bu, yeni oluşturulan AD nesneleri üzerinde yetkisiz erişim ve kontrol ile sonuçlanabilir.
|
||||
|
||||
Daha fazla okuma için [Şema Değişikliği Güven Trust Saldırıları](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) üzerine göz atılabilir.
|
||||
|
||||
**DA'dan EA'ya ADCS ESC5 ile**
|
||||
|
||||
ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulama sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtar Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Yapılandırma NC içinde bulunduğundan, yazılabilir bir çocuk DC'yi tehlikeye atmak, ESC5 saldırılarının gerçekleştirilmesini sağlar.
|
||||
ADCS ESC5 açığı, ormandaki herhangi bir kullanıcı olarak kimlik doğrulama sağlayan bir sertifika şablonu oluşturmak için Kamu Anahtar Altyapısı (PKI) nesneleri üzerindeki kontrolü hedef alır. PKI nesneleri Konfigürasyon NC içinde bulunduğundan, yazılabilir bir çocuk DC'yi tehlikeye atmak, ESC5 saldırılarının gerçekleştirilmesini sağlar.
|
||||
|
||||
Bununla ilgili daha fazla ayrıntı [DA'dan EA'ya ESC5 ile](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) adresinde okunabilir. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu, [Çocuk Alan Yöneticilerinden Kurumsal Yöneticilere Yükselme](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) başlığında tartışılmıştır.
|
||||
|
||||
@ -673,18 +673,18 @@ TrustDirection : Outbound --> Outbound trust
|
||||
WhenCreated : 2/19/2021 10:15:24 PM
|
||||
WhenChanged : 2/19/2021 10:15:24 PM
|
||||
```
|
||||
Bu senaryoda **domaininiz**, **farklı domainlerden** bir **prensipe** bazı **ayrımcı yetkiler** vermektedir.
|
||||
Bu senaryoda **domaininiz**, **farklı domainlerden** bir **prensipe** bazı **yetkiler** **veriyor**.
|
||||
|
||||
Ancak, bir **domain, güvenilen domain** tarafından güvenildiğinde, güvenilen domain **tahmin edilebilir bir isimle** bir **kullanıcı oluşturur** ve bu kullanıcı **güvenilen şifreyi** kullanır. Bu, **güvenilen domain içindeki bir kullanıcıya erişim sağlamak için güvenilen domainin bir kullanıcısına erişmenin mümkün olduğu** anlamına gelir; bu da onu listelemek ve daha fazla yetki artırmaya çalışmak için bir fırsat sunar:
|
||||
Ancak, bir **domain, güvenilen domain** tarafından **güvenilir** olduğunda, güvenilen domain **tahmin edilebilir bir isimle** bir **kullanıcı oluşturur** ve bu kullanıcı **güvenilen şifreyi** **şifre** olarak kullanır. Bu, **güvenilen domain içindeki bir kullanıcıya erişim sağlamak için güvenen domain'den** **giriş yapmanın** mümkün olduğu anlamına gelir; bu da onu listelemeye ve daha fazla yetki yükseltmeye çalışmaya olanak tanır:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-one-way-outbound.md
|
||||
{{#endref}}
|
||||
|
||||
Güvenilen domaini tehlikeye atmanın bir başka yolu, **domain güveni** yönünde **oluşturulmuş bir [**SQL güvenilir bağlantısı**](abusing-ad-mssql.md#mssql-trusted-links)** bulmaktır (bu pek yaygın değildir).
|
||||
Güvenilen domaini tehlikeye atmanın bir başka yolu, **domain güveni** yönünde **oluşturulmuş bir [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links)** bulmaktır (bu pek yaygın değildir).
|
||||
|
||||
Güvenilen domaini tehlikeye atmanın bir başka yolu, **güvenilen domainin bir kullanıcısının erişebileceği** bir makinede beklemektir; bu sayede **RDP** üzerinden oturum açabilir. Ardından, saldırgan RDP oturum süreci içinde kod enjekte edebilir ve **kurbanın orijinal domainine** buradan erişebilir.\
|
||||
Ayrıca, eğer **kurban sabit diskini bağladıysa**, saldırgan **RDP oturumu** sürecinden **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılmaktadır.
|
||||
Güvenilen domaini tehlikeye atmanın bir başka yolu, **güvenilen domain'den bir kullanıcının erişebileceği** bir makinede beklemektir. Ardından, saldırgan RDP oturum sürecine kod enjekte edebilir ve **kurbanın orijinal domainine** buradan erişebilir.\
|
||||
Ayrıca, eğer **kurban sabit diskini bağladıysa**, saldırgan **RDP oturumu** sürecinden **sabit diskin başlangıç klasörüne** **arka kapılar** depolayabilir. Bu teknik **RDPInception** olarak adlandırılır.
|
||||
|
||||
{{#ref}}
|
||||
rdp-sessions-abuse.md
|
||||
@ -694,12 +694,12 @@ rdp-sessions-abuse.md
|
||||
|
||||
### **SID Filtreleme:**
|
||||
|
||||
- Orman güvenleri arasında SID geçmişi niteliğini kullanan saldırıların riski, varsayılan olarak tüm ormanlar arası güvenlerde etkinleştirilen SID Filtreleme ile azaltılmaktadır. Bu, Microsoft'un görüşüne göre ormanların güvenlik sınırı olarak kabul edilmesi nedeniyle, orman içi güvenlerin güvenli olduğu varsayımına dayanmaktadır.
|
||||
- Ancak, bir sorun var: SID filtreleme, uygulamaları ve kullanıcı erişimini etkileyebilir, bu da zaman zaman devre dışı bırakılmasına yol açabilir.
|
||||
- Orman güvenleri boyunca SID geçmişi niteliğini kullanan saldırıların riski, varsayılan olarak tüm ormanlar arası güvenlerde etkin olan SID Filtreleme ile azaltılmaktadır. Bu, Microsoft'un görüşüne göre ormanların güvenlik sınırı olarak kabul edilmesi nedeniyle, orman içi güvenlerin güvenli olduğu varsayımına dayanmaktadır.
|
||||
- Ancak, bir sorun var: SID filtreleme, uygulamaları ve kullanıcı erişimini etkileyebilir, bu da bazen devre dışı bırakılmasına yol açar.
|
||||
|
||||
### **Seçici Kimlik Doğrulama:**
|
||||
|
||||
- Ormanlar arası güvenler için Seçici Kimlik Doğrulama kullanmak, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasını sağlamaz. Bunun yerine, güvenilen domain veya orman içindeki domainlere ve sunuculara erişim için açık izinler gereklidir.
|
||||
- Ormanlar arası güvenler için Seçici Kimlik Doğrulama kullanmak, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasını sağlamaz. Bunun yerine, güvenen domain veya orman içindeki domainlere ve sunuculara erişim için açık izinler gereklidir.
|
||||
- Bu önlemlerin, yazılabilir Yapılandırma İsimlendirme Bağlamı (NC) istismarına veya güven hesaplarına yönelik saldırılara karşı koruma sağlamadığını belirtmek önemlidir.
|
||||
|
||||
[**Domain güvenleri hakkında daha fazla bilgi için ired.team'i ziyaret edin.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
@ -716,27 +716,27 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
|
||||
### **Kimlik Bilgisi Koruma için Savunma Önlemleri**
|
||||
|
||||
- **Domain Yöneticileri Kısıtlamaları**: Domain Yöneticilerinin yalnızca Domain Denetleyicilerine giriş yapmalarına izin verilmesi önerilir; diğer hostlarda kullanılmamalıdır.
|
||||
- **Hizmet Hesabı Yetkileri**: Hizmetler, güvenliği sağlamak için Domain Yöneticisi (DA) yetkileri ile çalıştırılmamalıdır.
|
||||
- **Geçici Yetki Sınırlaması**: DA yetkileri gerektiren görevler için süreleri sınırlı olmalıdır. Bu, `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` ile gerçekleştirilebilir.
|
||||
- **Domain Admins Kısıtlamaları**: Domain Admins'in yalnızca Domain Controller'lara giriş yapmasına izin verilmesi önerilir, diğer hostlarda kullanılmamalıdır.
|
||||
- **Hizmet Hesabı Yetkileri**: Hizmetler, güvenliği korumak için Domain Admin (DA) yetkileri ile çalıştırılmamalıdır.
|
||||
- **Geçici Yetki Sınırlaması**: DA yetkileri gerektiren görevler için süreleri sınırlı olmalıdır. Bu, şu şekilde gerçekleştirilebilir: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
|
||||
### **Aldatma Tekniklerinin Uygulanması**
|
||||
### **Aldatma Tekniklerini Uygulama**
|
||||
|
||||
- Aldatma uygulamak, şifrelerin süresiz olduğu veya Delegasyon için Güvenilir olarak işaretlendiği sahte kullanıcılar veya bilgisayarlar gibi tuzaklar kurmayı içerir. Detaylı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek yetkili gruplara eklemeyi içerir.
|
||||
- Pratik bir örnek, `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose` gibi araçlar kullanmaktır.
|
||||
- Aldatma tekniklerinin uygulanması hakkında daha fazla bilgi [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) adresinde bulunabilir.
|
||||
- Pratik bir örnek, şu araçları kullanmayı içerir: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
|
||||
- Aldatma tekniklerini dağıtma hakkında daha fazla bilgi [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) adresinde bulunabilir.
|
||||
|
||||
### **Aldatmayı Tanımlama**
|
||||
|
||||
- **Kullanıcı Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturulma tarihleri ve düşük hatalı şifre sayıları bulunmaktadır.
|
||||
- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak, tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar, bu tür aldatmaları tanımlamada yardımcı olabilir.
|
||||
- **Kullanıcı Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturulma tarihleri ve düşük kötü şifre sayıları bulunur.
|
||||
- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek nesnelerin özellikleriyle karşılaştırmak, tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar, bu tür aldatmaları tanımlamaya yardımcı olabilir.
|
||||
|
||||
### **Algılama Sistemlerini Aşma**
|
||||
|
||||
- **Microsoft ATA Algılama Aşma**:
|
||||
- **Kullanıcı Sayımı**: ATA algılamasını önlemek için Domain Denetleyicilerinde oturum sayımından kaçınmak.
|
||||
- **Kullanıcı Sayımı**: ATA algılamasını önlemek için Domain Controller'larda oturum sayımından kaçınmak.
|
||||
- **Bilet Taklidi**: Bilet oluşturmak için **aes** anahtarlarını kullanmak, NTLM'ye düşmeden algılamadan kaçınmaya yardımcı olur.
|
||||
- **DCSync Saldırıları**: ATA algılamasından kaçınmak için bir Domain Denetleyicisinden değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Domain Denetleyicisinden yürütme, uyarıları tetikler.
|
||||
- **DCSync Saldırıları**: ATA algılamasından kaçınmak için bir Domain Controller'dan değil, başka bir yerden yürütme yapılması önerilir; çünkü doğrudan bir Domain Controller'dan yürütme, uyarıları tetikler.
|
||||
|
||||
## Referanslar
|
||||
|
||||
|
||||
@ -9,13 +9,13 @@ Windows Yönetilen Hizmet Hesapları (MSA), parolalarını manuel olarak yönetm
|
||||
1. **gMSA** – grup Yönetilen Hizmet Hesabı – `msDS-GroupMSAMembership` niteliğinde yetkilendirilmiş birden fazla ana bilgisayarda kullanılabilir.
|
||||
2. **dMSA** – devredilmiş Yönetilen Hizmet Hesabı – gMSA'nın (önizleme) halefidir, aynı kriptografiye dayanır ancak daha ayrıntılı devretme senaryolarına izin verir.
|
||||
|
||||
Her iki varyant için de **parola her Domain Controller (DC)** üzerinde düzenli bir NT-hash gibi **saklanmaz**. Bunun yerine her DC, mevcut parolayı anlık olarak aşağıdaki üç girdiden **türetebilir**:
|
||||
Her iki varyant için de **parola her Domain Controller (DC)** üzerinde düzenli bir NT-hash gibi **saklanmaz**. Bunun yerine her DC, mevcut parolayı anlık olarak aşağıdakilerden türetebilir:
|
||||
|
||||
* Orman genelinde **KDS Kök Anahtarı** (`KRBTGT\KDS`) – her DC'ye `CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …` konteyneri altında çoğaltılan rastgele oluşturulmuş GUID adında bir sır.
|
||||
* Orman genelinde **KDS Kök Anahtarı** (`KRBTGT\KDS`) – her DC'ye `CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …` konteyneri altında çoğaltılan rastgele oluşturulmuş GUID adlı gizli anahtar.
|
||||
* Hedef hesap **SID**.
|
||||
* `msDS-ManagedPasswordId` niteliğinde bulunan her hesap için bir **ManagedPasswordID** (GUID).
|
||||
|
||||
Türevleme işlemi: `AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )` → 240 baytlık blob nihayetinde **base64-şifrelenir** ve `msDS-ManagedPassword` niteliğinde saklanır. Normal parola kullanımı sırasında Kerberos trafiği veya alan etkileşimi gerekmemektedir – bir üye ana bilgisayar, üç girdi bilindiği sürece parolayı yerel olarak türetebilir.
|
||||
Türevleme: `AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )` → 240 baytlık blob nihayetinde **base64-şifrelenir** ve `msDS-ManagedPassword` niteliğinde saklanır. Normal parola kullanımı sırasında Kerberos trafiği veya alan etkileşimi gerekmemektedir – bir üye ana bilgisayar, üç girdi bilindiği sürece parolayı yerel olarak türetebilir.
|
||||
|
||||
## Golden gMSA / Golden dMSA Saldırısı
|
||||
|
||||
@ -25,7 +25,7 @@ Bir saldırgan, tüm üç girdi **çevrimdışı** elde edebilirse, **orman içi
|
||||
* LDAP okuma denetimi
|
||||
* Parola değiştirme aralıkları (önceden hesaplayabilirler)
|
||||
|
||||
Bu, hizmet hesapları için bir *Golden Ticket* ile benzerlik göstermektedir.
|
||||
Bu, hizmet hesapları için bir *Golden Ticket* ile benzerlik gösterir.
|
||||
|
||||
### Ön Koşullar
|
||||
|
||||
@ -35,7 +35,7 @@ Bu, hizmet hesapları için bir *Golden Ticket* ile benzerlik göstermektedir.
|
||||
|
||||
### Aşama 1 – KDS Kök Anahtarını Çıkar
|
||||
|
||||
Herhangi bir DC'den döküm alın (Hacim Gölge Kopyası / ham SAM+SECURITY hives veya uzaktan sırlar):
|
||||
Herhangi bir DC'den döküm (Hacim Gölgeleme Kopyası / ham SAM+SECURITY hives veya uzaktan gizli anahtarlar):
|
||||
```cmd
|
||||
reg save HKLM\SECURITY security.hive
|
||||
reg save HKLM\SYSTEM system.hive
|
||||
@ -74,7 +74,7 @@ Bu nedenle, her hesap için **dar bir kelime listesi** (± birkaç saat) gerçek
|
||||
```powershell
|
||||
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
|
||||
```
|
||||
Araç, aday şifreleri hesaplar ve bunların base64 blob'unu gerçek `msDS-ManagedPassword` niteliği ile karşılaştırır - eşleşme doğru GUID'i ortaya çıkarır.
|
||||
Arac, aday şifreleri hesaplar ve bunların base64 blob'unu gerçek `msDS-ManagedPassword` niteliği ile karşılaştırır – eşleşme doğru GUID'i ortaya çıkarır.
|
||||
|
||||
### Aşama 4 – Çevrimdışı Şifre Hesaplama ve Dönüştürme
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user