• Kategori: Güvenlik
  • Eyüp ÇELİK
  • Gösterim: 1402

MS-SQL Hacking ve Post Exploitation Yöntemleri - Bölüm 4

4. Hak ve Yetki Yükseltme

Şimdiye kadar yaptığımız işlemlerde MS-SQL servisi “nt authority\system” hak ve yetkileri kurulduğu için yapabildik. Eğer servis bu hak ve yetkiler ile kurulmamış olsaydı birçok yönetici yetkisi isteyen komutu çalıştıramayacaktık maalesef. Bu bölümde düşük hak ve yetki ile kurulmuş MS-SQL servisinin hak ve yetkilerini yükseltme işlemine değineceğiz. Bir MS-SQL sunucusu varsayılanda aşağıdaki hak ve yetkiler ile çalışmaktadır.

0 mssql defaul service account

MS-SQL’i varsayılan servis yetkilere aldık. Hak ve yetkilerimizi kontrol ediyoruz.

1 whoami

Hak ve yetkileri kontrol ettikten sonra, yeni kullanıcı eklemeyi denediğimizde erişim hatası alacağız.

2 net user

MS-SQL’ servis yetkilerinde çalışıyor ve dolayı ile kullanıcı ekleyemiyoruz yahut yönetici hak ve yetkilerinde komut çalıştıramıyoruz. Bu bizim için büyük bir sorun. Bu sorunu aşmak için “Windows Privilege Escalation” exploitlerinden yararlanmamız gerekiyor. Bu noktada imdadımıza “CVE-2015-1701”, “MS15-051” zayıflığını exploit edebilen “Taihou” yetişecektir. Yamamın yüklü olup olmadığını Bölüm 3.c.6’daki “Windows Yamaları Yönetme” konusuna bakabiliriz.

Dip Not: Eğer ele geçirdiğimiz MS-SQL server’da “KB3045171” numaralı patch yüklü değil ise hak ve yetkimizi yükseltebiliriz. Tabi bu aynı zamanda açıklığı gidermek için de “KB3045171” nolu patch’i yüklememiz gerektiği anlamına geliyor.

Taihou’yu https://github.com/hfiref0x/CVE-2015-1701 adresinden bilgisayarımıza indirelim. İndirme işlemi tamamlandıktan sonra “Taihou.sln” dosyasını çalıştırarak editlememiz daha sağlıklı olacaktır.

3 privilege escalation 1

Taihou’yu yukarıdaki gibi editledik. Buna göre Taihou’yu sunucuda çalıştırdığımızda bir “Privilege Escalation” işlemi gerçekleştirecektir. Ardından yönetici hak ve yetkileri ile “eyupcelikx” adında ve “P@ssw0rd1” parolası ile bir kullanıcı ekleyecek daha sonra eklediği bu kullanıcıyı da “Administrators” yerel yönetici grubuna ekleyecek. Kodu yukarıdaki gibi değiştirdikten sonra, projeyi 32 bit ve 64 bit olarak derleyelim. Hedefimizdeki işletim sistemi hangi mimaride çalışıyorsa derlediğimiz mimarideki Taihou’ya ait exe dosyasını sunucuya göndereceğiz. Bizim eriştiğimiz sunucu x64 mimaride çalıştığı için biz derlediğimiz Taihou64.exe dosyasını sunucuya göndereceğiz. Bunun için de bölüm “3.d.1 Windows’a Dosya İndirme” konusuna göz atabilirsiniz.

Derlediğimiz Taihou64.exe dosyasını Kali Linux’taki “/var/www/html” dizininin altına alalım. Ardından “chmod 777 Taihou64.exe” komutu ile dosyayı yetkilendirelim.

4 chmod

Bu işlemin ardından artık MS-SQL sunucusuna Taihou64.exe dosyamızı indirmemiz lazım. Dosyayı indirirken dikkat etmemiz gereken en önemli nokta, servis hesabında çalışan MS-SQL sunucusunun okuma ve yazma yetkisinin olduğu bir dizine dosyayı indirerek çalıştırmaktır. Windows’da bu dizin “C:\Users\Public” dizinidir. Bu dizin tüm servis ve kullanıcılar tarafından okuma ve yazma işlemlerine izin veren bir dizindir. Dolayısı ile Taihou64.exe dosyamızı bu dizine indireceğiz. Ayrıca bu işlem için bölüm “2.a.1”de yer alan SMB servisini kullanarak da dosyamızı hedef sunucuya yükleyebiliriz.

Dosyayı herhangi bir yöntem ile dizine indirdikten sonra gidip çalıştırmamız lazım. Uygulamayı çalıştırmak için “EXEC xp_cmdshell'"dosya dizini ve dosya adı"';” komutunu kullanabiliriz.

5 privilege escalation 2

Uygulamayı çalıştırdıktan sonra uygulama hak ve yetkilerimizi yükselterek “eyupcelikx” kullanıcısını sisteme ekledi ve administrators grubuna dahil etti. Daha sonra “net user” komutu ile sorguladığımızda kullanıcının eklendiğini görmekteyiz.

Not: Bu işlem Windows Server 2008 R2 Service Pack 1 ve MS-SQL Server 2012 ve MS-SQL Server 2014 versiyonlarında test edilmiştir. Windows Server 20012 R2 işletim sisteminde çalışmamaktadır.

5. İzlerin Temizliği (Anti-Forensics)

Bu kısımda tüm yaptığımız işlemlerin izlerinin silinmesi kısmına değineceğiz. Malum, yaptığımız tüm işlemler, attığımız her adım bir yerlerde loglanmakta ve sistem üzerinde izler bırakmaktayız. Geriye iz bırakmamak adına logların temizlenmesi gerekiyor. MS-SQL için 3 ayrı event log tutuluyor diyebiliriz.

5.1. Microsoft Event Log

Yaptığımız bazı işlemler Microsoft Event Log’da loglanabilir. Microsoft Event Log temel olarak “Application”, “Security”, “Setup” ve “System” başlıkları altında loglama yapmaktadır. Bu logların temizlenmesi için aşağıdaki komutları kullanabiliriz.

İşlem Komut
Application Log EXEC xp_cmdshell'wevtutil clear-log Application';
Security Log EXEC xp_cmdshell'wevtutil clear-log Security';
Setup Log EXEC xp_cmdshell'wevtutil clear-log Setup';
System Log EXEC xp_cmdshell'wevtutil clear-log System';
Routing Tablosu EXEC xp_cmdshell'route print';

5.2. MS-SQL Log

MS-SQL standart Windows Log servisi dışında kendi loglama sistemini de kullanmaktadır. MS-SQL Log’ları her MS-SQL servisi için ayrı bir dizinde tutulmaktadır. Bu dizini bulmak için “EXEC sp_readerrorlog” stored procedure’ünü kullanabiliriz. Bu procedure bize MS-SQL ile ilgili bir takım bilgiler getirecektir. Procedure çalıştırıldıktan sonra bize dönen verinin 7. Satırında MS-SQL log dizini yer almaktadır.

6 mssql log directory

Yukarıdaki ekranda görüleceği üzere bağlandığımız MS-SQL servisinin Log dizini 7. Satırda görülmektedir. \Log\ dizininden sonraki parametreyi silerek MS-SQL log dizinini temizlememiz gerekiyor. Bunun için aşağıdaki komutu kullanabiliriz.

İşlem Komut
MS-SQL Log Temizleme EXEC xp_cmdshell'DEL /F /S /Q "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\*.*"';

Tabiki yukarıdaki komutu olduğu gibi kullanırsanız hata alma olasılığınız çok yüksek. Bu yüzden sp_readerrorlog procedure’ü ile log dizinini almak zorundayız.

Dip Not: Bu komut son MS-SQL loglarını silmemektedir. Son log dosyası MS-SQL servisi tarafından kullanıldığı için dosyaya erişim kısıtı mevcuttur. Bu sorunu aşmak için ise logları silmeden önce “EXEC sp_cycle_errorlog” stored procedure’ü ile halihazırda kullanılmak olan log dosyasının kullanımdan çıkarılarak yeni dosya oluşturulmasını sağlayarak, yukarıdaki komutu çalıştırdığımızda tüm logları temizlemiş oluruz.

5.3. Powershell Log

Bazı durumlarda “powershell” komutları ile işletim sisteminde komutlar yürütmemiz gerekebiliyor. Bu durumda eğer sistem powershell komutlarının girdi ve çıktılarını logluyor ise bu logların da temizlenmesi gerekiyor. Powershell loglama eğer “Group Policy” ile açılmış ise detaylı bir loglama yapılır. Bu detaylı loglama tüm powershell komut ve scriptlerinin içerikleri ile birlikte loglanması anlamına gelmektedir. Varsayılanda powershell aşağıdaki log dosyalarını kullanır.

  1. Windows PowerShell.evtx
  2. Microsoft-Windows-PowerShell-Operational.evtx
  3. Microsoft-Windows-PowerShell-Analytic.etl

Ayrıca tüm log dosyaları “C:\Windows\System32\winevt\Logs” dizininde yer almaktadır. Bu dizinin temizlenmesi yada yukarıda sıraladığım Powershell loğlarının temizlenmesi yeterli olacaktır.

4 Bölüm olarak yayınladığım "MS-SQL Hacking ve Post Exploitation" için hazırlamış olduğum dökümana "Slideshare" üzerinden erişebilirsiniz: http://www.slideshare.net/EypELK/mssql-hacking-ve-post-exploitation-yntemleri

Yorum ekle


Güvenlik kodu Yenile

Bookmaker betfair Bonus review by ArtBetting.co.uk

Bookmaker bet365 review by ArtBetting.co.uk

Germany bookmaker b.artbetting.de review by ArtBetting.de

Bookmaker Greece BET365 review by ArtBetting.gr

Back to top