سایبریت

ماژول‌های قابل لود کرنل لینوکس (لینوکس برای هکرها – قسمت 12)

ماژول‌های قابل لود کرنل لینوکس (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

بررسی proc - ماژول‌های قابل لود کرنل لینوکس

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

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

مطالعه کنید
ساختار دایرکتوری‌ ها در لینوکس (لینوکس برای هکرها - قسمت 1)

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

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

sysctl -a | cat

دستور sysctl - ماژول‌های قابل لود کرنل لینوکس

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

cat /etc/sysctl.conf

دستور sysctl - ماژول‌های قابل لود کرنل لینوکس

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

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

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

lsmod

دستور lsmod - ماژول‌های قابل لود کرنل لینوکس

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

مرحله ۵: Modprobe

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

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

ماژول modprob - ماژول‌های قابل لود کرنل لینوکس

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

modprobe -r

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

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

ls -l /etc/modprobe.d/

ماژول modprobe - ماژول‌های قابل لود کرنل لینوکس

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

مطالعه کنید
راه اندازی وب سرور Apache در لینوکس (لینوکس برای هکرها – قسمت 11)

اگر هنوز قسمت‌های قبلی را ندیدید، حتماً آن‌ها را نگاه کنید. منتظر آموزش بعدی باشید و اگر سؤالی داشتید، حتماً در نظرات زیر بنویسید.

امیدوارم این آموزش به شما در بررسی ماژول‌های قابل لود کرنل لینوکس کمک کند. مطمئن شوید که قسمت‌های قبلی سری آموزش لینوکس برای هکرهای اخلاقی را نگاه کردید و اگر سؤالی دارید، در نظرات زیر بپرسید.

دیدگاه‌ها (0)

  • بخش دیدگاه محیط تعامل میان ما و شما است
  • سوالات، پیشنهادات و انتقادات خود را با ما در میان بگذارید
  • شما در بیان نظر خود آزاد هستید و تمامی کامنت ها منتشر می‌شوند