محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

معرفی 5 روش شناسایی روتکیت (Rootkit) به زبان بسیار ساده

تا اینجای کار در جزیره امنیت توسینسو به موارد زیادی در خصوص Rootkit ها و نحوه عملکرد آنها و همچنین انواع آنها پرداختیم اما شما در نهایت اینجا هستید که بدانید چگونه می توانید این نوع بدافزارها را شناسایی کنید و اقدامات متقابل در خصوص آنها انجام بدهید . در این خصوص هرگز فراموش نکنید که بهترین راهکار شناسایی و جلوگیری از Rootkit شدن تنها پیشگیری از ورود آن است اما به هر حال برای دوستانی که می خواهند علمی با بحث شناسایی این بدافزارها آشنا شوند باید بگوییم که تکنیک های شناسایی Rootkit ها به پنج دسته تقسیم می شوند که به ترتیب روش شناسایی مبتنی بر Signature ، روش شناسایی اکتشافی یا heuristic ، روش شناسایی بر مبنای Integrity یا تمامیت ، روش شناسایی Cross-View و در نهایت روش شناسایی Runtime Execution Path Profiling می باشد که در این مقاله بصورت مفصل در خصوص آنها صحبت خواهیم کرد .

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

1 : شناسایی Rootkit ها با استفاده از Signature

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

در این روش از در اصطلاح Rootkit Fingerprints یا اثرات Rootkit بر روی فایل های سیستمی فرآیند شناسایی انجام می شود . مجموعه ای از بایت های پشت سر هم یا Sequenced Bytes در یک فایل آلوده یا سالم با مجموعه ای از Sequenced Bytes هایی که در Signature نرم افزار ضد Rootkit وجود دارد مقایسه می شود و در صورت تشابه ، آلوده بودن فایل تایید می شود. قطعا با توجه به ماهیت کاری Rootkit ها این روش بر روی فایل های سیستمی انجام می شود . Rootkit های معمولی براحتی با اسکن شدن قسمت Kernel Memory سیستم شناسایی می شوند ، معمولا ابزارهای ضد Rootkit امروزی بیشتر از این روش برای شناسایی استفاده می کنند و معمولا Rootkit های Well-known یا شناخته شده شانس زیادی برای ادامه فعالیت بعد از این نوع شناسایی را ندارند.

2 : شناسایی Rootkit ها بصورت اکتشافی یا Heuristic

هر وقت صحبت از واژه هایی مثل Heuristic یا Behavioral به معنی اکتشافی و رفتارشناسی در بحث بدافزارها شد ، همیشه به یاد داشته باشید که در این نوع روش شناسایی ابتدا فعالیت ها و روال های عادی سیستم بررسی می شود و یک قالب کلی از رفتار فایل های سیستم تهیه می شود . در صورتیکه تغییر رفتار عجیب و غریب در سیستم مشاهده شود این یعنی مشکلی وجود دارد و ابزار شروع به بررسی دلیل تغییرات می کند. این روش یکی از موثرترین روش های شناسایی بدافزارها و البته بصورت ویژه Rootkit هایی است که جدید هستند و هنوز شناسایی نشده اند ، یکی از مواردیکه در این تکنیک بررسی می شود بررسی ایجاد شدن Hook در Kernel یا User Mode سیستم عامل است و به محض اینکه در این روش ایجاد شدن این موارد تشخیص داده شود می تواند ادامه فعالیت Rootkit را مختل کند.

3 : شناسایی Rootkit ها با بررسی تمامیت یا Integrity

سیستم تشخیص Rootkit بر اساس بررسی تمامیت یا Integrity قویترین سیستم شناسایی Rootkit هاست که البته بهتر است از آن به عنوان یک سیستم پیشگیری صحبت کنیم تا یک سیستم شناسایی ، در این مکانیزم قبل از اینکه سیستمی آلوده به Rootkit شود از نرم افزارهایی به نام SIV که مخفف Signature Integrity Verifier استفاده می کنیم ، این نرم افزار بعد از نصب شدن از کلیه فایل های حساس سیستم درگیر با فایل سیستم ، رکوردهای بوت سیستم ، و حافظه یک Snapshot یا بهتر بگوییم یک Hash دریافت می کند و در پایگاه داده ای قرار می دهد ، در صورت آلودگی سیستم به Rootkit امکان مقایسه کردن فایل های جدید با Hash های قدیمی که توسط SIV گرفته شده اند وجود دارد و بر همین اساس دقیقا فایلی که به Rootkit آلوده شده باشد از این طریق قابل شناسایی است . قبلا در توسینسو در خصوص SIV و مکانیزم کاری آن صحبت کرده ایم و نرم افزارهایی را در این خصوص به دوستان معرفی کرده ایم.

4 : شناسایی Rootkit ها به روش Cross-View-Based

مکانیزم کاری در تکنیک شناسایی روتکیت Cross-View به این شکل است که ابتدا نرم افزار مورد نظر درخواست های خودش به فایل های سیستمی و هسته سیستم عامل را به یک سری از API های معمول سیستم ارسال می کند و درخواست های بازگشتی که توسط مکانیزم Hooking روتکیت دستکاری و به API برای نمایش به کاربر ارسال شده اند را در خودش ثبت می کند . طبیعتا ساختار بازگشت نتیجه در این تکنیک نگهداری می شود و سپس با استفاده از الگوریتم های خاصی مستقیما به محلی که درخواست توسط API به آنجا ارسال شده است داده می شود و مجددا نتیجه بازگشتی ثبت می شود ، اگر نتیجه دو خروجی یکسان نباشند یعنی در این میان درخواست توسط Hooking ای که توسط Rootkit انجام شده است تغییر یافته است و بنابراین سیستم آلوده است . این درخواست ها ضمن اینکه با استفاده از API ها و DLL های سیستمی قابل ارسال و دریافت هستند از طریق کلیدهای رجیستری هم تقریبا با همین شکل انجام می شود.

5 : شناسایی Rootkit ها به روش Runtime Execution Path Profiling

Runtime به معنی لحظه اجرا ، Execution به معنی اجرا ، Path به معنی مسیر و Profile به معنی مشخصات است و در کل در این روش در لحظه اجرا شدن کلیه فرآیندها و فایل های سیستمی کلیه مشخصات مسیر و نحوه اجرای آن ثبت و ضبط می شوند و به محض اینکه Rootkit در قسمتی از مسیر بخواهد تغییراتی بر روی فرآیند یا فایل اعمال کند با مقایسه ابتدای مسیر اجرایی و مشخصاتی که ثبت شده است امکان جلوگیری از فعالیت آن وجود خواهد داشت ضمن اینکه Rootkit نیز شناسایی می شود . در واقع به زبان ساده تعداد دستورات اجرایی که به فایل یا به فرآیند سیستمی ارجاع می شود در این روش ثبت و ضبط می شوند و در نهایت می توان با مقایسه کردن اضافه و کم شدن این دستورات Rootkit را شناسایی کرد.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات