Powershell Active Directory Penetrasyon Testleri

Bugünün farkındalığı, Yarının Güvenliğidir.

Powershell Active Directory Penetrasyon Testleri

  • Mevcut kullanıcıyı öğrenmek için:
  • whoami

Mevcut kullanıcı ayrıcalıklarını öğrenmek için:
whoami /priv

  • Kullanıcının ait olduğu grupları listelemek için:

whoami /groups

  • Tüm bilgileri görmek için:

whoami /all

  • Yerel kullanıcıları listelemek için:

Get-LocalUser

Kullanıcıların adlarını, etkin olup olmadıklarını ve son oturum açma zamanlarını görmek için:

Get-LocalUser | ft Name,Enabled,LastLogon

  • Hesap Policy ayarlarını listelemek için:

net accounts

  • Belirli bir yerel kullanıcı hakkında bilgi almak için:

net user administrator

  • Yerel grupları listelemek için:

Get-LocalGroup

Get-LocalGroup | ft Name

  • Grup üyelerini görüntülemek için:

Get-LocalGroupMember Administrators

Bu komutlar, Domain Admins grubunun Administrators grubunun bir üyesi olduğunu gösterir. Domain Admins grubu, genellikle bir etki alanı kurulduğunda otomatik olarak oluşturulan ve etki alanında en yüksek seviyede yöneticilik yetkilerine sahip olan bir gruptur. Saldırganlar, bu gruptaki bir kullanıcı hesabını veya grup üyeliğini ele geçirerek tüm etki alanı üzerinde tam kontrol sağlayabilirler.

Ağ hakkında bilgi toplamak için:

ipconfig /all

Ağ arayüzlerini ve IP yapılandırmalarını görmek için:

Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address

DNS yapılandırmasını öğrenmek için:

Get-DnsClientServerAddress -AddressFamily IPv4

Enumerate Domain

Etki Alanı Taraması

İlk önce PowerView.ps1 scriptine ihtiyacımız olacaktır. PowerShell varsayılan olarak betik çalıştırmayı engellediğinden bunu bypass etmemiz gerekiyor.

powershell -ep bypass

. .\PowerView.ps1

About PowerView.ps1:

PowerView.ps1 betiği, Windows etki alanları üzerinde ağ farkındalığı kazanmak için kullanılan bir PowerShell aracıdır. Windows’un çeşitli “net” komutlarına karşılık gelen PowerShell AD hook’ları ve Win32 API fonksiyonlarını kullanarak faydalı etki alanı işlevlerini yerine getirir.

Kaynak: https://powersploit.readthedocs.io/en/latest/Recon/

Etki Alanı Hakkında Bilgi Toplama

  • Mevcut etki alanını öğrenmek için:

Get-Domain

Mevcut alan adının, SECURITY.local üst alanının alt alanı olan Research.SECURITY.local olduğu görülmektedir. Alan Denetleyicisinin Tam Nitelikli Alan Adı (FQDN) prod.research.SECURITY.local‘dir.

Benzer şekilde, diğer alan adı, örneğin ana alan adı hakkında ayrıntılı bilgi alabilirsiniz:

Get-Domain -Domain SECURITY.local

  • Etki alanı güvenlik tanımlayıcısını (SID) almak için:

Get-DomainSID

Geçerli etki alanının Güvenlik Tanımlayıcısını (SID) alır. SID, etki alanları, kullanıcılar, gruplar ve bilgisayarlar da dahil olmak üzere Active Directory’deki her nesneye atanan benzersiz bir tanımlayıcıdır.

  • Etki alanı politika ayarlarını görüntülemek için:

Get-DomainPolicy

(Get-DomainPolicy).”SystemAccess”

(Get-DomainPolicy).”kerberospolicy”

  • Etki alanı denetleyicilerini listelemek için:

Get-DomainController

Get-DomainController -Domain SECURITY.local

Bu komutlar, geçerli etki alanının veya belirtilen etki alanının Etki Alanı Denetleyicisi (DC) hakkındaki ayrıntıları alır. DC’nin IP adresi de burada görülebilir.

Etki Alanı Kullanıcılarını Taramak

Etki alanı kullanıcılarını listelemek için:

Get-DomainUser

Get-DomainUser | select samaccountname, objectsid

  •  

Get-DomainUser -Identity WAYNE_GIBBS

Get-DomainUser -Identity WAYNE_GIBBS -Properties

Etki Alanı Bilgisayarlarını Taramak

Etki alanındaki bilgisayarları tarayalım.

  • Etki alanındaki bilgisayarları listelemek için:

