Tryhackme-Active Directory Basics
Çoğumuzun da bildiği üzere Active Directory basitçe ortamımızdaki bilgisayarların yönetimini daha kolay yapabilmemiz için kullanılan bir ağaç yapısıdır. Bu ne demek derseniz de ortamımızdaki kullanıcıları ortak gruplarda gruplayıp özel sınırlamalar ve kurallar tanımlayabilmemize olanak sağlayan bir yönetim aracının genel adıdır diyebiliriz. Active directory(AD)’nin yönetimi Domain controller dediğimiz özelleştirilmiş bir sunucu üzerinden yapılır. DC Active Directory Domain Services (AD DS)’i içerir ve tüm domainin merkezidir. DC bu anlamda tüm domain’i yönettiği için domainimiz için hayati bir öneme sahiptir. Tryhackme’nin bu odasında AD temellerini öğreniyoruz. Bir sonraki yazımda Active Directory odasındaki makineyi çözeceğiz.
Task1 zaten okudum anladım şeklinde geçilebiliyor. Gelelim Task2'ye:
Task 2 : Physical Active Directory
Bir şirket ortamında sunucularımız ya sanal ya da fizikseldir. Aynı şekilde domain controllerımızı da hem sanal bir windows sunucu üstüne hem de direkt olarak fiziksel bir sunucu üstüne kurabiliriz.
Bir önceki bölümde de birazcık bahsettiğim AD DS Data Store dedğimiz database’i içeren bir bölüm var domain controllerda.
AD DS Data Store aşağıdaki parçaları içerir;
- NTDS.dit : Parolaların hashleri dahil tüm aktif dizin (Active Directory) bilgilerini içeren veritabanı.
- Defaultta NTDS.dit %SystemRoot%\NTDS altında bulunur ve sadece domain controller buraya erişebilir.
Question: What database does the AD DS contain?
Answer: NTDS.dit
Question: Where is the NTDS.dit stored?
Answer: %SystemRoot%\NTDS
Question: What type of machine can be a domain controller?
Answer : windows server
Task 3 : The Forest
Forest dediğimiz yapı network ve domaini konuşturabilmemize olanak sağlar.
Forest dediğimiz yapı sadece soyut bir benzetmeden fazlasıdır ve çok işimizi kolaylaştırır.
Bir forest bir ya da birden fazla domain ağacını içeren bir yapıdır. Bir forest birçok alt yapıdan oluşur. Bu yapıları sıralarsak;
- Ağaçlar (Trees): Domainlerin hiyerarşisidir.
- Domainler : Objeleri gruplandırıp yönettimiz yapılardır.
- Organizational Units (OUs): Grupların, bilgisayarların ve kullanıcıların bulunduğu konteynırlardır.
- Objeler : AD’deki herşey diyebiliriz. Buna kullanıcılar, gruplar, yazıcılar, bilgisayarlar dahildir.
- Domain servisleri: DNS servre, LLMNR, IPv6
- Domain Schema: Obje yaratırken kullanılan kurallar
Question: What is the term for a hierarchy of domains in a network?
Answer: tree
Question: What is the term for rules for object creation?
Answer: domain schema
What is the term for containers for groups, computers, users, printers, and other OUs?
answer: organizational units
Task 4: Users + Groups
Aktif dizini ilk kurduğumuz zaman bize iki default kullanıcı ile gelir; Administrator ve Guess. Yeni grup ve kullanıcıları da ihtiyaca göre ekleriz.
Aktif dizinde temelde 4 tür kullanıcı bulunur. Bunlar;
- Domain admins: Tabiri caizse büyük patron. Bir saldırgan içi bu yetkiye erişmek paha biçilemez. Domaini yöneten ve domain controller’a erişen tek kişidir.
- Service accounts : Servislerin kullanımı için özelleşmiş hesaplardır. Her türlü yetkiye sahip olabileceği gibi genellikle o servisi yönetmek için kullanılan hesaptır. Bu yüzden yetkili hesap dediğimiz gruba dahildir. Konuyu dağıtmak istemem ama PAM dediğimiz yetkili hesapların yönetimi kısmında bu hesapların da yönetilmesi gerekir. Örneğin sistemimizde bir sandbox var ve bunun parola yönetimini normal domain hesabı gibi yapmamamız gereken durumlar olabilir. Tabi bu servis hesabı domain admin yetkisinde de olabilir.
- Local Administrators : Sunucu ya da istemci tarafında tüm domainin admini olmasına gerek kalmadan sadece o sunucudaki yönetici yetkisine sahip olması gereken hesaplardır. Diyelim ben bir local adminim ama domain admin değilim. Bu durumda o makinede visual studio’yu yükleyebilirim ama tüm domaini yönetmiyor olurum.
- Domain users: Bu kullanılar standart kullanıcılardır. Bilgisayarı kullanır ama önemli programları kuramaz ya da registry editöre erişemez. Tabi tüm kullanıcılar bu kümeye dahildir. Yani matematiksel olarak söylersek domain users o domaindeki evrensel kümedir diyebiliriz.
Gruplara genel bir bakış atalım;
AD’nin gruplarını ihtiyaca göre özelleştiririz ancak en genel ifadeyle 2 temel grup bulunur;
- Security groups: İzinleri kontrol etmemizi sağlayan gruptur. Örneğin bir file serverım olsun. Buna kimlerin erişebileceğinin iznini burada veriririm.
- Distribution Groups: email dağıtım grubu diyebiliriz. Saldırgan için bir numaralı hedef değildir ama genel yapı hakkında bilgi edinmek için önemlidir.
Varsayılan güvenlik grupları- Default Security Groups’a bir göz atalım.
Daha önce de yazdığım gibi gruplarda özelleştirme yapabiliriz ancak temelde kullanılan security grupları vardır. Bunlar şöyle sıralanabilir;
- Domain Controllers: Domaindeki tüm domain controller’ların yer aldığı gruptur.
- Domain Guests
- Domain Users
- Domain Computers
- Domain Admins
- Enterprise admins: Özelleşmiş domain adminleridir. Daha havalıdır :)
- Schema admins: schema’nın özelleştirilmiş adminleridir.
- DNS admins
- DNS update proxy
- Allowed RODC Password Replication Group: domain controller’larda read-only yetkisine sahip kullancılar
- Group policy Creator Owners: Bu grubun üyeleri grup policyleri değiştirebilir ve yeniden ekleyebilirler.
- Protected Users: Bu grup üyeleri güvenlik tehditlerine karşı ekstra koruma politikalarına tabidir.
- Cert Publishers:
- …
Question: Which type of groups specify user permissions?
Answer: security groups
Question: Which group contains all workstations and servers joined to the domain?
Tüm makinelerin ait olduğu grubu soruyor.
Answer: domain computers
Question: Which group can publish certificates to the directory?
Answer: cert publishers
Question: Which user can make changes to a local machine but not to a domain controller?
Answer: local administrators
Question: Which group has their passwords replicated to read-only domain controllers?
Answer: Allowed RODC Password Replication Group
Task 5: Trusts +Policies
Trusts ve politikalar domain ve domaindeki ağaçların güvenli bir şekilde ilişki kurmalarını sağlar.
Burada bazı terimlerin direkt çevirisini konunun asıl bağlamından kopmamak için yazmıyorum. Neyse, konumuza dönelim.
Trusts aslında domaindeki kaynaklara erişim için kullanılan mekanizmayı tanımlar. Domaindeki kaynakların güvenli konuşmasında görev aldığı gibi bazen dış kaynaklara erişimde de çalışır.
Temelde 2 tür trusts bulunur.
- Directional: Güvenilir (trusted) domainden güvenilir domaine çalışır.
- Transitive : 2 domainden fazlasını içerir.
AD ortamındaki bir saldırıda domain ve ağaçların iletişimindeki datalar önemlidir. Bu datalar kullanılarak yatayda geçiş (Lateral movement) yapılabilir.
Biraz da politikalara bakalım. Politikalar AD için hayati öneme sahiptir. Politikaları makineleri gruplayıp kullanırız. Bu anlamda domain grupları gibi de düşünebiliriz.
Diyelim DLP ve sandbox sunucularımız olsun. Burada Windows Defender inaktif olsun istiyoruz. Bunları ortak grupta disabled duruma getirip politika uygularız.
Question: What type of trust flows from a trusting domain to a trusted domain?
Answer: Directional
Question: What type of trusts expands to include other trusted domains?
Answer: Transitive
Task 6 : Active Directory Domain Services + Authentication
AD DS, AD’deki temel fonksiyonları ifade eder. AD DS’nin yaptığı temel şeylere bakacak olursak,
- Domainin yönetimini sağlarlar,
- Güvenlik sertifikalarının yönetimini sağlarlar
- LDAP yönetimini sağlarlar, vs vs …
Kısaca açıklamak gerekirse LDAP, Lightweight Directory Access Protocol, uygulamalarla directory servisleri arasındaki iletişimi sağlayan protokoldür.
Hadi biraz detaya girelim…
AD’de iki temel authentication metod vardır.
- NTLM : şifreli challenge/response protokolünü kullanır
- Kerberos : Ticket sistemini kullanır.
Başka bir yazımda daha detaylı anlatacağım. Sadece Golden ticket attack gibi saldırıların bu yöntemlerin zayıflıklarına saldırdıklarını bilelim şimdilik.
Question: What type of authentication uses tickets?
Answer: Kerberos
Question: What domain service can create, validate, and revoke public key certificates?
Answer: Certificate Services
Task 7: AD in the Cloud
Zaten işlerin artık büyük oranda bulutta olduğunu söylemeye gerek yok. Ülkemizde bu anlamda hala ciddi eksik var. Bu eksiklik negatiflik midir yoksa ihtiyatlı olmak mıdır tartışılır ama Pentagon’un bile buluta geçmeye başladığını da görüyoruz.
Bulut diyince karşımıza tabi ki Azure geliyor.
Azure burada fiziksel AD ile kullanıcıların arasında bulunur.
Bu sayede saldırganların AD saldırılarının çoğunu kesmiş olur.
Windows sunucudaki servislerin Azure AD’deki karşılıklarını aşağıda görebilirsiniz.
Windows Server AD Azure AD
LDAP — — — -> Rest APIs
NTLM — — —>OAuth/SAML
Kerberos — — ->OpenID
OUTree — — — ->Flat Structure
Domains and Forests — ->Tenants
Trusts — — — — ->Guests
Question: What is the Azure AD equivalent of LDAP?
Answer: Rest APIs
Question: What is the Azure AD equivalent of Domains and Forests?
Answer: Tenants
Question: What is the Windows Server AD equivalent of Guests?
Answer: Trusts
Task 8 : Hands-On Lab
- PowerView kurulumunu yapalım. Hedef makineme ssh atıyorum.
ssh Administrator@10.10.254.206
Parolamı giriyorum ve cd Downloads diyip PowerView’in olduğu bölüme geliyorum. Zaten dir komutu ile Downloads klasöründe daha neler olduğuna bakanilirim.
Kısaca komutlarımız şu şekilde olacak.
- cd Downloads
- powershell -ep bypass →powershelle geçmek için
- . .\PowerView.ps1 → PowerView modulunu import etmek için
PowerView ile AD hakkında istediğimiz bilgiyi çekebiliriz.
Google’a PowerView cheatsheet yazarak kullanışlı kullanımları bulabilirsiniz.
Ben aşağıdaki adresi kullanarak güzel bilgiler çektim;
Get-NetDomain komutuyla DC’nin genel infosunu aldım mesela.
Konuyu çok dağıtmak istemiyorum ama derya deniz ben ne yapayım :)
Kısaca Kerberoasting attack’a bakalım: Servis hesaplarının kullanımında SPN ( Service Principal Name) kullanılır. SPN, servis örneğini servis üzerinde hesap açabilen bir hesapla ilişkilendirilirken Kerberos tarafından kullanılır. Böylece bir istemci SPN aracılığıyla servis bileti talep ederek servisten yararlanabilir.
Burada sorun SPN’nin nerede ve ne için kullanıldığına dair arkada iz bırakmasıdır. Bu bilgiler bir saldırganın işine gelecektir.
Kerberoasting attack servis hesaplarının parolalarını ele geçirmeyi hedefler. peki bunu nasıl yapar?
- Kullanıcı değerlerinin SPN değerleri taranarak servis hesapları tespit edilir.
- Elde edilen SPNlerle servis hesaoları için TGS bileti talep edilri.
- AD, SPN ile ilişkili servis hesabının parolasına ait NTLM hash değerlerini kullanarak bileti şifreler ve cevap olarak TGS bileti döndürür.
- SPN ile elde edilen TGS biletine ait veriler dışarı çıkarılır. Hopp bu hashler kullanılarak asıl parolalar bulunmaya çalışılır.
Get-NetUser -SPN ile kerberoastable usersı çekiyorum.
Burada işime yarayacak bilgiler buluyorum :)
Neyse, tryhackme sorularına göre gidelim :)
Question: What is the name of the Windows 10 operating system?
Bunun için şu komutu kullanıyorum:
Get-NetComputer -fulldata | select operatingsystem
Sonuç karşıma çıkıyor.
Question: What is the second “Admin” name?
Bunun için de;
Get-NetUser | select cn
komutunu kullanıyorum. Domaindeki tüm kullanıcıların isimlerini çektiğim bir komut.
Answer: Admin2
Question: Which group has a capital “V” in the group name?
Bunun için de;
Get-NetGroup -GroupName *V*
komutunu kullanıyorum.
Answer: Hyper-V Administrators
Question: When was the password last set for the SQLService user?
Bunun cevabını az önce bulmuştuk zaten.
Answer: 5/13/2020 8:26:58 PM
İlerleyen yazılarımda daha derine inmeyi planlıyorum. Genel olarak temel fikir sahibi olduğumuzu düşünüyorum.
Kaynaklar