
Etki alanı sızma testlerinde ele geçirilen bir bilgisayardan diğer bilgisayarlara yayılma işlemlerinde PTH (Pass-The-Hash) adı verilen yöntem kullanılır. Bu yöntemde bir bilgisayarın diskinden (SAM dosyasından) alınan yerel yönetici parolasının özeti kullanılarak (psexec aracıyla veya başka tekniklerle) diğer bilgisayarlarda oturum açılmaya çalışılır. Ancak bazı durumlarda parolanın özeti yeterli olmayabilmektedir. Örneğin, etki alanı parolası ile entegre bir başka sisteme (Outlook web maile, VPN sistemlerine, vs.) bağlanılmaya çalışıldığında parola özeti yetersiz kalabilmektedir. Bu durumlarda parolanın kendisi (açık hali - plaintext) gerekmektedir.
Windows işletim sisteminde açılan bir oturumda oturum süresi boyunca kullanıcıların bazı bilgileri bellek (RAM) üzerinde saklanmaktadır. Bu bilgilerden birisi de parolanın açık halidir. Parolanın bellekten açık olarak elde edilmesi, ikişer başlık halinde iki yazı olarak 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 prosesine bakan ayağı işlenecektir. Böylece kimlik bilgilerini yazan bir kullanıcının bilgilerinin LSASS prosesine gelene kadarki durumu incelenecektir.
- İ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 (WCE ve Mimikatz) çalışma prensiplerinden ve kullanımından bahsedilecektir.
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. Şekil-1'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:
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.
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.
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ı.
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.
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.
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.
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.
Ö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:
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.
Ö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:
http://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/windows-isletim-sisteminde-oturum-acma-islemi-winlogon.html
http://msdn.microsoft.com/tr-tr/magazine/cc163489(en-us).aspx
http://technet.microsoft.com/en-us/library/ff404303(v=ws.10).aspx
http://blog.bga.com.tr/2013/01/mimikatz-ile-windows-sistemlerde.html
http://blog.opensecurityresearch.com/2012/06/using-mimikatz-to-dump-passwords.html
http://technet.microsoft.com/en-us/library/cc778868(WS.10).aspx
http://www.ampliasecurity.com/research/wce12_uba_ampliasecurity_eng.pdf
http://www.ampliasecurity.com/research/WCE_Internals_RootedCon2011_ampliasecurity.pdf
http://codeidol.com/community/windows/logon/25019/
http://fr.slideshare.net/gentilkiwi/mimikatz-asfws
http://danielaelmi.altervista.org/password-cracking-hashes-dumping-brute-forcing-auditing-and-privileges-escalation/
http://www.blackhat.com/presentations/bh-dc-09/Muckin/BlackHat-DC-09-Muckin-vista-security-internals.pdf
0 comments:
Post a Comment