Sedat KIZILÇINAR

Computer Engineer | Sr. Security Engineer | Instructor | AppSec

Kategori : sistem-guvenligi

Windows Sistemlerinde Post Exploitation Part-2

Post exploitation işlemlerinde kullanılan belli başlı araçlar bulunmaktadır. Bu araçlar işletim sistemlerine göre hazırlanmaktadır. Windows işletim sistemine yönelik olan araçlar genellikle çoğunluktadır. Çünkü kurum ve kuruluşlar genellikle yerel ağları üzerinde Windows domain ortamı oluşturmaktadır. Bu doğrultuda kullanılan belli başlı post exploitation araçları aşağıdaki gibidir:

  • NISHANG
  • POWERSPLOIT
  • EMPIRE
  • P0WNEDSHELL

araçları Windows sistemlerine yönelik post exploitation işleminde kullanılabilecek araçlardır.

NISHANG

Nishang, Nikhal Mittal tarafından geliştirilen bir post exploitation araçlar takımıdır. Nishang içerisinde post exploitation işlemleri sırasında kullanılabilecek olan, Powershell dilinde yazılmış script kodları bulunmaktadır. Nishang’e ait script kodları ile; port taraması, bilgi toplama, hak yükseltme, kimlik bilgilerini ele geçirme, backdoor(arka kapı) bırakma gibi işlemler gerçekleştirilebilmektedir. Powershell ile oluşturulduğundan dolayı Windows işletim sisteminde herhangi bir kurulum gerektirmeden çalıştırılabilmektedir. Aracın önemli özelliklerinden biri de çalıştırılan script’lerin disk üzerinde değil, bellek üzerinde çalışmasıdır.

Nishang aracı belirtildiği üzere bir post exploitation aracıdır ve içerisinde Metasploit Framework gibi exploitation modülleri bulunmamaktadır. Ayrıca Nishang, bir post exploitation framework olan Empire aracı gibi, makine üzerinde interaktif işlemlerin gerçekleştirilebileceği bir agent elde etme imkanı da sunmamaktadır. Dolayısıyla exploit edilmiş ve oturum bağlantısı alınmış bir sisteme Nishang aracına ait script kodları yüklenip makine üzerinde çalıştırılmaktadır. Kodlar, Powershell ile yazıldığından ve Windows işletim sisteminde Powershell varsayılan olarak bulunduğundan dolayı, yüklenen script’lerin Import-Module cmdlet ile eklenmesi, komutların çalıştırılabilmesi için yeterli olmaktadır.

POWERSPLOIT

Powershell Microsoft firması tarafından Windows Komut Satırına ve Windows Script Host’a alternatif olarak geliştirilen bir komut satırıdır. Powershell üzerinden çalıştırılacak scriptler ile hedef işletim sistemini ele geçirmek için kullanılmaktadır. Böylelikle Windows sistemlerini ele geçirmeye yönelik zararlı powershell scriptleri içerisinde barındıran framework powersploit olarak adlandırılmaktadır. Powersploit, hedef sistemde bilgi toplama, ağ keşif işlemleri, hak ve yetki yükseltme, kimlik bilgilerin elde edilmesi, Antivirüs bypass ve güvenlik duvarının atlatılması, kimlik bilgilerinin elde edilmesi gibi işlemler yapmaktadır.

EMPIRE

Empire, bir Powershell2.0 Windows Agent ve bir Python2.6/2.7 Linux/OS X Agent içeren bir post exploitation framework’üdür. Powershell Empire ile Python EmPyre projelerinin birleşiminden oluşmaktadır. Framework kriptolojik olarak güvenli iletişim ve esnek bir mimari sunmaktadır. Powershell tarafında, powershell agent’ları powershell.exe’ye ihtiyaç duymadan çalıştırma imkanı ve mimkatz aracının modüllerini hızlı ve esnek bir şekilde çalıştırma imkanı sunmaktadır. Mimikatz aracı genellikle sistemin belleğindeki kimlik bilgilerini elde etmek için kullanılan bir araçtır. Empire aracı, diğer post exploitation araçlarına göre daha işlevsel ve kullanımı güvenli olduğu için daha kullanışlı görülmektedir.

P0WNEDSHELL

P0wnedshell, saldırgan bakış açısı ile hazırlanmış bir post exploitation aracıdır. Powershell.exe’ye güvenmeyen, ancak powershell komut ve fonksiyonlarını powershell çalışma ortamında(.NET) çalıştıran, C# programlama dili ile yazılmış bir saldırı uygulamasıdır. Post exploitation sürecini kısaltmak için içerisinde birçok modül ve binary scriptler barındırmaktadır. Güvenlik duvarlarının atlatılması ve antivirüslerin bypass edilmesine kadar modüller bulunmaktadır. Active Directory ortamında modern saldırılar yapmak ve sistemlerinizi koruyan ekip üzerinde farkındalık yaratmak için doğru savunma stratejilerini oluşturmak için kullanılabilmektedir. Barındırmış olduğu fonksiyonlar aşağıdaki gibidir:

  • PowerSploit: Invoke-Shellcode
  • PowerSploit: Invoke-ReflectivePEInjection
  • PowerSploit: Invoke-Mimikatz
  • PowerSploit: Invoke-TokenManipulation
  • PowerSploit: PowerUp and PowerView
  • Rasta Mouse: Sherlock
  • HarmJ0y’s: Invoke-Psexec and Invoke-Kerberoast
  • Rohan Vazarkar’s: Invoke-BloodHound (C# Ingestor)
  • Chris Campbell’s: Get-GPPPassword
  • Tim Medin’s: GetUserSPNS
  • Besimorhino’s: PowerCat
  • Nishang: Copy-VSS and Invoke-Encode
  • Nishang: Invoke-PortScan and Get-PassHashes
  • Kevin Robertson: Invoke-Tater, Invoke-SMBExec and Invoke-WMIExec
  • Kevin Robertson: Invoke-Inveigh and Invoke-InveighRelay
  • FuzzySecurity: Invoke-MS16-032 and Invoke-MS16-135

Yukarıda görmüş olduğunuz modüller Runspace olarak base64 ile kodlanıp sıkıştırıldıktan sonra belleğe yüklenmektedir.

POST EXPLOITATION ARACI GELİŞTİRİLMESİ

Bu çalışma kapsamında bir post exploitation aracı (Hatedshell) geliştirilmiştir. İsim olarak hated sözcüğü nefret edici anlamını taşımaktadır. Shell sözcüğüyle bir araya getirilerek oluşturulmuştur. P0wnedshell aracının kullandığı bazı modüller eklenmiş olup grafiksel kullanıcı arayüzü oluşturulmuştur. İçerisinde kullanıcı için zararlı powershell scriptleri barındırmaktadır. Barındırdığı bu powershell scriptleri ile sistemler hakkında bilgi toplama ve sistem üzerinde kimlik bilgilerini elde etme işlemleri gerçekleştirmektedir. Ayrıca P0wnedshell aracındaki modüllerden farklı olarak ARP ve ICMP paketleri ile ağ üzerinde taramalar gerçekleştirmektedir. Bu taramalar sonucunda hedef makinenin açık olup olmadığı ve açık portları hakkında bilgi vermektedir.

Hatedshell, Domain Ağındaki en yetkili kullanıcının kimlik bilgilerini ve bilgisayarını ele geçirmeye yönelik geliştirilmiş bir post exploitation aracıdır. Domain Ağında bulunan herhangi bir yetkisiz kullanıcının bilgisayarını ele geçirdikten ve local’de yetki yükseltme işlemini yaptıktan sonra hatedshell aracını üzerinde post exploitation işlemleri gerçekleştirilmektedir. Hatedshell ile ağdaki açık olan bilgisayarları tespit etmek için network ağ taraması gerçekleştirilerek ağ üzerinde açık olan bilgisayarlar tespit edilecektir. Bu işlemi gerçekleştirirken açık olan bilgisayarların açık portlarıda taramaya alınmaktadır. Böylece hedef olarak gösterilen bilgisayara yönelik ağ üzerinden nasıl bir yol izlenileceği konusunda bilgi elde edilmektedir. Bunun yanında Domain ağını incelemeye yönelik olarak domain ağındaki ana sunucunun hostname, rootSid vb. bilgiler elde edilebilmektedir. Bu bilgiler doğrultusunda hedef bilgisayara nasıl bir sızma girişimi yapılacağı konusunda bir fikir üretilmektedir.

Ayrıca Domain Admin’in kimlik bilgilerini ele geçirmek için geliştirilen post exploitation aracı içerisinde bulunan zararlı bir powershell scriptindeki UserHunter fonksiyonu kullanılarak Domain Ağında, Local Administrator hesabının aktif olduğu bilgisayarlar tespit edilmektedir. Domain ağında bulunan herhangi bir bilgisayarda Local Administrator kullanıcısı oluşturulmuş ve aktif ise, bu bilgisayarın hostname ve IP bilgisi gibi bilgiler elde edilmektedir. Aslında bu yapıldığında hedefi ele geçirebilmek için yüzlerce binlerce makineye atlamak yerine direkt olarak birkaç makineye atlama işleminin yapılması yeterli olmaktadır. Çünkü Domain Admin hedef olarak belirlediğimiz bilgisayar üzerinde Local Administrator kullanıcısını oluşturup aktif olarak bırakmış ise, bu bilgisayar üzerinde Domain Admin kullanıcısının Domain Controller’dan bağımsız olarak gerçekleştirilmek istediği işlemler olabilir. Böylelikle, Domain Controller bilgisayarını ele geçirmeden Domain Admin kimlik bilgilerinin Local Administrator hesabının aktif olduğu bilgisayarların herhangi birinde bulunabileceği düşünülerek bilgisayar ele geçirilmektedir. Bilgisayarın ele geçirilmesi, post exploitation sürecini en aza indirgemiş veya başarıyla tamamlanmasını sağlamaktadır.

Hedefe yönelik exploitation işlemi gerçekleştirip hak yükseltme işlemimizi yaptıktan sonra hatedshell aracına eklenmiş olan Mimikatz adlı aracı kullanarak sistemdeki kayıtlı kimlik bilgilerini alarak bütün kullanıcı adları ve parolalar elde edilmektedir. Yalnız Domain Admin parolası doğrudan verilmek yerine NTLM olarak verildiğine göre bunu NTLM olarak kullanıp ana sunucuya ya da Domain Admin’nin ana makinesine bağlanma işlemi gerçekleştirmektedir. Bu bağlantıyı sağlama konusunda yazılacak bir komut satırı işlemi ile bağlantı sağlanmaktadır. Bağlantı, tam olarak bu kimlik bilgilerini kullanarak Mimikatz ve Microsoft’un PsExec Tools’unu kullanarak bağlantıyı sağlayacaktır.

Mimikatz komut satırında çalıştırılan komut kimlik bilgilerinin doğru olması şartı ile öncelikle makinede Microsoft PsExec Tools’u çalıştırıp hedef makineye bağlanmak için çalıştırılmaktadır. Buna bağlı olarak hedef makineye erişimin sağlandığını kontrol etmek için hedef makineye girdiğinde cmd.exe komut satırında ipconfig işlemini gerçekleştirmesini için açılan cmd.exe komut ekranında hedef makinenin IP adresi görüntülendiğinde hedef makinenin ele geçirildiğinin göstergesi olacaktır. Grafiksel kullanıcı arayüzünde kullanıcıya bilgi sağlamak için her sekme için bilgi notu adında bir link bulunmaktadır. Linke tıklandığında bulunan sekmedeki fonksiyon kullanımı ve amacı hakkında bilgi vermektedir.

MIMIKATZ

Mimikatz, Benjamin Delpy tarafından yazılan bir ofansif güvenlik aracıdır. Genellikle sistemlerdeki kimlik bilgilerin elde edilmesi için kullanılmaktadır. Elde edilen kimlik bilgileri ile uzak makinalara bağlanma gibi işlemler gerçekleştirmektedir. Hedef bilgisayardan bilgi toplama için kullanılır. Mimimkatz aracı kendi bünyesinde birçok parametre bulundurmaktadır. Mimikatz aracı ile post exploitation işlemlerinde kullanılmaktadır. Mimikatz, pass-the-hash, pass-the-ticket, Golden ticket, kerberos ticket ve açık paroları elde etme gibi işlemleri gerçekleştirebilmektedir.

PSEXEC TOOLS

Telnet gibi programlar ve Symantec’in PC’si gibi uzaktan kontrol programları her yerde, uzak sistemlerde programları çalıştırmanıza izin vermektedir. Ancak kurulum yapmak ve erişmek istenilen uzak sistemlere istemci yazılımı yüklemenizi gerektirebilir. PsExec, istemci yazılımlarını manuel olarak kurmak zorunda kalmadan, konsol uygulamaları için tam etkileşim ile tamamlanan diğer sistemlerdeki işlemleri yürütmenize izin veren hafif bir telnet değişimidir. PsExec’in en güçlü kullanımları, uzak sistemlerde etkileşimli komut istemlerini başlatmak ve aksi takdirde uzak sistemler hakkında bilgi gösteremeyen, IpConfig gibi uzaktan etkinleştirme araçlarını açmaktır.

POST EXPLOITATION SENARYOSUNUN GERÇEKLEŞTİRİLMESİ

Post exploitation işlemlerinin gerçekleştirilmesinden önce hedef domain ağına dahil olmak için exploitation işleminin gerçekleştirilmesi gerekmektedir. Hedef domain ağına dahil olduktan sonra ele geçirilen makinenin sistem bilgisi, domain ağındaki konum ve yetkileri gibi bilgiler elde edilmelidir. Edinilen bilgiler senaryonun başarı gerçekleştirilmesi için önem arz etmektedir. Şekil 3’de işletim sisteminin mimarisini tespit etme işlemi gerçekleştirilmektedir.

atgr3
Şekil3 : İşletim sistemi mimarisinin belirlenmesi


Şekil 3’de gösterildiği gibi ele geçirilen sistemin mimarisinin öğrenilmesine yönelik kod parçacığı yazılmıştır. Bunun sonucunda sistem üzerinde kullanılan araçların işletim sistemi mimarisine uyumlu olması gerekmektedir. İşletim sisteminin mimarisinin öğrenilmesi, işletim sistemi üzerindeki güvenlik duvarının atlatılması için önemlidir. Şekil 4’de Amsi.dll zararlısını base64 decode işlemi gösterilmektedir.

atgr4
Şekil4 : Amsi.dll dosyasının base64 ile Decode edilmesi


Güvenlik duvarının atlatılması için Powershell 5’te bulunan bir güvenlik açığından faydalanarak, AntiMalware Scan Interface’ini (AMSI) atlatmak için çalıştırılacak kodlar Şekil 4’de gösterildiği gibi xor işlemi yapıldıktan sonra base64 ile encode işlemi yapılarak şifrelenmektedir.

Saldırgan bellek üzerinde kritik işlemler yaparken Amsi/Defender güvenlik duvarı devreye girmektedir. Güvenlik duvarının atlatılması için sahte amsi.dll dosyası /system32 yoluna eklenmelidir. Örnek olarak C://Amsi.dll oluşturulabilmektedir. Böylelikle hazırlanmış sahte dll geçerli path yolunda olduğu için yüklenmektedir. Dolayısıyla dll çalışırken urlmon.dll çalınmaktadır. Bu dll birden fazla yazılım programının aynı işlevi paylaşmasını sağlamaktadır. Böylelikle dll kaçırma işlemi gerçekleştirilmiştir.

Bu bilgiler Powershell 5’in dll korsanlığı için savunmasız olduğunu ve yazma erişimimizin bulunduğu bir yere kopyalanırken kod çalıştırılmasının kontrol edilebileceğini düşünülmektedir. Bu bilgilerle Windows 10’da backdoor, keylogger gibi zararlı yazılımları powershell üzerinde çalıştırılabilmektedir. Oluşturulan bir amsi.dll dosyasını %Path% uzantısındaki bir klasöre kopyalayıp yerel kullanıcı olarak powershell üzerinde bir komut çalıştırırken UAC(User Account Control) sisteminde yerel grup alanına yerel yönetici olarak kullanıcı eklenebilmektedir. Böylelikle Microsoft’un Windows Defender’a yönelik olan amsi.dll’i bypass ederek sistemde yönetici yetkileriyle işlem yapılabilmektedir.

Öncelikle ele geçirilmiş makine üzerinden domain ağında ilerlemeyi sağlayacak bilgileri elde edilmelidir. Domain hakkındaki bilgileri elde etmek için Powerview modülü kullanılmaktadır. Bu modül kullanılan post exploitation aracı içerisinde bulunmaktadır. Şekil 5’te Windows domain ağı üzerinde bilgi toplama işlemi gerçekleştirilmektedir.

atgr5
Şekil5 : Windows domain ağı üzerinde bilgi toplama


Şekil 5’te gösterildiği gibi Windows domain ağı bilgilerinden RootDomainSid’si, domain adı, forest bilgileri vb. bilgiler elde edilmiştir. Ayrıca şekil 4.5’te gösterildiği gibi Domain ağı üzerinde kullanıcının domain ile olan ilişkileri, domaindeki bütün alanları, geçerli olan kullanıcının domain bilgilerini, geçerli kullanıcının Domain Trust’larını almayı ve bu ilişkileri haritalandırmayı yapmaktadır. Şekil 6’da Domain ağı hakkında bilgi toplama işlevinin grafiksel kullanıcı arayüzü üzerinde gösterilmiştir.

atgr6
Şekil6 : Hatedshell kullanılarak bilgi toplama


Şekil 6‘te Domain ağı hakkında hangi bilgilerin elde edileceği hakkında bilgi notu verilmiştir. Bu bilgiler ile saldırgan hedef hakkında senaryo üzerinde değişiklikler yapabilmektedir. Şekil 7’da ise var olan domain ağı hakkında bilgi getirilmiştir.

atgr7
Şekil7 : Hatedshell kullanılarak bilgilerin elde edilmesi


Şekil 7’de gösterildiği gibi Domain Ağını İncele butonuna tıkladıktan sonra kısa bir süre içerisinde domain ağına dair bilgileri getirmektedir. Domain ağı hakkında bilgi toplama için oluşturulmuş arayüzdeki Domain Ağını İncele butonunun işlevi şekil 8’de gösterilmiştir.

atgr8
Şekil8 : Domain Ağını İncele Butonu işlevi


Butona tıklama işlemi gerçekleştiğinde şekil 8’de gösterilen komutlar powershell ortamında çalıştırılmak üzere, domain ağı üzerinde forest bilgileri, domain bigileri, domainSid bilgisi vb bilgileri getirmek için fonksiyonlar oluşturulmuştur.

Sedat KIZILÇINAR