hacktricks/windows-hardening/active-directory-methodology/kerberos-double-hop-problem.md
2024-02-10 18:14:16 +00:00

8.9 KiB
Raw Blame History

Kerberos Çift Atlama Sorunu

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile öğrenin!

Giriş

Kerberos "Çift Atlama" sorunu, bir saldırganın Kerberos kimlik doğrulamasını iki atlama üzerinden kullanmaya çalıştığında ortaya çıkar, örneğin PowerShell/WinRM kullanarak.

Kerberos ile kimlik doğrulama gerçekleştiğinde, kimlik bilgileri bellekte önbelleğe alınmaz. Bu nedenle, mimikatz çalıştırsanız bile, kullanıcının kimlik bilgilerini makinede bulamazsınız, hatta kullanıcı işlemler çalıştırıyorsa bile.

Bunun nedeni, Kerberos ile bağlantı kurulduğunda şu adımların izlenmesidir:

  1. Kullanıcı1 kimlik bilgilerini sağlar ve alan denetleyicisi Kullanıcı1'e bir Kerberos TGT döndürür.
  2. Kullanıcı1, Server1'e bağlanmak için bir hizmet biletiği talep etmek için TGT'yi kullanır.
  3. Kullanıcı1, Server1'e bağlanır ve hizmet biletiğini sağlar.
  4. Server1, Kullanıcı1'in kimlik bilgilerini veya Kullanıcı1'in TGT'sini önbelleğe almadığı için, Server1'den ikinci bir sunucuya giriş yapmaya çalıştığında, kimlik doğrulama yapamaz.

Sınırsız Delege

Eğer PC'de sınırsız delege etkinse, bu olmaz çünkü Sunucu, üzerine erişen her kullanıcının bir TGT alır. Dahası, sınırsız delege kullanılıyorsa, muhtemelen Etki Alanı Denetleyicisini etkileyebilirsiniz.
Sınırsız delege sayfasında daha fazla bilgi.

CredSSP

Bu sorunu önlemenin başka bir yolu da önemli ölçüde güvensiz olan Kimlik Güvenlik Destek Sağlayıcısı'dır. Microsoft'tan:

CredSSP kimlik doğrulaması, kullanıcı kimlik bilgilerini yerel bilgisayardan uzak bir bilgisayara aktarır. Bu uygulama, uzaktaki işlemin güvenlik riskini artırır. Uzak bilgisayar tehlikeye düştüğünde, kimlik bilgileri ona iletilirse, kimlik bilgileri ağ oturumunu kontrol etmek için kullanılabilir.

CredSSP'nin üretim sistemlerinde, hassas ağlarda ve benzeri ortamlarda güvenlik endişeleri nedeniyle devre dışı bırakılması şiddetle önerilir. CredSSP'nin etkin olup olmadığını belirlemek için Get-WSManCredSSP komutu çalıştırılabilir. Bu komut, CredSSP durumunun kontrol edilmesine olanak sağlar ve hatta WinRM etkinse uzaktan çalıştırılabilir.

Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
Get-WSManCredSSP
}

Çözümler

Invoke Command

Çift atlama sorununu çözmek için, iç içe geçmiş bir Invoke-Command yöntemi sunulmaktadır. Bu, sorunu doğrudan çözmez, ancak özel yapılandırmalara ihtiyaç duymadan bir çözüm sunar. Bu yaklaşım, birincil saldıran makineden veya önceden kurulmuş bir PS-Session ile ilk sunucudan bir PowerShell komutu (hostname) aracılığıyla ikincil bir sunucuda bir komutun (hostname) yürütülmesine izin verir. İşte nasıl yapılır:

$cred = Get-Credential ta\redsuit
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
}

Alternatif olarak, ilk sunucuyla bir PS-Session kurmak ve $cred kullanarak Invoke-Command çalıştırmak, görevleri merkezileştirmek için önerilir.

PSSession Yapılandırması Kaydetme

Çift atlama sorununu atlamak için Register-PSSessionConfiguration ve Enter-PSSession kullanarak bir çözüm önerilmektedir. Bu yöntem, evil-winrm'den farklı bir yaklaşım gerektirir ve çift atlama kısıtlamasından etkilenmeyen bir oturum sağlar.

Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
Restart-Service WinRM
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
klist

Port Yönlendirme

Ara bir hedef üzerindeki yerel yöneticiler için, port yönlendirme son sunucuya isteklerin gönderilmesine olanak sağlar. netsh kullanılarak, port yönlendirme için bir kural eklenir ve yönlendirilen portun izin verilmesi için bir Windows güvenlik duvarı kuralı eklenir.

netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446

winrs.exe

winrs.exe, PowerShell izleme endişesi varsa daha az tespit edilebilir bir seçenek olarak kullanılabilir. Aşağıdaki komut kullanımını göstermektedir:

winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname

OpenSSH

İlk sunucuya OpenSSH kurmak, çift atlama sorunu için özellikle atlamalı kutu senaryoları için kullanışlı bir çözüm sağlar. Bu yöntem, OpenSSH'nin Windows için CLI kurulumu ve yapılandırması gerektirir. Parola Kimlik Doğrulama için yapılandırıldığında, aracı sunucunun kullanıcı adına bir TGT almasına izin verir.

OpenSSH Kurulum Adımları

  1. En son OpenSSH sürümünü indirin ve zip dosyasını hedef sunucuya taşıyın.
  2. Zip dosyasınıın ve Install-sshd.ps1 betiğini çalıştırın.
  3. Port 22'yi açmak için bir güvenlik duvarı kuralı ekleyin ve SSH hizmetlerinin çalıştığını doğrulayın.

Bağlantı sıfırlandı hatalarını çözmek için, izinlerin OpenSSH dizininde herkese okuma ve çalıştırma erişimi sağlamak için güncellenmesi gerekebilir.

icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T

Referanslar

AWS hackleme konusunda sıfırdan kahramana dönüşmek için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!