Get-NetComputer

Get-NetComputer | select name

Get-NetComputer -Domain SECURITY.local | select cn, operatingsystem

Etki Alanı Gruplarını Taramak

Etki alanı gruplarını listeleyelim.

  • Etki alanındaki grupları listelemek için:

Get-NetGroup

Get-NetGroup | select name

  •  

Get-NetGroup ‘Domain Admins’

Get-NetGroupMember “Domain Admins” | select MemberName

Get-NetGroup -UserName “ELISE_GUZMAN” | select name

Etki Alanı Paylaşımlarını Taramak

Etki alanındaki paylaşımları tarayalım.

  • Bir bilgisayardaki paylaşımları bulmak için:

Find-DomainShare -ComputerName prod.research.SECURITY.local -verbose

Yukarıda görüldüğü gibi SYSVOL paylaşımı, Grup İlkesi Nesneleri (GPO‘lar) ve oturum açma komut dosyaları gibi alanla ilgili önemli veri ve dosyaların depolanmasından ve çoğaltılmasından sorumlu olduğundan önemli bir paylaşımdır. SYSVOL paylaşımı, Active Directory etki alanındaki her etki alanı denetleyicisinde otomatik olarak oluşturulur ve varsayılan olarak paylaştırılır. Etki alanı genelinde güvenlik politikalarını, yazılım dağıtımını ve diğer yapılandırma ayarlarını yönetmek için kullanılan GPO‘lar için merkezi bir depo görevi görür. Tüm etki alanı bilgisayarları, etki alanı politikalarını kontrol etmek için bu paylaşıma erişir.

  • Geçerli kullanıcının okuma erişimine sahip olduğu paylaşımları numaralandırma

Find-DomainShare -ComputerName prod.research.SECURITY.local -CheckShareAccess -verbose

  • Yerel ana bilgisayardaki etkin paylaşımları listeleyin:

Get-NetShare

GPO’ları ve OU’ları numaralandırma

Grup İlkesi Nesneleri (GPO’lar), bir etki alanı içindeki kullanıcı hesaplarının ve bilgisayar hesaplarının davranışlarını yönetmek ve kontrol etmek için kullanılır. Her GPO, etki alanındaki hedeflenen kullanıcı veya bilgisayarlara uygulanacak ayarların ve yapılandırmaların bir koleksiyonunu içerir. GPO’lar, Active Directory hiyerarşisindeki sitelere, etki alanlarına veya Organizasyon Birimlerine (OU’lara) bağlanarak kapsam ve hedefleme tanımlanabilir. GPO’ların yaygın kullanım alanları arasında masaüstü duvar kağıdını ayarlama, yazılım yüklemelerini yönetme, belirli özelliklere veya uygulamalara erişimi kısıtlama, güvenlik ayarlarını tanımlama gibi işlemler bulunur. GPO’lar, ayrıcalık yükseltme, arka kapı yerleştirme, kalıcılık sağlama gibi saldırılar için kötüye kullanılabilir.

Organizasyon Birimleri (OU’lar), Active Directory içinde kullanıcılar, bilgisayarlar, gruplar ve diğer kaynaklar gibi nesneleri düzenlemeye ve yönetmeye yardımcı olan kapsayıcılardır. Etki alanı içinde nesnelerin yönetimini ve ilke uygulamalarını kolaylaştırırlar. OU’lar oluşturarak, yöneticiler belirli kullanıcı veya bilgisayar gruplarına farklı GPO’lar uygulayabilir ve bu politikaları bu grupların ihtiyaçlarına göre uyarlayabilir. OU’lar, bir kuruluşun yapısını (departmanlar, coğrafi konumlar, işlevsel birimler vb.) temsil edebilir ve birbirlerinin içine yerleştirilebilir, böylece hiyerarşik bir organizasyon yapısı oluşturulabilir.

Geçerli etki alanındaki GPO’ların listesi:

Get-NetGPO

Get-NetGPO| select displayname

  • Geçerli etki alanındaki tüm kuruluş birimlerini alın:

Get-NetOU

Get-NetOU | select name, distinguishedname

Domain Trust & Forest Trust Tanımlama

