ارتقا دسترسی (Privilege Escalation) چیست؟
ارتقا دسترسی (Privilege Escalation)، یکی از مراحل و روشهای عملیات تیم قرمز است. همانطور که ما در مقاله تیم قرمز پیشتر توضیح دادیم، (Red Team) در امنیت سایبری به نهادی اطلاق میشود که در شکستن و ورود، به دست آوردن اطلاعات طبقهبندی شده بدون هیچ اثر قابل ردگیری، تخصص دارند. در حوزه امنیت سایبری، این تیم بر روی عملیات تست نفوذ به سیستمهای مختلف و سطح امنیت آنها تمرکز دارند.
به عبارت دیگر حملات افزایش دسترسی (Privilege escalation) با هدف بالا بردن دسترسی به شبکه، برنامهها و سیستمهای مهم ماموریت، از نقاط ضعف و آسیبپذیریهای امنیتی برای خرابکاری استفاده میکنند. دو نوع حملات افزایش امتیاز وجود دارد: حمله عمودی و افقی. حملات عمودی زمانی است که مهاجم با قصد انجام اقدامات به عنوان آن کاربر، به یک حساب دسترسی پیدا میکند. حملات افقی نیز برای انجام اقدامات دلخواه به حسابهایی با محدودیت کمتر، برای افزایش دسترسی نیاز دارند. حسابهایی مانند حساب مدیر سیستم.
در تاکتیک ارتقا دسترسی (Privilege Escalation)، کلیه روشهای ارتقا دسترسی به صورت عمودی و افقی مورد بررسی قرار میگیرد. همچنین یکی دیگر از تاکتیکهای بسیار مهم برای دسترسی به کاربران با سطح دسترسی بالاتر و یا همسان که به اطلاعات مشخصی دسترسی دارند، در این بخش مورد بررسی قرار میگیرد. اگر مشتاق به کسب اطلاعات بیشتر درمورد مفهوم تیم قرمز هستید این مقاله را حتما مطالعه بفرمائید.
انواع حملات افزایش دسترسی (Privilege Escalation) چیست؟
هر حملهای، نمیتواند دسترسی کامل را برای هکرها (مهاجمان) در سیستم هدف فراهم کند. در این موارد، برای دستیابی به نتیجه مطلوب، لازم است سطح دسترسی تا حد امکان افزایش یابد. دو نوع حملات افزایش امتیاز وجود دارد از جمله عمودی و افقی که در ادامه به بررسی آنها میپردازیم.
افزایش دسترسی عمودی در Privilege Escalation
حمله ارتقا دسترسی (Privilege Escalation) عمودی، هنگامی رخ میدهد که یک مهاجم مستقیما، به یک حساب دسترسی پیدا میکند و قصد دارد با دسترسی به این حساب، به عنوان آن شخص اقدامات لازم را انجام دهد. این حمله از نوع دیگر سادهتر است زیرا در انجام آن، هیچ تمایلی برای افزایش مجوزها و سطح دسترسی وجود ندارد. تنها اهداف این حمله فقط گسترش بیشتر حمله یا دسترسی به اطلاعاتی است که کاربر مجوز انجام آن را از قبل دارد.
ما هر روز ایمیلهای فیشینگ متعددی که سعی در طراحی این حمله دارند را بررسی میکنیم. این ایمیل ممکن است از طرف یک بانک، فروشگاه آمازون، یا هر سایت تجارت الکترونیک دیگری باشد. اما حمله همان حمله است و تفاوتی ندارد. پیامی با این مضمون “حساب شما به دلیل عدم فعالیت غیرفعال خواهد شد. لطفاً برای فعال نگه داشتن حساب خود روی این لینک کلیک کنید و وارد شوید.” یک نمونه از روشهای بسیاری است که برای این کار استفاده میشود.
افزایش دسترسی افقی در Privilege Escalation
افزایش دسترسی افقی کمی دشوارتر است زیرا به دسترسی مستقیم مهاجم به حسابی با دسترسی بالا نیاز دارد.
حمله ارتقا دسترسی (Privilege Escalation) افقی، نیاز به درک عمیقی از آسیبپذیریهای تاثیر گذار بر سیستم عامل یا استفاده از ابزارهای مخصوص هک دارد. در بخش اول حمله، از کمپینهای فیشینگ، برای دسترسی به حساب استفاده میکند. برای افزایش سطح دسترسی، مهاجم چند گزینه پیش رو دارد. یکی از گزینهها، استفاده از کدهای مخرب و نقاط ضعف برای خرابکاری در سیستم عامل یا دسترسی به ریشه (روت-root) است. انتخاب بعدی، استفاده از ابزارهای هک است. برای اینکه کار هکر ساده شود، از ابزارهایی مانند Metasploit استفاده میشود.
تکنیکهایی برای افزایش دسترسی (Privilege Escalation) در لینوکس
کرنل اکسپلویت
برنامههای مخرب هسته یا کرنل، برنامههایی هستند که از آسیبپذیریهای سطح هسته، به منظور افزایش سطح دسترسی و یا اجرای کدهای دلخواه استفاده میکنند. اکسپلویتهای موفق در کرنل، معمولا دسترسی سوپر یوزر از خط فرمان روت (Root) را در سیستم هدف به مهاجم میدهند و مهاجم میتواند در این خط فرمان عملکردی مشابه سوپریوزر یا را دارد.
در بسیاری از موارد، افزایش ریشه در سیستم لینوکس به سادگی بارگیری یک اکسپلویت هسته در سیستم فایل هدف، کامپایل بهرهبرداری و سپس اجرای آن است. در بسیاری از موارد، افزایش سطح دسترسی (Privilege Escalation) به ریشه، به سادگی دانلود یک کد مخرب در سطح هسته، در فایلهای سیستم هدف، کامپایل، اکسپلویت و سپس اجرای آن است.
سرویس حملاتی به صورت روت
اکسپلویتهایی که در سطح هسته انجام میشوند، به شما دسترسی به ریشه را میدهند. معروفترین روشهای اکسپلویت کردن و تخریب، EternalBlue و SambaCry، به سرویسهای Server Message Block Protocol-smb که معمولا در سطح هسته اجرا میشوند، حمله و خرابکاری میکند.
با تنها یک آسیب، هکر میتواند به راحتی، کنترل اجرا را از راه دور در دست گرفته و سطح دسترسی خود را افزایش دهد. این کار به دلیل ترکیب سخت و کشنده، معمولا به طور گسترده برای پخش باج افزارها در سراسر جهان بسیار مورد استفاده قرار میگیرد.
خرابکاری درSUIDهای قابل اجرا
SUID که مخفف set user ID است، یک ویژگی لینوکس است که به کاربران اجازه میدهد فایلی را با مجوزهای یک کاربر مشخص اجرا کنند. برای مثال، دستورات ping برای باز کردن سوکتهای شبکه و اطلاعات آن معمولا با دسترسی root انجام میشود. با تغییر دسترسی برنامه پینگ به عنوان SUID، با مالک به عنوان root هر زمانی که کاربر با دسترسی پایین آن را اجرا کند، برنامه در سطح روت اجرا میشود و دسترسیهای صاحب سیستم را خواهید داشت.
سواستفاده از دستورات SUDO
اگر مهاجم نتواند مستقیماً از طریق سایر روشها به ریشه دسترسی پیدا کند، ممکن است سعی کند به هر یک از کاربران با دسترسی SUDO آسیب برساند. هنگامی که مهاجم به هر یک از کاربران با دسترسی SUDO دسترسی پیدا کرد، میتواند هرگونه دستور را با root اجرا کند.
مدیران سیستم ممکن است به کاربران اجازه استفاده از چند دستور SUDO را بدهند، اما حتی با این تنظیمات، ممکن است آسیبپذیریهایی را به صورت ناآگاهانه ایجاد کنند که میتواند منجر به افزایش امتیازات مهاجم شود.
بهترین و رایجترین مثال در این زمینه، این است که مدیر ممکن است دسترسی SUDO برای دستور find را بدهد تا کاربر دیگری علاوه بر مدیر بتواند پروندهها / گزارشهای خاصی را در سیستم جستجو کند. ممکن است مدیر از این موضوع مطلع نباشد که دستور ‘find’ شامل پارامترهایی برای اجرای دستور نیز میباشند. از این رو یک مهاجم میتواند دستورات را با امتیاز root و با استفاده از دسترسی SUDO به دستور find اجرا کند.
آسیب به Cron Jobها با پیکربندی نامناسب
Cornها اگر به درستی پیکربندی نشوند، میتوانند برای دستیابی به امتیاز ریشه مورد سواستفاده قرار گیرند.
- اسکریپت یا کدهای باینری در cron jobs وجود دارد که قابل نوشتن باشد؟
- آیا میتوانیم روی خود پرونده cron بنویسیم?
- آیا دایرکتوری cron.d قابل نوشتن است؟
سواستفاده از کاربران با اضافه کردن دات (.) در مسیر (Path) آنها
داشتن یک نقطه یا دات “.” در PATH شما به این معنی است که کاربر قادر به اجرای کدهای باینری / اسکریپتها از دایرکتوری فعلی است. برای جلوگیری از وارد کردن هر دو کاراکتر اضافی در هر بار، کاربر یک دات به مسیر خود اضافه میکند. این کار میتواند یک روش عالی برای افزایش دسترسی (Privilege Escalation) یک کاربر در سیستم باشد.
تکنیکهای افزایش سطح دسترسی (Privilege Escalation) در ویندوز
کرنل اکسپلویت در ویندوز
اگر سیستمعامل به طور منظم به روز شود، این خرابکاری و سواستفاده کمک چندانی نخواهد کرد. میتوانید از Watson برای بررسی آسیبپذیری به دلیل از بین رفتن ارتباط بخش مختلف استفاده کنید. واتسون در حال حاضر با winPEAS ادغام شده است. در صورت مشاهده هرگونه آسیبپذیری میتوانید همین را از مخزن زیر بارگیری کنید. مطمعن شوید که معماری صحیحی را برای هدف بارگیری کردهاید. در صورت نیاز به کامپایل باینری، میتوانید از Kali برای کامپایل همزمان استفاده کنید.
DLL هایجک در ارتقا دسترسی (Privilege Escalation)
یک برنامه windows هنگام شروع به جستجوی DLLها میپردازد. اگر این DLLها وجود نداشته باشند، میتوان با قرار دادن یک DLL مخرب در محلی که برنامه به دنبال آن است، دسترسی را افزایش داد. به طور کلی، یک برنامه ویندوز از مسیرهای جستجوی از پیش تعریف شده، برای یافتن DLLها استفاده میکند و این مسیرها را به ترتیب خاصی بررسی میکند.
مسیرهای بدون علامت نقل قول
این باگ زمانی ایجاد میشود که توسعهدهنده، فراموش کند مسیر یک فایل را با علامتهای کوتیشن در متن کد خود بنویسد. هنگام شروع سرویس، ویندوز برای اجرا، در کدهای باینری جستجو میکند. مکان کدی که باید اجرا شود در ویژگی binPath اعلام میشود. اگر مسیر بدون علامت نقل قول باشد، ویندوز نمیداند که کد باینری در کجا قرار دارد و از ابتدای مسیر در همه پوشهها به دنبال آن جستجو میگردد.
یکی از تاکتیکهایی که در فرآیند TTPsها دارای تکنیکهای بی شمار میباشد، تاکتیک ارتقا دسترسی (Privilege Escalation) است، به این صورت که امکان ارتقا دسترسی حتی با ملاقات غیرمستقیم دارایی با دسترسی مشخص توسط مهاجم وجود خواهد داشت.
مقاله پیشنهادی برای مطالعه
مفهوم مهندسی اجتماعی چیست؟
تکنیکهای ارتقا دسترسی (Privilege Escalation)
برخی از تکنیکهای تاکتیک ارتقا دسترسی (Privilege Escalation) عبارتند از:
اجرای دستور حین راهاندازی (Boot or Logon Initialization Scripts)
در این تکنیک، کلیه دستورات برای ایجاد دسترسی و یا همچنین ارتقا دسترسی (Privilege Escalation) کاربر با استفاده از توسعه اسکریپتهای دارای دسترسی، که حین اجرا راهاندازی میگردند، مورد بررسی قرار میگیرد. برای مثال با آمادهسازی، درونریزی و همچنین ویرایش مستقیم و یا غیرمستقیم دستورات یا script با دسترسی مشخص توسط مهاجم، ارتقا دسترسی (Privilege Escalation) انجام میگردد.
تغییر در ساختار اجرا (Hijack Execution Flow)
در این تکنیک فایلها و یا درخواستهای فراخوانی شده، در فایل یا درخواست دارای دسترسی برای تزریق و یا تغییر در اجرا مورد بررسی قرار میگیرد. برای مثال با ویرایش یکی از فرایندهای موثر در سلسله دستورات اجرایی، ارتقا دسترسی (Privilege Escalation) انجام میگردد.
کاربر معتبر (Valid Accounts)
یکی از تکنیکهای پرکاربر در تاکتیکهای مختلف، دسترسی به کاربران موجود در سیستم هدف است به صورتی که با ایجاد، ویرایش و یا احراز هویت، با کاربر هدف امکان ارتقا دسترسی Privilege Escalation مهاجم فراهم میگردد. برای مثال با حدس کلمه عبور یکی از کاربران موجود در گروههای دارایی دسترسی در شبکه، امکان احراز هویت با کاربر فراهم و امکان ارتقا دسترسی (Privilege Escalation) نیز فراهم میگردد.
استفاده از آسیبپذیری (Exploitation for Privilege Escalation)
یکی از پر استفادهترین تکنیکها برای ارتقا دسترسی (Privilege Escalation)، استفاده از exploit های 0/1/N برای ارتقا دسترسی است. از کاربردهای این روش میتوان به ارتقا دسترسی در سیستم هدف و یا در شبکه مذکور اشاره نمود. یکی از معروفترین آسیبپذیری چند سال اخیر به اسم PrintNightmare، امکان ارتقا دسترسی (Privilege Escalation) مهاجم در شبکه را تنها با اجرا مهیا میساخت. و یا در مثالی دیگر آسیبپذیری به اسم DirtyC0w ارتقا دسترسی در سیستم عامل لینوکس را تنها با اجرا exploit انجام میداد.