دانلود منابع تحقیقاتی برای نگارش مقاله شبیه سازی محیط برای جلوگیری از۹۲ unpack شدن packer ... |
شکل۴-۵: کد C برای تشخیص FindWindow 71
شکل۴-۶: اسکن کد برای نقاط توقف ۷۲
شکل۴-۷: تکنیک زمان rdtsc 74
شکل۴-۸ تکنیک زمان بندی Get tick count 75
شکل ۴-۹ : نمونه فراخوانی TLS- جدول TLS درنمای PE 77
شکل ۴-۱۰: نمای یک تابع فراخوانی TLS در IDApro( ctrl-E برای نمایش فشاردهید) ۷۸
شکل ۴-۱۱ : گزینه های اولین توقف ollyDbg 78
شکل ۴-۱۲: گزینه های پردازشی استثنا OllyDbg 80
شکل۴-۱۳: تکنیک INT3 81
شکل ۴-۱۴: PE IMAGE-OPTIONAL- HEADER و آسیب NUMBER OF REVA AND SIZES 83
شکل ۴-۱۵:ساختار PE IMAGE- SECTION- HEADER 84
شکل ۵-۱:نمودار مترسک ۹۰
شکل ۵-۲ نمودار الگوریتم مترسک ۹۳
شکل ۳-۵ نمودار ساخت الگوریتم ۹۷
چکیده
روش معمولی که با پکرها برخورد میکند، شامل مراحل زیر میشود:
۱. یک پکر را شناسایی کنید. برای شناسایی یک پکر، باید آن به یک گروه پکر اختصاص داده شود. انجام این کار به همین آسانی که به نظر میرسد نیست. پکرهای بسیاری وجود دارند که کدهایشان ثابت است، و با بهره گرفتن از رشتههای ساده قابل شناسایی هستند. اما بسیاری پکرها از کد چندشکلی برای تغییر ظاهرشان استفاده میکنند، و برخی از پکرها عمداً از رشتههای قلابی متعلق به سایر پکرها یا کد کامپایلر استاندارد استفاده میکنند، تا برنامه شناسایی کننده را فریب دهند.
۲. یک پکر را تعیین هویت کنید. این مرحله فراتر از شناسایی است. برای تعیین هویت یک پکر، باید آن را در یک نسخه موجود طبقه بندی کنید یا آن را به یک نسخه جدید اختصاص دهید. توانایی تعیین هویت یک پکر، برای آنپک کردن موفق ضروری است، زیرا ممکن است به اندازه کافی اعضای مختلفی در یک گروه وجود داشته باشد که آنپکر مخصوص یک عضو گروه نتواند برای عضوی دیگری از همان گروه به کار برده شود.
۳. یک برنامه شناسایی کننده ایجاد کنید. دو مرحله قبلی معمولاً توسط یک انسان، یا برنامههایی مانند برنامههای شبکه عصبی که در ارتباط با پکرهای اختصاص داده شده به گروههای شناخته شده آموزش دیدهاند، انجام میشدند. این مرحله، در مقابل، نوشتن برنامهای است که عملکردش فقط شناسایی آن گروه، و احتمالاً آن عضو مخصوص است.
۴. یک برنامه آنپکر ایجاد کنید. برخلاف برنامه شناسایی کننده، که هدفش فقط شناسایی پکر است، برنامه آنپکر در واقع اقدامات عکس پکر مربوطه را انجام میدهد، و باینری پک شده را تا حد ممکن به شکل اصلی آن، از جمله فرادادههای آن مانند PE header برای باینریهای Win32 ، بازیابی میکند.
در این پژوهش بر اساس یک ایده جدید میخواهیم بدون استفاده از روشهای معمولی ذکر شده بتوانیم با جلوگیری از آن پک شدن پکرها بدون حضور اشکال زداها روشی را ابداع نماییم. در این حالت با کمک شناسایی انواع رد پاهایی که یک اشکال زدا در محیطی که در آن حضور دارد میگذارد میتوانیم با تغییر محیط به صورتی که نشانههای حضور بد افزار را نشان دهد از باز شدن بستهایها جلوگیری نماییم.
مقدمه
درصد فزایندهای از برنامههای بدافزاری که به طور کنترل نشده منتشر میشوند، توسط پکرها پک میشوند. پکرها برنامههایی هستند که شکل باینری ورودی را بدون تغییر دادن معنای اجرایی آن تغییر می دهند تا انواع جدید بدافزار ایجاد شوند که میتوانند از ابزارهای شناسایی بدافزارهای مبتنی بر امضاء فرار کنند.
امروزه نویسندگان بدافزار به جای مستقیماً پیچیده کردن کد بدافزار، بیشتر به پکرها متکی هستند. پکرها برنامههایی هستد که شکل باینری قابل اجرا را به شکلی دیگر تغییر میدهند تا با کوچکتر شدن و یا داشتن ظاهری متفاوت از شکل اصلی خود، از پویشگرهای ضد ویروس مبتنی بر امضاء فرار کند. در موارد بسیاری، نویسندگان بدافزار به طور مکرر ترکیبهای متفاوتی از چندین پکر را برای یک بدافزار به کار میبرند تا به طور سریع تعداد زیادی از باینریهای دارای اشکال مختلف برای منتشر شدن به طور کنترل نشده، ایجاد شوند. این امر که باینرهای بیشتر و بیشتری پک میشوند به طور جدی تأثیر پویشگرهای ضدویروس مبتی بر امضاء را کاهش میدهد؛ همچنین منجر به افزایش نمایی اندازه امضای ضدویروس میشود، زیرا وقتی برنامه ضدویروس نتواند تهدید پک شده را به طور مؤثری آنپک کند، گزینهای غیر از ایجاد یک امضای جداگانه برای آن تهدید ندارد.
اندازه گیری دقیق درصد برنامههای مخرب (بدافزار) و برنامههای بیخطر (خوب افزار) که پک میشوند، مشکل است. شرکتهای گوناکون اعداد مختلفی را گزارش کردهاند، اما به طور کلی پذیرفته شده است که بیش از ۸۰ درصد بدافزارها پک میشوند. این نمونههای بدافزار اغلب به جای پک شدن «بسته بندی» میشوند، زیرا بسیاری از پکرها شکل اصلی باینریهای ورودی را به گونهای تغییر میدهند که الزاماً شامل فشرده سازی نمیشوند.
فصل ۱
آغاز سخن
۱-۱-مقدمه
اولین ویروسهای کامپیوتری در اوایل دهه ۸۰ ظاهر شدند و اکثراً فایلهای خود تکرار شونده
سادهای بودند که برای سرگرمی و خنده ایجاد شده بودند. در سال ۱۹۸۶ گزارش اولین ویروسی که سیستم عامل ام اس داس مایکروسافت را بر روی کامپیوترهای شخصی مورد هدف قرار داد، منتشر شد. در واقع ویروس Brain به عنوان اولین ویروس از این نوع شناخته میشود. همچنین اوایل سال ۱۹۸۶ شاهد اولین ویروس فایلی به نام Virdem و اولین تروجان (برنامهای که به نظر مفید یا بیخطر میرسد ولی در واقع برای دزدی اطلاعات و یا صدمه زدن به رایانه میزبان طراحی شده است) به نام PC-Write بودیم. تروجان مذکور خود را به عنوان یک برنامه کاربردی و محبوب Word Processor جا زده بود. همچنان که افراد بیشتری از تکنولوژی ویروسها اطلاع پیدا میکردند، تعداد ویروسها، تعداد سکوهای[۱] هدف حملات، پیچیدگی ویروسها و تنوع آنها رو به افزایش پیدا کرد. در یک بازه زمانی ویروسها بر روی سکتورهای راه اندازی[۲] تمرکزکرده و بعد از آن شروع به آلوده سازی
فایلهای اجرایی کردند. در سال ۱۹۸۸ اولین کرم اینترنتی (نوعی از بدافزار که از یک کد خرابکار برای گسترش خودکار از یک رایانه به رایانه دیگر از طریق شبکه استفاده میکند) ظاهر شد. کرم Morris منجر به کند شدن قابل توجه ارتباطات اینترنتی شده که در پاسخ به این حمله و تعدادی حملات مشابه، گروه پاسخگویی به رخدادهای رایانهای به منظور حفظ ثبات اینترنت از طریق هماهنگی در پاسخگویی به رخدادها، پایه گذاری شد. گروه مذکور از طرف دانشگاه کارنگی ملون آمریکا پشتیبانی میشود. در سال ۱۹۹۰،، به عنوان محلی برای تبادل و به اشتراک گذاشتن دانش نویسندگان ویروس، راه اندازی شد. همچنین اولین کتاب در مورد نوشتن ویروس منتشر شد و اولین ویروس چندریختی (معمولاً به آن chameleon یا Cas پرونده اجرایی قابل حمل r اطلاق میشود) گسترش پیدا کرد. یک ویروس چندریختی نوعی از بدافزار است که از تعداد نامحدودی الگوریتم رمزنگاری برای مقابله با تشخیص استفاده میکند. ویروسهای چندریختی توانایی تغییر خود در هربار تکرار را دارا میباشند. این توانایی آنها را از دید برنامههای آنتی ویروس مبتنی بر امضا که برای تشخیص ویروسها طراحی شدهاند، پنهان میدارد. به این ترتیب، در اوایل دهه ۹۰ خبر اولین حمله ویروسی چندریختی با نام Tequila منتشر شد و سپس در سال ۱۹۹۲ اولین موتور ویروس چندریختی و ابزار ویروسنویسی پا به عرصه ظهور گذاشت. بعد از آن ویروسها روز به روز کاملتر شدند. برخی ویروسها شروع به دسترسی به دفترچه آدرسهای ایمیل و ارسال خود به آن آدرسها کردند؛ ویروسهای ماکرو خود را به فایلهای برنامههای کاربردی مانند آفیس متصل کرده و به آنها حمله میکنند؛ و ویروسهایی که مشخصاً برای سوءاستفاده از آسیبپذیریهای سیستم عاملها و برنامههای کاربردی نوشته میشوند. ایمیلها، شبکههای به اشتراکگذاری فایل (P2P)، وب سایتها، درایوهای مشترک و آسیبپذیریهای محصولات، همه و همه برای گسترش و حمله ویروسها مورد سوء استفاده قرار میگیرند. (راههای نفوذ یانقاط سری ورود به شبکه که توسط بدافزارها ایجاد میشوند) بر روی سیستمهای آلوده ایجاد شدند تا راه را برای بازگشت مجدد نویسندگان ویروس و هکرها جهت اجرای نرمافزارهای دلخواه، باز کنند. در این مقاله منظور ما از هکر یک فرد برنامه نویس رایانه یا کاربر آن است که قصد دسترسی به یک رایانه یا شبکه را به صورت غیر قانونی دارد. بعضی از ویروسها دارای موتور ایمیل جاسازی شده هستند که رایانه آلوده را وادار میسازد تا مستقیماً از طریق ارسال ایمیل، ویروس را انتشار دهد. همچنین نویسندگان ویروس شروع به طراحی دقیق معماری حملههای خود با بهره گرفتن از مهندسی اجتماعی کردهاند. همراه با این تکامل بدافزارها، آنتی ویروسها نیز به خوبی تکامل پیدا کردهاند. در حال حاضر بیشتر آنتی ویروسهای موجود در بازار بر مبنای امضای ویروس یا همان شناسایی مشخصه های یک بدافزار برای تشخیص کدهای مضر، عمل میکنند. به همین دلیل در فاصله زمانی بین انتشار یک ویروس جدید و شناسایی امضای آن و پخش آن بین آنتی ویروسهای مختلف، یک رشد ناگهانی در میزان آلوده سازی ویروس مشاهده میشود. اما به محض تشخیص امضای آن، روند آلوده سازی سیر نزولی پیدا میکند.
۱-۲- بدافزار های بسته ای [۳]
امروزه نویسندگان بدافزار به جای مستقیماً پیچیده کردن کد بدافزار، بیشتر به بستهای شده متکی هستند. بستهای شده برنامههایی هستد که شکل باینری قابل اجرا را به شکلی دیگر تغییر میدهند تا با کوچکتر شدن و یا داشتن ظاهری متفاوت از شکل اصلی خود، از پویشگرهای ضد ویروس مبتنی بر امضاء فرار کند. در موارد بسیاری، نویسندگان بدافزار به طور مکرر ترکیبهای متفاوتی از چندین بستهای شده را برای یک بدافزار به کار میبرند تا به طور سریع تعداد زیادی از باینریهای دارای اشکال مختلف برای منتشر شدن به طور کنترل نشده، ایجاد شوند.
این امر که باینریهای بدافزار بیشتر و بیشتری بستهای میشوند به طور جدی تأثیر پویشگرهای ضدویروس مبتی بر امضاء را کاهش میدهد؛ هم چنین منجر به افزایش نمایی اندازه امضای ضدویروس میشود، زیرا وقتی برنامه ضدویروس نتواند تهدید بستهای شده را به طور مؤثری ضد بستهای شده کند، گزینهای غیر از ایجاد یک امضای جداگانه برای آن تهدید ندارد.
۱-۳- اثر مخرب بد افزار های بسته ای
اندازه گیری دقیق درصد برنامههای مخرب (بدافزار) و برنامههای بیخطر (خوب افزار) که بستهای شده میشوند، مشکل است. شرکتهای گوناکون اعداد مختلفی را گزارش کردهاند، اما به طور کلی پذیرفته شده است که بیش از ۸۰ درصد بدافزارها بستهای شده میشوند. این نمونههای بدافزار اغلب به جای بستهای شده «بسته بندی» میشوند، زیرا بسیاری از بستهای شدهها شکل اصلی باینریهای ورودی را به گونهای تغییر میدهند که الزاماً شامل فشرده سازی نمیشوند.
درصد خیلی کمتری از خوب افزارها بستهای شده میشوند. ما نمونههای تصادفی از چند هزار فایل قابل اجرا را گرفتهایم که در مدت چندین ماه جمع آوری شده بودند و به وسیله بستهای شدههایی بستهای شده شده بودند که Symantec آنها را تشخیص میدهد و میشناسد که چگونه آنها را آنبستهای شده کند، و مجموعهای از پویشگرهای ضدویروس تجاری شرکتهای مختلفی را در مقابل آنها اجرا کردیم. در حدود ۶۵ درصد این فایلهای قابل اجرا به عنوان بدافزار شناخته شدند.
۳۵ درصد باقیمانده به احتمال زیاد در گروه خوب افزارها قرار میگیرند، زیرا این نمونهها بیشتر از یک سال پیش جمع آوری شده بودند و پویشگرهای ضدویروس امروزه باید بتوانند بیشتر برنامههای بدافزار را در این مدت شناسایی کنند. به طور واضح، نه تنها بیشتر نمونههای بدافزارها بستهای شده میشوند، بلکه استفاده از بستهای شدهها برای محافظت از خوب افزارها نیز بسیار رایج است.
همچنین اندازه گیری دقیق تعداد بستهای شدههای شناخته شده، هم نوع خوب و هم نوع بد آنها، مشکل است. Symantec تعداد بسیار زیادی از بستهای شدهها – بیش از ۲۰۰۰ نوع در بیشتر از ۲۰۰ گروه – را جمع آوری کرده است. در میان آنها، Symantec در حال حاضر میتواند کد آنبستهای شده را در حدود ۱۲۰۰ بستهای شده متعلق به حدود ۱۵۰ گروه شناسایی کند.
با این وجود، در میان ۱۵۰ گروه بستهای شده که Symantec آنها را میشناسد، تنها کد بستهای شده حدود ۱۱۰ گروه از آنها را دارد، که شامل حدود ۸۰۰ عضو میشود. این بدین معنی است که Symantec حدود ۱۲۰۰ عضو در ۹۰ گروه کار عقب مانده دارد، و این عدد روز به روز بزرگتر میشود.
۱-۴-انواع بدافزار های بسته ای شده
بدون تردید، UPX همچنان پرمصرفترین بستهای شده است. باقیمانده فهرست بستگی به چگونگی جمع آوری فایلها دارد، اما همیشه شامل بستهای شدههای قدیمی مورد علاقهای مانند ASPack ، FSG ، و Upack میشود. علاوه بر این بستهای شدههای شناخته شده، تجزیه و تحلیل فایل به طور تصادفی نمونه گیری شده بالا، حداقل ۳۰ بستهای شده ناشناخته دیگر را مشخص نمود. برخی از آنها گونههای فرعی بستهای شدههای شناخته شده بودند، اما بیشتر آنها بستهای شدههای سفارشی بودند. جالب اینجاست که برخی از فایلهای بیخطر با بستهای شدههای سفارشی بستهای شده شده بودند.
۱-۴- روش دفاع
روش معمولی که یک شرکت برنامه ضدویروس مانند Symantec با بستهای شدهها برخورد میکند، شامل مراحل زیر میشود:
الف-. یک بستهای شده شناسایی کنید.:
برای شناسایی یک بستهای شده، باید آن به یک گروه بستهای شده اختصاص داده شود. انجام این کار به همین آسانی که به نظر میرسد نیست. بستهای شدههای بسیاری وجود دارند که کدهایشان ثابت است، و با بهره گرفتن از رشتههای ساده قابل شناسایی هستند. اما بسیاری بستهای شدهها از کد چندشکلی برای تغییر ظاهرشان استفاده میکنند، و برخی از بستهای شدهها عمداً از رشتههای قلابی متعلق به سایر بستهای شدهها یا کد کامپایلر استاندارد استفاده میکنند، تا برنامههای شناسایی کننده را فریب دهند.
ب-. یک بستهای شده را تعیین هویت کنید.:
این مرحله فراتر از شناسایی است. برای تعیین هویت یک بستهای شده، باید آن را در یک نسخه موجود طبقه بندی کنید یا آن را به یک نسخه جدید اختصاص دهید. توانایی تعیین هویت یک بستهای شده، برای آنبستهای شده کردن موفقیت آمیز ضروری است، زیرا ممکن است به اندازه کافی اعضای مختلفی در یک گروه وجود داشته باشد که آنبستهای شده مخصوص یک عضو گروه نتواند برای عضو دیگری از همان گروه به کار برده شود.
فرم در حال بارگذاری ...
[یکشنبه 1400-08-16] [ 01:48:00 ق.ظ ]
|