DLL Hijacking təməlləri

Dll Hijack texnikası

 

Salam dostlar. Bu gün sizə məşhur texnikalardan biri olan Dll Hijack-dan danışmaq istəyirəm. Mövzuya girməmişdən əvvəl gəlin anlayaq nədir bu DLL?

DLL- Dynamic Linking library (Dinamik birləşdirilən kitabxana) Windows  ƏS-də kodun paylaşılması üçün istifadə olunur. Bu da kodun daha modular olmasına kömək edir. Executable fayl .dll faylını LoadLibrary() funksiyası ilə load edir və GetProcAddress() ilə DLL içindəki lazimi funksiyanın adresini taparaq çağırır. DLL-in ümumi strukturu aşağıdakı şəkildə göstərilib:

1-dll-structure

Biz DLL hijack üçün aşağıdakı kodu istifadə edəcəyik. Kod exploit-db.com saytından example kimi götürülüb. ( https://www.exploit-db.com/exploits/14789/ )

2-dll-code

Əvvəla anlayaq görək EXE fayl bu dll faylları hardan axtarmağa çalışır? MSDN baxsaq orda bu ardıcıllıq göstərilib ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx ) :

3-search

Şəkildə  göründüyü kimi DLL-lər əvvəl App yüklənən qovluqda sonra da cari qovluqda axtarılmağa başdıyır. Hə nə olsun? Deyim bilin. Əgər biz App-in yükləmək istəyibdə yükləyə bilmədiyi DLLi öz zərərli DLL-imizlə dəyişsək və ya axtardığı DLL pathı bizim qoyduğumuz DLL pathından aşağıda olsa o zaman GAME OVER olacaq. Nə dediyimi biraz sonra anlayacaqsız 🙂

Əgər SafeDllSearchMode aktiv edilibsə o zaman ardıcıllıq dəyişir:

4-search2

Şəkildən göründüyü kimi cari qovluğun axtarılma sırası ən aşağılardadı. Bu funksionallıq DLL hijack yayğın olmağa başlayanda ortaya Hijack prosesinin qabağını almaq üçün çıxarmışdılar. Müəyyən səviyədə qabağını alsa da bu həmişə alır demək deyil 🙂

DLL hijack texnikasını bu dəfə məşhur SSH clienti olan PuttY üzərində yoxlayacayıq. (Qeyd: PuttY nin bütün versiyaları vulnerable-di).

Bizə Sysinternals Suite lazım olacaq. Daha doğrusu həmin suitdə  olan ProcMon. Procmonu açırıq və ardıyca PuTTY.exe açırıq. Daha sonra filter tətbiq edərək bizə lazım olanları saxlayırıq:

5-procmon_filter

Bizə əsas Nəticəsi “NAME NOT FOUND” olanları tapmaqdı. Hansı ki biz həmin DLL-ləri öz zərərli DLL-lərimizlə dəyişəcəyik.

6-procmon_2

 

Burada necə deyərlər “Trail and Error”  yanaşması ilə gedəcəyik. Mümkün bütün halları yoxlayıb harda daha yaxşı nəticə alınır yoxlayacayıq.

Məsələn elə DWMAPI.DLL götürək. Bayaq sizə verdiyim source kodu DLL kimi kompliyasiya edin və adını dwmapi.dll qoyaraq PuTTY.exe ilə eyni qovluğa atın. Daha sonra əgər PuTTY.exe girsəz Dll hijack olunduğunu görərsiz 🙂

7-hijacked3

 

Bunun nəticəsi çox ağır ola bilər . Məsələn Metasploitin Meterpreterini .dll kimi buna vursaq reverse shell almış olacıyıq )) və Game Over olacaq))

Bu DLL hijackingin dinamik analizi ilə tapılması idi. Bəzən İDA istifadə etməklə statik şəkildə tapmaq

məcburiyətində qalırıq. Gələn səfərki yazıda DLL hijack ilə Privilege Escalation dan danışacayıq.

//Hayat bazen cok Ajda Pekkan

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s