Bilgisayar Teknolojileri

Kritik Bir Windows Açığı – MS08-067

Windows Server Servisinde Bulunan Kritik Açıklık (MS08-067)

Yazar: Osman PAMUK
27.10.2008

23 Ekim 2008 Perşembe günü Microsoft normal güncelleme yayınlama periyodunun dışına çıkarak en yüksek kritiklik seviyesinde olduğunu bildirdiği bir yama yayınladı [1]. Bildiriye göre bu yamanın kapattığı açıklık bütün Windows türlerini tehdit etmektedir. Özellikle de Windows 2000, XP ve 2003 işletim sistemlerinde uzaktan kod çalıştırılmasına izin vermektedir. Windows Vista ve Windows 2008 Server işletim sistemlerinde ise servis dışı bırakma saldırılarına olanak sağlamaktadır [2].

Bilindiği üzere genel olarak üretici firma işletim sistemi güncellemelerini dağıtmaya başladıktan sonra birkaç gün içinde güncellemelerin kapattığı açıklıkları kullanan kötü niyetli yazılımlar ortaya çıkmaktadır. Aynı şekilde bu açıklığın duyurulduğu ve yama dağıtılmaya başlandığı gün açıklığı kullanan kod parçaları internette yayınlanmaya başladı. Diğer taraftan, “Microsoft Malware Protection Center” yine aynı gün bu açıklığı hedefleyen saldırılarla karşılaştığını ve kullanıcıların acilen önlem alması gerektiğini bildirdi [3].
Bu teknik yazıda açıklığın hangi işletim sistemlerini nasıl tehdit ettiğine ve korunma yollarına yer verdik. Hem ev kullanıcılarının hem de kurumların acil olarak Microsoft’un yayınlamış olduğu yamayı kurmalarını tavsiye ediyoruz. Yama, http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx adresinden edinilebilir.

MS08-067 Kod Numaralı Açıklık

Bu açıklık Microsoft destekli tüm Windows işletim sistemlerinde ortak olan netapi32.dll kütüphanesinin NetpwPathCanonicalize fonksiyonunda bulunmaktadır. Koddaki hatadan dolayı uzaktan yetkisiz bir kullanıcı özel tasarlanmış bir RPC istemiyle yığın (stack) tabanlı arabellekte (buffer) bir taşmaya sebep olabilmektedir [4].

Örnek Bir Saldırı

Saldırganın bir bilgisayara saldırabilmesi için sadece TCP/139 “netbios-ssn” ve TCP/445 “Microsoft-ds/direct hosted SMB” portlarına ulaşabilmesi yeterlidir. Bu iki port Windows işletim sistemlerinde dosya ve yazıcı paylaşımı hizmetlerine olanak sağlayan ve kurulumla beraber açık olarak gelen portlardır.
Saldırıyı gerçeklemek için en çok kullanılan işletim sistemlerinden biri olan Windows XP SP3 işletim sistemine sahip bilgisayarı test ortamına kurduk. Amacımız sadece bu açıklığı kullanılarak yetkisiz bir kullanıcının uzaktan kod çalıştırabileceğini göstermek. Bu yüzden saldırı için deney amaçlı yazılmış olan bir kodu kullanabiliriz. Etik açıdan bu kodun erişim adresini yayınlamıyoruz. Saldırımız başarılı olduğu takdirde kurban bilgisayardaki ilgili servis hata verecek ve çalışmayı durduracaktır. Hatanın gerçekten bizim saldırımızın başarılı olmasından kaynaklandığını görmek için kurban bilgisayarın ilgili servisini bir debuggera (hata ayıklayıcısına) bağlamak mantıklı olacaktır. Debugger olarak Microsoft’un Windbg programını kullanabiliriz [5].
İlk olarak debug edeceğimiz servisin hangi servis olduğunu bulmamız gerekli. Bunun için komut satırından “tasklist /svc” komutunu çalıştırabiliriz.

lanman server

“Lanmanserver” ve “Browser” hizmetlerinin çalıştığı “svchost.exe” servisi bizim debug etmemiz gereken servis [6]. Daha sonra aşağıdaki gibi Windbg programından bu servise servis ismi ve pid değerine göre bulup bağlanabiliriz.

windbg

Şimdi dışarıdan saldıracağımız serviste herhangi bir hata oluştuğu zaman oluşan hatayı ayrıntılarıyla görebiliriz. Kurban tarafındaki düzeneği hazırladıktan sonra saldırgan bilgisayarına geçiyoruz. Saldırganın yapması gereken ilk iş, internetten indirdiği kodu derlemek, daha sonra da kurban bilgisayara anonim bir kullanıcı bağlantısı açmak ve biraz önce derlediği kodu çalıştırmak olacaktır.

kod

Saldırı sonrasında saldırının etkilerini daha iyi görmek için kurban bilgisayarına geri dönüyoruz. Eğer saldırı başarıyla gerçekleştiyse kurban bilgisayarındaki debuggerda aşağıdakine benzer mesajlar gelecektir.

Access violation

Yukarıda da görüldüğü gibi debuggera bağladığımız svchost servisi hata verip çalışmayı durdurdu. Amacımız sadece servis dışı bırakma saldırısı yapmak olsaydı başarılı olmuştuk. Fakat gerçekte açıklığın bize sunduğu saldırı olanakları bu kadar kısıtlı değil. Çünkü aldığımız “Access violation” hatası, normal şartlarda çalışan servisin okumaya izni olmadığı bir hafıza parçasına ulaşmaya çalışmasından kaynaklanmakta. Okumaya ve çalıştırmaya çalıştığı hafızanın adresini ise EIP registerının içeriğinden görebiliriz. Bu değer 00 78 00 78 adresidir. Bu adres de aslında bizim deneysel kodumuzdaki aşağıdaki kod satırından gelmektedir.

Yukarıdaki x karakterlerinin hafıza karşılığı 00 78. Yani daha dikkatli bir taşma sağlandığı takdirde rahatlıkla çalıştırılacak olan kod hafızaya yüklenebilir ve EIP registerının değeri o kodu çalıştıracak şekilde ayarlanabilir.
Farklı İşletim Sistemlerinde Açıklığın Etkisi [2]

Windows 2000 işletim sistemlerinde standart kurulumunda TCP/139 “netbios-ssn” ve TCP/445 “microsoft-ds” portları anonim (yetkisiz kullanıcı) erişime açıktır ve Windows 2000 işletim sistemlerinde güvenlik duvarı varsayılan olarak bulunmamaktadır. Özel olarak bu hizmetler kapatılmağı veya herhangi bir güvenlik duvarı ile erişim engellenmediği sürece Windows 2000 işletim sistemleri uzaktan kod çalıştırma saldırısına açıktır.
Windows XP yüklü bilgisayarlarda SP2 den sonraki sürümlerde standart kurulumda Windows güvenlik duvarı tarafından TCP/139 ve TCP/445 portlarına erişimler kapatılmıştır. Dolayısıyla dışarıdan saldırı gerçekleştirilemez. Fakat genellikle etki alanına üye bilgisayarda Windows güvelik duvarı kapatılmaktadır. Aynı şekilde dosya ve yazıcı paylaşımı açıldığında veya basit dosya paylaşımı kullanıldığında güvenlik duvarının ilgili portları da açılmaktadır. Bu durumlarda Windows XP işletim sistemleri standart olarak anonim erişimi kabul etmektedir ve uzaktan kod çalıştırma saldırılarına açıktır.
Windows 2003 yüklü bilgisayarlarda standart kurulumda güvenlik duvarı kapalıdır ve ilgili portlar anonim erişime açıktır. Dolayısıyla özel bir ayar yapılmadığı takdirde uzaktan kod çalıştırma saldırılarına karşı savunmasızdırlar.

Windows Vista ve Windows 2008 yüklü bilgisayarlarda standart kurulumda güvenlik duvarı ilgili portlara erişimi engellemektedir. Güvenlik duvarında erişim açıldığı takdirde bile işletim sistemi anonim (yetkisiz kullanıcı) erişime izin vermemektedir. Fakat güvenlik duvarından ilgili portlara erişim açılsa ve “Password Protected Sharing” özelliği kapalı hale getirilse dahi ancak servis dışı bırakma saldırılarına maruz kalabilir. Çünkü Vista ve üstü işletim sistemlerinde XP işletim sistemlerinde de olan DEP (Data Execution Prevention) özelliğinin yanı sıra ASLR(Address space layout randomization) özelliği bulunmaktadır. DEP ve ASLR özellikleri sayesinde de bir saldırganın stack based buffer overflow(yığın tabanlı arabellek taşması) yöntemiyle servis içinde istediği adrese kodunu yazması ve çalıştırması çok zordur.

Korunma Yolları [1]

1) En etkili yöntem; ilgili güncellemeyi işletim sisteminin almasını sağlamaktır. Bunun için güncellemenin sayfasından [1] yama indirilip kurulabileceği gibi internete bağlı bir sistemde “Windows Update” uygulaması “%SystemRoot%\system32\wupdmgr.exe” komutuyla çalıştırılıp işletim sisteminin kendisinin gerekli yamaları bulup indirmesi ve kurması sağlanabilir. Ancak yama kurulduktan sonra aktif hale gelmesi için işletim sisteminizi yeniden başlatmanız gerekecektir.

2) İlgili portları açan ve dinleyen “Bilgisayar Tarayıcısı” ve “Sunucu” servislerini kapatabilirsiniz. Bunun için Denetim Masası->Yönetimsel Araçlar->Hizmetler penceresi açılır. Hizmetler penceresinden “Bilgisayar Tarayıcısı” ve “Sunucu” hizmetleri seçilerek başlangıç türü “Devre Dışı” olarak seçilir. Daha sonra da “Durdur” düğmesine basılarak çalışması durdurulur.

sunucu özellikleri

“Sunucu” hizmetini yukarıdaki gibi kapattığınız takdirde dosya yazıcılarınızı paylaşamaz hale geleceksiniz fakat başka bilgisayarlardaki dosya ve yazıcı paylaşımlarından faydalanmaya devam edebilirsiniz.

3) TCP 139 ve TCP 445 portlarına dışarıdan olan erişimi bir güvenlik duvarı yardımıyla kapatabilirsiniz. Güvenlik duvarı olarak Windows güvenlik duvarını kullanabileceğiniz gibi kendi kurduğunuz farklı bir güvenlik duvarını da kullanabilirsiniz. Windows güvenlik duvarını kullanacağınız takdirde; güvenlik duvarınızı ilk önce aktif hale getiriniz. Daha sonra “Özel Durumlar” sekmesinde “Programlar ve Hizmetler” bölümündeki “Dosya ve Yazıcı Paylaşımı” iznini kaldırıp pasif hale getiriniz.

windows güvenlik duvarı

Bu ayar sonucunda bu portları kullanarak haberleşen hizmetlerinizin çalışması aksayacaktır.

4) Yukarıdaki nispeten basit çözümlerin yanında başka yöntemlerde kullanabilirsiniz. Mesela eğer Windows Vista veya Windows Server 2008 kullanıyorsanız bu açıklıktan etkilenen RPC tanımlayıcısını filtreleyebilirsiniz [1]. Bunun yanında tam test edilmemiş bir çözüm olarak, referanslardaki web sayfasından gerekli programı indirip, anonim erişime açık işletim sistemlerinde anonim erişim hakkını kaldırabilirsiniz [2].
Referanslar

[1] http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx
[2] http://blogs.technet.com/swi/archive/2008/10/23/More-detail-about-MS08-067.aspx
[3] http://blogs.technet.com/mmpc/archive/2008/10/23/get-protected-now.aspx
[4] http://blogs.msdn.com/sdl/archive/2008/10/22/ms08-067.aspx
[5] http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
[6] http://www.nynaeve.net/?p=226

KAYNAK: https://www.bilgiguvenligi.gov.tr

Reklamlar

3 Kasım 2008 - Posted by | Güvenlik, Windows Server 2003, Windows Server 2008, Windows Vista, Windows XP | , , , , , , , , , , , , , , , , ,

3 Yorum »

  1. Zaden ne geliyorsa başımıza bu svchost Yüzünden geliyor Arkadaş.

    Yorum tarafından Avcılar Bilgisayar Teknikservis | 9 Nisan 2010

  2. guzel paylasım

    Yorum tarafından Bilgisayar Teknik Servisi | 21 Temmuz 2010

  3. eyvallah üstat

    Yorum tarafından yusuf | 21 Mayıs 2012


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: