Kerberos Double Hop Problem

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

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.

Bir kimlik doğrulaması Kerberos üzerinden gerçekleştiğinde, kimlik bilgileri bellekte önbelleğe alınmaz. Bu nedenle, mimikatz'ı çalıştırırsanız, kullanıcının makinedeki kimlik bilgilerini bulamazsınız bile o kullanıcı işlemler çalıştırıyorsa.

Bu, Kerberos ile bağlandığınızda şu adımların izlendiği için olur:

  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, TGT'yi kullanarak Server1'e bağlanmak için bir hizmet biletiği isteğinde bulunur.

  3. Kullanıcı1, Server1'e bağlanır ve hizmet biletiğini sağlar.

  4. Server1, Kullanıcı1'in kimlik bilgilerini önbelleğe almaz veya Kullanıcı1'in TGT'sini bulundurmaz. Bu nedenle, Server1'den ikinci bir sunucuya giriş yapmaya çalıştığında, kimlik doğrulamasını gerçekleştiremez.

Kısıtlanmamış Delege

Eğer PC'de kısıtlanmamış delege etkinse, bu olmaz çünkü Sunucu, ona erişen her kullanıcının bir TGT'sini alır. Dahası, kısıtlanmamış delege kullanılıyorsa muhtemelen Etki Alanı Denetleyicisini tehlikeye atabilirsiniz. Kısıtlanmamış delege sayfasında daha fazla bilgi.

CredSSP

Bu sorunu önlemenin başka bir yolu da önemli derecede 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 devreder. Bu uygulama, uzak işlemin güvenlik riskini artırır. Uzak bilgisayar tehlikeye atıldığında, kimlik bilgileri ona iletildiğinde, 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ı kesinlikle önerilir. CredSSP'nin etkin olup olmadığını belirlemek için Get-WSManCredSSP komutu çalıştırılabilir. Bu komut, CredSSP durumunu kontrol etmeye olanak tanır ve hatta WinRM etkinse uzaktan çalıştırılabilir.

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

Çözümler

Komut Çağırma

Çift atlama sorununu ele almak için, iç içe geçmiş bir Invoke-Command yöntemi sunulmaktadır. Bu doğrudan sorunu çözmez ancak özel yapılandırmalara ihtiyaç duymadan bir çözüm sunar. Bu yaklaşım, bir komutu (hostname) başlangıç saldıran makineden yürütülen bir PowerShell komutu veya önceden kurulmuş bir PS-Session aracılığıyla ilk sunucuyla ikincil bir sunucuda 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}
}

Kayıt PSSession Yapılandırması

Çift atlama sorununu atlamak için bir çözüm, Register-PSSessionConfigurationEnter-PSSession ile kullanmaktır. 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 isteklerin bir son sunucuya gönderilmesine izin verir. netsh kullanılarak, bir port yönlendirme kuralı eklenir ve yönlendirilen portu izin veren 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 algılanabilir bir seçenek olarak WinRM isteklerini iletmek için 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, özellikle jump box senaryoları için kullanışlı olan çift atlama sorununa bir çözüm sağlar. Bu yöntem, Windows için OpenSSH'nin CLI kurulumunu ve yapılandırmasını gerektirir. Parola Kimliği Doğrulaması için yapılandırıldığında, bu, 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ı açı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 herkesin okuma ve çalıştırma erişimine izin vermek için güncellenmesi gerekebilir.

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

Referanslar

Sıfırdan kahraman olana kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

Last updated