spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Bellekten Parolaların Elde Edilmesi - 1 Yazdır E-posta
Ertuğrul Başaranoğlu, TÜBİTAK BİLGEM   
17.11.2013

Günümüzde sistemlere karşı gerçekleştirilen saldırılar artmaktadır. Bunun paralelinde sızma testlerine (Penetration Test) verilen önem de gün geçtikçe artış göstermektedir. Sızma testlerinin adımlarından birisi de Microsoft ortamındaki kullanıcıların (özellikle etki alanı kullanıcılarının) hesap bilgilerinin elde edilmesidir. Son yıllarda bu bilgilerin elde edilmesi için yeni bir yöntem kullanılmaya başlanmıştır. 3 yazıdan oluşacak olan bu dizi, kullanıcı hesap bilgilerinin yeni bir yöntem ile nasıl ele geçirildiği konusuna değinecektir. Yeni tekniğe geçilmeden önce konu ile ilgili bazı önbilgiler verilecektir. 

Yerel kullanıcılara ait hesap bilgilerinin (hesap adları ve hesaplara ait parolaların özetleri) elde edilmesi için C:\Windows\System32\config dizini altındaki SAM ve SYSTEM dosyaları kullanılır. Bu işlemler için çeşitli yöntemler bulunmaktadır. Birçok son kullanıcı bilgisayarının bulunduğu etki alanı (domain) ortamlarında  ise etki alanı kullanıcı hesaplarının bilgileri SAM dosyası yerine etki alanı denetleyicisindeki (DC) NTDS.dit dosyasında depolanmaktadır. Bu dosyaya yetkili kullanıcı hesabı ile erişilmesi durumunda ise etki alanındaki tüm kullanıcıların parola özetleri elde edilebilmektedir.

Bir kullanıcıya ait örnek hesap bilgisi (adı ve parolasının özeti) aşağıdaki gibidir:

tubitak:1131:f26fb3ae03e93ab9c81667e9d738c5d9:47bf8039a8506cd67c524a03ff84ba4e

Yukarıda arkaplanı sar renk ile belirtilen kayıt SAM veya NTDS.dit dosyasndan alınmıştır. Bu kayıtta koyu lacivert ile belirtilen kısım, kullanıcının parolasının LM ve NTLM özeti olmaktadır. Yukarıdaki özet değeri kullanılarak - bir takım araçlarla veya internet üzerinden - çok kolay bir şekilde parolanın açık hali elde edilebilir. Ancak bu durum her zaman gerçekleşmeyebilmektedir veya çok uzun zaman alabilmektedir.

Kurumsal ortamlarda genellikle son kullanıcı bilgisayarları için Windows işletim sistemi tercih edilmekte olup, her bilgisayarın kurulumunda aynı imaj kullanılmaktadır. Bu imaj ile kurulum gerçekleştirildikten sonra, yerel ve gömülü (Built-in) kullanıcı hesaplarının parolaları genellikle değiştirilmemektedir. Etki alanı sızma testlerinde (domain pentest) kullanılan yöntemlerden birisi, bir şekilde sızılan ve yüksek yetki elde edilen bir bilgisayardaki gömülü yerel yönetici hesabına (Built-in Administrator) ait bilgilerin (hesap adı ve parola) alınmasıdır. Sızılan bilgisayardan alınan bu bilgiler erişim sağlanabilen diğer tüm bilgisayarlarda denenir. Böylece aynı imajın kullanıldığı (ve/veya gömülü yöneticilere ait hesap bilgilerinin aynı olduğu) bilgisayarlarda yüksek yetkilere sahip olunur. Kullanıcı hesaplarına ait parola özetlerini kullanılarak diğer bilgisayarlara erişim sağlanabilen bu yönteme Pass-the-Hash (PTH) adı verilir. PTH yöntemi ile kullanıcı adı ve parola özeti kullanılarak giriş yapılabilecek bilgisayarların tespit edilmesine dair örnek bir durum aşağıdaki gibidir:

 wcemimikatz_00.jpg

Şekill - 1: Parola Özeti Kullanılarak Oturum Açma Denemeleri 

Bazı durumlarda parolanın özeti yeterli olmayabilir. Örneğin, etki alanı parolası ile kimlik doğrulanabilen bir başka sisteme (Outlook web maile, veritabanı sistemlerine, VPN sistemlerine, vs.) bağlanılmaya çalışıldığı durumlarda parola özetinin elde edilmesi yetersiz kalabilmektedir. Benzer olarak birçok kimse aynı parolayı (gerekli olmamasına rağmen) birçok kritik sistemde kullanmaktadır. Bu gibi durumlarda parolanın kendisi (açık hali - plaintext) gerekmektedir. Yazı dizisinin konusu da parolaların açık olarak elde edilmesi ile ilgilidir. 

