Seth Aracı İle RDP MITM Saldırısı Gerçekleştirme

0
419
views
Uygun şekilde yapılandırılmamış ağlarda saldırgan, hedef olarak seçtiği bir bilgisayardan diğerine yapılan uzak masaüstü bağlantısı arasına girebilir ve trafiği izleyebilir. Bu yazıda, SySS-Research tarafından hazırlanan Seth betiği ile Windows uzak masaüstü bağlantısı arasına girilerek (MITM) hedef sisteme erişim için kullanılan açık metin kimlik bilgileri elde edilecektir.

Windows bir bilgisayara uzak masaüstü bağlantısı (Remote Desktop Connection) sağlamak için RDP (Remote Desktop Protocol) adlı protokol kullanılır. Windows işletim sistemlerinde bu terminal servisi varsayılan olarak TCP\3389 portundan çalışır ve kayıt defteri üzerinden ayarlanabilir.

HKEY_LOCAL_MACHINE –> System –> CurrentControlSet –> Control –> Terminal Server –> WinStations –> RDP-Tcp –> PortNumber: 3389 (Decimal – REG_DWORD)

Bir Windows işletim sisteminden bu servise bağlanmak için “mstsc.exe“, *NIX tabanlı sistemlerden bu servise bağlanmak için ise “rdesktop“, “xfreerdp” gibi araçlar kullanılabilir.

 

1) RDP Güvenlik Yöntemleri

RDP OSI modelinin 7. katmanında çalışır ve üçlü el sıkışma tamamlandıktan sonra başlar. Microsoft tarafından RDP güvenliği için 2 temel yöntem sunar:

  • Standard RDP Security (Native / Plain)
  • Enhanced RDP Security (TLS / CredSSP)

1.1) Standart RDP Güvenliği (Standard RDP Security)

Standart RDP Güvenliği ile yapılan uzak masaüstü bağlantısı klasik SSL iletişimine benzer. Kimlik doğrulama ve anahtar değişimi için RSA asimetrik şifreleme algoritması kullanılır.

Standart RDP Güvenliği ile gerçekleştirilen iletişimde sunucu sertifikası Terminal Services Signing Key ile imzalanmıştır. Bu sertifika internette Microsoft tarafından yayınlanmıştır.

 

Standart RDP Güvenliği kullanıldığında kimlik doğrulama ve anahtar değişimi için RSA kullanılırken, 5 şifreleme seviyesi bulunmaktadır. Bu seviyeler aşağıdaki gibi sıralanabilir.

  • Yok (None – 0): Uzak masaüstü bağlantısında şifreleme ve özetleme yapılmaz. SSL tüneli içerisinde olmasına rağmen, sunucu tarafında tercih edilen şifreleme seviyesidir.
  • Düşük (Low – 1): (Sadece) İstemciden terminal sunucuya giden trafik (tek yönlü), 40 / 56 / 128 bit uzunluğundaki bir anahtar ile RC4 algoritması kullanılarak şifreleme ve MD5 / SHA-1 algoritması kullanılarak özetleme yapılır.
  • İstemci Uyumlu (Client Compatible – 2): İstemci ve sunucu arasındaki trafik (çift yönlü), istemcinin desteklediği ve sunucu tarafından kabul edilen 40 / 56 / 128 bit uzunluğundaki bir anahtar ile RC4 algoritması kullanılarak şifreleme ve MD5 / SHA-1 algoritması kullanılarak özetleme yapılır.
  • Yüksek (High – 3): İstemci ve sunucu arasındaki trafik (çift yönlü), sunucunun sunduğu 128 bit uzunluğundaki bir anahtar ile RC4 algoritması kullanılarak şifreleme ve MD5 / SHA-1 algoritması kullanılarak özetleme yapılır.
  • Federal Information Processing Standard 140-1 (FIPS – 4): İstemci ve sunucu arasındaki trafik (çift yönlü), FIPS adlı standart ile doğrulanmış olan 3DES algoritması kullanılarak şifreleme ve SHA-1 algoritması kullanılarak özetleme yapılır.

1.2) Gelişmiş RDP Güvenliği (Enhanced RDP Security)

Gelişmiş RDP Güvenliği ile yapılan uzak masaüstü bağlantısı için özel bir SSL implementasyonu kullanılır. Uzak masaüstü trafiği kimlik bilgileri de dahil olmak üzere SSL tünel içerisinden geçer.

 

Gelişmiş RDP Güvenliği kullanıldığında, Standart RDP Güvenliği seviyesinde belirtilen teknikler yerine, şifreleme, şifre çözme, veri bütünlüğü kontrolü ve sunucu doğrulaması için başka teknikler kullanılır. Bu teknikler aşağıdaki gibi sıralanabilir.

  • TLS 1.0 (RFC2246): Windows NT, Windows 2000 Server, Windows XP, Windows Server 2003, Windows Vista ve Windows Server 2008 ve sonraki sürümler tarafından desteklenir.
  • TLS 1.1 (RFC4346): Windows Server 2008 R2 ve sonraki Windows sürümleri tarafından desteklenir.
  • TLS 1.2 (RFC5246): Windows Server 2008 R2 ve sonraki Windows sürümleri tarafından desteklenir.
  • CredSSP (MS-CSSP): TLS bağlantısı sağlandıktan sonra, şifreli trafik içerisinden Kerberos (etki alanında ise) veya NT LAN Manager (etki alanında değilse) ile kimlik doğrulaması sağlanır. Network Level Authentication (NLA) desteği sunar.
    • NTLM: Şifreli bağlantı içerisinde Challenge/Response ile kimlik doğrulaması gerçekleştirilir. Bu yöntemde parola doğrudan gönderilmez, Challenge/Response ile NTLMv2 kullanılarak kimlik doğrulaması sağlanır. NTLMv2 bilgileri ile Pass-The-Hash gibi saldırılar yapılamasa da bu kimlik bilgileri çevrimdışı hash kırma işlemi veya SMB relay için kullanılabilir.
    • Kerberos: Şifreli bağlantı içerisinde terminal servisi için alınan bilet (Service Ticket) ile kimlik doğrulaması gerçekleştirilir. Bu yöntem istemci ve sunucu aynı etki alanında ise kullanılabilir. İstemci, sunucunun servisine bağlanmak için servis biletini alır ve sunucuya gönderir. Sunucuda da bu bilet doğrulanır.
  • RDSTLS: Sunucu kimlik doğrulama, şifreleme, şifre çözme ve veri bütünlüğü kontrolleri, TLS güvenlik protokolünü kullanarak gerçekleştirilirken, kullanıcı kimlik doğrulaması, doğrudan TLS anlaşmasının ardından RDSTLS PDU’larını değiştirerek gerçekleştirilir.

Gelişmiş RDP Güvenliği kullanıldığında 3 şifreleme seviyesi bulunmaktadır. Bu seviyeler aşağıdaki gibi sıralanabilir.

  • İstemci Uyumlu (Client Compatible): İstemci ve sunucu arasındaki trafik (çift yönlü), istemcinin desteklediği ve sunucu tarafından kabul edilen güvenlik protokollerinden en güçlüsü kullanılarak yapılır.
  • Yüksek (High): İstemci ve sunucu arasındaki trafik (çift yönlü), sunucunun sunduğu 128 bit uzunluğundaki simetrik bir anahtar kullanılarak yapılır.
  • Federal Information Processing Standard 140-1 (FIPS): İstemci ve sunucu arasındaki trafik (çift yönlü), FIPS adlı standart ile doğrulanmış olan RSA algoritması kullanılarak anahtar değişimi, 3DES algoritması kullanılarak şifreleme ve SHA-1 algoritması kullanılarak özetleme yapılır.

Not: Trafik ile ilgili detayları görmek için kayıt defterinden SChannel kayıt seviyesi arttırılabilir.

HKEY_LOCAL_MACHINE –> System –> CurrentControlSet –> Control –> SecurityProviders –> SCHANNEL –> EventLogging: 5

RDP için protokol güvenlik mekanizmaları için ayrı bir geliştirme yapılmasına gerek olmadan Microsoft tarafından sunulan SChannel güvenlik paketleri kullanılabilir. SChannel güvenlik paketleri ile kullanılan şifreleme, özetleme, anahtar değiştirme algoritmaları ve protokoller üzerinde güncelleme yapmak için IISCrypto aracı kullanılabilir.

https://www.nartac.com/Products/IISCrypto/

 

