//not being debugged
شکل۴-۱۳: تکنیک INT3
۴-۹-۲- واردکردنINT2D
تکنیک ضداشکال زدایی INT2D مانندINT3 از دستور INT 0X2D برای دسترسی به اشکالزدای مرکزی استفاده میکند.زیرا INT 0X2D راهی است که اشکال زداهای مرکزی نقاط توقف را تنظیم میکنند، روشی که درفهرست ۱۰-۱۶ نشان داده شده است بکاربرده میشود.
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
۴-۹-۳- وارد کردنICE
یکی از دستورات ثبت نشده Intel نقطه توقف مدار شبیه سازی[۱۹] شده است، (رمزالعمل OXF1). ICEBP. این دستور برای آسانترکردن اشکالزدایی با بهره گرفتن از یک مدار شبیه سازطراحی شده است، زیرا مشکل است که یک نقطه توقف دلخواه را با یک مدار شبیه سازی تنظیم کرد.
اجرای این دستور یک استثنا تک مرحلهای را ایجاد میکند. اگر برنامه از طریق یک تک مرحلهای درحال دنبال کردن باشد، اشکال زدا تصور میکند این یک استثنا عادی ایجاد شده توسط یک تک مرحلهای است و مجموعهای از اداره کنندههای استثنا قبلی را اجرا نمیکند. بدافزار میتواند با بهره گرفتن از اداره کننده استثنا برای جریان اجرای نرمال از آن سوء استفاده کند که میتواند باعث شکست این موضوع شود.
۴-۱۰- آسیب های اشکال زدا
مانند تمامی نرمافزارها، اشکال زداها آسیبهایی دارند، وبرخی اوقات ونویسندگان بدافزار به آنها حمله میکنند تا از اشکالزدایی جلوگیری کنند. در اینجا چندین آسیب رایج در راهی که OLLYDBG فرمت پرونده اجرایی قابل حمل را اداره میکند آورده شده ست.
۴-۱۰-۱- آسیب های سرآیند
اولین تکنیک تغییر سرآیند مایکروسافت از یک فایل اجرای دودویی است، که سبب میشود OLLYDBG هنگامی که اجرا را بارگذاری میکند بشکند. نتیجه آن خطای «فایل اجرایی ۳۲بیت ناشناخته یا اشتباه» است. و برنامه معمولا بخوبی در خارج از اشکال زدا کار میکند. این کار ناشی از این حقیقت است که OLLYDBG در جهت خواندن سرآیند پرونده اجرایی قابل حمل دقیقاً ویژگیهای مایکروسافت را دنبال میکند. در سرآیند پرونده اجرایی قابل حملیک ساختار شناخته شده به عنوان IMAGE- OPTIONAL- HEADER وجود دارد. شکال ۴-۱۴زیرمجموعهای از این ساختار را نشان میدهد.
شکل ۴-۱۴: PE IMAGE-OPTIONAL- HEADER و آسیب NUMBER OF REVA AND SIZES
چندین عنصر پایانی دراین ساختار مورد توجه خاص هستند زمینه NUMBER OF REVA AND SIZESتعداد ورودیهایی را که در آرایهیDATA DIRECTORY جریان دارند مشخص میکند. DATA DIRECTORY نشان میدهد کجا میتوان دیگر اجزاها ی قابل اجرای مهم را پیدا کرد، این اندکی بیشتراز آرایۀ ساختارهای IMAGE- DATA- DIRECTORY در پایان ساختار سرآیند اختیاری است. هر ساختار فهرست داده اندازه و آدرس مجازی مرتبط فهرست را مشخص میکند.
اندازه آرایه به IMAGE- NUMBER OF – DIRECTORY- ENTRIES تنظیم شده است که برابر با۰X10 است. بارگذاری ویندوز از هر NUMBER OF REVA AND SIZES بزرگتراز ۰X10 چشم پوشی میکند زیرا هرچیز بزرگتر در آرایهDATA DIRECTORYجا نخواهد شد.
OLLY DBG استانداردها را دنبال میکند واز NUMBER OF REVA AND SIZES استفاده میکند. به عنوان نتیجه تنظیم اندازه آرایه به مقدار بزرگتر از ۰X10 (مانند۰X99) سبب میشود OLLYDBG یک پاپ آپ ویندوز را برای کاربر پیش از خارج شدن از برنامه ایجاد کند. سادهترین راه برای غلبه براین تکنیک تغییر دستی سرآیندپرونده اجرایی قابل حمل وتنظیم NUMBER OF REVA AND SIZES به ۰X10 با بهره گرفتن از یک ویرایشگر شانزده تایی با جستجوگر پرونده اجرایی قابل حمل است. میتوانید از یک اشکال زدا استفاده کنید که برای این تکنیک آسیب رسان نیست مانند WINDBG یا OLLYDBG2.0
حقه دیگر سرآیند شامل سرآیندهای بخش میشود، سبب میشود OLLYDBG درطی بارگذاری باخطای «فایل حاوی دادههای بسیار زیادی است» بشکند. (WINDBG و OLLYDBG2.0 برای این تکنیک آسیبپذیر نیستند) بخشهای حاوی اجزای فایل، شامل کد، دادهها، منابع و دیگر اطلاعات هستند. هربخش یک سرآیند به شکل یک ساختار IMAGE- SECTION- HEADER دارد. شکل ۴-۱۵ یک زیرمجموعه از این ساختار را نشان میدهد.
شکل ۴-۱۵:ساختار PE IMAGE- SECTION- HEADER
عناصر قابل توجه VIRTUAL SIZE و SIZE OF RAW DATA هستند. مطابق با ویژگیهای پرونده اجرایی قابل حمل ویندوز، VIRTUAL SIZE زمانی که درحافظه بارگذاری میشود، باید حاوی اندازه کلی بخش باشد و SIZE OF RAW DATA باید حاوی اندازه دادهها در دیسک باشد. بارگذاری ویندوز از VIRTUAL SIZE و SIZE OF RAW DATA کوچکتری برای هدایت دادهها به بخش حافظه استفاده میکند. اگر SIZE OF RAW DATA بزرگتراز VIRTAL SIZE باشد تنها دادههای virtal size به حافظه کپی میشود. به این دلیل که ollydbg تنها از size of raw data استفاده میکند، تنظیم size of raw data به چیزی بزرگتر مانند ۰X77777777 سبب از کار افتادن ollydbg میشود.
سادهترین راه برای غلبه براین تکنیک ضداشکال زدایی تغییر دستی سرآیندپرونده اجرایی قابل حمل وتنظیم size of raw data با بهره گرفتن از یک ویرایشگر شانزده تایی برای تغییر مقداری نزدیک به virtual size است.
(قابل ذکراست که مطابق با ویژگیها، این مقدار باید ضرب مقدار file Alignment در
image- optional- header باشد) جستجوگر پرونده اجرایی قابل حمل برنامهای بزرگ برای استفاده از این هدف است زیرا بامقدار بزرگی برای size of raw data پرشده است.
۴-۱۰-۲-آسیب output debug string
بدافزار اغلب تلاش می کند که ازیک آسیب حلقه فرمت درنسخه ۱/۱ ollydbg استفاده کند، با بهره گرفتن از حلقه s% به عنوان پارامتری برای output debug string به سبب از کار افتادن ollydbg . . از فراخوانی های مشکوک مانند output debug string آگاه باشید . اگر این فراخوانی اجرا شود اشکال زدای شما از کار خواهد افتاد.
۴-۱۱- نتیجه گیری
این فصل برخی تکنیکهای ضداشکال زدایی محبوب را شرح داد. این کار نیاز به صبر برای یادگیری و دانستن تکنیکهای ضداشکال زدایی را دارد.
بیشتر تکنیکهای ضداشکال زدایی میتواند با بهره گرفتن از حس معمول مشخص شوند، درحالی که یک فرایند را به آهستگی اشکالزدایی میکنند. برای مثال اگر بطور نابهنگام پایان یافتن کدی را در یک جهش شرطی دیدید، میتواند دریک تکنیک ضداشکال زدایی اشاره شود. بیشتر تکنیکهای ضداشکال زدایی محبوب شامل دسترسی fs:[30h] فراخوانی یک ویندوز API یا اجرای یک بررسی زمان بندی است.
البته بهترین راه برای یادگیری بینتیجه گذاشتن تکنیکهای ضداشکال زدایی ادامه دادن به مخالفت و مطالعه بدافزار است. نویسندگان بدافزار همیشه به دنبال راهی جدید برای بینتیجه گذاشتن
اشکال زداها و انگشت به دهان نگه داشتن تحلیلگران بدافزار همانند شما است.
فصل ۵
مترسک
۵-۱- مقدمه
بسیاری بر این عقیده هستند که یک بدافزار حتما باید بر روی سیستم شما در قالب یک فایل دانلود شود تا بتواند کارش را انجام دهد. اما به خاطر داشته باشید انواع بدافزارها از انواع روشها و تکنیکهای مختلف برای اجرا خود استفاده میکنند. برخی از بدافزارها از اجرای نرم افزارها یا عملیاتهای خاصی بر روی سیستم جلوگیری میکنند، بضی از آنها سیستم شما را به عنوان یک سیستم قربانی برای سوء استفاده و انجام عملیات تخریبی بر روی سیستمهای دیگر استفاده میکنند، برخی از بدافزارها وجود دارند که صرفا برای جمع آوری اطلاعات شخصی کاربران طراحی شدهاند، برای مثال اطلاعات مربوط به کارت شناسایی، شماره حسابهای بانکی، رمزهای عبور و نامهای کاربری و امثال این اطلاعات را جمع آوری و برای نویسنده آن بدافزار ارسال میکنند. اما اینها تنها برخی از کارهایی است که بدافزارها میتوانند انجام دهند، بد افزارها نه تنها میتوانند باعث دردسر کاربران شوند و آنها را اذیت کنند، بلکه میتوانند هزینههای سنگینی برای کاربران داشته باشند، حتی بدافزارهایی که برای جمع آوری اطلاعات شخصی طراحی شدهاند ممکن است باعث ایجاد تخریب در سیستم قربانی شوند. این همان دلیلی است که شناسایی و حذف کردن این بدافزارها از سیستم عامل کاربران را تبدیل به امری حیاتی کرده است. در این پژوهش ما برروی روشی مطالعه میکنیم که بدون داشتن یک ضد اشکال زاد بتوانیم از باز شدن بد افزاری که به حالت بستهای شده میباشد جلوگیری کنیم.
۵-۲- مترسک چیست؟
با توجه به بد افزارهای سیستمی شده (پک شده) میخواهیم با ایجاد یک سری عملیات و با بهره برداری از خواص شناسایی اشکال زدا بدون اینکه در حافظه قرار داشته باشند میتوانیم از بسته خارج شدن آنها (آنپک شدن) جلوگیری نماییم برای انجام این عمل میدانیم یک بدافزار به روشهای مختلفی قابل انجام میباشد که اشکال مختلف آن را با توجه به مطالب فصل قبل صورت زیر مطرح میشود باید توجه داشت که ممکن است روشهای مختلفی مطرح گردد که در این حالت ممکن است در آینده روشهای دیگری نیز مطرح گردد این روشها به شرح زیر میباشند:
۱- استفاده از رابط برنامه نویسی کاربردی (بخش ۴-۲)
۲- بررسی دستی ساختارهای حافظه (بخش ۴-۳)
الف – نشانه Being Debugged
ب- نشانه Process Heap
ج- نشانه NTGlobalFlag
۳- بررسی رفتار اشکال زادها( بخش ۴-۵)
الف- اسکن INT
ب- بررسیهای مجموعه مقابلهای
ج- بررسیهای زمان.
حال با توجه به هدف یاد شده بعد از بررسی هریک از آنها میتوانیم یکی از آنها را برای ساخت مترسک خود استفاده نماییم.
۵-۳- نمودار کلی کار
شکل ۵-۱:نمودار مترسک
۵-۴- استفاده از رابط برنامه نویسی کاربردی
جدول ۵-۱ واکنش توابع
[یکشنبه 1401-04-05] [ 09:07:00 ب.ظ ]
|