در این بخش از دوره SEC504 از موسسه SANS توضیح Worm و انواع آن پرداخته و در ادامه به شرح مدل های مختلف آن خواهیم پرداخت.
Multiplatform Worm
کرمهای قدیمیتر معمولا تنها به یک نوع سیستمعامل حمله مینمودند و مدیران شبکه برای مقابله با آنها کافی بود تا یک سیستمعامل را اصلاحا Patch نمایند تا مشکل رفع گردد. نمونه ای از این کرمها و سیستمعاملهایی که بر روی آن عمل میکنند عبارتند از:
• Nimda: Windows
• Ramen: Linux
• Sasser: Windows
• Conficker: Windows
• Morto: Windows
کرمهای کمیپیشرفته تر به صورت Cross Platform عمل میکنند که برخی از آنها عبارتند از:
• کرم IIS/Sadmind که هم بر روی ویندوز و هم سولاریس کار میکند.
• کرم Stuxnet که هم بر روی ویندوز فعالیت نموده و هم سیستمهای کنترل صنعتی SCADA را دستکاری مینمود.
البته در آیندهای نزدیک، کرمها ممکن است به چندین نوع سیستمعامل دسترسی پیدا نمایند. در این حالت دسترسی به سیستمعاملهای لینوکس، ویندوز، سولاریس، BSD و دیگر سیستمعاملها تنها با یک کرم صورت میگیرد.
نکتهای که باید به آن توجه کرد این است که کرمهای قدیمی که تنها بر روی یک سیستمعامل فعالیت میکردند، با انجام بروزرسانی سیستمعاملها معمولا از بین میرفتند. بروزرسانی سیستمعاملها اغلب به صورت مرتب توسط مدیران شبکه انجام میشود.
ولی برای محافظت از کرمهایی که بر روی سیستمعاملهای مختلف فعالیت میکنند، شما نیاز به کار و هماهنگی بیشتری دارید زیرا باید در تمامی سیستمعاملها بروز رسانی را انجام دهید.
با توجه به این موضوع، به عنوان مثال شما به جای Patch نمودن سیستمعاملهای ویندوزی، باید سیستمعاملهای دیگر مانند لینوکس و غیره را نیز Patch نمایید که این کار هم زمان قابل توجهی را از شما خواهد گرفت و هم نیاز به فعالیت بیشتری دارد که همین موضوع و عدم بروزرسانی به موقع موجب میشود تا برخی آسیبپذیریها بر روی سیستمها باقی مانده و منجر به ادامه فعالیت کرمها شود.
گرچه جریان زیادی از این کرمها هنوز ایجاد نشدهاند ولی تعداد کمی از آنها پیش از این در اینترنت منتشر شدهاند. نمونهای از این کرمها را در قسمت قبل عنوان کردیم. یکی از آنها در ماه May سال 2001 از طریق اینترنت گسترش یافت و نام آن IIS/Sadmind بود. این کرم Sun Solaris و ویندوز را هدف قرار میداد.
همانطور که از نام آن پیداست، این کرم از سرویس آسیبپذیری Sadmind که برای مدیریت از راه دور ماشینهای سولاریس است، استفاده میکند و از طریق ماشینهای قربانی، خود را در وب سرور مایکروسافت یعنی IIS گسترش میدهد و این چرخه به همین صورت ادامه پیدا میکند.
Zero-Day Exploit Worm
یکی دیگر از جنبههایی که در مورد کرمها قابل بررسی میباشد، نحوه اکسپلویت یا بهره برداری از آسیبپذیریهاست. کرمهایی که در مطالب پیشین به آنها اشاره گردید، بیشتر از آسیبپذیریهای شناخته شده استفاده میکردند.
این آسیبپذیریها، ماههای پیش شناسایی شده بودند و کرمها از آنها برای دسترسی به سیستمهای مختلف استفاده میکردند. اگر این کرمها باز هم در سطح اینترنت، سیستمهای فراوانی را آلوده نمودند ولی به صورت کلی ما در مورد آسیبپذیری که آنها مورد استفاده قرار میدادند، اطلاعات لازم را میدانستیم و شرکتهای سازنده مانند مایکروسافت، پیش از این Patchهای مورد نیاز آسیبپذیریها را منتشر کرده بودند.
ولی با توجه به اینکه تعداد کمیاز افراد به صورت مرتب اقدام به Patch نمودن و بروزرسانی سیستمها مینمایند، این کرمها هنوز هم قابلیت آسیب رساندن به سیستمها را دارا بودند. البته این کرمها به سرعت توسط تیمهای امنیتی شناسایی و حذف میشوند.
در ادامه به بیان نمونه ای از این دست کرمها میپردازیم:
Sasser که از آسیبپذیری LSASS در ویندوز سوء استفاده میکرد: در آوریل سال 2004 ، Patch مربوط به آسیبپذیری منتشر گردید و سه هفته بعد کرم مربوط به آن انتشار یافت.
Zotob که از آسیبپذیری UPnP استفاده میکرد: در اگوست سال 2005، Patch مربوط به آسیبپذیری منتشر گردید و سه روز بعد کرم مربوط به آن انتشار یافت.
ما در آیندهای نزدیک خیلی خوش شناس نخواهیم بود که کرمها بعد از کشف آسیبپذیری ایجاد شوند. کرمهای جدید تر از یک آسیبپذیری ناشناخته یا Zero-Day استفاده میکنند.
اگر یک کرم به این روش گسترش یابد، با توجه به اینکه شرکتهای مختلف، از آسیبپذیری اطلاعی ندارند که برای آن Patch ایجاد نمایند، سیستمهای بیشتری مورد حمله قرار خواهند گرفت و محققان امنیتی نیز نیاز به تلاش مضاعفتری برای درک نحوه انتشار آنها خواهند داشت. لازم به ذکر است شاید ما زمانی متوجه حضور چنین کرمهایی شویم که صدها هزار یا حتی میلیونها سیستم به خطر افتاده است.
کرم stuxnet نمونهای از کرمهای Zero-Day Exploit است. این کرم با 4 نوع اکسپلویت Zero Day که در ماشینهای ویندوز بود، فعالیت خود را انجام میداد.
Fast Spreading Worm
کرمها به واسطه ماهیت خود به سرعت گسترش پیدا میکنند. با این حال، بسیاری از کرمهایی که تا به امروز با آنها روبرو شدهایم، در گسترش اولیه خود نا کارآمد هستند و شکل نموداری آنها مانند چوبهاکی است.
برخی از کرمها، آدرسهای IP را برای جستجوی قربانیها، به صورت تصادفی انتخاب میکنند و این امر باعث کاهش راندمان کاری آنها میشود. البته در اگوست سال 2001 دو مقاله ارائه گردید که تکنیکهای جدیدی را برای به حداکثر رساندن سرعت گسترش کرمها ارائه میداد.
هر مقاله یک مدل ریاضی را برای توسعه توزیع کرمها ارائه میکرد. البته خوشبختانه هیچ کدی داخل مقاله گنجانده نشده بود که ایجاد چنین کرمهایی را راحت تر نماید ولی افرادی که دارای تخصص برنامه نویسی هستند میتوانند از این ایده استفاده کنند.
اولین مقاله توسط Nicholas C. Weaver نوشته شده بود که یک کرم “Warhol” را تشریح مینمود که در عرض 15 دقیقه میتواند 99 درصد از سیستمهای آسیبپذیر را در اینترنت به تسخیر در آورد.
مقاله دوم که توسط Staniford, Grim و Jonkmanارائه شده بود، ساختار کرمی را ارائه کردند که در کمتر از 30 ثانیه میتواند بر اینترنت تسلط پیدا کند. نام این کرم “Flash” گذاشته شده بود. اگر چه از منظر ریاضی و به صورت تئوری این امر امکان پذیر است ولی با توجه به مشکلاتی که در اینترنت وجود دارد، حدود یک ساعت برای گسترش منطقیتر به نظر میرسد.
تکنیکWarhol/Flash
برای استفاده از تکنیک Warhol/Flash، یک نفوذگر قبل از اسکن کردن اینترنت، ابتدا به دنبال سیستمهای آسیبپذیر میگردد که کد اکسپلویت در ادامه باید بر روی آنها اجرا شده و Worm از آن استفاده نماید.
در این مرحله نفوذگر ابتدا هزاران یا دهها هزار سیستم آسیبپذیر را پیدا میکند ولی آنها را اکسپلویت نکرده و در اختیار خود قرار نمیدهد. سپس نفوذگر با استفاده از لیستی که در مرحله پیشین به دست آورده است، آلوده سازی را با اولین مجموعه از قربانیان آغاز میکند. در این حالت با توجه به برنامه ریزی پیشین، راندمان و سرعت بالاتری را شاهد هستیم.
در این بخش به جای اینکه به صورت تصادفی آدرسی انتخاب شود، کرم بلافاصله سیستمهای آسیبپذیر شناخته شده را مورد هدف قرار میدهد. این کرم پس از آلوده سازی مجموعه اول، با توجه به فرآیندهای انجام شده برای به دست آوردن سیستمهای آسیبپذیر، میتواند به سرعت خود را گسترش دهد و سیستمهای دیگر را آلوده نماید.
پس از اینکه تمام اهداف از پیش تعیین شده مورد حمله قرار گرفتند، اکنون کرم شروع به اسکن و گسترش در اهداف عمومیمینماید. با توجه به این نوع عملکرد، سرعت گسترش کرم به صورت قابل ملاحظه ای افزایش مییابد و خود را به بخش بالاتر چوبهاکی میرساند. به تصویر زیر توجه نمایید.
Polymorphic Worms
تولید کنندگان و توسعه دهندگان کرمهای اینترنتی، نمیخواهند فعالیت مخرب شان مورد شناسایی و تجزیه و تحلیل قرار گیرد و از انتشار آن جلوگیری شود. یکی از راههای شناسایی کرمها و حملات، استفاده از سیستمهای تشخیص نفوذ میباشد. سیستمهای تشخیص نفوذ (IDS) میتوانند کرمها و دیگر حملات رخ داده را شناسایی نموده و به اطلاع متخصصان امنیتی (Good guys) برسانند. امروزه اغلب سیستمهای تشخیص نفوذ مبتنی شبکه (network-based IDS) دارای دیتابیسی از امضاهای حمله (attack signatures) میباشند.
سیستمهای تشخیص نفوذ اقدام به جمع آوری ترافیک شبکه نموده و آن را با امضاهای حمله مقایسه مینماید تا در صورت بروز حمله، آن را به اطلاع متخصصین امنیتی برساند. در حال حاضر سیستمهای تشخیص نفوذ، کرمهای سنتی را که از کدهای اکسپلویت شناخته شده استفاده میکنند به راحتی شناسایی مینمایند. البته علاوه بر این، افرادی که توانایی بالایی در مبارزه با کرمها را دارند، با Capture نمودن فعالیت کرم در طول انتشار آن و همچنین از طریق مهندسی معکوس، میتوانند فیلترهایی را برای جلوگیری هر چه بهتر در مقابله با کرمها ایجاد نمایند.
به همین منظور توسعه دهندگان کرمها برای جلوگیری از شناسایی، آنالیز مهندسین معکوس و گذشتن از فیلترهای قرار داده شد در سیستمهای تشخیص نفوذ، از روش Polymorphic استفاده مینمایند.
برنامههای Polymorphic هر زمان که اجرا میشوند، توسط بهم ریختگی کد نرم افزار (scrambling software code)، ظاهر خود را تغییر میدهند. اگرچه نرم افزار جدید از دستورالعملهای کاملا متفاوت تشکیل شده است، اما کد هنوز عملکرد مشابهی دارد.
در ساختار polymorphism تنها ظاهر دچار تغییر شده و عملکرد کد به همان صورت پیشین خواهد بود. این تغییر کد جهت عدم شناسایی و انطباق با امضاهای سیستم تشخیص نفوذ میباشد. هنگامیکه کرمها polymorphic هستند، هر کپی از کرم دارای کد جدیدی خواهد بود و این نوع کرمها بر روی سیستم هر قربانی، ظاهری متفاوت دارند و به همین علت تشخیص، تجزیه و تحلیل آنها بسیار سخت تر میباشد.
چگونگی ایجاد یک کد polymorphic
روشهای مختلفی برای ایجاد کد به صورت Polymorphic وجود دارد. در واقع شما میتوانید دو کد مختلف داشته باشید که عملکرد یکسانی دارند ولی در ساختار کدنویسی متفاوت هستند. یکی از روشها استفاده XOR میباشد که یک شامل اضافه نمودن یک لایه ساده از رمزنگاری به دستورالعملهاست. البته باید برای اجرای درست کد، یک سرآیند یا Header به آن اضافه شده و دستور العمل Un-XOR برای آن مشخص شود.
روش دیگری که برای ایجاد کد Polymorphic میتوان از آن استفاده نمود، انتخاب یک گروه از توابع زبان ماشین است که عملکردی معادل همان کد اصلی را دارند. نمونههایی از این دستورالعملها شامل اضافه کردن X و Y و تفریق آن است. هر دو نتیجه یکسانی خواهند داشد.
X+Y=X-(-Y)
همچنین این دو روش میتوانند با یکدیگر ترکیب شوند. بدین معنی که ابتدا کد را با یک کلید اصطلاحا XOR نمود و سپس یک هدر از توابع معادل ساخته شده و به آن کد XOR اضافه شود. در این حالت شناسایی این کرم بسیار مشکل خواهد بود.
نکته : یکی از روشهای ایجاد Payloadهای رمز شده استفاده از فریم ورکهای متاسپلویت و Veil میباشد.
Truly Nasty Payload
به طور کلی ما با کرمهایی روبرو هستیم که یک ابزار حمله بسیار مخرب را در داخل خود دارند و آن را گسترش میدهند. برخی از کرمها حملات انکار سرویس یا DoS را علیه یک قربانی صورت میدهند. کرم Code Red این کار را انجام میداد و روندها نشان میدهد که این نوع از حملات در ادامه بسیار محبوب تر خواهند شد.
کرمهای دیگری هم وجود داشتند که فایلها را از بین میبردند و اطلاعات حساس را حذف میکردند. کرم Witty یکی از آنها میباشد که به صورت گستردهای سیستم میزبان را نابود میکند و این کار را با آلودگی هارد دیسک انجام میدهد. بعضی دیگر از کرمها ممکن است در آینده به عنوان بمبهای منطقی عمل کرده و باعث صدمه زدن به سیستمها (Crash) شوند یا تعدادی از ماشینها را در یک زمان خاص غیرفعال نمایند.
همچنین کرمها میتوانند اطلاعات حساس مورد نظر خود را از طریق سیستم فایل جستجو نموده و آن را به یک ایمیل که توسط نفوذگر مشخص میشود برای وی ارسال نمایند. برخی دیگر از کرمها هم میتوانند به سیستمهای کنترل صنعتی SCADA پیامهایی را ارسال نموده و موجب بروز خرابی در آن شوند.
نکته: کرم Stuxnet 2010 دارای دستورالعملی بود که خودش را در تاریخ 24 ژوئن سال 2012 حذف نماید.
البته امروزه به طور فزایندهای شاهد کرمهایی هستیم که توزیع Botها را انجام میدهند.(در ادامه به مبحث Botها پرداخته میشود.)
به همین دلایل که مطرح گردید ما باید همواره آمادگی خود را برای مواجهه و مقابله با این کرمها حفظ نماییم.