آیا می خواهید دسترسی ابرکاربر به یک سیستم لینوکس را به دست آورید؟ در اینجا برخی از بهترین راه ها برای شمارش یک ماشین لینوکس وجود دارد.
شمارش یکی از مراحل کلیدی تست نفوذ است. این اولین کاری است که باید انجام دهید زمانی که یک سیستم هدف را به عنوان تستر نفوذ به خطر می اندازید. اگرچه ابزارهای زیادی برای خودکار کردن این فرآیند وجود دارد، همیشه توصیه میشود که به صورت دستی سیستم را برای بردارهای بالقوه افزایش امتیاز بررسی کرده و مجدداً بررسی کنید.
بیایید به روش های مختلف برای شمارش دستی یک سیستم لینوکس برای افزایش امتیاز نگاه کنیم.
چرا شمارش برای افزایش امتیاز مهم است؟
افزایش امتیاز، همچنین به عنوان افزایش امتیاز (EOP) شناخته می شود، جزء اصلی تست نفوذ و روش تست نفوذ است. همانطور که از نام آن پیداست، این مرحله ای است که سعی می کنید امتیازات خود را به مدیر یا در سیستم های لینوکس، کاربر اصلی ارتقا دهید.
برای به دست آوردن امتیازات ریشه، ابتدا باید یک آسیب پذیری در سیستم پیدا کنید. اینجاست که شمارش مطرح می شود. اگرچه ابزارهایی برای خودکار کردن شمارش وجود دارد، اما در اغلب موارد، شمارش دستی و کامل میتواند پیکربندیهای نادرست و سایر آسیبپذیریها را که توسط ابزارها شناسایی نمیشوند، کشف کند.
1. شمارش سیستم
اولین کاری که باید بعد از به دست آوردن جایگاه اولیه انجام دهید این است که در مورد سیستمی که به آن دسترسی دارید، بیاموزید. این به شما کمک می کند تا محموله های خود را برای مطابقت با معماری بهینه کنید و از حداکثر سازگاری محموله های خود با سیستم هدف اطمینان حاصل کنید.
به عنوان مثال، اگر یک اکسپلویت 64 بیتی دارید، اگر سیستم هدف شما فقط از نرم افزار 32 بیتی پشتیبانی می کند، باید آن را تغییر دهید زیرا بین سیستم های 32 بیتی و 64 بیتی تفاوت وجود دارد.
همچنین، دانستن نسخه کرنل به شما کمک میکند تا در صورت یافتن این که نسخه قدیمی و آسیبپذیر در برابر یک اکسپلویت عمومی است، به دنبال اکسپلویتها در وب باشید. در اینجا چند دستور وجود دارد که به شما در واکشی اطلاعات سیستم کمک می کند:
برای یافتن اطلاعات سیستم مانند نسخه هسته، نسخه سیستم عامل و غیره، وارد کنید:
cat /etc/cpuinfo
uname -a
اگر می خواهید در مورد معماری CPU بیشتر بدانید، از دستور lscpu استفاده کنید:
lscpu
2. شمارش فرآیند
فرآیندها برنامه هایی هستند که در حال اجرا هستند. دانستن لیست کامل فرآیندها در یک سیستم لینوکس، همراه با چند تاکتیک دیگر شمارش ذکر شده در این راهنما، به شما کمک می کند تا فرآیندهای بالقوه آسیب پذیر را شناسایی کرده و از آنها برای افزایش امتیاز استفاده کنید.
به عنوان مثال، اگر فرآیندی را در حال اجرا با حقوق ریشه پیدا کنید، ممکن است بتوانید کد دلخواه را به آن تزریق کنید که می تواند منجر به افزایش موفقیت آمیز امتیاز شود.
میتوانید از دستور ps با پرچمهای aux برای فهرست کردن تمام فرآیندهای سیستم استفاده کنید:
ps aux
3. شمارش کاربران و گروه ها
شمارش کاربران و گروه ها برای تعیین اینکه چه کسی به کدام قسمت از سیستم دسترسی دارد مهم است. دانستن این موضوع به شما امکان می دهد تا اهداف خود را به طور کارآمد در نظر بگیرید و یک استراتژی حمله موثر بسازید. علاوه بر این، میتوانید نقشههای مناسبی ایجاد کنید و نقشها و امتیازات هر حساب را به طور عمیق درک کنید.
داشتن قابلیت مشاهده حسابهای ممتاز به شما این امکان را میدهد که ترکیبات نام کاربری و رمز عبور شناخته شده را امتحان کنید. برای دسترسی به لیست کاربران می توانید محتویات فایل های /etc/passwd و /etc/group را چاپ کنید. همچنین می توانید از دستور getent استفاده کنید.
برای دریافت لیست کاربران لینوکس:
getent passwd
برای دریافت لیست گروه ها:
getent group
4. بررسی پرونده های حساس
فایل های حساسی مانند /etc/passwd و /etc/shadow به طور بالقوه می توانند اطلاعات زیادی را به بیرون درز کنند. از /etc/shadow میتوانید هشهای رمز عبور کاربران را پیدا کنید و سعی کنید آنها را با یک ابزار هشکرک مانند Hashcat یا John the Ripper شکست دهید.
همچنین فایل /etc/sudoers وجود دارد که، اگر بتوانید به نحوی آن را ویرایش کنید، اجازه می دهد تا مجوزهای sudo را برای کاربران و گروه ها تغییر دهید.
5. بررسی مجوزهای sudo
مدیریت صحیح مجوزهای sudo برای ایمنی سیستم لینوکس بسیار مهم است. تجزیه و تحلیل مجوزهای sudo به شما بینشی در مورد بردارهای بالقوه برای افزایش امتیاز می دهد. اگر پیکربندیهای نادرستی وجود دارد مانند برنامههای خاصی که سطح امتیاز هشداردهندهای دارند، ممکن است بتوانید از آنها برای دستیابی به دسترسی ریشه سوء استفاده کنید.
این تنها نمونهای از مسیرهای حمله بسیاری است که پس از شفافیت مجوزهای sudo در سیستم لینوکس، میتوانند باز شوند. مثال دیگر سوء استفاده از مکانیسم پیش بارگذاری کتابخانه LD_PRELOAD است که می توانید با مشاهده مجوزهای sudo آن را برشمارید.
sudo -l
6. یافتن اکسپلویت های هسته لینوکس
اکسپلویت های هسته لینوکس مرگبار هستند زیرا به هسته سیستم عامل در حال اجرا بر روی سیستم در معرض خطر حمله می کنند. با یک نقص هسته حیاتی، شما قادر خواهید بود تقریباً هر کاری را با سیستم انجام دهید.
برای یافتن اکسپلویتهای هسته، ابتدا نسخه هسته را پیدا کنید و سپس با استفاده از ابزاری مانند searchsploit یا با استفاده از Google Dorks، یک اکسپلویت مناسب را پیدا کنید که بر نسخه دقیق هسته در حال اجرا بر روی سیستم تأثیر میگذارد.
7. بهره برداری از باینری های SUID
SUID مخفف Set Owner User ID پس از اجرا است. این نوع خاصی از مجوز فایل است که در صورت تنظیم، برنامه ای را با امتیازات مالک آن اجرا می کند.
اگر برنامه ای توسط کاربر ریشه ایجاد شده باشد و بیت SUID برای آن تنظیم شده باشد، برنامه در هنگام اجرا دارای امتیازات ریشه خواهد بود. چگونه می توان از SUID سوء استفاده کرد؟ ساده است.
همه باینری ها را با مجموعه بیت SUID برشمارید، لیست را جستجو کنید، یک باینری که برای آن دسترسی دارید پیدا کنید و منبع آن را ویرایش کنید تا بار خود را اضافه کنید. می توانید از دستور find برای جستجوی باینری های SUID و تغییر مسیر خروجی استاندارد به /dev/null استفاده کنید:
find / -perm -4000 2>/dev/null
8. ربودن کتابخانه ها
گاهی اوقات ممکن است برنامه هایی در سیستم اجرا شوند که از کتابخانه هایی استفاده می کنند که محافظت از نوشتن ندارند. در چنین سناریویی، می توانید به راحتی کتابخانه در حال استفاده را بازنویسی کنید و کنترل عملکرد برنامه را در دست بگیرید.
اگر خوش شانس باشید و برنامهای را پیدا کنید که بهعنوان روت اجرا میشود، میتوانید کتابخانهای که به آن وابسته است را ربوده و به طور بالقوه به پوسته ریشه دسترسی پیدا کنید.
9. بررسی و ربودن متغیرهای محیطی
متغیرهای محیطی انواع خاصی از متغیرها هستند که تا حدودی نحوه عملکرد سیستم و برنامه ها را مشخص می کنند. یک متغیر محیطی مهم، متغیر PATH است.
مکان تمام باینری های اجرایی در سیستم را ذخیره می کند. میتوانید متغیر PATH را دستکاری کنید و آن را با آسیبپذیریهای دیگر مانند ربودن کتابخانه برای دستیابی به دسترسی روت زنجیرهای کنید.
برای مثال، فرض کنید یک فایل اجرایی با مجموعه بیت SUID وجود دارد. برای عملکرد صحیح، یک باینری را بدون تعیین مسیر کامل آن فراخوانی می کند.
شما می توانید با ایجاد یک نسخه تکراری و مخرب از باینری و به روز رسانی متغیر PATH با مکان باینری مخرب از این مزیت استفاده کنید تا زمانی که فایل اجرایی SUID اجرا می شود، باینری مخرب شما به صورت روت اجرا می شود و شما قادر به تخم ریزی یک پوسته ریشه باشد.
علاوه بر این، شانس خوبی برای یافتن کلیدهای مخفی و رمزهای عبور با نگاه کردن به متغیرهای محیطی وجود دارد. با استفاده از دستور env می توانید تمام متغیرهای محیط را چاپ کنید:
env
10. مصنوعات را در تاریخ Bash بیابید
اغلب، سابقه کاربر فعلی حذف نمی شود. می توانید از این برای دسترسی بالقوه به اطلاعات حساس سوء استفاده کنید یا دستورات قبلی را با پارامترهای اصلاح شده مجدداً اجرا کنید.
اگرچه اینها احتمالاً منجر به افزایش امتیاز نخواهند شد، اما منبع خوبی از نشت اطلاعات است تا به شما وضوح آنچه را که کاربر معمولاً در سیستم انجام می دهد ارائه دهد.
11. ربودن کرون جابز آسیب پذیر
کرون جابز یک ویژگی داخلی و بسیار پرمحتوا لینوکس است. اگر از ویندوز مهاجرت کرده اید، یک کار cron را می توان مستقیماً با یک کار برنامه ریزی شده در ویندوز مقایسه کرد.
به صورت دوره ای اجرا می شود و دستورات را اجرا می کند. هم زمان اجرا و هم دستوراتی که اجرا خواهد شد توسط کاربر از پیش تعریف شده است. گاهی اوقات ممکن است چند کار cron را پیدا کنید که در برابر حملاتی مانند تزریق حروف عامیانه آسیب پذیر هستند یا توسط کاربری که با آن وارد شده اید قابل نوشتن هستند.
شما می توانید از این آسیب پذیری ها برای دسترسی ریشه به سیستم سوء استفاده کنید. برای بهره برداری از یک شغل cron، ابتدا باید یک شغل آسیب پذیر را پیدا کنید. در اینجا دستوراتی برای فهرست کردن کارهای cron در حال اجرا و سایر داده های مرتبط وجود دارد:
ls /etc/cron.d/
crontab -l -u <username>
12. لیست بسته های منسوخ شده
هنگامی که دسترسی به یک سیستم را ایجاد کردید، یکی از اولین گام هایی که باید بردارید این است که تمام بسته های نرم افزاری نصب شده را فهرست کنید و نسخه های نصب شده آنها را با آخرین نسخه آنها محاسبه کنید.
این احتمال وجود دارد که بستهای مبهم نصب شده باشد که ممکن است زیاد مورد استفاده قرار نگیرد و در برابر حمله افزایش امتیاز آسیبپذیر باشد. سپس می توانید از آن بسته برای دستیابی به دسترسی روت سوء استفاده کنید.
از دستور dpkg با تگ -l برای فهرست کردن بسته های نصب شده در سیستم های مبتنی بر دبیان و اوبونتو استفاده کنید:
dpkg -l
برای سیستم های RHEL/CentOS/Fedora، از این دستور برای فهرست کردن بسته های نصب شده استفاده کنید:
rpm -qa
اکنون می دانید چگونه لینوکس را برای افزایش امتیاز به صورت دستی برشماری کنید
افزایش امتیاز صرفاً به شمارش بستگی دارد. هرچه به اطلاعات بیشتری دسترسی داشته باشید، بهتر می توانید استراتژی های حمله خود را برنامه ریزی کنید.
شمارش کارآمد برای ایجاد جای پایی، افزایش امتیازات و تداوم موفقیت آمیز سیستم هدف شما کلیدی است. اگرچه انجام کارها به صورت دستی کمک می کند، برخی از وظایف را می توان به ابزارهای خودکار اختصاص داد تا در زمان و تلاش صرفه جویی شود. شما باید در مورد بهترین ابزارهای امنیتی برای اسکن یک سیستم برای آسیب پذیری ها بدانید.