Parolanın açık hali, Windows işletim sisteminde açılan bir oturumda - oturum süresi boyunca - bellek (RAM) üzerinde saklanmaktadır. Etki alanı sızma testlerinde (veya gerçekleştirilen bazı siber saldırılarda) RAM üzerinde kayıtlı bu bilgiler elde edilmeye çalışılmaktadır. 

Parolanın bellekten açık olarak elde edilmesi konusu, üç yazı halinde işlenecektir. 

  • Birinci yazının ilk başlığında, oturum açma işlemi sırasında önemli rol tutan prosesleri incelenecektir. İkinci başlığında ise, oturum açma işleminin Winlogon prosesi ile ilgili kısmı işlenecektir. Böylece kimlik bilgilerini yazan bir kullanıcının bilgilerinin LSASS prosesine gelene kadarki durumu incelenmiş olacaktır

  • İkinci yazının ilk başlığında kullanıcı kimlik bilgilerinin LSASS tarafından alınması ve sadece parolanın işlenmesi konusuna değinilecektir. İkinci başlıkta ise, oturumlardaki parolaları açık olarak elde eden 2 aracın çalışma prensiplerinden ve kullanımından bahsedilecektir.

  • Üçüncü yazıda ise RAM üzerinden parola bilgilerin elde edilememesi ve elde edilmesinin zorlaştırılması için alınması gereken önlemlerden bahsedilecektir. 

Windows İşletim Sisteminde Oturum Açma İşlemi İle İlgili Prosesler

Windows işletim sisteminde çalışan bir proses çekirdek modu (kernel mode) ve kullanıcı modu (user mode) olmak üzere iki farklı modda çalışabilir. Çekirdek modunda işletim sistemi bileşenleri çalışırken, uygulamalar kullanıcı modunda çalışır. İşletim sistemi bileşenleri yüklendikten sonra, kullanıcı modu ve etkileşimli oturum açma (interactive logon) işlemi başlayabilmektedir.

Kullanıcıya ait bu modda çalışan ilk proses Smss.exe prosesidir. Ana Smss prosesi her zaman sıfır numaralı etkileşimsiz oturumda bulunur ve başlatılacak olan her bir etkileşimli oturum için bir adet kopya Smss prosesi oluşturur. Oluşturulan kopya Smss prosesi ilgili oturuma ait Csrss ve Winlogon proseslerini oluşturup kendi çalışmasını sonlandırır. Aşağıdaki resimde de gösterildiği gibi PID değeri 368 olan Smss kendisinin iki kopyasını oluşturmuştur. 488 ve 624 PID değerlerine sahip olan kopya Smss prosesleri başka prosesleri oluşturduktan sonra sonlanmıştır. Prosesler arasındaki bu ilişki aşağıdaki ekran görüntüsünde görülmektedir:

wcemimikatz_01.jpg

Şekil - 2: Windows 7 İşletim Sisteminde Boot İşlemi Sonrası Çalılan Prosesler

 Oturum işlemleri ile ilgili en önemli prosesler aşağıdaki gibidir:

  • Smss.exe (Session Manager Subsystem): Windows işletim sisteminin başlangıç prosesidir. Çevresel değişkenlerin oluşturulması, belirli (HKLM\System\CurrentControlSet\Control\Session Manager\SubSystems altında belirtilen) alt sistemlerin başlatılması, bir takım proseslerin (csrss, wininit, winlogon) başlatılması en temel görevlerindendir.

  • Csrss.exe (Client/Server Runtime Subsystem): Thread ve Win32 konsolunun (metinsel arayüz, API kullanımı ile kullanıcı dostu arayüze sahip olunabilir) kontrolünden sorumlu olan prosestir. Temel olarak, kullanıcı modunda gerçekleşen bir çok görevin (task), çekirdek moduna erişmemesini (sistem çağrısının gerçekleştirilmemesini) sağlar.

  • Winlogon.exe: İşletim sisteminde oturum açılması ve kapatılması, LogonUI prosesinin oluşturulması, beklenmedik bir şekilde sonlanan LogonUI prosesinin yeniden başlatılması, kimlik doğrulama işlemi için LSASS prosesinin çağırılması, kullanıcı şifresinin değiştirmesi, iş istasyonunun (workstation) kilitlenmesi ve kilitli olan iş istasyonunun tekrardan açılması gibi işlemlerden sorumludur. Winlogon bu görevleri yerine getirirken, yetkisi olmayan başka bir prosesin bu işlemleri okuyamaması, değiştirememesi, kısaca araya girememesini sağlar. Winlogon SYSTEM haklarıyla çalışır, bu sebeple sıfır numaralı oturumda çalışmamaktadır. Windows ortamında etkileşimli her bir oturum için bir adet Winlogon oluşturulur. Sonraki başlıkta biraz daha detaya girilecektir.

  • LogonUI.exe: Kimlik bilgisi sağlayıcılarının (credential provider) yüklenmesinden ve oturum değişimi (açma ve kapama işlemleri sırasında) Windows etkileşimli oturum açma grafik arayüzünün gösterilmesinden sorumlu prosestir. Sonraki başlıkta biraz daha detaya girilecektir.

  • LSASS.EXE (Local Security Authority Subsystem Service): Kullanıcıların oturum açma işlemleri sırasında kimlik bilgilerini doğruluyan, parola değişikliklerinin gerçekleştirilmesinde görevli olan, kullanıcının yerel güvenlik ilkelerine (security policy) uymaya zorlayan, kullanıcı haklarına göre token oluşturan, göreviyle ilişkili bir olay olduğunda bu olayı Olay Günlüklerine (Event Viewer) yazan prosestir. 

