پایان نامه شبیه سازی محیط برای جلوگیری از unpack شدن packer ها
فرمت فایل دانلودی: .docxفرمت فایل اصلی: doc
تعداد صفحات: 131
پایان نامه شبیه سازی محیط برای جلوگیری از unpack شدن packer ها
نوع فایل: word (قابل ویرایش)
تعداد صفحات : 131 صفحه
چکیده
روش معمولی که با پکرها برخورد میکند، شامل مراحل زیر میشود:
۱. یک پکر را شناسایی کنید. برای شناسایی یک پکر، باید آن به یک گروه پکر اختصاص داده شود. انجام این کار به همین آسانی که به نظر میرسد نیست. پکرهای بسیاری وجود دارند که کدهایشان ثابت است، و با استفاده از رشتههای ساده قابل شناسایی هستند. اما بسیاری پکرها از کد چندشکلی برای تغییر ظاهرشان استفاده میکنند، و برخی از پکرها عمداً از رشتههای قلابی متعلق به سایر پکرها یا کد کامپایلر استاندارد استفاده میکنند، تا برنامه شناسایی کننده را فریب دهند.
۲. یک پکر را تعیین هویت کنید. این مرحله فراتر از شناسایی است. برای تعیین هویت یک پکر، باید آن را در یک نسخه موجود طبقه بندی کنید یا آن را به یک نسخه جدید اختصاص دهید. توانایی تعیین هویت یک پکر، برای آنپک کردن موفق ضروری است، زیرا ممکن است به اندازه کافی اعضای مختلفی در یک گروه وجود داشته باشد که آنپکر مخصوص یک عضو گروه نتواند برای عضوی دیگری از همان گروه به کار برده شود.
۳. یک برنامه شناسایی کننده ایجاد کنید. دو مرحله قبلی معمولاً توسط یک انسان، یا برنامههایی مانند برنامههای شبکه عصبی که در ارتباط با پکرهای اختصاص داده شده به گروههای شناخته شده آموزش دیدهاند، انجام میشدند. این مرحله، در مقابل، نوشتن برنامهای است که عملکردش فقط شناسایی آن گروه، و احتمالاً آن عضو مخصوص است.
۴. یک برنامه آنپکر ایجاد کنید. برخلاف برنامه شناسایی کننده، که هدفش فقط شناسایی پکر است، برنامه آنپکر در واقع اقدامات عکس پکر مربوطه را انجام میدهد، و باینری پک شده را تا حد ممکن به شکل اصلی آن، از جمله فرادادههای آن مانند PE header برای باینریهای Win32 ، بازیابی میکند.
در این پژوهش بر اساس یک ایده جدید میخواهیم بدون استفاده از روش¬های معمولی ذکر شده بتوانیم با جلوگیری از آن پک شدن پکرها بدون حضور اشکال زداها روشی را ابداع نماییم. در این حالت با کمک شناسایی انواع رد پاهایی که یک اشکال زدا در محیطی که در آن حضور دارد میگذارد میتوانیم با تغییر محیط به صورتی که نشانههای حضور بد افزار را نشان دهد از باز شدن بستهایها جلوگیری نماییم.
کلید واژه:شبیه سازی محیط-جلوگیری از unpack شدن packer ها
فهرست مطالب
چکیده 1
مقدمه 2
فصل 1: آغاز سخن
۱-۱-مقدمه 4
۱-۲- بدافزار های بسته ای 6
۱-۳- اثر مخرب بد افزار های بسته ای 6
۱-۴-انواع بدافزار های بسته ای شده 7
۱-۴- روش دفاع 8
۱-۵-چگونگی کارکرد بسته ای شده ها 9
۱-۶-انواع ضد بسته ای ها 10
۱-۶-۱-ضد بسته ای غیر فعال 11
۱-۶-۲- ضد بسته فعال 11
۱-۷-فصل های این پژوهش 12
۱-۸-نتیجه گیری 12
فصل ۲ : مفاهیم بنیادی
۲-۱- مقدمه 14
۲-۲- رابط برنامه نویسی کاربردی 14
۲-۲-۱- اما نقش رابط برنامه نویسی کاربردی در برنامه نویسی 15
۲-۲-۲- علت استفاده از توابع رابط برنامه نویسی کاربردیدربرنامهنویسی 15
۲-۲-۳ پرونده های DLL 16
۲-۲-۴ مشخصات توابع رابط برنامه نویسی کاربردی 18
۲-۲-۵ ارائه چند کد برخی از توابع رابط برنامه نویسی کاربردی 19
۲-۳ بلوک محیطی فرآیند 29
۲-۴- جدول آدرس واردات 32
۲-۵- پرونده اجرایی قابل حمل 32
۲-۵-۱ – روند اجرای فایل های پرونده اجرایی قابل حمل 34
فصل ۳ : پک و آنپک
۳-۱-مقدمه 37
۳-۲-شکل برنامه های بسته ای شده ها 37
۳-۳-زیربر نامه باز کننده بسته 38
۳-۴- بارگذاری برنامه قابل اجرا 39
۳-۵- تجزیه و تحلیل داده ها ی ورودی 40
۳-۶- talijamp 41
۳-۷ محاسبه بی نظمی ها 42
۳-۸ غیر بسته ای کردن 43
۳-۸-۱ خودکار 43
۳-۸-۲-غیر خودکار 44
۳-۹- یافتن نقطه اصلی ورودی 46
۳-۹-۱-استفاده از یک ابزار خودکار در یافتن نقطه ورودی اصلی 46
۳-۹-۲-یافتن نقطه ورودی اصلی بصورت دستی 47
۳-۱۰- اصلاح جدول ورودی بطور دستی 51
۳-۱۱- راه ها و روش ها برای بسته بندی های رایج 53
۳-۱۱-۱-UPX1 53
۳-۱۱-۲- PE Compact 54
۳-۱۱-۳- ASPack 54
۳-۱۱-۴- Petit 55
۳-۱۱-۵-WinUpack 56
۳-۱۱-۶Themida- 58
۳-۱۲ آنالیز بدون باز کردن کامل 59
۳-۱۳- DLL بسته شده 60
نتیجه گیری 61
فصل ۴ : ضد اشکال زدایی
۴-۱- مقدمه 63
۴-۲- آشکار سازی اشکال زدایی 63
۴-۲-۱- به وسیله رابط برنامه نویسی کاربردیویندوز 63
۴-۳- بررسی دستی ساختارها 66
۴-۳-۱- بررسی نشانه BeingDebugged 66
۴-۳-۲- بررسی نشانه ProcessHeap 68
۴-۳-۳- بررسی NTGlobalFlag 69
۴-۴- بررسی باقی مانده سیستم 70
۴-۵- تشخیص رفتار اشکال زدا 71
۴-۵-۱- اسکن INT 71
۴-۵-۲-اجرای حاصل جمع کنترل کد 72
۴-۶- بررسی های زمان 73
۴-۶-۱- استفاده از دستور rdtsc 73
۴-۶-۲- استفاده از Qurey PErformance counter و Get tikcount 74
۴-۷- رویارویی با قابلیتهای اشکال زدا 75
۴-۷-۱- استفاده از فراخوانی های انبار محلی 76
۴-۸-استفاده از استثناها 79
۴-۹- وارد کردن وقفه ها 80
۴-۹-۱- وارد کردن INT3 81
۴-۹-۲- واردکردنINT2D 81
۴-۹-۳- وارد کردنICE 82
۴-۱۰- آسیب های اشکال زدا 82
۴-۱۰-۱- آسیب های سرآیند 82
۴-۱۰-۲-آسیب output debug string 85
۴-۱۱- نتیجه گیری 85
فصل ۵ : مترسک
۵-۱- مقدمه 88
۵-۲- مترسک چیست؟ 88
۵-۳- نمودار کلی کار 90
۵-۴- استفاده از رابط برنامه نویسی کاربردی 91
۵-۳- استفاده از مسیر دستی ساختارها 91
۵-۳-۱- الگورینم مترسک با کمک نشانهها 92
۵-۳-۲- نمودار الگوریتم قبلی 93
۵-۴- پیاده سازی عملی مترسک 94
۵-۴-۲- تابع Get tick count 94
۵-۴-۳- الگوریتم ساخت مترسک به کمک تابع Get tick count 95
۵-۴-۳- نمودار ساخت مترسک به کمک تابع Get tick count 95
۵-۴-۴- نمودار الگوریتم ساخت مترسک به کمک تابع Get tick count 96
۵-۴-۵-ساخت فایل ها 98
۵-۴-۳- ساخت مترسک با تابع NtGlobalFlag 101
فصل ۶ : نتیجه گیری
۶-۱- مقدمه 104
۶-۲-آنالیز بدافزارها 105
۶-۲-۱– پویا 105
۶-۲-۲– ایستا 106
۶-۲-۳- مطالعه روشهای ضد تحلیل 107
۶-۳-روش¬های مطرح در این پژوهش 108
۶-۴- نتیجه پایانی 109
منابع و مأخذ
منابع و مأخذ 111
چکیده انگلیسی 114