2) Uzak Masaüstü Bağlantısı İçin Ek Güvenlik Özellikleri

Microsoft tarafından uzak masaüstü bağlantısı için 2 temel özellik sunulmaktadır.

2.1) Early User Authorization

Bu özellik ile kimlik doğrulama öncesinde, sunucu, kullanıcının oturum açma yetkisi olup olmadığı kontrolü gerçekleştirilebilir.

2.2) Network Level Authentication (NLA)

Bu özellik ile işletim sisteminde yük oluşmasının önüne geçilir. Windows Server 2003 R2 ve öncesindeki işletim sistemlerine yapılan uzak üstü bağlantılarında, istemci hedef servise bağlandıktan sonra gelen oturum açma ekranına (winlogon.exe) kimlik bilgilerini yazardı. Bu durumda sunucuya yapılan çok fazla bağlantı isteği yapıldığında; hedef terminal sunucu tarafından istemcilere yaptıkları her istek için ayrı bir oturum açma ekranı sunulur ve hedef sistemdeki SMSs.exe, Csrss.exe, Winlogon.exe, Userinit.exe gibi prosesler gelen taleplere cevap veremez hale gelmesi ile işletim sistemi erişilemez olurdu. NLA etkinleştirildiğinde, Windows Server 2008 ve sonrasındaki işletim sistemlerinde ise istemci tarafından bağlantı isteği sonrasında kimlik bilgileri istemciden açılan bir pencereye (mstsc.exe) girmesi istenir ve kimlik doğrulama kontrolü sonrasında hedef sunucunun oturum açma ekranı gelmesi sağlanır.

 

Kimlik doğrulama işlemi uzak masaüstü oturumundan önce ağ seviyesinde gerçekleştirildiği için bu modele Front Authentication adı da verilir.

NLA özelliği etkinleştirilmiş bir terminal servise bağlanmak için, istemcinin CredSSP desteğinin olması gereklidir. Bu sebeple, terminal istemcisinin en az Windows XP SP3 ve Remote Desktop Connection 6.0 desteğinin olması gereklidir.

 

3) RDP Zayıflıkları

Standart RDP Güvenliği kullanıldığında, tüm Windows sistemlerde aynı anahtar (Terminal Services Signing Key) geçerlidir. Bu anahtar yayınlandığı için de güvenlik olarak zayıf duruma düşmüştür.

Gelişmiş RDP Güvenliği kullanıldığında, kimlik doğrulama sertifikaları (TLS & CredSSP için) ve anahtar dağıtım merkezleri (CredSSP için) ile güvenlik sağlanmaya çalışılır. Ancak bu durumun da temel olarak 3 zafiyeti vardır.

  • TLS kullanıldığı durumda, bağlanacak olan istemci tarafındaki işletim sisteminin sertifika deposunda bulunan sertifika otoriteleri (Certificate Authority) tarafından imzalanan sertifikalar güvenilir olarak kabul edilir. Kurumsal ortamlarda genellikle RDP servisleri için imzalı sertifikalar kullanılmadığı için terminal servisine bağlanacak kullanıcılar gelen sertifika hatasına önem vermez ve bağlantıyı devam ettirir. Bu durum sebebi ile uzak masaüstü bağlantısı MITM saldırılarına açıktır.
  • Kerberos ile CredSSP kullanıldığı durumda, istemci Domain Controller makinesine bağlanamazsa servis bileti alamaz ve istemci (Microsoft implementasyonu sebebi ile) otomatik olarak NTLMv2 ile kimlik doğrulamaya çalışır. Bu tür saldırı yöntemine genel olarak Downgrade Attack adı verilir.
  • NTLMv2 ile CredSSP kullanıldığı durumda, terminal servisi veren sunucu, istemciden aldığı kimlik bilgilerini Domain Controller sunucusundan doğrulatır ve sonuca göre istemciye bağlanıp bağlanamayacağı bilgisini verir. Ancak terminal servisi veren sunucu, Domain Controller sunucusuna erişemezse, TLS 1.0 / 1.1 veya 1.2’den desteklediğin en güçlü kriptografik pakete göre iletişim kurmasını ister. Bu durumda CredSSP kullanılmadan sadece TLS kullanılmış olur. Yani güvenlik sadece sunucu sertifikası kullanılarak sağlanmış ve istemci kullanıcının sertifikaya güvenip güvenmemesine kalmış olur.

 

