بدافزاز پلی مورفیک یا Polymorphic Malware چیست؟ و چه ویژگی هایی دارد؟

0 76

فهرست

در این مقاله قصد داریم در مورد بدافزاز پلی مورفیک یا Polymorphic Malware صحبت کنیم. به دلیل اینکه تکنیک چند شکلی یا پلی مورفیسم (Polymorphism) در هک و امنیت سایبری بیشتر در مورد ویروس ها به کار می رود و به جای بدافزار پلی مورفیک از ویروس پلی مورفیک یا Polymorphic Virus استفاده می شود. قبلا در مقالاتی در مورد بدافزارها (Malware) و انواع آن ها نظیر باج افزارها (Ransomware)، ترس افزارها (Scareware)، جاسوس افزارها (Spyware)، کرم ها (Worm)، بمب های منطقی (Logic Bomb) و ویروس ها (Virus) صحبت کردیم. امروز در مورد یکی از تکنیک های پیشرفته در توسعه بدافزار، مخصوصا توسعه ویروس صحبت خواهیم کرد.

پلی مورفیسم در علوم کامپیوتر چیست؟

پلی مورفیسم یا چند شکلی در علوم کامپیوتر در زمینه های مختلفی وجود دارد. در ادامه به معرفی پلی مورفیسم در زبان های برنامه نویسی و هک و امنیت سایبری می پردازیم.

پلی مورفیسم در زبان های برنامه نویسی و نظریه انواع

پلی مورفیسم یا چند شکلی در زبان های برنامه نویسی، ارائه یک رابط یا Interface برای اشیاء از انواع مختلف یا استفاده از یک سمبل یا نماد یکسان برای نوع های مختلف می باشد. موضوع را با یک مثال ساده روشن می کنیم.
یک تابع را در نظر بگیرید که به صورت های زیر تعریف شده است:

int Add(int a, int b) {
    return a+b;
}

string Add(string a, string b) {
    return a+b;
}

اگر دقت کنیم میبینم دو تابع تعریف شده که نام آن ها یکسان است اما آرگمان های ورودی آن ها و همچنین نوع خروجی آن ها با هم متفاوت است. درواقع فاکتور تمایز بین این دو تابع، تمایز در نوع های داده ای در آرگمان های آن هاست و خروجی متفاوتی ارائه می دهند. برای مثال خروجی توابع بالا به صورت زیر است:

cout << Add(1, 2); //مقدار ۳ چاپ می شود
cout << Add("Hi", "Bye"); //HiBye چاپ می شود.

پلی مورفیسم انواع مختلف دارد. پلی مورفیسم مثال بالا از نوع Ad Hoc می باشد. لازم به ذکر است چون کد بالا را به زبان ++C آوردیم بد نیست اشاره کنیم پلی مورفیسم Ad Hoc در این زبان با Function Overloading پیاده سازی می شود. انوع دیگر پلی مورفیسم در زبان های برنامه نویسی و نظریه انواع Parametric Polymorphism یا چند شکلی پارامتری و Subtyping یا زیرنوعی یا شبه نوعی می باشند. از آن جا که این مقاله مربوط به چند شکلی در هک و امنیت سایبری است از توضیحات بیشتر در رابطه با چند شکلی در زبان های برنامه نویسی می پرهیزیم و به مبحث اصلی خود باز میگردیم.

پلی مورفیسم در هک و امنیت سایبری

قبل از صحبت در مورد تکنیک مورد نظر به معرفی چند مفهوم می پردازیم.

موتور پلی مورفیک یا Polymorphic Engine

یک موتور پلی مورفیک یا موتور جهش (Mutation Engine) یک برنامه کامپیوتری است که قادر به تبدیل یک برنامه کامپیوتری به نسخه دیگری از آن برنامه است که دارای کد متفاوت اما عملکرد یکسان با برنامه اصلی می باشد. برای مثال مقدار ضرب عدد ۴ در ۲، با مقدار جمع عدد ۵ با ۳ برابر است در حالی که کد متفاوت می باشد.

کد پلی مورفیک یا Polymorphic Code

یک کد پلی مورفیک، کدی است که با استفاده از یک موتور پلی مورفیک در خود تغییر ایجاد می کند (خود را جهش می دهد) به طوری که عملکردش ثابت باقی بماند. این تغییر در هر بار اجرای کد صورت می گیرد اما عملکرد آن ثابت باقی می ماند.

بدافزار پلی مورفیک (ویروس پلی مورفیک، کرم پلی مورفیک)

تکنیک مذکور در توسعه ویرس ها، کرم ها و شل کدها (Shellcode) در راستای برخی اهداف به کار می رود. اولین ویروس چند شکلی یا پلی مورفیک در سال ۱۹۹۰ تحت عنوان ۱۲۶۰ توسط Mark Washburn توسعه داده شد. پلی مورفیسم در توسعه یک بدافزاز موجب سردرگمی و منفی کاذب یا False Negative در بسیاری از مکانیزم های امنیتی سنتی از جمله سیستم های تشخیص نفوذ سنتی می شود چرا که این بدافزارها هربار تغییراتی در خود ایجاد می کنند که سیستم تشخیص نفوذ دچار عدم توانایی در تشخیص آن ها می شود. خصوصا سیستم های تشخیص نفوذ مبتنی بر امضاء یا Signature Based Intrusion Detection که یک سری امضاء (برای مثال دنباله API Call) را مدنظر قرار میدهند، ناتوانی زیادی در مقابل این بدافزارها نشان می دهند. این بدافزارها با تغییر در کد، نام باینری، کلیدهای رمزنگاری و اضافه کردن APIهای مختلف برای اغوای سیستم های تشخیص نفوذ، رفتار خود را از دید مکانیزم های امنیتی پنهان می کنند.

رمزنگاری به عنوان چاقوی سوئیسی هکر حرفه ای!

معروف ترین روش در ایجاد بدافزارهای پلی مورفیک، استفاده از رمزنگاری می باشد. رمزنگاری کل کد (شامل پیلود) را رمز کرده و آن را به یک حالت بی معنی تبدیل می کند. برای اینکه کد بتواند عملکرد خود را داشته باشد، یک تابع رمزگشایی به آن اضافه می شود. قبل از اجرای پیلود، این تابع اجرا شده، کد و پیلود را خوانده و آن را رمزگشایی می کند و پس از آن کد اصلی اجرا می شود.
هکرهای حرفه ای، الگوریتم های رمزنگاری خود را طراحی می کنند و برای رمزنگاری از آن ها استفاده می کنند. این عمل باعث می شود برخی سیستم ها که قادر به تشخیص نوع الگوریتم از روی متن رمز شده یا Ciphertext هستند، در شناسایی اینکه آیا یک دنباله بی معنی واقعا رمز شده یا نه، ناتوان بمانند.

نمونه هایی از بدافزارهای پلی مورفیک

در این بخش تعدادی از بدافزارهای پلی مورفیک معروف رو معرفی می کنیم.

Emotet

تروجان Emotet یک بدافزاز پلی مورفیک یا Polymorphic Malware است که ۷۵ درصد از محصولات تشخیص نفوذ را فریب داده است. این تروجان از سطوح مختلف پلی مورفیسم استفاده می کند. معمولا در متدهای مبتنی بر پکیچ پلی مورفیسم از تغییر در Container یا روش (برای مثال جابجایی از PDF به Word) استفاده میشود اما این تروجان فایل اجرایی پک شده را مکررا تغییر پک می دهد که این موضوع، تشخیص را برای سیستم های تشخیص نفوذ مبتنی بر امضاء شدیدا مشکل می کند.

Storm Worm

کرم استورم در سال ۲۰۰۷ منتشر شد. این کرم با استفاده از یک فایل ضمیمه در ایمیل، سرویس wincom32 را به همراه یک تروجان نصب می کند و سیستم مورد نظر تبدیل به یک زامبی می شود. سپس سیستم آلوده شده در هر ۳۰ دقیقه نسخه جدیدی از آن را تولید می کند. 

Virlock

تکنیکی که در Virlock استفاده شده بسیار جالب است. در این مورد پیلود مربوط به باج افزار به صورت رمزشده می باشد و هربار تنها یک قسمت از پیلود رمزگشایی می شود و سپس توسط یک کلید جدید مجددا رمزنگاری می شود. این چرخه باعث می شود بدافزار در حافظه (RAM) کاملا متفاوت از نسخه اصلی به نظر برسد و این مساله کار را علاوه بر مکانیزم های امنیتی، برای تحلیلگرهای انسانی نیز مشکل می کند.

حفاظت در مقابل بدافزارهای پلی مورفیک

افزایش آگاهی و دانش

هر بدافزار ابتدا باید به سیستم وارد شود تا بتواند عملیات مخرب خود را اجرا کند. قبلا در مورد افزایش آگاهی در مورد حملات مربوط به مهندسی اجتماعی مثل فیشینگ صحبت کردیم. اکثر بدافزارها در زمان فعلی با استفاده از یک فایل درون یک ایمیل یا وارد کردن یک حافظه USB به سیستم، وارد سیستم و شبکه می شوند بنابراین شناخت این روش ها برای آلوده نشدن یکی از مهم ترین گام های حفاظت در مقابل هر نوع بدافزاری است.

بروزرسانی سریع

در مورد بروزرسانی سیستم عامل ها و محصولات موجود در سیستم ها نیز زیاد صحبت کردیم. سیستم ها و شیکه هایی که دارای محصولات وصله نشده هستند شدیدا مورد توجه هکرها قرار می گیرند. بنابراین بروزرسنی منظم و سریع را از یاد نبرید.

از کلمات عبور قوی استفاده کنید

قبلا در این مورد هم صحبت شد و دیدیم که یک کلمه عبور ضعیف چگونه می تواند نظر یک هکر را جذب کند. مخصوصا در سیستم ها و حساب های حساس و بحرانی سعی کنید از کلمات عبور قوی استفاده کنید.

از سیستم های تشخیص نفوذ مبتنی بر ناهنجاری استفاده کنید.

سیستم های تشخیص نفوذ مبتنی بر ناهنجاری یا Anomaly Based Intrusion Detection برخلاف سیستم های تشخیص نفوذ مبتنی بر امضاء از الگوهای خاص و محدودی استفاده نمی کنند بلکه انحراف از معیار رفتاری در یک سیستم را مد نظر قرار می دهند. این نوع تشخیص دهنده ها مخصوصا در سیستم ها و شبکه های اصلی که عمدتا رفتار پایداری دارند بسیار موثر است اما در سیستم هایی که مکررا رفتار کاربر در آن عوض می شود می تواند دارای نرخ مثبت کاذب یا False Positive زیادی باشند که برای کاهش این مساله در آن ها، سعی می شود از Concept Drift یا رانش مفهومی فعالیت ها استفاده شود. باید توجه داشت سیستم های تشخیص نفوذ مبتنی بر ناهنجاری پویا می توانند در معرض همسوسازی مخرب مدل یا Model Poisoning قرار گیرند بنابراین بهتر است مدل Baseline در حالت ایستا تولید شود.

سخن پایانی

در این مقاله در مورد چند شکلی یا پلی مورفیسم صحبت کردیم. تمرکز این مقاله بیشتر روی کاربرد پلی مورفیسم در هک و امنیت سایبری و بدافزاز پلی مورفیک یا Polymorphic Malware بود. دیدیم که این تکنیک چطور به هکرها در راستای مخفی سازی فعالیت خود با اغوا کردن سیستم های تشخیص نفوذ کمک می کند. در آینده بیشتر در مورد این روش ها و روش های دیگر توسعه بدافزار صحبت خواهیم کرد.

درباره ما

ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
دوره‌های آکادمی ترجنس | courses.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence

 

 

ارسال یک پاسخ