Process Injection Teknikleri 2 - Process Hollowing ve Atombombing
Zararlı yazılımları yazan kişiler veya grupların tespitlerden kaçabilmek için geliştirdiği diğer tekniklerden biride Atombombing tekniğidir. Yanlış araştırmadıysam eğer ilk olarak Ensilo araştırma ekibi tarafından fark edilmiş. Daha sonra ise 2017 yılında banking trojan kategorisindeki
Process Injection tekniklerinin ikinci kısmı ile karşınızdayım. İlk seride Dll ve Portable Executable Injection konularıyla ilgili bilgiler yer alıyordu. Bu seride ise Process Hollowing ve Thread Execution Hijacking konuları yer alacak.
1 - Process Hollowing
Bu tekniği kullanan malware yazarları, hedef kişinin yada kurumun bilgisayarlarında çalışan işlemlere kod enjekte etme yerine (dll injection gibi) , hali hazırda çalışan yasal ve zararlı olmayan uygulamaların (svchost.exe gibi) executable section’larını zararlının executable section’ları ile değiştiriyorlar ve bu teknikte Process Hollowing olarak geçiyor.
Bu tekniğin zararlı yazılımlar açısından en büyük avantajı ise zararlının normal işlemler arasında görünerek, gizlenmelerini ve bulunmalarını daha fazla zorlaştırmaları diyebiliriz.
SHA256 - eae72d803bf67df22526f50fc7ab84d838efb2865c27aef1a61592b1c520d144
Zararlı yazılımı herhangi bir unpack işlemine almadan önce IDA Pro üzerinde incelediğimizde; Öncelikli olarak zararlı yazılım elindeki zararlı kodu suspended mod içerisinde çalıştırabilmek için yeni bir process oluşturur. Yukarıdaki resimde göreceğiniz üzere CreateProcess fonksiyonu çağrılır ve Process Creation Flag
‘ı CREATE_SUSPENDED (0x00000004) olarak ayarlar. Yeni oluşturulan işlem (process) suspended mod içerisinde oluşturulduğu için ResumeThread
çağrılana kadar herhangi bir çalışma işlevi yürütmez.
Daha sonra ise zararlı yazılımın, normal dosyanın executable sections’larını zararlıya ait executable sections’lar ile değiştirmesi gerekir. Bu değiştirme işlemini de NtUnmapViewOfSection
veya ZwUnmapViewOfSection öğelerini çağırarak hedef işlemin belleğinde eşleştirerek gerçekleştirir. Bu iki temel API temel olarak bir bölümde gösterilen tüm belleği serbest bırakıyor.
Şuan için hafıza eşlenmemiş(unmapped) ve yükleyeci tarafından zararlıya yeni bellek ayırabilmek için VirtualAllocEx
işlemi gerçekleştirir. Ve sonrasında da zararlıya ait bölümlerin her birini hedef işlem alanına yazmak için WriteProcessMemory
fonksiyonu kullanılır.
Zararlı giriş noktasını yazdığı yeni bir kod bölümüne yönlendirmek içinde SetThreadContext
fonksiyonunu çağırıyor. Son olarak da zararlı suspended mod içerisindeki işlemi aktif edebilmek içinde ResumeThread
fonksiyonunu çağırır.
2- APC Injection ve Atombombing
Zararlı yazılımları yazan kişiler veya grupların tespitlerden kaçabilmek için geliştirdiği diğer tekniklerden biride Atombombing tekniğidir. Yanlış araştırmadıysam eğer ilk olarak Ensilo araştırma ekibi tarafından fark edilmiş. Daha sonra ise 2017 yılında banking trojan kategorisindeki Dridex adlı zararlının 4. versiyonunda kullanıldığı keşfedilmiş.
Zararlı yazılım bir işlemin iş parçacığını (thread) hedef kodun APC Queue
‘sine ekleyerek, kendi kodlarını çalıştırmaya zorlamak için APC
‘den (Async Procedure Calls) yararlanabiliyor. İş parçacıkları yani bir iş parçacığı ise SleepEx, SignalObjectAndWait_, MsgWaitForMultipleObjectsEx, WaitForMultipleObjectsEx veya WaitForSingleObjectEx fonksiyonları çağrıldığında değiştirilebilir duruma geliyorlar.
APC Queue fonksiyonları ise iş parçacıkları değiştirilebilir duruma geldiklerinde harekete geçiyorlar. Zararlı yazılım değiştirilebilir iş parçacığına ulaşıp, APC sırasına koyabilmek için OpenThread
ve QueueUserAPC
fonksiyonlarını çağırır.
Bu resim alıntıdır ve gerekli SHA aşağıda yer alıyor
f74399cc0be275376dad23151e3d0c2e2a1c966e6db6a695a05ec1a30551c0ad
Yukarıdaki zararlı yazılım, başka bir iş parçacığını ele geçirebilmek için OpenThread
fonksiyonu çağırır ve ardından zararlı DLL’i başka bir iş parçacığına enjekte edebilmek için QueueUserAPC ile birlikte LoadLibraryA
fonksiyonunu çağırır.
Referanslar
1- https://www.countercept.com/blog/memory-injection-like-a-boss/
2- https://blog.ensilo.com/atombombing-brand-new-code-injection-for-windows
3- https://blog.avast.com/2013/05/29/analysis-of-a-self-debugging-sirefef-cryptor/
4- https://attack.mitre.org/techniques/T1093/
5- https://www.endgame.com/blog/technical-blog/ten-process-injection-techniques-technical-survey-common-and-trending-process
6- https://www.andreafortuna.org/2017/11/22/runpe-a-practical-example-of-process-hollowing-technique/
Not: Yazı serilerim yani bir nevi ilham kaynağım, Endgame tarafından daha önce yayınlanan güzel bir araştırma yazısına dayanıyor.