مبانی لینوکس برای هکرها ۱۲ (Loadable Kernel Modules)

مبانی لینوکس برای هکرها ۱۲ (Loadable Kernel Modules)
مبانی لینوکس برای هکرها ۱۲ (Loadable Kernel Modules)

در ادامه سری مبانی لینوکس برای هکرها، می‌خواهم ماژول‌های قابل لود کرنل (Loadable Kernel Modules یا LKM ها) را نشان دهم که برای ما توانایی افزودن ویژگی‌هایی به کرنل (هسته) را بدون نیاز به کامپایل مجدد کرنل فراهم می‌کند. چیزهایی مانند درایور دیوایس‌ها می‌توانند بدون خاموش کردن سیستم، کامپایل مجدد و یا ریبوت سیستم به کرنل اضافه شوند.

ماژول‌های قابل لود کرنل برای هکرها بسیار مهم هستند، زیرا اگر ما بتوانیم دسترسی ادمین لینوکس را برای لود کردن یک ماژول جدید به کرنل بگیریم، نه‌تنها سیستم آن‌ها را از آن خود کردیم، بلکه چون ما در سطح هسته سیستم‌عامل هستیم، می‌توانیم گزارشات سیستم ازنظر پروسه، پورت، سرویس، فضای هارد و غیره را کنترل کنیم.

پس اگر ما بتوانیم با یک درایور جدید که rootkit مان در آن جاسازی‌شده، دسترسی کاربر/مدیر لینوکس را بگیریم، می‌توانیم سیستم و هسته را کنترل کنیم. این همان روش برخی از روت کیت‌های سیستم‌عامل لینوکس است.

بنابراین امیدوارم به‌طور واضح LKM ها را درک کرده باشید، زیرا کلیدی مؤثر برای یک مدیر لینوکس و یک هکر باهوش است.

مرحله ۱: ماژول کرنل چیست؟

کرنل یا هسته، جزء اصلی سیستم‌عامل لینوکس است. کنترل همه‌چیز یک سیستم‌عامل، مدیریت ارتباط بین اجزای سخت‌افزاری و اجرای سرویس موردنیاز از وظایف کرنل هست. کرنل بین برنامه‌های کاربر و سخت‌افزار مانند CPU، حافظه، هارددیسک و غیره ارتباط برقرار می‌کند.

کرنل تمام آنچه در سیستم‌عامل اتفاق می‌افتد را مدیریت می‌کند، پس گاهی نیاز به به‌روزرسانی دارد. این به‌روزرسانی‌ها ممکن است شامل درایور دستگاه‌های جدید (مانند کارت گرافیک یا دستگاه‌های USB)، درایور فایل‌های سیستم و حتی توسعه سیستم باشد. این‌جایی است که LKM ها وارد می‌شوند. اکنون ما می‌توانیم به‌راحتی ماژول‌های کرنل را load و unload کنیم، بدون نیاز به کامپایل مجدد کرنل.

مرحله ۲: بررسی کرنل

ابتدا بررسی می‌کنیم که کرنل سیستم ما چیست. حداقل دو راه برای انجام این کار وجود دارد.

uname -a

uname -a

توجه کنید که کرنل به ما می‌گوید kernel build یا انتشار کرنل 4.18.0‎-kali2-amd64، و معماری آن برای (x86_64) ساخته‌شده است. ما همچنین می‌توانیم با خواندن فایل ‎/proc/version اطلاعات بیشتری دریافت کنیم.

cat /proc/version

مرحله ۳: تنظیم کرنل با Sysctl

گاهی اوقات مدیر لینوکس می‌خواهد کرنل را تنظیم کند. این ممکن است شامل تغییر حافظه اختصاص داده‌شده، فعال کردن قابلیت شبکه و حتی امنیت بیشتر کرنل از هکرها باشد.

این مطلب را از دست ندهید:
بوت نشدن ویندوز بعد از نصب اوبونتو

برای تنظیم کرنل‌های مدرن لینوکس، از دستور sysctl استفاده می‌کنیم. همه تغییراتی که با sysctl انجام می‌دهید تنها تا زمان راه‌اندازی مجدد سیستم باقی می‌ماند. برای ایجاد هرگونه تغییر دائمی، باید فایل کانفیگ sysctl در مسیر ‎/etc/sysctl.conf ویرایش شود.

در استفاده از systctl مراقب باشید زیرا بدون داشتن دانش و تجربه مناسب می‌توانید سیستم خود را غیرقابل استفاده کنید. بیایید نگاهی به محتویات sysctl بیندازیم.

sysctl -a | cat

برای مشاهده فایل کانفیگ sysctl تایپ می‌کنیم:

cat /etc/sysctl.conf

یکی از راه‌هایی که ما از sysctl برای هک استفاده می‌کنیم این است که ipforwarding (net.ipv4.conf.default.forwarding) را برای حملات مردی در میان (man-in-the-middle) فعال کنیم. برای امنیت بیشتر، می‌توانیم درخواست‌های ICMP echo (net.ipv4.icmp_echo_ignore_all) را غیرفعال کنیم تا کار هکرها در پیدا کردن سیستم ما سخت‌تر شود اما خب غیرممکن نیست.

مرحله ۴: ماژول‌های کرنل

برای مدیریت کرنل خود، حداقل دو راه برای انجام این کار در لینوکس وجود دارد. راه قدیمی‌تر این است که از یک گروه از دستورات ساخته‌شده با دستور insmod استفاده کنیم. در اینجا ما از یکی از آن دستورات، lsmod استفاده می‌کنیم تا ماژول‌های نصب‌شده در کرنل را لیست کنیم.

lsmod

ما می‌توانیم ماژول را با insmod لود یا وارد کنیم و ماژول را با rmmod حذف کنیم.

مرحله ۵: Modprobe

توزیع‌های جدیدتر لینوکس، برای مدیریت LKM دارای دستور modprobe هستند. برای دیدن اینکه کدام ماژول در کرنل ما نصب‌شده است (سوئیچ ‎-l حذف شده‌است)، می‌توانیم تایپ کنیم:

ls -R /lib/modules/$(uname -r)/kernel
or
cd /lib/modules/$(uname -r); find kernel

برای حذف یک ماژول، به‌سادگی از modprobe به همراه سوئیچ ‎-r استفاده می‌کنیم.

modprobe -r

یکی از مزیت‌های اصلی Modprobe این است که وابستگی‌ها، گزینه‌ها، و روش‌های نصب و حذف ماژول‌های کرنل ما را درک می‌کند.

برای دیدن فایل‌های کانفیگ ماژول‌های نصب‌شده، محتوای دایرکتوری ‎/etc/modprobe.d را لیست می‌کنیم.

ls -l /etc/modprobe.d/

به یاد داشته باشید، ماژول‌های LKM برای راحتی کاربر/مدیر لینوکس هستند، اما این یک ضعف بزرگ امنیتی لینوکس است و یک هکر حرفه‌ای باید با آن آشنا باشد. همان‌طور که قبلاً گفتم، LKM می‌تواند وسیله‌ای مناسب برای دریافت روت کیت شما در کرنل باشد!

حتما نگاهی به این مطالب بیندازید

نظرتان را بگویید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دانلود PDF مقاله
حجم فایل حدود 2 مگابایت است

نگران نباشید، ایمیل‌های مزاحم نمی‌فرستیم
close-link
دریافت هدیه
حجم فایل حدود 1 مگابایت است

نگران نباشید، ایمیل‌های مزاحم نمی‌فرستیم
close-link