افزایش سطح دسترسی از طریق Disk Group
افزایش سطح دسترسی از طریق Disk Group یک روش حمله پیچیده به شمار میرود که آسیبپذیریها یا تنظیمات نادرست موجود در سامانه مدیریت دیسک گروهها در محیطهای Linux را هدف قرار میدهد. در این نوع حمله، مهاجمان معمولاً تمرکز خود را بر روی دستگاههای دیسک نظیر /dev/sda قرار میدهند؛ مسیری که در سیستمعامل Linux نمایانگر دیسک سخت اصلی بوده و معمولاً به اولین دستگاه SCSI (Small Computer System Interface) اشاره دارد.
در جریان حملات Disk Group Privilege Escalation، مهاجمان از آسیبپذیریها یا پیکربندیهای ناصحیح مرتبط با /dev/sda و دستگاههای مشابه سوءاستفاده میکنند تا به دادههای حساس دسترسی غیرمجاز پیدا کرده یا ضعفهای امنیتی مرتبط دیگری را مورد بهرهبرداری قرار دهند. این حملات اغلب با تغییر در مجوزهای دسترسی یا بهرهبرداری از تنظیمات نادرست مربوط به دستگاههای دیسک همراه هستند، با این هدف که مهاجم بتواند سطح دسترسی خود را افزایش داده یا به منابع حیاتی سیستم دسترسی پیدا کند.
در این نوع حمله، مهاجم با سوءاستفاده از تنظیمات نادرست یا مجوزهای نامناسب در ساختار Disk Group در سیستمعامل یا پلتفرمهای مجازیسازی، تلاش میکند سطح دسترسی خود را از یک کاربر عادی به سطح بالاتر مانند Administrator یا root ارتقاء دهد. این فرآیند معمولاً از طریق تغییر در مجوزهای فایل، دسترسی به دیسکهای متصل به ماشین مجازی، یا استفاده از آسیبپذیریهایی که در سطح storage group وجود دارند، صورت میگیرد.
نکات فنی
- در محیطهایی مانند VMware ESXi یا Proxmox VE، گروههای دیسک میتوانند به ماشینهای مجازی مختلف اختصاص داده شوند. اگر کنترل کافی بر روی دسترسی به این گروهها اعمال نشود، مهاجم قادر خواهد بود دیسکی را به ماشین مجازی خود متصل کند که حاوی دادهها یا فایلهای پیکربندی مهم از سایر سیستمهاست.
- دسترسی به دیسکهای حاوی فایلهای مربوط به Operating System دیگر ماشینهای مجازی میتواند به استخراج رمز عبور، کلیدهای خصوصی، یا حتی مهاجرت کامل به سیستم قربانی منجر شود.
- این نوع حمله معمولاً در دستهبندی Horizontal Privilege Escalation یا Vertical Privilege Escalation قرار میگیرد، بسته به اینکه هدف نهایی مهاجم دسترسی به یک سطح مشابه یا سطح بالاتر باشد.
فهرست مطالب
- راهاندازی آزمایشگاه
- پیکربندی اولیه
- بهرهبرداری از آسیبپذیری
- جمعبندی و نتیجهگیری
راهاندازی آزمایشگاه
در این مقاله قصد داریم یک سناریوی عملی از آسیبپذیری Disk Group Privilege Escalation را روی ماشین Ubuntu اجرا کنیم و در نهایت دسترسی root را بهدست آوریم. این آزمایش در محیط شبکه داخلی انجام شده و شامل دو ماشین میباشد:
- Target Machine: Ubuntu 192.168.1.6
- Attacker Machine: Kali Linux 192.168.1.7
پیکربندی
در گام اول، اقدام به ایجاد یک کاربر جدید به نام raj در ماشین Ubuntu میکنیم. این کاربر دارای سطح دسترسی محدود است و در ادامه نقش مهاجم داخلی را بازی خواهد کرد. هدف این است که با بهرهبرداری از پیکربندی نادرست مربوط به دیسک، سطح دسترسی این کاربر را به سطح root ارتقاء دهیم.
adduser raj
کاربر raj که بهتازگی ایجاد شده را با استفاده از فرمان زیر به گروه disk اضافه کنید:
گروه disk در سیستمهای Linux دارای دسترسی سطح پایین به دستگاههای ذخیرهسازی (مانند /dev/sda) است. اضافه کردن یک کاربر عادی به این گروه، ممکن است باعث شود او به منابع حساس سیستم دسترسی پیدا کند—که دقیقاً همان نقطه شروع حمله Privilege Escalation است.
usermod -aG disk raj groups raj
بسته openssh-server را با استفاده از فرمان زیر نصب کنید:
نصب OpenSSH Server این امکان را فراهم میکند که بتوان از راه دور (مثلاً از طریق ماشین Kali Linux) به ماشین Ubuntu متصل شد و حمله را شبیهسازی کرد.
apt install openssh-server
کلید خصوصی و عمومی SSH را برای کاربر root با استفاده از فرمان زیر تولید کنید:
ایجاد جفت کلید SSH (private/public key) برای کاربر root این امکان را فراهم میکند که بعداً بدون نیاز به رمز عبور، از طریق SSH بهصورت مستقیم به root وارد شویم—که میتواند بخشی از مرحله نهایی بهرهبرداری باشد.
ssh-keygen mv id_rsa.pub authorized_keys
بهصورت پیشفرض، در فایل پیکربندی سراسری سرویسدهندهی sshd، گزینههای مربوط به PermitRootLogin و PubkeyAuthentication بهصورت کامنتشده قرار دارند.
کامنتشدن این گزینهها به این معناست که مقادیر آنها بهطور صریح در فایل پیکربندی تعریف نشدهاند و سیستم از مقادیر پیشفرض (defaults) استفاده میکند. برای اعمال تنظیمات سفارشی، لازم است این خطوط از حالت کامنت خارج شده و مقدار دلخواه مشخص شود.
در اینجا باید دو تغییر در فایل پیکربندی اعمال شود: نخست، مقدار گزینهی PermitRootLogin به yes تغییر یابد و علامت کامنت (#) از ابتدای خط آن حذف شود؛ دوم، علامت کامنت (#) از گزینهی PubkeyAuthentication نیز حذف گردد.
با این دو تغییر، ورود با دسترسی root فعال میشود و امکان احراز هویت از طریق کلید عمومی فراهم خواهد شد.
اکنون، پس از تکمیل پیکربندی، سرویس ssh را مجدداً راهاندازی کنید.
اعمال تغییرات در فایل پیکربندی تنها پس از راهاندازی مجدد سرویس ssh قابل اعمال است. این کار معمولاً با دستور systemctl restart ssh یا systemctl restart sshd انجام میشود، بسته به توزیع سیستمعامل.
service ssh restart service ssh status
بهرهبرداری
از آنجایی که آسیبپذیری ناشی از پیکربندی نادرست گروه disk یک تکنیک privilege escalation در لینوکس محسوب میشود، در اینجا ابتدا یک initial shell از طریق سرویس ssh و با کاربر raj دریافت میکنیم تا بخش privilege escalation را با استفاده از این آسیبپذیری نمایش دهیم.
در این سناریو، کاربر عادی raj با دسترسی اولیه وارد سیستم میشود و سپس با سوءاستفاده از مجوزهای نادرست گروه disk، به سطح دسترسی بالاتر (مانند root) ارتقا داده میشود.
ssh raj@192.168.1.6
میتوان از دستور id برای بررسی گروههایی که کاربر raj عضو آنهاست استفاده کرد. مشاهده میشود که raj عضو گروه disk است.
برای بررسی خلاصهای از فضای دیسک مربوط به هر فایل مونتشده بهصورت قابلخواندن برای انسان (human-readable) از دستور زیر استفاده میکنیم:
دستور id اطلاعات مربوط به UID، GID و گروههای ثانویه کاربر را نمایش میدهد. دستور مربوط به نمایش فضای دیسک معمولاً به شکل زیر است:
df -h
این دستور استفاده از فضای دیسک را بهصورت خلاصه و با واحدهای قابلفهم (مانند GB و MB) نمایش میدهد.
در اینجا پارتیشنی را در نظر میگیریم که دایرکتوری / (ریشه سیستم) بر روی آن مونت شده است؛ یعنی /dev/sda3.
پارتیشن /dev/sda3 حاوی فایلسیستم اصلی سیستمعامل است و دسترسی به آن میتواند امکان اجرای عملیات حساس یا ارتقای سطح دسترسی را فراهم کند.
پس از انتخاب پارتیشن، اکنون میتوانیم با استفاده از ابزار debugfs در لینوکس، آن را بررسی و ویرایش کنیم. همچنین این ابزار امکان ایجاد دایرکتوری یا خواندن محتوای دایرکتوریهای موجود را فراهم میکند.
پس از ایجاد یک دایرکتوری آزمایشی با استفاده از debugfs، مشخص میشود که فایلسیستم دارای سطح دسترسی read-only است. بنابراین، در این مرحله میتوانیم تلاش کنیم کلید خصوصی ssh کاربر root را خوانده و ذخیره کنیم تا بتوانیم در ادامه با استفاده از آن کلید وارد سیستم شویم.
debugfs ابزاری قدرتمند برای تعامل مستقیم با فایلسیستمهای ext2/ext3/ext4 است. در صورت داشتن دسترسی به دیسک (مانند عضویت در گروه disk)، حتی کاربران غیرمجاز نیز ممکن است بتوانند فایلهای حساس مانند id_rsa را استخراج کنند.
debugfs /dev/sda3 mkdir test cat /root/.ssh/id_rsa
از آنجایی که قادر به خواندن کلید خصوصی OpenSSH کاربر root هستیم، میتوانیم این کلید را کپی کرده و در یک فایل قرار دهیم و سپس سطح دسترسی محدودی به آن اختصاص دهیم تا از overly permissive بودن کلید جلوگیری شود.
پس از ذخیره کلید خصوصی در یک فایل (مثلاً id_rsa)، باید سطح دسترسی آن را به ۶۰۰ (فقط خواندن و نوشتن برای مالک) تنظیم کرد تا از هشدارهای امنیتی SSH جلوگیری شود. بدون این محدودسازی، SSH ممکن است اجازه استفاده از کلید را به دلیل سطح دسترسی ناامن ندهد.
nano id_rsa chmod 600 id_rsa ssh -i id_rsa root@192.168.1.6 id
مشاهده میشود که privilege escalation با موفقیت انجام شده و مهاجم به سطح دسترسی root دست یافته است. اکنون میتوان فایل /etc/shadow را خواند و هشهای مربوط به سایر کاربران را استخراج کرد.
فایل /etc/shadow حاوی هشهای رمز عبور کاربران سیستم است و تنها با دسترسی root قابل مشاهده میباشد. دسترسی به این فایل میتواند برای حملات بعدی مانند offline password cracking مورد استفاده قرار گیرد.
نتیجهگیری
افزایش سطح دسترسی از طریق Disk Group یک نگرانی عمده برای امنیت سیستمهای لینوکس است. این آسیبپذیری به مهاجمان این امکان را میدهد که به دادههای حساس دسترسی غیرمجاز پیدا کرده و سطح دسترسی خود را افزایش دهند. درک نحوه عملکرد این حمله ضروری است و باید تدابیر امنیتی قوی برای محافظت در برابر آن اعمال شود. انجام این کار برای کاهش خطرات و اطمینان از ایمنی سیستمها در برابر بهرهبرداری حیاتی است.