Winlogon ve Windows İşletim Sisteminde Oturum Açma İşlemi

Windows Vista işletim sistemi öncesinde (Windows XP, Windows Server 2003 gibi), her etkileşimli oturum için Winlogon prosesinin bir örneğini oluşturulurdu. Winlogon prosesi RAM üzerinde kendisine belli bir yer ayırmaktadır. Winlogon, bu yere GINA (Graphical Identification and Authentication) adı verilen DLL (dynamic-link library)’i yüklerdi. GINA da etkileşimli oturumda kimlik doğrulama işlemini gerçekleştirirdi.

wcemimikatz_02.gif 

Şekil - 3: Eski Mimarideki Oturumlar 

Ancak, bu (eski) mimaride Winlogon sıfırıncı (0.) oturumda çalışırdı. Yani kullanıcının açtığı oturum, sistem servislerinin ve kritik diğer proseslerin çalıştığı oturumla aynı oturumda işlem görmekteydi. Ayrıca kullanıcıdan hesap bilgilerini isteyen arayüz 3. taraf bir bileşen olarak kullanılmaktaydı. 

wcemimikatz_03_1.gif 

Şekil - 4: Windows XP İşletim Sİsteminde Oturum Açma Ekranı 

Windows Vista işletim sistemi ve sonrasında (Windows 7/8, Windows Server 2008/2008 R2/2012 gibi) oturum açma mimarisi oldukça değişiklik göstermiştir. Yeni mimaride de her oturum için Winlogon prosesinin bir örneği oluşturulur. Ancak bu (yeni) mimaride, etkileşimli oturum direk olarak sıfırıncı (0.) oturumda işlem görmemektedir. 

wcemimikatz_04.gif

Şekil - 5: Yeni Mimaride Oturumlar - 1 

Bu mimari ile sistem ve kullanıcı prosesleri farklı oturumlarda işlem görmeye başlamış, çekirdek için Ram üzerinde ayrılan alana kullanıcı proseslerinin direk erişimi oldukça kısıtlanmıştır.

wcemimikatz_05.gif

Şekil - 6: Yeni Mimaride Oturumlar - 2 

Yeni mimarideki önemli ikinci değişiklik ise, GINA yerine işletim sistemine gömülü (built-in) olarak gelen ve Winlogon tarafından oluşturulan LogonUI prosesidir. Yani, Winlogon prosesinin bellek alanında DLL kullanılması yerine ayrı bir proses oluşturulmuştur. Aşağıdaki ekran görüntüsü bir numaralı oturum açıkken alınmıştır. Birinci kullanıcı ilk oturum ile etkileşim içerisinde olduğundan dolayı LogonUI prosesinin çalışması sona ermiştir. İki, üç ve dört numaralı kullancııların açtığı iki, üç ve dört numaralı oturumlar açık olmasına rağmen kullanıcılar bu oturumlarla etkileşim halinde olmadığı için bu oturumlara ait LogonUI prosesleri çalışmaya devam eder.

wcemimikatz_06.jpg 

Şekil - 7: LogonUI Prosesi 

LogonUI adında yeni bir proses oluşturulması sayesinde; kimlik doğrulama işlemi sırasında gerçekleşecek bir hatadan dolayı, Winlogon prosesi (ve tüm sistemin) beklenmedik şekilde sonlanmaması sağlanacaktır. Ayrıca, Winlogon prosesinin bellek alanında harici bir DLL’in kullanılmasından vazgeçilmesi, DLL açıklığından kaynaklı bir kötüye kullanımın da önüne geçmeyi amaçlamaktadır. 

Yeni oturum açma mimarisinde göze çarpan bir iyileştirme de kimlik bilgisi sağlayıcılarıdır (Credential Providers - CP). Kimlik bilgisi sağlayıcıları, LogonUI prosesi tarafından yüklenirler ve Kayıt Defteri’ndeki “HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers” anahtarı altında listelenirler. 

wcemimikatz_07.png

Şekil - 8: Kimlik Bilgisi Sağlayıcıları 

Örneğin, GUID değeri “{6f45dc1e-5384-457a-bc13-2cd81b0d28ed}” olan sağlayıcı, varsayılan olarak parola bilgilerini alan sağlayıcıya (PasswordProvider) aittir. Bunun yanında akıllı kartlar, sertifikalar, biyometrik sistemler için de, Wİndows işletim sistemi tarafından kimlik bilgi sağlayıcıları kullanıma sunulmuştur. 

Winlogon prosesi, LogonUI prosesini oluşturduğunda, LogonUI prosesi Kayıt Defteri’nden etkin olan kimlik bilgisi sağlayıcılarının listesini alır. Her bir sağlayıcı, LogonUI prosesine ihtiyacı olan arayüz bileşenlerini (metin kutusu, kontrol kutusu, buton vs) belirtir. LogonUI prosesi de bu teleplere uygun olarak bir arayüz oluşturur. Örnek bir arayüz aşağıdaki gibidir:

wcemimikatz_08.jpg

Şekil - 9: Özelleştirilmiş Oturum Açma Ekranı 

Kullanıcı karşısına gelen arayüzde kimlik bilgilerini (kullanıcı adı, parola, parmak izi, retina, PIN, sertifika, vs) girer. Kimlik bilgi sağlayıcıları (CP); bu bilgileri alır, özel bir formata koyar (serialization). Daha sonra da, kimlik bilgi sağlayıcıları bu bilgileri, LogonUI prosesi aracılığıyla (veya direk olarak) Winlogon prosesine ulaşır. Winlogon prosesi de bu bilgileri, sıfırıncı oturumda çalışan LSASS prosesine göndererek kimlik doğrulama işleminde aracılık gerçekleştirir.

Oturum açma konusunda bu zamana dek bahsedilen işlemler aşağıdaki resimde özetlenmiştir.

wcemimikatz_09.jpg

Şekil - 10: Kimlik Doğrulama İşlemi 

Özetle, yukarıdaki işlemler sonucunda kimlik bilgileri LSASS.exe prosesine aktarılmış olur. Bu noktadan sonra kimlik doğrulama paketleri (authentication packages) ve kimlik verilerinin tutulduğu veritabanları (SAM dosyası, Aktif Dizin gibi) devreye girer. Bu konular sonraki yazıda ele alınacaktır.

Kaynaklar:

[1] http://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/windows-isletim-sisteminde-oturum-acma-islemi-winlogon.html

[2] http://msdn.microsoft.com/tr-tr/magazine/cc163489(en-us).aspx 

[3] http://technet.microsoft.com/en-us/library/ff404303(v=ws.10).aspx

[4] http://blog.bga.com.tr/2013/01/mimikatz-ile-windows-sistemlerde.html

[5] http://ertugrulbasaranoglu.blogspot.com/2012/10/ipucu-wceden-kacnma-yontemi.html

[6] http://blog.opensecurityresearch.com/2012/06/using-mimikatz-to-dump-passwords.html

[7] http://technet.microsoft.com/en-us/library/cc778868(WS.10).aspx

[8] http://www.ampliasecurity.com/research/wce12_uba_ampliasecurity_eng.pdf 

[9] http://www.ampliasecurity.com/research/WCE_Internals_RootedCon2011_ampliasecurity.pdf

[10] http://technet.microsoft.com/en-us/library/dn169026(v=ws.10).aspx

[11] http://technet.microsoft.com/en-us/library/dn169016(v=ws.10).aspx

[12] http://codeidol.com/community/windows/logon/25019/

[13] http://fr.slideshare.net/gentilkiwi/mimikatz-asfws

[14] http://www.sans.org/reading-room/whitepapers/testing/pass-the-hash-attacks-tools-mitigation-33283


Favori olarak ekle (0) | Görüntüleme sayısı: 7988

Bu yazıya ilk yorumu yazın

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2017 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB