بعد از دستیابی به سیستم (تو مرحله Gaining Access) هکرها میل دارن دسترسی خودشون رو افزایش بدن. این به معنای تبدیل دسترسی کاربر عادی به دسترسی administrator یا root هست.
سلام. من امیرحسین ناظوری هستم. تو این مقاله قصد دارم تکنیک Escalating Privileges یا افزایش سطح دسترسی از CEH رو براتون مطرح کنم. وارد پروفایل من بشید تا به دیگر مقالاتم دسترسی داشته باشین 🖐.
سطوح دسترسی در ویندوز به سه دسته اصلی تقسیم میشه :
کاربر عادی (Standard User)
کاربر مدیر (Administrator)
کاربر سیستم (System Account)
زمانی که به یک سیستم ایجاد دسترسی میکنیم، سطح دسترسی ما، سطح دسترسی یک کاربر عادی (Standard User) هست ! ما باید سعی کنیم سطح دسترسیمون رو به Administrator یا کاربر سیستمی افزایش بدیم (اگه به سطح System Account برسیم که خیلی کارهای بیشتری میتونیم انجام بدیم)
Privileges Escalation دو حالت کلی داره :
Vertical (عمودی) : در این حالت، مهاجم با دسترسی پایین (مثل کاربر عادی) سعی میکنه به دسترسی بالاتری (مثل Adminstrator) دست یابد. این گونه حملات معمولاً از طریق بهرهبرداری از آسیبپذیریها، کرک کردن رمزهای عبور، و سایر روشهای مشابه انجام میشه.
Horizontal (افقی) : در این حالت، مهاجم با دسترسی یک حساب کاربری به دسترسی حساب کاربری دیگری در همان سطح میرود. این نوع از حملات بیشتر به معنای دسترسی به اطلاعات و منابع حسابهای کاربری دیگر است و نه لزوماً افزایش سطح دسترسی به حقوق بالاتر.
هدف ما Vertical عه.
افزایش سطح دسترسی (Privileges Escalation) با تکنیک های مختلفی انجام میشه که عبارتند از :
DLL Hijacking : بارگذاری و اجرای یک DLL مخرب در محلی که سیستم انتظار دارد یک DLL معتبر قرار داشته باشه.
Exploiting Vulnerabilities : استفاده از آسیبپذیریهای موجود در سیستمعامل، نرمافزارها یا سرویسها برای کسب دسترسیهای بالاتر. مثال : آسیبپذیریهای روز صفر، buffer overflow و غیره.
Password Cracking : یافتن رمز عبور ادمین یا کاربرانی با دسترسی بالا از طریق تکنیکهای مختلف مانند brute force و dictionary attacks و یا social engineering.
بایپس User Account Control یا همان UAC : یافتن راههایی برای دور زدن UAC در ویندوز تا بتوان دسترسی مدیر را بدون نمایش پنجرههای تأیید مجوز به دست آورد.
و...
با تکنیک DLL Hijacking بیشتر آشنا بشیم... (اول بپردازیم به اینکه DLL چی هست)
DLL یا Dynamic Link Library : فایل های DLL (کتابخانه های لینک پویا) مجموعهای از کدها، دادهها و منابع هستند که برنامهها میتونن از اونها استفاده کنند. به بیان سادهتر، فایلهای DLL مثل جعبه ابزارهایی هستند که حاوی کدها و توابع کاربردی میباشن که میتوانند توسط چند برنامه مختلف به اشتراک گذاشته شوند. مثال :
فرض کنید شما چند برنامه نویس مختلف دارید که همه آنها به یک تابع (مثل تابع برای محاسبه ریاضی خاص یا نمایش متن به یک زبان خاص) نیاز دارند. به جای اینکه هر برنامه نویس بخواد این تابع را در برنامه خودش کدنویسی کنه، میتوانند این تابع را در یک فایل DLL قرار بدن و همه برنامهها از آن استفاده کنند. مزایا DLL :
کاهش اندازه برنامه : با استفاده از DLL میتوان حجم برنامه اصلی را کاهش داد چون کتابخانههای مشترک نیازی به کپی شدن در هر برنامه ندارند.
بهروزرسانی آسان : اگر نیاز به تغییر یا بهروزرسانی یک تابع خاص داشته باشید، فقط لازمه فایل DLL را بهروزرسانی کنید و نیازی به ویرایش تمام برنامهها نیست.
اشتراکگذاری راحت : چند برنامه متفاوت میتوانند از همان فایل DLL استفاده کنند که باعث اشتراکگذاری کدهای مشابه میشود.
حمله DLL Hijacking یا ربایش DLL چطور انجام میشه ؟
مهاجم یک برنامه رو انتخاب میکنه که میخواد روی اون حمله انجام بده.
برنامهها برای انجام کارهای خود از فایلهای DLL استفاده میکنند. مهاجم باید بفهمه کدام فایلهای DLL توسط برنامه مورد استفاده قرار میگیرند. این اطلاعات معمولاً از طریق تحلیل فایلهای برنامه یا آزمایشهای مختلف به دست میاد.
مهاجم یک فایل DLL مخرب میسازه. مثلاً فایل DLL یی که یک کد مخرب درون خود داره. این DLL به گونهای ساخته میشه که وقتی برنامه هدف اون رو بارگذاری میکنه، به جای انجام کار واقعی خود، کد مخرب را اجرا کند.
مهاجم فایل DLL مخرب را در مسیری قرار میده که برنامه قبل از فایل DLL اصلی آن را جستجو میکند. برای مثال، اگه برنامه ابتدا پوشهای که خودش در آن قرار دارد را برای پیدا کردن DLLها بررسی میکند، مهاجم میتواند DLL مخرب را در همان پوشه قرار بده.
وقتی قربانی برنامه رو اجرا میکنه، برنامه به جای بارگذاری فایل DLL اصلی، فایل DLL مخرب رو بارگذاری میکند.
با بارگذاری DLL مخرب، کد مخربی که مهاجم در آن قرار داده بود نیز اجرا میشه. این کد ممکنه به مهاجم اجازه دسترسی به سیستم، انجام عملیاتهای مخرب، یا حتی افزایش دسترسی در سیستم (Privilege Escalation) را بدهد.
مثال و جمع بندی :
فرض کنید برنامهای وجود داره که به DLL ای به نام example.dll نیاز داره. مهاجم یک نسخه مخرب از example.dll رو میسازه و در همان فولدری که برنامه قرار داره کپی میکنه. وقتی قربانی برنامه رو اجرا میکنه، برنامه به جای example.dll اصلی، نسخه مخرب مهاجم رو بارگذاری و اجرا میکنه. این باعث میشه که کد مخرب اجرا بشه و مهاجم کنترل برخی بخشهای سیستم رو به دست بیاره.
مراحل جستوجوی DLL در ویندوز (DLL Search Order) :
وقتی یک برنامه DLLیی رو فراخوانی میکنه، ویندوز بر اساس یک ترتیب خاص، مسیرهای مختلف رو جستجو میکنه تا DLL مورد نظر رو پیدا کنه. این فرآیند شامل چندین مرحله است. بیایید این مراحل را به صورت دقیق شرح دهیم :
1 - دایرکتوری اجرایی برنامه : اولین مسیری که ویندوز بررسی میکنه، دایرکتوریایی هست که فایل اجرایی برنامه (Executable) در آن قرار داره. اگه DLL در این مکان یافت بشه، از همان جا بارگذاری میشه.
2 - دایرکتوری سیستم : اگه DLL در دایرکتوری اجرایی پیدا نشه، ویندوز به سراغ دایرکتوری سیستم میره. مسیر این دایرکتوری C:\Windows\System32 است.
3 - دایرکتوری سیستم 16 بیتی : اگه DLL مورد نظر هنوز پیدا نشده باشه، ویندوز دایرکتوری سیستم 16 بیتی را جستجو میکنه. این دایرکتوری معمولاً C:\Windows\System است.
4 - دایرکتوری ویندوز : سپس ویندوز دایرکتوری ویندوز رو جستجو میکنه. این مسیر C:\Windows است.
5 - دایرکتوری فعلی : بعد از اینکه مسیرهای بالا جستجو شدند، ویندوز دایرکتوری فعلی را جستجو میکنه. دایرکتوری فعلی معمولاً همون دایرکتوری هست که کاربر در اونجا قرار داره.
اگه تو مسیر های بالا، برنامه تونست فایل DLL رو پیدا کنه که اجرا میشه، اگه نتونست خطای DLL میده.
Missing DLL به وضعیتی گفته میشه که یک برنامه در طول اجرا به یک فایل DLL خاص نیاز داره، اما اون فایل در مسیرهای جستجوی تعریفشده برای DLLها وجود نداره. تو این حالت مهاجم میتونه DLL مخرب خودش رو ایجاد کنه و قرار بده به عنوان DLLیی که برنامه به اون نیاز داره. چطور Missing DLL هارو پیدا کنیم ؟
روش های مختلفی برای اینکار وجود داره و یکیش استفاده از ابزاری به نام Robber هست.
این ابزار به شما کمک میکنه تا فایلهای DLL گمشده یا بارگذاری نشده رو شناسایی کنید.
ابتدا ابزار Robber رو از Github دانلود کنید
ظاهر برنامه بدین شکل هست :
گزینه و فیلترهای مختلفی داره که فعلا با اونها کاری نداریم.
رو ... سمت راست کلیک کنین و یک مسیر رو برای جستوجو انتخاب کنین.
وقتی جستوجو تموم میشه خروجی شبیه زیر دارین :