از آنجا که اقدامات امنیتی در شناسایی و مسدود کردن بدافزارها و حملات سایبری بهتر می شوند، مخالفان و مجرمان سایبری مجبور می شوند که برای جلوگیری از تشخیص، دائماً روش های جدیدی ایجاد کنند. یکی از این تکنیک های پیشرفته شامل اکسپلویت های “filless” است، که هیچ فایل اجرایی که بر روی هارددیسک باشد، وجود ندارد. این حملات بویژه در جلوگیری از راه حل های سنتی آنتی ویروس (AV) مؤثر هستند، راه حل هایی که به دنبال فایل هایی هستند که در دیسک ذخیره می شوند تا بتوانند آنها را اسکن کرده و تشخیص دهند که آیا آنها مخرب هستند یا خیر.
با اینکه حملات “fileless” جدید نیستند، اما شیوع زیادی پیدا کرده اند. در بررسی هایی که در سال ۲۰۱۶ انجام شد، تیم های واکنش حادثه CrowdStrike® Services دریافتند که از ۱۰ بردار حمله ای که منجر به یک نقض موفقیت آمیز شده است، در ۸ حمله، از حملات نوع “fileless” استفاده شده است. این مقاله برای کمک به درک خطر ناشی از حملات “fileless”، توضیح می دهد که چگونه این حملات کار می کنند و چرا راه حل های فعلی علیه آنها بی تاثیر هستند.
حمله fileless چیست؟
حمله fileless که در بعضی موارد به آن حمله بدون بدافزار نیز می گویند، هنگامی رخ می دهد که یک مهاجم با از بین بردن مرحله قدیمی کپی کردن یک فایل PE (Portable Executable) در درایو دیسک، از شناسایی جلوگیری کند. یعنی مهاجم از فایل اجرایی که برروی هارد دیسک اجرا می شود، به منظور آلوده کردن سیستم، استفاده نمی کند. تکنیک های مختلفی وجود دارد که می توان از این طریق برای نفوذ به یک سیستم استفاده کرد.
اکسپلویت ها و کیت های اکسپلویت، معمولاً برای سوءاستفاده از آسیب پذیری هایی که در سیستم عامل (OS) یا برنامه های نصب شده وجود دارد، مستقیماً در حافظه استفاده می کنند. استفاده از گواهینامه های سرقت شده یکی از روش های گسترده برای شروع حمله fileless است. شرکت Verizon در DBIR (گزارش تحقیقات مربوط به نقض اطلاعات) که در سال ۲۰۱۷ انجام داد، دریافت که ۸۱% از موارد نقض داده شامل، رمزهای عبور ضعیف، پیش فرض یا سرقت شده است، که این آمار ۱۸% نسبت به سال گذشته افزایش داشته است. این امر به مهاجمان اجازه می دهد تا به طور عادی به سیستم دسترسی یابند. پس از دستیابی به دسترسی اولیه، مهاجم می تواند به ابزارهای ارائه شده توسط خود سیستم عامل مانند Windows Management Instrumentation و Windows PowerShell متکی باشد تا بدون نیاز به ذخیره کردن فایل ها در دیسک، اقدامات دیگری، مانند افزایش سطح دسترسی را انجام دهد. به عنوان مثال، مهاجمان می توانند با پنهان کردن کد در رجیستری، کرنل یا ایجاد حساب های کاربری که به آنها امکان دسترسی مجدد به سیستم ها را می دهد، بدون اجرای فایل بر روی دیسک، دسترسی را ارتقا داده یا برای ورودهای بعدی، نگه دارند. در امنیت به استفاده از یک یا چند تکنیک از این دست با عنوان “living off the land” یاد می شود.
آناتومی یک حمله fileless
با استفاده از یک مثال در دنیای واقعی که توسط تیم های واکنش حادثه CrowdStrike Services کشف شده است، می توانیم بررسی کنیم که یک نفوذ از نوع fileless یا بدون بدافزار چگونه آغاز و به پایان می رسد. در این مورد، اولین هدف یک وب سرور که از Microsoft ISS استفاده می کرد و همچنین بانک اطلاعاتی SQL Server در حال اجرا بوده است، می باشد. به منظور نفوذ و دسترسی اولیه، مهاجم از web shell استفاده کرده است، یک اسکریپت کوتاه که در یک وب سرور قابل بارگذاری و اجرا است. اسکریپت را می توان به هر زبانی که توسط وب سرور پشتیبانی می شود، مانند Perl ، Python ، ASP یا PHP نوشت. Web shellها در چنین حملاتی محبوب هستند، زیرا می توانند با سواستفاده از آسیب پذیری موجود در سیستم، بدون اینکه فایلی روی دیسک نوشته شود، مستقیماً در حافظه بارگذاری شوند. در این حمله خاص، مهاجم از یک حمله SQL Injection برای قرار دادن web shell خود بر روی سرور استفاده کرده است.
از آنجا که وب سرور به درستی کاراکترها را بررسی نکرده بود، مهاجم قادر بود web shell را به راحتی روی سرور بارگزاری و تکرار کند. Web shell که مورد استفاده قرار گرفه بود، به نام “Chopper China”، حاوی دستورات جاوا اسکریپت بود و نکته قابل توجه این است که فقط از ۷۲ کاراکتر استفاده کرده بود. اجرای web shell در حافظه، به مهاجمان اجازه می دهد تا از رابط کاربری Chopper برای اجرای دستورات دلخواه در برابر وب سرور استفاده کند. با دسترسی کامل از راه دور به وب سرور، مهاجم با اجرای یک دستور رمزگذاری شده PowerShell، اقدام به سرقت اعتبارنامه نموده بود.
اولین قدم برای بارگیری اسکریپت از یک سرور از راه دور، بارگذاری اسکریپت به طور مستقیم در حافظه و اجرای آن بود. این اسکریپت، به نوبه خود، کلمه عبورهای متنی ساده را که در حافظه سرور وب ذخیره شده اند، به سرقت برده بود. در طی چند ثانیه، مهاجم چندین نام کاربری و رمزعبور برای همه حساب های سیستم را دریافت کرده بود.
قدم بعدی این بود که مهاجم بتواند به پایداری روی سرور دست یابد و دسترسی خود را به منظور ورودهای بعدی حفظ کند. برای انجام این کار بدون نیاز به هیچ نوع بدافزاری، مهاجم از تکنیکی به نام “Sticky Keys” استفاده کرده بود. با تغییر یک خط در رجیستری ویندوز، کاری که به راحتی با استفاده از دستور PowerShell یا WMI انجام می شود، مهاجم از کلید رجیستری استفاده کرده بود تا روند صفحه کلید روی صفحه ویندوز را در حالت debug قرار دهد.
وقتی در حالت دیباگ تنظیم شد، صفحه کلید روی صفحه نمایش به شخصی که دارای دسترسی از راه دور است اجازه می دهد بدون نیاز به ورود به سیستم، خط فرمان را با دسترسی سیستمی باز کند. پس از تنظیم این کلید رجیستری، مهاجم می تواند در هر زمان، به سادگی با باز کردن یک اتصال از راه دور دسک تاپ به وب سرور بازگردد. علاوه بر این، دستیابی به یک سیستم بدون ایجاد یک رویداد ورود به سیستم در تاریخ رویداد ویندوز، اقدامات مهاجم را تقریباً غیرقابل اثبات می کند.
در این مورد، از تکنیک های حمله fileless در مراحل مختلف حمله سایبری استفاده شد :
۱٫ دسترسی و نفوذ اولیه
اکسپلویت SQL Injection در برابر وب سرورها
۲٫ دستور و کنترل (Command and Control)
وب شل Chopper
۳٫ افزایش سطح دسترسی
سرقت اعتبار با استفاده از اسکریپت PowerShell
۴٫ حفظ دسترسی
تکنیک کلیدهای اصلاح رجیستری
چرا فناوری های سنتی قادر به محافظت در برابر حملات fileless نیستند؟
حملات fileless در حال افزایش هستند زیرا کشف این نوع حملات بنا به ماهیت آنها، که بدون استفاده از فایل اجرایی روی دیسک انجام می شوند، برای راه حل های سنتی بسیار سخت است. بیایید بررسی کنیم که چرا برخی از فناوری های محافظت از نقاط پایانی امروزی که در بازار تجاری مستقر هستند، اینقدر در برابر این نوع حملات مخرب موفق نیستند.
آنتی ویروس ها بصورت موروثی، به منظور جستجوی امضاهای بدافزارهای شناخته شده طراحی شده اند. از آنجایی که حملات fileless هیچ بدافزاری ندارند، موردی برای تشخیص توسط آنتی ویروس های وجود ندارد.
در مورد حملات fileless، روش های ضد بدافزار مبتنی بر یادگیری ماشین (ML) با همان چالشی مانند میراث AV روبرو هستند. در مورد حملات fileless، روش های ضد بدافزار مبتنی بر یادگیری ماشین (ML) با همان چالشی مانند میراث آنتی ویروس ها روبرو هستند. راه حل های یادگیری ماشین بصورت پویا پرونده های ناشناخته را تجزیه و تحلیل می کند و آنها را خوب یا بد طبقه بندی می کند. اما همانطور که اشاره کردیم، در یک حمله fileless، هیچ فایلی برای تجزیه و تحلیل وجود ندارد، بنابراین ML نمی تواند کمک کند.
رویکرد whistelisting شامل لیست تمام فرآیندهای مجاز روی دستگاه است تا از اجرای فرآیند ناشناخته جلوگیری شود. مشکلی که در مورد حملات fileless وجود دارد، این است که آنها از برنامه های معتبر لیست سفید که آسیب پذیر هستند، استفاده می کنند و از مجریان سیستم عامل داخلی استفاده می کنند. جلوگیری از برنامه هایی که هم کاربران و هم سیستم عامل به آنها اعتماد دارند، گزینه ی مورد استفاده نیست.
استفاده از IOC برای جلوگیری از حملات fileless نیز کارآمد نیست. در حقیقت، IOC ها به امضاهای آنتی ویرس ها شبیه هستند، زیرا از آن جهت که می توانند آثار مخرب شناخته شده ای را که توسط یک مهاجم به جای مانده است، شناخته می شوند. با این حال، به دلیل اینکه آنها از فرآیندهای مشروعیت بهره می برند و در حافظه فعالیت می کنند، حملات fileless اثری را پشت سر خود نمی گذارد.
رویکرد دیگر شامل استفاده از sandbox است که می تواند اشکال مختلفی از جمله انفجار مبتنی بر شبکه و ماکرو مجازی سازی را شامل شود. از آنجا که حملات fileless از پرونده های PE استفاده نمی کنند، چیزی برای شناسایی توسط sandbox وجود ندارد.
دلایل استفاده از حملات fileless توسط مهاجمان
• Stealthy:
حملات fileless از ابزارهای قانونی استفاده می کنند، بدین معنی که مسدود کردن ابزارهای مورد استفاده در یک حمله fileless، تقریبا غیرممکن است.
• Living-off-the-land:
ابزارهای مشروع مورد استفاده برای حملات fileless بصورت پیش فرض نصب شده اند. مهاجم برای استفاده از آنها نیازی به ایجاد یا نصب هیچ ابزار سفارشی ندارد.
• Trusted and Frequented:
این ابزارها غالباً مورد استفاده و مورد اعتماد قرار می گیرند. دیدن ابزارهای بکار رفته در حملات fileless در محیط سازمانی برای یک هدف مشروع غیر معمول نیست.