Process Injection Yöntemi ile Komut Çalıştırma

 

Bilgisayar dünyasında, siber güvenlik ve yazılım geliştirme alanında oldukça ilginç ve güçlü teknikler mevcuttur. Bunlardan biri de “Process Injection” olarak adlandırılan yöntemdir. Bu teknik, bir hedef süreçte yabancı kod veya komutların enjekte edilmesini sağlar ve bu sayede hedef süreç üzerinde çeşitli manipülasyonlar yapılabilir. “Process Injection” yöntemlerinden biri olan “Remote Thread Injection” (Uzaktan İş Parçacığı Enjeksiyonu), hedef sürecin bellek alanına uzaktan bir iş parçacığı oluşturarak hedef sürece yabancı bir kod veya komut enjekte ederek çalıştırılmasını sağlar. Bu yazıda, bu ilginç ve etkileyici teknik üzerinde durarak, “Process Injection Yöntemi ile Komut Çalıştırma” konusunu, kodun neden geliştirildiğine dair nedeni ve kodun çalışma şekli anlatılacaktır.

 

1. Process Injection Nedir?

Process Injection, bir hedef süreçte yabancı kod veya komutların enjekte edilmesine olanak sağlayan bir siber güvenlik ve yazılım geliştirme tekniğidir. Bu yöntem, hedef süreç üzerinde komut çalıştırma, DLL veya shellcode enjekte etmek gibi istenmeyen davranışlar gerçekleştirme ve hedef süreci izleme gibi çeşitli amaçlar için kullanılabilir. Process Injection yöntemleri, saldırganlar tarafından kötü amaçlı yazılım ve zararlı kodlar üretmek için sıklıkla kullanılan bir yöntemdir.

 

2. Remote Thread Injection

Uzaktan iş parçacığı enjeksiyonu, bir hedef süreçte, uzaktan başka bir süreçteki yabancı bir kod parçasını yürütmek amacıyla yeni bir iş parçacığı oluşturmak için kullanılan bir yöntemdir. Bu teknik, bir uygulamanın hafızasına başka bir süreçten kod enjekte ederek, hedef uygulama üzerinde istenmeyen davranışlar gerçekleştirmek, ek işlevselliği uygulamak veya hedef süreci manipüle etmek için kullanılabilir.

 

3. Komut Çalıştırma

Uzaktan iş parçacığı enjeksiyonu, hedef sistemlere sızma ve yayılma yöntemi olarak kullanılır. Bir saldırgan, hedef süreç içine zararlı bir kod parçasını veya bir cmd.exe komut istemcisi ile komut enjekte ederek, hedef uygulamanın işlevselliğini değiştirebilir ve sistemi kontrol edebilir. Bu şekilde, saldırgan sistemi ele geçirme ve kötü amaçlı faaliyetler gerçekleştirme şansı elde eder.

 

4. Kodun Geliştirilme Sebebi

Yerel ağ sızma testlerinde çokça karşılaşılan bir senaryo mevcut. Domain’e bağlı bir istemci sistem üzerinde yerel yönetici haklarına sahip olunan bir senaryoda, bu sistem içinde yetkili bir domain kullanıcısının oturumu mevcut. Domain yapısında yetki yükseltmek için oturumu mevcut olan domain kullanıcısına bürünmek veya bu kullanıcı adına komut çalıştırabilir hale gelmek gerekmektedir.

Laboratuvar ya da CTF (Bayrağı Ele Geçir) ortamlarında bu şekilde bir senaryo olduğunda genellikle bir meterpreter tarzı bir oturum ile karşı bağlantı sağlanıp ardından ilgili kullanıcının süreçlerine geçiş yaparak ilgili kullanıcıya bürünüp ilerlenebilir. Fakat gerçek hayat senaryolarında iş bu kadar kolay olmuyor maalesef. Çeşitli antivirus ve EDR çözümleri, herkese açık araçları bildiğinden hemen aksiyon alıp işleme son veriyor.

Meterpreter oturumundaki bu işlemi gerçekleştiren komutun elle sıfırdan yazılması hem antivirüs ve EDR çözümlerinden kaçmaya yardımcı olup, hem de ne şekilde çalıştığını anlamamıza katkı sağlar.

 

5. Kod Parçacığı Açıklaması

Kod üzerinde antivirüs veya EDR çözümlerinden kaçınmaya yönelik herhangi bir işlem gerçekleştirilmemiştir.
İlgili kod parçacığı, uzaktan iş parçacığı enjeksiyonu yöntemi kullanarak hedef süreçte komut çalıştırmayı gösterir. Kod, C++ programlama dilinde yazılmıştır ve Windows API‘larını kullanarak işlemleri gerçekleştirir. Öncelikle, gerekli ayrıcalıkların elde edilmesi durumunda hedef sürecin açılması gerçekleştirilir. Daha sonra, hedef sürece uzaktan bir iş parçacığı oluşturulur ve bu iş parçacığına komut yürütme işlevini sağlayan “cmd.exe” çalıştırılır.

 

