Yazarın bu bölümdeki diğer yazıları...
Kontrolsüz Güç PowerShell
Osman BAĞCI, TÜBİTAK BİLGEM SGE   
19.12.2014

Gelişen güvenlik çözümlerine karşı yeni saldırı türleri ve araçları da geliştirilmektedir. Saldırganların Windows işletim sistemlerinden parola veya şifre özeti (hash) elde etmek için sıklıkla kullandığı “Mimikatz” ve “WCE” gibi araçlar güncel anti-virüs uygulamaları tarafından tespit edilebilmektedir. Saldırganlar bu engeli güncel  Windows işletim sistemlerinin ön tanımlı (default) ayarlarında açık olarak gelen “PowerShell” ile çözmektedirler.

Bu makalede “Powershell-Mimikatz.ps1” betiğinin (script) çalışması ve sonuçları hakkında bazı bilgiler yer almaktadır. Ayrıca bu betiğe karşı alınabilecek önlemler makalenin son bölümünde anlatılmaktadır.

1. PowerShell Nedir?

Windows PowerShell Microsoft tarafından Windows komut satırı Cmd.exe ve Windows Script Host'a alternatif olarak geliştirilen yeni nesil bir komut satırı uygulamasıdır. Windows PowerShell'in sunduğu yeni komut yapısı Unix sistemindeki komut yapısına benzemektedir. Kullanıcı herhangi bir komutu çalıştırdığında farklı komutlar ile bağ kurabilmektedir. Windows PowerShell 30 Kasım 2006'da ilk olarak Windows Vista işletim sisteminin bir parçası olarak planlanmıştır. Microsoft Exchange Server 2007 ile beraber ilk kez piyasaya sürülmüştür. Windows PowerShell 1.0 sürümü Windows XP, Windows Server 2003 ve Windows Vista için ücretsiz olarak indirilebilmektedir. Windows 7'den itibaren Windows PowerShell 2.0 işletim sistemi ile beraber gelmektedir. Windows PowerShell 2.0 bir önceki sürümünden farklı olarak görsel kullanıcı arayüzüne sahiptir. [1] PowerShell 2.0 ve üstü sürümlerin kullanımı Şekil 1‘de gösterilmiştir. Microsoft tarafından kullanıcılara sunulan bu hizmet saldırganların da dikkatinden kaçmamıştır. “Mimikatz” zararlı yazılımını bu yeniliğe uyumlu hale getirerek “PowerShell-Mimikatz.ps1” betiği oluşturulmuştur.

powershell_versions.jpg

Şekil 1. PowerShell 2.0 ve Üstü Sürümlerin Kullanımı [2]

2. “PowerShell-Mimikatz.ps1” Betiğinin Çalıştırılması

Öncelikle Powershell üzerinde herhangi bir betiğin çalışması için ExecutionPolicy parametresinin ön tanımlı değerinin (Restricted) değiştirilmesi gerekir. [3] Bu değişikliğin yapılabilmesi ve betiğin çalıştırılabilmesi için Şekil 2‘de gösterildiği gibi Powershell yönetici olarak açılmalıdır.

1-executionpolicy.jpg

Şekil 2. Powershell Açılma Hakkı ve “ExecutionPolicy” Parametresinin Değiştirilmesi

Yapılan değişiklikten sonra “Powershell-Mimikatz.ps1” betiği fonksiyon olarak çağırılıp, çalıştırılır. Bu betik DLL (Dynamic-Link Library) enjeksiyonu (injection) yöntemini kullanarak klasik “Mimikatz” komutlarını otomatize edilmiş şekilde çalıştırır. Mimikatz zararlı yazılımı bellek (RAM) üzerindeki “LSASS.exe” prosesini kullanarak hesap bilgilerine (etki alanı adı-kullanıcı adı-parola/şifre özeti) ulaşır. [4] Betiğin çalışması sonucunda bilgisayarın belleğinde bulunan hesap bilgileri Şekil 3’de gösterildiği gibi açık metin halinde elde edilebilir.

 
2-powershell-mimikatz_result.jpg