4) Saldırının Adımları

Seth aracı, uzak masaüstü bağlantısı yapan istemci ile aynı yerel ağ içerisinde bulunulduğu ve araya girilebildiği durumlarda, terminal servisine bağlanacak kimlik bilgilerinin açık metin olarak alınabilmesi sağlanmış olur.

Saldırının adımları aşağıdaki gibi özetlenebilir.

  • Arp zehirlemesi ile istemci ve hedef terminal servisi sunan sunucunun arasındaki uzak masaüstü trafiği dinlenir. Bu amaçla, istemci bilgisayardan çıkan tüm TCP\3389 trafiği saldırgan üzerine alınır ve vekil (RDP Proxy) sunucu gibi davranılarak terminal hizmeti verecek sunucuya iletilir.
  • Kerberos ile Gelişmiş RDP Güvenliği kullanılması durumunda, istemci bilgisayarın terminal servise ulaşması ve Kerberos bileti alması önlenir. Bu amaçla, istemci bilgisayardan çıkan tüm TCP\88 trafiği için istemciye RESET gönderilir.
  • Güvenlik seviyesi NTLM’e düşürüldüğü veya NTLM ile Gelişmiş RDP Güvenliği kullanılması durumunda, saldırgan tarafından, istemciye – terminal hizmeti veren sunucudan geliyormuş gibi – bir paket gönderilir. Bu paket ile Domain Controller makinesine ulaşılamadığı ve güvenlik seviyesinin sertifika ile kimlik doğrulaması yöntemine düşürülmesi gerektiği söylenir. Gönderilebilecek paket aşağıdaki gibidir:

300d a003 0201 04a4 0602 04c0 0000 5e 0………….^

  • Güvenlik seviyesi TLS’e düşürüldüğü veya TLS ile Gelişmiş RDP Güvenliği kullanılması durumunda, saldırgan, terminal hizmeti veren sunucudan geliyormuş gibi kendi sertifikasını istemciye gönderir. Sertifika uyarısına onay verilmesi durumunda da terminal servisine bağlanacak kimlik bilgilerinin açık metin olarak alınabilmesi sağlanmış olur.
  • Trafik içerisinde istenilen komut çalıştırılabilir veya trafik içerisindeki klavye hareketleri elde edilebilir.

 

Not: Güvenlik seviyesi Standart RDP Güvenliği seviyesine de düşürülebilir. Ancak bu durumda klasik bir sertifika hatasından daha farklı olan aşağıdaki gibi bir hata alınır ve bu durumda terminal hizmeti veren sunucuya bağlanmak isteyen kullanıcı tarafından şüpheli bir durum olduğu yorumuna sebep olabilir.

 

5) Seth Aracı ile Saldırının Gerçekleştirilmesi

Mevcut durumda terminal hizmeti veren sunucunun sertifika bilgileri testssl.sh aracı ile elde edilebilir.

git clone –depth 1 https://github.com/drwetter/testssl.sh.git
cd testssl.sh/
./testssl.sh –server-defaults –quiet 192.168.0.20:3389

 

Hedef sunucunun terminal servisine bağlanmak için sunucu tarafından gönderilen sertifikasının seri numara bilgisi mstsc aracı ile de elde edilebilirdi.

 

Terminal servisinin sertifika detayları aşağıdaki gibi devam etmektedir.

 

Saldırı için kullanılacak Seth aracı Github üzerinden indirilebilir.

git clone https://github.com/SySS-Research/Seth.git
cd Seth
pip install -r requirements.txt

 

Saldırı öncesinde saldırgan (192.168.183.132) ile aynı ağda bulunan kurban istemcinin (192.168.183.136) ARP tablosunda Gateway bilgisi aşağıdaki gibidir.

arp -a

 

Seth aracının temel kullanımı aşağıdaki gibidir.

seth.sh

 

Kurban olarak seçilen istemci (192.168.183.5) ile Gateway (192.168.183.2) arasına girilecek şekilde Seth aracı aracı başlatılabilir.

route -n
SETH_DEBUG=1 ./seth.sh eth0 192.168.183.{132,136,2}

 

Bu durumda istemcinin Gateway IP adresine ait MAC değerinin (192.168.183.2 –> 00-50-56-e8-f2-b3), saldırganın MAC adresi (192.168.183.132 –> 00-0c-29-17-bf-1b) olarak güncellendiği görülür.

arp -a

 

İstemci tarafından terminal servisi veren sunucuya bağlantı kurulmak istendiğinde kimlik bilgilerinin yazılacağı ekran ile karşılaşılır.

 

Aradaki saldırgan tarafından bağlantı dinlenir.

 

Kullanıcı adı ve parola bilgisi girilerek bağlantı isteği gönderildiğinde, bir sertifika hatası ile karşılaşılır. Bu sertifika incelendiğinde, gerçekten terminal hizmeti veren sunucudan gelen sertifika gibi Issuer, Validate From,… gibi bilgilere sahip olduğu görülmektedir. Ancak gerçek sertifika gönderilemediği için seri numarası farklılık göstermektedir.

 

Aynı şekilde sertifikadaki Thumbprint bilgisi de farklılık göstermektedir.

 

Bu sertifikayı saldırgan tarafında trafik izlenmektedir.

 

Sonuç olarak terminal servise bağlanabilecek kullanıcının kimlik bilgisi elde edilebilir.

 

Benzer olarak trafik içerisindeki klavye tuşları da elde edilebilir.

 

Not: NLA etkinleştirilmesi durumunda, kimlik bilgileri elde edilmesine rağmen masaüstü ekranı gelmeden trafik sonlanmaktadır. Bunun sebebi, NLA özelliği kullanıldığında araya girilememesi değil Seth aracının geliştirmesinin tamamlanmamasıdır.

 

6) Önlemler

Uzak masaüstü bağlantısında araya girilememesi için gerçekleştirilebilecek önlemler aşağıdaki gibi sıralanabilir.

  • Yerel ağda Switch üzerinde Arp zehirlenmesi yapılamaması için gerekli önlemler alınmalıdır.
  • Etki alanındaki terminal servisi hizmeti veren sunuculardaki sertifikalar, kurumdaki sertifika otoritesi tarafından imzalanmalı ve bu sertifika otoritelerinin sertifikaları tüm etki alanı sistemlerinin sertifika deposunda saklanmalıdır.
  • İstemcilerin, terminal hizmeti veren sunuculara bağlantısı sırasında imzalı olmayan bir sertifika gelmesi durumunda, bu terminal servise bağlanamaması için grup ilkeleri üzerinden sıkılaştırmalar gerçekleştirilmelidir.

Computer Configuration –> Policies –> Administrative Templates –> Windows Components –> Remote Desktop Services (or Terminal Services) –> Remote Desktop Connection Client –> Configure server authentication for client: Enabled

  • Terminal hizmeti veren sunuculara bağlanmak istendiğinde, istemcilerin NLA ile kimlik doğrulatmaya zorlamak için grup ilkeleri üzerinden sıkılaştırmalar gerçekleştirilmelidir.

Computer Configuration –> Policies –> Administrative Templates –> Windows Components –> Remote Desktop Session Host (or Terminal Server) –> Security –> Require user authentication for remote connections by using Network Level Authentication: Enabled

  • Uzak masaüstü bağlantılarında kimlik doğrulama için ikinci faktör (SMS OTP gibi) kullanılmalıdır.

Genel olarak uzak masaüstü bağlantı güvenliği konusunda alınması gereken genel önlemler için kaynaklardaki Serhat Akıncı‘nın yazısı incelenebilir.

 

Kaynaklar:

https://github.com/SySS-Research/Seth/blob/master/doc/paper/Attacking_RDP-Paper.pdf

Windows RDP Güvenliği için Öneriler


Lateral Movement – RDP
https://www.contextis.com/resources/blog/rdp-replay/
https://www.root9b.com/sites/default/files/whitepapers/R9B_blog_003_whitepaper_01.pdf
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/c2389e29-5706-4ac4-b555-e26f93144db7

Microsoft Ortamında Kerberos ile Kimlik Doğrulama


https://www.siberportal.org/blue-team/securing-windows-operating-system/microsoft-ortaminda-ntlmv1-ve-ntlmv2-protokolleri-ile-ag-uzerinde-kimlik-dogrulama/

 

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz