پایداری
Persistenceتوضیحات
مهاجم سعی میکند جای پای خود را در سیستمهای هدف حفظ کند. تکنیکهای پایداری شامل هر دسترسی، اقدام یا تغییر پیکربندی میشوند که به مهاجم اجازه میدهد حضور مداوم در سیستمها داشته باشد. مهاجمان اغلب نیاز دارند که دسترسی خود را پس از راهاندازی مجدد سیستم، تغییر اعتبارنامهها و سایر وقفهها حفظ کنند.
تکنیکها (20)
مهاجمان از اسکریپتهایی که به طور خودکار در هنگام بوت سیستم یا ورود کاربر اجرا میشوند برای ایجاد پایداری استفاده میکنند. این اسکریپتها میتوانند برای اجرای کد مخرب، تغییر پیکربندی سیستم و ایجاد backdoor استفاده شوند.
مهاجمان اسکریپتهای ورود ویندوز را تغییر میدهند تا کد مخرب را در هنگام ورود کاربر اجرا کنند. اسکریپتهای ورود میتوانند از طریق Group Policy یا رجیستری پیکربندی شوند. این اسکریپتها با سطح دسترسی کاربر اجرا میشوند.
مهاجمان اسکریپتهای ورود شبکه را تغییر میدهند تا کد مخرب را در هنگام ورود کاربران به دامنه اجرا کنند. این اسکریپتها از طریق Active Directory Group Policy توزیع میشوند و در سراسر شبکه اجرا میشوند.
مهاجمان اسکریپتهای RC در سیستمهای یونیکس را تغییر میدهند تا دستورات مخرب را در هنگام بوت سیستم با سطح دسترسی root اجرا کنند. اسکریپتهای RC در /etc/rc.local، /etc/rc.d/ و مکانهای مشابه قرار دارند.
مهاجمان حسابهای کاربری موجود را دستکاری میکنند تا دسترسی مداوم به سیستمهای قربانی حفظ کنند. این تکنیک شامل اضافه کردن اعتبارنامههای جدید، تغییر مجوزها و اضافه کردن نقشهای ابری میشود. مهاجمان میتوانند از این روش برای حفظ دسترسی حتی پس از تغییر رمز عبور اصلی استفاده کنند.
مهاجمان اعتبارنامههای اضافی به حسابهای ابری اضافه میکنند تا دسترسی مداوم داشته باشند. این شامل اضافه کردن access key، service principal یا application credential به حسابهای AWS، Azure یا GCP میشود. حتی اگر رمز عبور اصلی تغییر کند، مهاجم میتواند از اعتبارنامههای اضافی استفاده کند.
مهاجمان مجوزهای نمایندگی ایمیل را به حسابهای کاربری اضافه میکنند تا به ایمیلهای قربانی دسترسی مداوم داشته باشند. این تکنیک در محیطهای Microsoft Exchange و Office 365 رایج است و به مهاجمان اجازه میدهد ایمیلها را بخوانند، ارسال کنند یا مدیریت کنند.
مهاجمان نقشهای ابری اضافی به حسابهای موجود اضافه میکنند تا سطح دسترسی را افزایش دهند یا پایداری ایجاد کنند. این شامل اضافه کردن نقشهای مدیریتی در AWS، Azure یا GCP میشود. با داشتن نقشهای بالاتر، مهاجم میتواند منابع بیشتری را کنترل کند.
مهاجمان کلیدهای SSH مخرب را به فایل authorized_keys سرورها اضافه میکنند تا دسترسی مداوم بدون رمز عبور داشته باشند. این تکنیک در سیستمهای لینوکس و macOS رایج است و به مهاجمان اجازه میدهد حتی پس از تغییر رمز عبور به سیستم دسترسی داشته باشند.
مهاجمان دستگاههای مخرب را در سرویسهای مدیریت دستگاه ثبت میکنند تا دسترسی مداوم داشته باشند. این تکنیک در محیطهای Azure AD و سایر سرویسهای MDM رایج است. با ثبت دستگاه، مهاجم میتواند از سیاستهای Conditional Access عبور کند.
مهاجمان رجیستری ویندوز را برای پنهان کردن پیکربندی، اجرای کد مخرب و ایجاد پایداری تغییر میدهند. رجیستری ویندوز یک پایگاه داده سلسلهمراتبی است که تنظیمات سیستم و برنامهها را ذخیره میکند. مهاجمان میتوانند از رجیستری برای ذخیره payload، تنظیم autorun و پنهان کردن فعالیتها استفاده کنند.
مهاجمان حسابهای کاربری جدید ایجاد میکنند تا دسترسی مداوم به سیستمهای قربانی داشته باشند. این حسابها میتوانند محلی، دامنهای یا ابری باشند. ایجاد حسابهای جدید به مهاجمان اجازه میدهد بدون نیاز به ابزارهای دسترسی از راه دور مداوم، به سیستمها دسترسی داشته باشند.
مهاجمان حسابهای کاربری محلی جدید در سیستمهای هدف ایجاد میکنند تا دسترسی مداوم داشته باشند. این حسابها میتوانند به گروه مدیران اضافه شوند تا سطح دسترسی بالاتری داشته باشند. ابزارهایی مانند net user و PowerShell برای این منظور استفاده میشوند.
مهاجمان حسابهای دامنه جدید در Active Directory ایجاد میکنند تا دسترسی مداوم در سراسر شبکه داشته باشند. حسابهای دامنه میتوانند به گروههای دامنه اضافه شوند و دسترسی به منابع مشترک شبکه را فراهم کنند.
مهاجمان حسابهای ابری جدید در محیطهای cloud ایجاد میکنند تا دسترسی مداوم داشته باشند. این حسابها میتوانند در AWS، Azure، GCP یا سایر سرویسهای ابری ایجاد شوند. حسابهای ابری میتوانند محدود به سرویسهای خاص باشند تا شناسایی را دشوارتر کنند.
مهاجمان از مکانیزمهای راهاندازی برنامههای Microsoft Office برای پایداری سوءاستفاده میکنند. این تکنیک شامل سوءاستفاده از templateهای Office، add-inها، فرمهای Outlook و سایر مکانیزمهای startup Office میشود. کد مخرب در هنگام باز شدن برنامههای Office اجرا میشود.
مهاجمان کد مخرب را در قالبهای Microsoft Office جاسازی میکنند تا در هنگام باز شدن برنامههای Office اجرا شود. قالبهای Normal.dotm در Word و Personal.xlsb در Excel اهداف رایج هستند. این تکنیک به مهاجمان اجازه میدهد ماکروهای مخرب را در هر سند جدید اجرا کنند.
مهاجمان از کلید رجیستری Office Test برای اجرای DLL مخرب در هنگام راهاندازی برنامههای Office سوءاستفاده میکنند. با اضافه کردن مسیر DLL مخرب به کلید رجیستری HKCU\Software\Microsoft\Office test\Special\Perf، کد مخرب در هر بار باز شدن Office اجرا میشود.
مهاجمان از ویژگی Home Page در Outlook برای بارگذاری صفحات HTML مخرب سوءاستفاده میکنند. با تنظیم URL یک صفحه مخرب به عنوان Home Page یک پوشه Outlook، کد مخرب در هر بار باز شدن آن پوشه اجرا میشود.
مهاجمان add-inهای مخرب برای برنامههای Microsoft Office ایجاد میکنند تا پایداری ایجاد کنند. Add-inهای Office مانند فایلهای .dll، .xll، .wll و .xlam میتوانند برای اجرای کد مخرب در هنگام راهاندازی Office استفاده شوند.
مهاجمان افزونههای مرورگر مخرب را نصب میکنند تا دسترسی مداوم داشته باشند و اطلاعات را جمعآوری کنند. افزونههای مرورگر دسترسی گستردهای به محتوای وب، اعتبارنامهها و ترافیک شبکه دارند. مهاجمان میتوانند افزونههای مخرب را از طریق فروشگاههای رسمی یا نصب مستقیم توزیع کنند.
مهاجمان از Windows Background Intelligent Transfer Service (BITS) برای دانلود، اجرا و پایداری سوءاستفاده میکنند. BITS یک سرویس ویندوز برای انتقال فایل در پسزمینه است که اغلب توسط Windows Update استفاده میشود. مهاجمان میتوانند کارهای BITS مخرب ایجاد کنند که payload را دانلود و اجرا کنند.
مهاجمان از تکنیکهای سیگنالدهی ترافیک مانند port knocking برای پنهان کردن پورتهای باز و دسترسی به backdoor استفاده میکنند. این تکنیک به مهاجمان اجازه میدهد سرویسهای مخرب را از دید ابزارهای اسکن شبکه پنهان کنند و تنها با ارسال دنباله خاصی از بستهها به آنها دسترسی داشته باشند.
مهاجمان کامپوننتهای مخرب را در نرمافزارهای سرور نصب میکنند تا دسترسی مداوم داشته باشند. این تکنیک شامل نصب web shell، transport agent، SQL stored procedure و سایر کامپوننتهای سرور میشود. این کامپوننتها میتوانند برای اجرای دستورات، جمعآوری اطلاعات و ایجاد backdoor استفاده شوند.
مهاجمان از رویههای ذخیره شده SQL مخرب برای پایداری در سرورهای پایگاه داده استفاده میکنند. در MSSQL، ویژگی xp_cmdshell میتواند برای اجرای دستورات سیستمعامل استفاده شود. مهاجمان میتوانند رویههای مخرب را ایجاد کنند که در رویدادهای خاص پایگاه داده اجرا میشوند.
مهاجمان web shellهای مخرب را روی سرورهای وب نصب میکنند تا دسترسی مداوم از راه دور داشته باشند. Web shellها اسکریپتهایی هستند که به مهاجمان اجازه میدهند دستورات را از طریق HTTP اجرا کنند. China Chopper، WSO و سایر web shellهای معروف توسط گروههای APT استفاده میشوند.
مهاجمان کامپوننتهای مخرب مانند ISAPI extension، filter یا IIS module را روی سرورهای IIS نصب میکنند. این کامپوننتها میتوانند ترافیک HTTP را مشاهده و تغییر دهند، دستورات اجرا کنند یا به عنوان proxy برای C2 عمل کنند.
مهاجمان تصاویر کانتینر یا ماشین مجازی موجود در registry داخلی را با کد مخرب آلوده میکنند تا پایداری ایجاد کنند. با آلوده کردن تصاویر پایه، مهاجمان میتوانند اطمینان حاصل کنند که هر کانتینر یا VM جدید که از این تصویر ایجاد میشود، کد مخرب را اجرا میکند.
مهاجمان از مکانیزمهای بوت قبل از سیستمعامل برای ایجاد پایداری سوءاستفاده میکنند. با نصب بدافزار در firmware یا bootloader، مهاجمان میتوانند قبل از بارگذاری سیستمعامل کد اجرا کنند و از اکثر ابزارهای امنیتی مبتنی بر OS فرار کنند. این سطح از پایداری بسیار دشوار برای شناسایی و حذف است.
مهاجمان firmware سیستم مانند BIOS و UEFI را تغییر میدهند تا پایداری در سطح پایینتر از سیستمعامل ایجاد کنند. بدافزار firmware میتواند حتی پس از نصب مجدد سیستمعامل باقی بماند. گروههایی مانند Equation Group از این تکنیک استفاده کردهاند.
مهاجمان firmware کامپوننتهای سختافزاری مانند هارد دیسک، کارت شبکه و سایر دستگاههای جانبی را تغییر میدهند. firmware کامپوننت میتواند برای ذخیره payloadهای مخرب در مناطقی که توسط سیستمعامل قابل دسترسی نیستند استفاده شود.
مهاجمان Master Boot Record (MBR) یا Volume Boot Record (VBR) را با کد مخرب جایگزین میکنند. Bootkitها قبل از بارگذاری سیستمعامل اجرا میشوند و میتوانند سیستمعامل را تغییر دهند، rootkit نصب کنند و از اکثر ابزارهای امنیتی فرار کنند.
مهاجمان ROM Monitor (ROMMON) دستگاههای شبکه Cisco را با firmware غیرمجاز جایگزین میکنند. ROMMON یک محیط بوت پایه برای دستگاههای Cisco است. با تغییر ROMMON، مهاجمان میتوانند پایداری عمیقی در دستگاههای شبکه ایجاد کنند.
مهاجمان پیکربندی دستگاههای شبکه را تغییر میدهند تا سیستمعامل از یک سرور TFTP مخرب بارگذاری شود. این تکنیک به مهاجمان اجازه میدهد سیستمعامل دستگاه را با نسخه آلوده جایگزین کنند.
مهاجمان فرآیندهای سطح سیستم را ایجاد یا تغییر میدهند تا کد مخرب را به طور مکرر اجرا کنند. سرویسهای ویندوز، daemonهای لینوکس و Launch Agent/Daemonهای macOS میتوانند برای اجرای payloadهای مخرب با سطح دسترسی بالا پیکربندی شوند.
مهاجمان فایلهای plist مربوط به Launch Agent در macOS را ایجاد یا تغییر میدهند تا کد مخرب را با سطح دسترسی کاربر اجرا کنند. Launch Agentها در ~/Library/LaunchAgents/ و /Library/LaunchAgents/ قرار دارند و در هنگام ورود کاربر اجرا میشوند.
مهاجمان فایلهای سرویس systemd را در لینوکس ایجاد یا تغییر میدهند تا payloadهای مخرب را در هنگام بوت سیستم اجرا کنند. فایلهای سرویس systemd در /etc/systemd/system/ و /lib/systemd/system/ قرار دارند.
مهاجمان سرویسهای ویندوز را ایجاد یا تغییر میدهند تا کد مخرب را با سطح دسترسی SYSTEM اجرا کنند. سرویسهای ویندوز میتوانند برای اجرا، پایداری و ارتقاء سطح دسترسی استفاده شوند. ابزارهایی مانند sc.exe، PsExec و Metasploit برای این منظور استفاده میشوند.
مهاجمان فایلهای plist مربوط به Launch Daemon در macOS را ایجاد یا تغییر میدهند تا payloadهای مخرب را با سطح دسترسی root اجرا کنند. Launch Daemonها در /Library/LaunchDaemons/ قرار دارند و قبل از ورود کاربر اجرا میشوند.
مهاجمان مکانیزمهای اجرای مبتنی بر رویداد را برای ایجاد پایداری پیکربندی میکنند. این تکنیک شامل تغییر تنظیماتی است که باعث میشود کد مخرب در پاسخ به رویدادهای خاص سیستم اجرا شود. رویدادهایی مانند ورود کاربر، تغییر فایل یا رویدادهای WMI میتوانند اجرای کد مخرب را آغاز کنند.
مهاجمان از اشتراک رویداد WMI برای اجرای کد مخرب در پاسخ به رویدادهای سیستم استفاده میکنند. WMI Event Subscription شامل سه کامپوننت است: EventFilter، EventConsumer و FilterToConsumerBinding. این تکنیک میتواند برای اجرای کد بدون فایل (fileless) استفاده شود.
مهاجمان برنامههای دسترسیپذیری ویندوز مانند Sticky Keys، Utilman و Narrator را با cmd.exe یا سایر ابزارها جایگزین میکنند تا بدون احراز هویت به سیستم دسترسی داشته باشند. این تکنیک با فشار دادن کلیدهای میانبر در صفحه ورود فعال میشود.
مهاجمان از Application Compatibility Shim Database ویندوز برای اجرای کد مخرب استفاده میکنند. Shimها برای سازگاری برنامههای قدیمی با ویندوز جدید طراحی شدهاند اما میتوانند برای inject کردن DLL، دور زدن UAC و اجرای کد مخرب استفاده شوند.
مهاجمان رجیستری COM را تغییر میدهند تا DLLهای مخرب را به جای کامپوننتهای قانونی بارگذاری کنند. با تغییر مسیر DLL در رجیستری HKCU، مهاجمان میتوانند بدون نیاز به سطح دسترسی مدیر، کد مخرب را در فرآیندهای قانونی inject کنند.
مهاجمان برنامهها یا دستوراتی را پیکربندی میکنند که به طور خودکار در هنگام بوت سیستم یا ورود کاربر اجرا میشوند. این تکنیک برای ایجاد پایداری استفاده میشود تا کد مخرب پس از راهاندازی مجدد سیستم نیز اجرا شود. روشهای متعددی در ویندوز، لینوکس و macOS برای این منظور وجود دارد.
مهاجمان کلیدهای Run رجیستری یا پوشه Startup ویندوز را تغییر میدهند تا برنامههای مخرب در هنگام ورود کاربر اجرا شوند. کلیدهای رجیستری HKCU\Software\Microsoft\Windows\CurrentVersion\Run و HKLM\Software\Microsoft\Windows\CurrentVersion\Run اهداف رایج هستند.
مهاجمان رجیستری Winlogon را تغییر میدهند تا DLLهای مخرب را در هنگام ورود کاربر بارگذاری کنند. Winlogon فرآیند ویندوز مسئول مدیریت ورود و خروج کاربر است. مهاجمان میتوانند مقادیر Userinit یا Shell را در رجیستری Winlogon تغییر دهند.
مهاجمان ماژولهای هسته مخرب (rootkit) را در سیستمهای لینوکس و macOS بارگذاری میکنند تا پایداری ایجاد کنند و فعالیتهای خود را پنهان کنند. ماژولهای هسته با سطح دسترسی بالاترین اجرا میشوند و میتوانند سیستمعامل را تغییر دهند.
مهاجمان فایلهای میانبر (.lnk) را تغییر میدهند تا کد مخرب را در هنگام اجرای میانبر اجرا کنند. میانبرهای موجود در Desktop، Startup و سایر مکانها میتوانند برای اجرای payload مخرب در کنار برنامه اصلی تغییر داده شوند.
مهاجمان Login Items در macOS را اضافه یا تغییر میدهند تا برنامههای مخرب در هنگام ورود کاربر اجرا شوند. Login Items در System Preferences > Users & Groups قابل مشاهده هستند. مهاجمان میتوانند از AppleScript یا SMLoginItemSetEnabled API برای اضافه کردن Login Items استفاده کنند.
مهاجمان باینریهای نرمافزار میزبان را تغییر میدهند تا پایداری ایجاد کنند. این تکنیک شامل تغییر فایلهای اجرایی قانونی برای اجرای کد مخرب در کنار عملکرد اصلی برنامه میشود. مهاجمان میتوانند از این روش برای پنهان کردن حضور خود در سیستم استفاده کنند.
مهاجمان مکانیزمهای احراز هویت را تغییر میدهند تا به اعتبارنامهها دسترسی داشته باشند یا احراز هویت را دور بزنند. این تکنیک میتواند برای ایجاد backdoor در فرآیند احراز هویت، capture کردن اعتبارنامهها یا دور زدن MFA استفاده شود.
مهاجمان DLLهای مخرب را در Domain Controllerها نصب میکنند تا فرآیند احراز هویت را دستکاری کنند. با تغییر Authentication Package، مهاجمان میتوانند اعتبارنامهها را capture کنند یا با هر رمز عبوری احراز هویت کنند. این تکنیک به سطح دسترسی Domain Admin نیاز دارد.
مهاجمان DLLهای فیلتر رمز عبور مخرب را در ویندوز ثبت میکنند تا رمزهای عبور را در هنگام تغییر capture کنند. Password Filter DLLها برای اعمال سیاستهای رمز عبور طراحی شدهاند اما میتوانند برای سرقت اعتبارنامه استفاده شوند.
مهاجمان ماژولهای PAM در سیستمهای لینوکس و macOS را تغییر میدهند تا اعتبارنامهها را capture کنند یا احراز هویت را دور بزنند. PAM یک چارچوب احراز هویت است که در اکثر توزیعهای لینوکس استفاده میشود.
مهاجمان MFA را دور میزنند یا غیرفعال میکنند تا بدون نیاز به عامل دوم احراز هویت کنند. این شامل تغییر تنظیمات MFA، سوءاستفاده از bypassهای MFA یا حذف MFA از حسابهای کاربری میشود.
مهاجمان از محیطهای هویت ترکیبی (on-premises + cloud) برای دور زدن احراز هویت سوءاستفاده میکنند. با دسترسی به زیرساخت federation مانند ADFS، مهاجمان میتوانند tokenهای مخرب ایجاد کنند که به سرویسهای ابری دسترسی میدهند.
مهاجمان نحوه اجرای برنامهها توسط سیستمعامل را دستکاری میکنند تا payloadهای مخرب را اجرا کنند. این تکنیک شامل DLL hijacking، side-loading، path interception و سایر روشهای دستکاری جریان اجرا میشود. مهاجمان میتوانند از این روش برای پایداری، ارتقاء سطح دسترسی و فرار از شناسایی استفاده کنند.
مهاجمان از ترتیب جستجوی DLL ویندوز سوءاستفاده میکنند تا DLLهای مخرب را به جای DLLهای قانونی بارگذاری کنند. ویندوز DLLها را در ترتیب خاصی جستجو میکند و مهاجمان میتوانند DLL مخرب را در مسیری قرار دهند که قبل از مسیر اصلی جستجو میشود.
مهاجمان از برنامههای قانونی که DLLها را از مسیرهای نسبی بارگذاری میکنند سوءاستفاده میکنند. با قرار دادن DLL مخرب در کنار برنامه قانونی، مهاجمان میتوانند کد مخرب را در زمینه یک فرآیند قانونی اجرا کنند.
مهاجمان متغیرهای محیطی مانند LD_PRELOAD در لینوکس یا DYLD_INSERT_LIBRARIES در macOS را تغییر میدهند تا کتابخانههای مخرب را قبل از کتابخانههای قانونی بارگذاری کنند. این تکنیک به مهاجمان اجازه میدهد توابع سیستمی را hook کنند.
مهاجمان از مسیرهای سرویس ویندوز که بدون نقلقول هستند و شامل فاصله میشوند سوءاستفاده میکنند. ویندوز هر بخش از مسیر را به عنوان یک فایل اجرایی احتمالی امتحان میکند. مهاجمان میتوانند فایل اجرایی مخرب را در مسیر مناسب قرار دهند.
مهاجمان از مجوزهای ضعیف رجیستری سرویسهای ویندوز سوءاستفاده میکنند تا مسیر باینری سرویس را با یک فایل اجرایی مخرب جایگزین کنند. با تغییر ImagePath در رجیستری سرویس، مهاجمان میتوانند کد مخرب را با سطح دسترسی SYSTEM اجرا کنند.
مهاجمان سیستمعامل دستگاههای شبکه جاسازی شده را تغییر میدهند تا دفاعها را تضعیف کنند و قابلیتهای جدیدی اضافه کنند. این تکنیک روترها، سوئیچها و سایر دستگاههای شبکه را هدف قرار میدهد. مهاجمان میتوانند firmware را patch کنند یا به نسخه آسیبپذیرتر downgrade کنند.
مهاجمان سیستمعامل دستگاههای شبکه را patch میکنند تا قابلیتهای مخرب اضافه کنند یا دفاعها را غیرفعال کنند. این patchها میتوانند برای ایجاد backdoor، غیرفعال کردن logging یا اضافه کردن قابلیتهای جدید استفاده شوند.
مهاجمان سیستمعامل دستگاههای شبکه را به نسخههای قدیمیتر و آسیبپذیرتر downgrade میکنند. نسخههای قدیمیتر ممکن است آسیبپذیریهای شناخته شدهای داشته باشند که مهاجمان میتوانند از آنها بهرهبرداری کنند.
مهاجمان فایلهای property list (plist) در macOS را تغییر میدهند تا فعالیت مخرب را فعال کنند و از دفاعها فرار کنند. فایلهای plist برای ذخیره تنظیمات برنامهها و سرویسهای macOS استفاده میشوند. مهاجمان میتوانند key-value pairها را تغییر دهند تا اجرای برنامه را پنهان کنند یا پایداری ایجاد کنند.
مهاجمان قابلیتهای hibernate، reboot یا shutdown سیستم را مختل میکنند تا دسترسی به ماشینهای آلوده را طولانی کنند. با سوءاستفاده از ابزارهایی مانند powercfg در ویندوز یا تغییر فایلهای پیکربندی در لینوکس و macOS، مهاجمان میتوانند از ورود سیستم به حالت خواب که فعالیت مخرب را قطع میکند جلوگیری کنند.