Şekil 3. “Powershell-Mimikatz.ps1” Betiğinin Çalışması Sonucunda Elde Edilen Bilgiler

Uzaktan komut çalıştırılmasına izin veren durumlarda da bu betik kullanılabilmektedir. WinRM servisi ve PSRemoting parametresinin aktifleştirilmesiyle uzaktan PowerShell komutları çalıştırılabilmektedir. Ayrıca betik hedef sistemlerin erişebileceği bir şekilde yayınlandığı takdirde uzaktan yönetici olarak açılan komut satırından da hesap bilgileri elde edilebilir. Bu durum Şekil 4 ve Şekil 5‘de gösterilmiştir.

remote01.jpg

 Şekil 4. “PowerShell-Mimikatz.ps1” Betiğinin Uzaktan Çalıştırılması-1

remote02.jpg

Şekil 5. “PowerShell-Mimikatz.ps1” Betiğinin Uzaktan Çalıştırılması-2

3. “PowerShell-Mimikatz.ps1” İstatistikleri

“PowerShell-Mimikatz.ps1” betiği ilk olarak 2013 yılında ortaya çıkmıştır. “PowerShell-Mimikatz.ps1” betiğinin çeşitli koşullar altında çalışması sonucunda elde edilen bilgiler Tablo 1’de gösterilmiştir. Ayrıca yapılan tüm denemelerde etki alanı adı/makine adı ve kullanıcı adı bilgileri elde edilmiştir. Bu bilgilere aşağıdaki tabloda yer verilmemiştir.

tablo-1.png

Tablo 1. “PowerShell-Mimikatz.ps1” Betiğinin Çeşitli Koşullar Altında Çalışması Sonucunda Elde Edilen Bilgiler

* : RDP (Remote Desktop Protocol) veya SMB (Server Message Block) servisleri kullanılmıştır.

Yapılan çalışmalar sonucunda kerberos mekanizmasından elde edilen hesap bilgileri (parola/şifre özeti) hedef sistemde kurulu olan uygulamalara ve kullanış biçimlerine göre değişmektedir. Aynı hedef sistem üzerinde farklı zamanlarda çalıştırılan betik farklı sonuçlar üretebilmektedir.

Saldırganlar tarafından sıklıkla kullanılan “Mimikatz” zararlı yazılımı günümüzde güncel olan birçok anti-virüs uygulaması tarafından tespit edilirken “PowerShell-Mimikatz.ps1” betiği aynı oranda tespit edilememektedir. İlgili ekran görüntüleri Şekil 6 ve Şekil 7‘de gösterilmiştir. 

virs_total-mimikatz.jpg 

Şekil 6. “Mimikatz.exe” Uygulamasının Güncel Anti-Virüs Uygulamaları Tarafından Tespit Edilme Oranı [5]

virs_total-powershell.jpg

Şekil 7. “Powershell-Mimikatz.ps1” Betiğinin Güncel Anti-Virüs Uygulamaları Tarafından Tespit Edilme Oranı [5]

4. “PowerShell-Mimikatz.ps1” Betiğinin Kullandığı Güvenlik Mekanizmaları

Bu betik “LSASS.exe” prosesinin içindeki güvenlik mekanizmaların kullandığı hafıza adreslerine erişerek burada bulunan değerleri okumaya çalışır. Kimlik doğrulamayı (authentication) sağlayan protokollerin kullanımı arttıkça betiğin çalışması sonucunda hesap bilgilerini alma olasılığı da artmaktadır. Örneğin RDP Microsoft Windows sistemlerde sunuculara veya istemcilere uzaktan bağlanıp yönetmek amacıyla en çok kullanılan protokoldür. Fakat kullanıcının bu protokolü kullanımı esnasında RDP başlatan sistemde “PowerShell-Mimikatz.ps1” betiği çalıştırılırsa hesap bilgileri (kullanıcı adı-parola) elde edilebilir. Tablo 2’de çok kullanılan güvenlik mekanizmaları ve kullanım alanları hakkında bazı bilgiler yer almaktadır.

tablo-2.png 

Tablo 2. Çok Kullanılan Güvenlik Mekanizmaları ve Kullanım Alanları

5. “PowerShell-Mimikatz.ps1” Betiğine Karşı Alınabilecek Önlemler

Microsoft ürünlerini korumak için uygulanması gereken en önemli adımlardan biri kullanılan sistemlerin güncel tutulmasıdır. Yapılan çalışmalar sonucunda  Windows Defender uygulamasının güncel sürümlerinde betik “Potansiyel Zararlı Yazılım” olarak tanınmaya başlamıştır.

Bir diğer adım anti-virüs uygulamalarıdır. İmza tabanlı anti-virüs yazılımları yeni çıkan zararlı yazılımları tespit etmede başarısızdır. Fakat davranış tabanlı koruma mekanizmaları bu konuda daha başarılıdır.

“PowerShell-Mimikatz.ps1” betiği çalıştırabilmek için saldırganın yönetici haklarıyla hedef sisteme erişmesi gerekir. Bu haklara veya hesap bilgilerine sahip olan saldırgan çoğu güvenlik mekanizmasını rahatlıkla atlatabilir. Bu yüzden işletim sistemi üzerinde yapılacak sıkılaştırmalar saldırganın uzaktan sisteme erişmesini engeleyecek nitelikte olmalıdır. Saldırganlar bu amaçla en çok “Metasploit-PsExec” ve “Sysinternals-PsExec” araçlarını kullanmaktadır. Bu araçların çalışması için temel şartlar Microsoft Windows sistemlerinde ön tanımlı ayarlarında açık olarak gelen yönetimsel paylaşımlar ve yetkili bir hesaba ait şifre özeti bilgileridir. Bu kapsamda aşağıdaki sıkılaştırmalar uygulanabilir:

Yönetimsel paylaşımların kapatılması; Paylaşımların kapatılması için kayıt defterinden “HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters” altında bulunan AutoShareWks ve AutoShareServer parametrelerinin değeri ‘0’ olarak değiştirilmeli yoksa “REG_DWORD” tipinde eklenmelidir. [10]

Yönetici onay modlarının aktif hale getirilmesi; Bu işlem grup politikası veya kayıt defterinden gerçekleştirilebilir:

1. Grup politikası ile: “Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options” altında bulunan User Account Control: Admin Approval Mode fort he Built-in Administrator account ve User Account Control: Run all administrators in Admin Approval Mode güvenlik ilkeleri etkinleştirilmelidir. [10]

2. Kayıt defteri ile: “HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System” altında bulunan EnableLUA” ve FilterAdministratorToken parametrelerinin değeri ‘1’ olarak değiştirilmelidir. [10] 

Kaynaklar

[1] http://tr.wikipedia.org/wiki/Windows_PowerShell

[2] https://www.blackhat.com/docs/us-14/materials/us-14-Kazanciyan-Investigating-Powershell-Attacks.pdf 

[3] http://technet.microsoft.com/en-us/library/ee176961.aspx

[4] http://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/bellekten-parolalarin-elde-edilmesi-2.html

[5] https://www.virustotal.com 

[6] http://technet.microsoft.com/en-us/library/cc778868%28WS.10%29.aspx  

[7] http://msdn.microsoft.com/en-us/library/windows/desktop/bb931352(v=vs.85).aspx 

[8] http://en.wikipedia.org/wiki/Kerberos_%28protocol%29#Protocol 

[9] http://msdn.microsoft.com/en-us/library/windows/desktop/aa374733%28v=vs.85%29.aspx

[10] http://www.bilgiguvenligi.gov.tr/sizma-testleri/pass-the-hash-saldirilari-ve-korunma-yontemleri.html


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

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.