Bir Active Directory ortamında, güven ilişkisi (trust), iki etki alanı veya Forest  arasında kurulan bir bağlantıyı ifade eder. Bu ilişki, bir etki alanındaki veya Forest daki kullanıcıların, diğer etki alanında veya Forest da bulunan kaynaklara erişimini sağlar. Etki Alanı Güveni (Domain Trust), aynı Forest  içinde veya ayrı Forest lar arasında bulunan etki alanları arasında kimlik doğrulamayı mümkün kılar, böylece kaynak paylaşımı ve işbirliği kolaylaştırılır. Forest  Güveni (Forest Trust) ise, bireysel etki alanlarının ötesine geçerek tüm Forest  altyapısını kapsayan bir güven ilişkisi sağlar, farklı Forest lardaki etki alanları arasında kimlik doğrulama ve kaynak erişimini mümkün kılar.

  • Geçerli etki alanı için tüm etki alanı güvenlerini listeleyin:

Get-NetDomainTrust

Bir alt etki alanı bir üst etki alanına eklendiğinde otomatik olarak oluşturulan çift yönlü bir Ebeveyn-çocuk güvenini görebiliriz.

Mevcut Forest ayrıntılarını alın:

Get-NetForest

Mevcut Forest ın adı SECURITY.local‘dır.

  • Trust Forest’i haritalandırma

Get-NetForestTrust

Mevcut Forest ile tech.local adlı farklı bir Forest arasında kurulmuş çift yönlü bir Trust Forest olduğu görülmektedir.

Get-NetForestTrust -Forest tech.local

  • Diğer Forest ayrıntılarını alma:

Get-NetForest -Forest tech.local

  • Geçerli Forest tüm etki alanlarını alma:

Get-NetForestDomain

Get-NetForestDomain -Forest tech.local

Get-DomainTrustMapping

Enumerate ACLs

Erişim Kontrol Listeleri (ACL’ler), bilgisayar sistemlerinde ve ağlarda kaynaklara erişimi düzenlemek için kullanılan güvenlik mekanizmalarıdır. ACL’ler, belirli bir kullanıcı veya grup için izinleri belirten bireysel girişlerden oluşan Erişim Kontrol Girişleri (ACE’ler) içerir. Her ACE, bir güvenlik öznesi (kullanıcı veya grup), verilen veya reddedilen belirli izinler ve ACE’nin bir üst nesneden mi miras alındığı yoksa mevcut nesneye mi özel olduğunu belirten bilgileri içerir. ACE’ler, yöneticilere farklı varlıklar için ince ayarlı izinler tanımlama olanağı sunarak kaynak erişimini ayrıntılı bir şekilde kontrol etmelerini sağlar. Saldırganlar, yanlış yapılandırılmış veya aşırı izin verilmiş ACL’leri kötüye kullanarak Active Directory’de ayrıcalıkları yükseltebilir, izinsiz erişim elde edebilir veya izinleri manipüle edebilirler.

  • Belirli bir nesneyle ilişkili ACL’leri listeleyin:

Get-ObjectAcl -SamAccountName “Users” -ResolveGUIDs

Get-DomainObjectAcl -Identity WAYNE_GIBBS -ResolveGUIDs

Find-InterestingDomainAcl -ResolveGUIDs

Find-InterestingDomainAcl -ResolveGUIDs | select IdentityReferenceName, ObjectDN, ActiveDirectoryRights

Get-ObjectAcl -SamAccountName WAYNE_GIBBS -ResolveGUIDs | ? {$_.ActiveDirectoryRights -eq “GenericAll”}

GenericAll’in genellikle nesne üzerinde tam kontrol sağlayan son derece hoşgörülü bir hak olduğunu unutmayın.

Kerberoastable hesapları bulun

Kerberoasting, Hizmet Asıl Adı (SPN) ile ilişkilendirilmiş bir Active Directory kullanıcı hesabının şifre karmasını almayı amaçlayan bir istismar sonrası saldırı tekniğidir. SPN, bir hizmeti Active Directory içindeki bir kullanıcı hesabına bağlayan bir özniteliktir. Kırılmış şifreler daha sonra yatay hareket, ayrıcalık yükseltme veya varlık için kullanılabilir.

Get-NetUser -SPN | select samaccountname, serviceprincipalname

AS-REP Roasting hesaplarını bulun

AS-REP roasting, Kerberos ön kimlik doğrulamasının devre dışı bırakıldığı kullanıcı hesaplarının şifre karmalarını elde etmek için kullanılan başka bir saldırgan tekniktir. Bu yöntem, saldırganların karmaları çalmasına ve ardından bunları çevrimdışı olarak kırmaya çalışmasına olanak tanır.

Get-NetUser -PreauthNotRequired | select samaccountname, useraccountcontrol

References

Yorum yapılmamış

Yorumunuzu ekleyin