Process Doppelgänging

Selamlar herkese.

Bu yazıda PE injection tekniklerinden biri olan Process Doppelgänging’in teknik detaylarından bahsettim. Çerezlik bir yazı daha.

Blackhat Europe 2017’de enSilo’dan Tal Liberman ve Eugene Kogan “Lost in Transaction: Process Doppelgänging” adlı bir sunum yaptılar.

Sunum PE injection için yarattıkları yeni tekniğe ait süreci içeriyor. Öncesinde eski nesil teknikler, ilgili tekniklere ait problemler vs yer almakta. Yazının temel odağı yeni tekniğe ait detaylar olduğundan öncesi ile alakalı kısımlara sunum üzerinden erişebilirsiniz. Detaylı girmem zor gibi. :/

Nedir bu Process Doppelgänging?

Kendisi temel olarak zararlı bir uygulamayı sistem parçası olan bir uygulama altında çalıştırmayı sağlıyor. İlgili teknik RunPE(Process Hollowing) tekniği ile aynı amacı gütmekte ancak tekniğin çalışma yapısı, kullandığı API’ler farklı olduğundan dolayı RunPE’den ayrılıyor. (Tekniğin kullandığı API’ler farklı olduğundan dolayı ilk ortaya çıktığı zaman antivirüs’ler tarafından tespiti bir hayli zor olmuş. Sunumun son kısımlarında test edilmiş güvenlik ürünleri yer alıyor.)

Bu farklılığı tam anlatmak için Process Hollowing tekniğinin hangi adımlardan oluştuğuna bakmakta fayda var.(Görselleri sunumdan arakladım!)

Process Hollowing ?_?

Tekniğin temel amacının sistem parçası uygulama altında zararlı aktivitelere sahip başka bir uygulamayı çalıştırma olduğunu söylemiştik.

İlk olarak hedef uygulama suspended şekilde başlatılıyor.(CreateProcess fonksiyonu ve Process Creation Flags)

g1

Ardından NtUnmapViewOfSection fonksiyonu ile az sonra belleğe taşıyacağımız zararlı için ortamı hazırlıyoruz.

g2

Elimizde RAW data halde bulunan zararlımızı Windows üzerinde koşturabilmek için hafızada yerimizi belirlememiz, rezerve etmemiz lazım. VirtualAllocEx

g3

Zararlımız PE formatında ve her bölümü hafızaya yazmamız gerekmekte.WriteProcessMemory

g4

Son olarak ilgili process’i devam ettirmeden önce EP’i güncellememiz lazım. SetThreadContext

g5

Ver elini başlasın, zararlı kodlar fink atsın.

Teknik bu şekilde. Şuradan örneklemeye ulaşabilirsiniz.

Şimdi geri gelelim Doppelgänging’e.

Teknik 4 adımdan oluşuyor.

  1. Transact
  2. Load
  3. Rollback
  4. Animate

Transact

About Transactional NTFS

Teknik bu kısımda TxF denen mekanizmayı kullanmakta. Detayına girsek kolay çıkamayacağımız bu mekanizmanın ve sağladığı API’lerin aslında temel amacı çoklu işlemleri tek ele almak ve dosya güncellemeleri, DTC gibi durumlar için kullanmak.

Yani işlem içerisinde dosya yarattığınızda işlem dizisini sonuçlandırmadığınız sürece ilgili dosya gözükmez. Devamında ilgili dosyaya normalde olduğu gibi yazım yapabilir ve kullanabilirsiniz.

Teknik bu adımda sistem parçası olan ya da belirtilmiş path içerisinde bir Transacted dosya yaratıyor. Ardından yarattığı bu dosyaya zararlı dosyanın içeriğini yazıyor.(Burada zararlı olan illa dosya olarak bulunmak zorunda değil. İşlem üzerinde zaten byte buffer şeklinde bulunacağından loader’ın kendisinde de saklanabilir. Zevk meselesi.)

Load

TxF ile hiç varolmamışçasına herhangi bir path üzerinde bulunuyormuş gibi dosya oluşturulmuş ve zararlı uygulama yazılmış dedik. Ardından teknik NtCreateSection ile bu dosyamızı hafızaya yüklüyor.

Rollback

TxF’in sunduğu nimetlerden birisi de Rollback. İlk başta Transacted bir dosya yaratıldığını söyledik. Bu işlem dizisi yani yaratma süreci Rollback ile geri alınabilmekte. Yani Load’a kadar normal şekilde işlemler giderken Rollback ile işlemi geri alıp işletim sisteminin dosya  sisteminde hiç oluşturulmamış gibi davranmasını sağlayabiliyoruz. Teknik aynen bu işlemi yapıyor ve üst taraftan bakınca ortada dosya felan yok kardeşim dedirtiyor.

Animate

Bu noktada artık teknik oluşturduklarına can veriyor. Load adımında zararlının memory’e aktarıldığını, bir section yaratıldığını söylemiştik. Bu adımda NtCreateProcessEx ile bir process yaratılıyor ve işlem esnasında hafızada oluşturulan section kullanılıyor.

Tekniğin adımları bu şekilde. Klasik olan teknikten farkı da bariz şekilde ortada. Hollowing içerisinde bu dosya işlemleri normal şekilde yapıldığından ve kullanılan API’ler bariz olduğundan(Önce process’in ayağa kalkması ve ardından zararlı dosyanın okunup yazılması gibi gibi) AV’lerin kucağında. Doppelgänging’de TxF nimeti sayesinde dosya sürecinin farklılaşması işin seyrini tamamiyle değiştiriyor.

hasherezade ablamızın örneklemesi

3gstudent’a ait örnekleme

Üst tarafta bulunan linklerden örnek kodlara ulaşabilirsiniz.

Demo

Process Doppelgänging” için bir yanıt

Yorum bırakın