6. Kodun İncelenmesi

Uzaktan iş parçacığı enjeksiyonu yöntemi kullanarak hedef süreçte komut çalıştırmayı sağlayan C++ kodu:
Geliştirilen bu kod 2 adet parametre almaktadır. İlk parametre uzaktan komut çalıştırılacak hedef sürecin PID numarası, ikinci parametre ise çalıştırılacak olan komut.

PID değerini alan ilk parametre tam sayı değişkeni olarak atanır.

 

OpenProcess fonksiyonu ile hedef süreç tam yetki ile açılır.

 

 

VirtualAllocEx fonksiyonu ile hedef süreçte yeni bellek alanı rezerve edilir.

 

 

Kodun aldığı ikince parametre, cmd.exe tarafından çalıştırılacak şekilde command adlı değişkene atanır.

Ardından WriteProcessMemory fonksiyonu ile command değişkenin komut dizesini hedef süreçte rezerve edilen alana yazar.

 

 

Kernel32.dll modülü ile GetProcAddress çağrılarak WinExec fonksiyonuna yönelik “pThreadProc” adında bir değişken tanımlanır. Bu fonksiyon, hedef süreçte uzak bir iş parçacığı olarak yürütülecektir.

Ardından CreateRemoteThread fonksiyonu kullanılarak hedef işlemde bir uzak iş parçacığı oluşturulur. İş parçacığı, “pThreadProc” (WinExec) işlevi ile “remoteMem” değişkenindeki komutu çalıştırır.

WaitForSingleObject fonksiyonu, işlemin tamamlanmasını bekler.

 

 

Buraya kadar olan tüm işlemler başarılı şekilde tamamlandığında hedef süreç için rezerve edilen bellek alanı serbest bırakılır.

 

 

Aşağıdaki görselde 6260 PID numaralı svchost.exe süreci üzerinde geliştirilen kod vasıtasıyla başarılı bir şekilde başka bir kullanıcı adına komut çalıştırılmıştır.

 

 

Geliştirilen bu kod yerel ağ sızma testlerinde kullanılan CrackMapExec adlı araca “pi” modülü olarak eklenmiş olup 6.0.1 sürümü ile birlikte herkese açık bir şekilde kullanılabilmektedir.

 

 

7. Önleme ve Savunma Yöntemleri

Saldırı İzleme ve İncelenmesi: Sistem günlüklerini ve işlem izleme araçları kullanılarak işlem enjeksiyonlarını tespit edilmesi.

Bellek Analizi Araçları: Bellek analizi araçları, işlem belleğinin izlenmesi ile anormal kod enjeksiyonlarının tespit edilmesi.

Davranışsal Analiz: Sistemde çalışan işlemlerin normal davranışlarını belirleyerek, anormal aktiviteleri tespit edilmesi.

Minimum Ayrıcalıklar İlkesi: İhtiyaç duyulan minimum ayrıcalıklara sahip olan işlemleri çalıştırmak.

Bellek Koruması: Bellek koruma mekanizmaları, işlem belleğini koruyarak kod enjeksiyonlarını engelleyebilir.

Uygulama Beyaz Listesi: Sadece güvenilen ve ihtiyaç duyulan uygulamalara izin verilerek kötü niyetli yazılımların çalışması engellenebilir.

Bu yazıda, “Process Injection Yöntemi ile Komut Çalıştırma” konusu ele alındı. Hedef süreçte komut çalıştırmak güçlü ve etkileyici bir uygulama alanıdır. Ancak, bu tür tekniklerin yalnızca yasal ve etik amaçlar için kullanılması önemlidir. Saldırılardan korunmak için güvenlik önlemleri almak ve siber güvenlik bilincini artırmak, bilgisayar kullanıcıları ve sistem yöneticileri için önemli bir görevdir. Bilinçli ve dikkatli yaklaşım, dijital dünyada daha güvenli bir deneyim sunacaktır.

 

Kaynaklar

https://www.ired.team/offensive-security/code-injection-process-injection/process-injection/

https://aliongreen.github.io/posts/remote-thread-injection.html

 

Mehmetcan TOPAL tarafından hazırlanmıştır.

 

 

 

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*

Mail listemize üye olarak eğitim fırsatlarını kaçırmayın!
Eğitim ve ücretsiz etkinliklerizden haberdar olmak için e-posta listesimize üye olun!.