ئایا DEP چییە؟!

کورتکراوەی Data Execution Preventionــــــە کە بریتییە لە خزمەتگوزاریەک یان باشتر وایە بڵێین نەرمەواڵەیەک کە لەسەر وەگەڕخەڕی Windows جێگیر کراوە کە ڕێگە بە سیستەم ئەدا چەند بەشێکی بیرگە Memory وەک جێبەجێنەکەر یاخوود باشتر وایە بڵێم وەک خانەنشین لەقەڵەم ئەدا کە ئەمەش وا لەو بەشانە ئەکا کە توانای جێبەجێکردنی هیچ کۆدێکیان نەبێ کە ئەمەش کۆمپیوتەرەکەمان لە هێرشەکانی Buffer Overruns ئەپارێزێ کە لەڕێیەوە هاککەر توانای بەدەستهێنانی دەسەڵاتی #root ــــی ئەبێ لەسەر وەگەڕخەڕەکە بەڵام ئەم پاراستنە بە ڕێژەی لە %100 نییە ،  و هەروەها شایەنی باسە کە ئەم نەرمەکاڵایە لەگەڵ وەگەڕخەڕی Windows XP و Windows Server 2003 ـــــەوە سەری هەڵداوە و لەو کاتەوە تاکو ئێستا پەرەی پێ دەردرێ لەلایەن گەورە کۆمپانیای مایکرۆسۆفتەوە بۆ باشتر کردنی ئاساییشی هەریەک لە وەگەڕخەڕی ویندۆوس و ویندۆوس سێرڤەر.

+ پێناسە و کورتە باسێک:

خزمەتگوزاری DEP ڕێگە لە کۆدەکان ئەگرێ جێبەجێ ببن لەسەر ئەو لاپەڕانەی بیرگەی کاتی RAM Memory کە زانیاری بەکارهێنەر لەخۆ ئەگرن وەکو هەریەک لە بەشەکانی: (heap – Stacks – Memory Pools)  ، و ئەگەر هاتوو هەر نەرمەواڵەیەک هەوڵیدا کۆد لەسەر ئەو لاپەڕانەی بیرگەی کاتی جێبەجێ بکا کە پارێزراون دەرهاوێشتنی سەرپێچی چوونەژوورەوە بە بیرگەی کاتی Memory Access Violation Exception ڕوودەدا و ئەگەر دەرهاوێشتەکە نەدۆزرایەوە یاخوود دەستبەسەر نەکرا لەلایەن بیرگەی کاتیەوە ئەوا بیرگەکە ڕاستەوخۆ ئەچێتە باری سڕبوونەوە و پەیوەندیەکەی لەگەڵ جیهانی دەرەوە کۆتایی پێدێنێ ، و جێی سەرنجە کە DEP ناتوانێ ببێ بە ئاساییشێکی گشتگیر بۆ ڕێگەگرتن لە گشت هێرشە ئەلیکترۆنیەکان.

+ تەکنیک و چۆنیەتی کارکردنی DEP:

هەر لەسەر هەمان نموونەی سەرەوە لەو کاتەی کە نەرمەواڵەیەک هەوڵی جێبەجێکردنی کۆد ئەیا لەسەر لاپەڕە پارێزراوەکانی بیرگەی کاتێ ، دەرهاوێشتەیەک بە حاڵەتێک بەناوی STATUS_ACCESS_VIOLATION وەردەگرێ ، ئەگەر هاتوو وا پێویستی کرد کە نەرمەواڵەکە کۆد لەسەر لاپەڕە پارێزراوەکانی بیرگەی کاتی جێبەجێبکا پێویستە کە دابەش ببێ بەسەر لاپەڕەکان و هەروەها تایبەتمەندی پارێزراوی و گونجاوی بیرگەی کاتیبەدەست بێ و بە گوێرەی یاساکانی بیگەی کاتی RAM بجولێتەوە کە دابەشکردنەکەش بەم شێوازەی لای خوارەوە ئەبێ:

PAGE_EXECUTE
PAGE_EXECUTE_READ
PAGE_EXECUTE_READWRITE PAGE_EXECUTE_WRITECOPY

لێرەیا دابەشکردن بەسەر لاپەڕەی Heap ئەنجام ئەدرێ لەڕێی بانگکردنی فرمانە هەمیشەییە جێگیرەکان function و خانەنشینکراوەکانی malloc و HeapAlloc ــــــەوە ئەنجام ئەدرێ ، و جێی سەرنجە کە هیچ نەرمەواڵەیەک ناتوانێ لەسەر پەڕەی heap و Stuck لە کرداری جێبەجێکردنی ڕاستەوخۆ کۆدەکانی جێبەجێ RUN بکا.

+ ئایا چۆن ڕێکراوە؟!

نەرمەواڵەی DEP لە System Boot ڕێکخراوە بە یەک دەنگی لەگەڵ سیاسەتی ڕێکخستنی لاپەڕەی پارێزراو بە شێوەی خانەنشینکراو non-executable لە نێوخۆیی ڕێکخستنی زانیاری BOOT ــــدا ، و جێگای باسە کە بەشێک لە نەرمەواڵەکان توانای بەدەستهێنانی سیاسەتی ڕێکخستنی بەکارهێنەری هەیە لە ڕێگەی بانگکردنی فرمان Functionــــی GetSystemDEPPolicy ، و بە پشت بەستن بە سیاسەتی ڕێکخستن Policy Setting بەشێک لەنەرمەواڵەکان توانای گۆڕینی ڕێکخستنەکانی DEP ـــــی هەیە بۆ پڕۆسەی لەبار کە ئاویش لە ڕێگەی بانگکردن و بەکارهێنانی فرمانی SetProcessDEPPolicyــــەوە.

+ ڕەچاوکردنەکانی داڕشتنی نەمەواڵە Programming Considerations

بەشێک لە نەرمەواڵەکان توانای بەکارهێنانی فرمانی VirtualAlloc هەیە بۆ دابەشکردنی ئەو بەشانەی کە توانای جێبەجێبوون Executable یان هەیە لە نێو بیرگەکەدا بە یارمەتی هەڵبژاردەی گونجاوی پاراستنی بیرگە ، و هەروەها بەشێک لە نەرمەواڵەکان بەشێکی زۆر کەم لە وزەی فرمانی PAGE_EXECUTE ــــی هەڵبژاردەی بیرگەی کاتی داگیر ئەکا ، و سەبارەت بە دروستکردنی کۆدی جێبەجێکاریش هەر کاتێ کە کۆدێکی جێبەجێکار دروست ئەکرێ ئەماژەیە بۆ ئەوەی کە DEP پاراستنی بیرگەیکاتی ئاگادار ئەکاتەوە کە دەسەڵاتی نوسین و جێبەجێکردنی کۆد لەسەر بیرگەی دابەشکراو/دیاریکراو وەربگرێ ، و هەروەها نەرمەواڵەکانیش توانای وەرگرتنەوەی دەسەڵاتی نووسین و جێبەجێکردنی کۆدی هەیە لەسەر بیرگەی دابەشکراو/دیاریکراو ئەمەش لە ڕێگەی بەکارهێنانی فرمانی VitualProtect ـــــەوە.

وەرگرتنەوەی دەسەڵاتی نووسین و جێبەجێکردن بۆ دڵنیابوونەوە لەوەی کە کۆدی گەورە وزیانبەخش لەسەر بیرگەی کاتی جێبەجێناکرێن هەر لەبەر ئەوەش پێویستە گشت گەشەپێدەرێک ڕەچاوی یاساکان بکا و کرداری قەبارە بچوکی جێبەجێکردن بەکار بێنێ لەکاتی دروستکردنی نەرمەواڵەیەک بۆ وەگەڕخەڕی ویندۆوس دروست ئەکا و هەروەها پێویستە هەوڵبدەیت کە نەخشە و ڕووکاری گشتی  بیرگەی خەیاڵی Virtual Memory نەرمەواڵەکەت کۆنتڕۆڵ بکەیت.

+ گونجاندنی نەرمەواڵە Application Compatibility

هەر وەک پڕۆگرام دادێژێک ئەتوانین ئەوە بە ڕوونی ببینین کە بەشێک لە فرمانەکان لە نەرمەواڵەکاندا ناگونجێن لەگەڵ نەرمەواڵەی DEP نموونەی ئەو نەرمەواڵانەش بریتیین لەJust-In-Time Code) Generation) کە کۆدی دروستکراو بە دەسەڵاتی جێبەجێبوون بەڕاشکاوی دیاری ناکەن کە ئەمەش لەوانەیە ببێتە هۆی دروستبوونی کێشە لەو کۆمپیوتەرانەی کەی DEP بەکاردەبەن ، و هەروەها ئەو نەرمەواڵانەی نوسراون بۆActive Template Library (ATL) ـــــی وەشانی 7.1 کە بە خێرایی توانای جێبەجێکردنی کۆدیان هەیە لەسەر ئەو بەشانەی بیرگەی کاتی کە بە خانەنشینکراو non-executable لەقەڵەم دراون ئەمەش ئەبێتە هۆی کەوتنەوەی کێشە و تێکچوونی NX Fault و لەکارکەوتنی نەرمەواڵەکان ، و جێگای باسە کە لەوانەیە وا پێویست بکا ئەو بووخچە File ـــە قەبارە بچووکانەی کە بە شێوەی جێبەجێکردن Executable ــــن و هەروەها لایبرەریەکان کۆدی جێبەجێکردنیان لەخۆ گرتبێ لە بەشی زانیاری Dataــــاکان لە بەشێک لە وێنەکاندا بۆ ئەوەی DEP بتوانێ فایلی وێنەکان کە لە بیرگەدا جێبەجێ ئەبن/Load ئەکرێن بە شێوەی خانەنشینکراو non-executable لەقەڵەم بدا.

و کۆتا شت کە ئەمەوێ باسی لێوە بکەم و بابەتەکە کۆتایی پێ بێنم ئەوەیە کە کۆدی جێبەجێکار لە بەشی زانیاریدا پێویستە کۆچ بکا بۆ بەشی کۆدەکان یان ئەوەتە دەبێ ئەو بەشەی زانیاریەکان کە کودی جێبەجێکردنی لەخۆ گرتووە پێویستە بە ڕاشکاوی بە کۆدی جێبەجێکردن لەقەڵەم بدرێ و بۆ ئەم کارە پێویستە تایبەتمەندی IMAGE_SCN_MEM_EXECUTE بدرێتە پاڵ فێڵدی Characteristics لە بەشی Header بۆ ئەو بەشانەی کە کۆدی جێبەجێکردنیان لەخۆ گرتووە.

هەموو ماڵپەر و دەزگایەكی ڕاگەیاندن ئازادە لە بڵاو كردنەوەی بابەتەكانی ماڵپەری تێك ئای، بەمەرجێك ئاماژەی بە سەرچاوەكە بكات

شەیر بكە بۆ هاوڕێیانت

دەربارەی نوسەر

Reverse Engineer | Pentester | Web Developer | Programmer

Comments are closed.