تکنولوژی

راهنمای گام‌به‌گام تشخیص و حذف Backdoor از سرور لینوکسی

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

در دنیای امنیت شبکه، یکی از خطرناک‌ترین وضعیت‌ها زمانی است که مهاجم دسترسی مخفی (backdoor)  را داخل سرور لینوکسی شما نصب کند. این دسترسی می‌تواند ماه‌ها ناشناخته باقی بماند و داده‌ها را دزدیده یا سرویس‌ها را خراب کند. تشخیص و حذف این backdoor‌ها کار آسانی نیست، اما با یک چک‌لیست اصولی، ابزارهای مناسب و روش‌های تحلیلی می‌توان این تهدید را خنثی کرد.

در این مقاله از سلام دیجی گام‌به‌گام همراهتان هستیم از شناسایی فرآیندهای مشکوک، بررسی فایل‌های استارتاپ، اجرای ابزارهای رایج مانند rkhunter  و chkrootkit  و تحلیل نتایج، تا حذف نهایی و بازسازی سیستم. این راهنما برای مدیران سرور، تیم امنیت و کسانی است که می‌خواهند سرور لینوکسی‌شان را از وجود backdoor  پاکسازی کنند.

مخاطب هدف و فرض‌های پایه

✔️ فرض می‌کنیم دسترسی پایه (root  یا  sudo) به سرور دارید.

✔️ فرض می‌کنیم سیستم عامل لینوکسی است (Ubuntu, Debian, CentOS, RHEL و غیره)

✔️ احتمال دارد backdoorها با روش‌های مخفی‌سازی پیشرفته (مانند ماژول‌های کرنل، پیش‌بارگذاری lib، یا تغییر دسترسی فایل‌ها) باشند.

✔️ هدف ما پاکسازی کامل و نه صرفاً شناسایی سطحی است.

1 . اصول و مفاهیم مقدماتی

Backdoor  چیست؟ | تفاوت آن با Rootkit

Backdoor  به برنامه یا ماژولی گفته می‌شود که به مهاجم امکان ورود مخفیانه می‌دهد، بدون اینکه کاربر یا سیستم متوجه شود. ممکن است بخشی از rootkit باشد که یک وسیله مخفی‌سازی سطح پایین‌تر است (تغییر APIها، ماژول هسته).

روش‌های معمول persistence در لینوکس

چند روش رایج:

✔️ قرار دادن DLL یا کتابخانه مخرب در ld.so.preload

✔️ ماژول کرنل مخرب

✔️ اسکریپت‌های استارتاپ (cron, systemd etc.)

✔️ فایل‌های شل مخفی در دایرکتوری کاربران

✔️ تغییر دسترسی و جایگزینی باینری‌های اصلی

برای مثال، backdoor  Auto-Color یکی از نمونه‌های نوین است که از روش ld.so.preload  برای پنهان شدن و اجرای خودکار روی سیستم استفاده می‌کند.

همچنین در سال ۲۰۲۴، باگ امنیتی در ابزار xz utils  کشف شد که backdoor روی OpenSSH قرار داده بود.

2 . آماده‌سازی محیط بررسی

✔️ اگر امکان دارد، سرور را از شبکه قطع کنید یا حداقل اقدامات ایزوله‌سازی شبکه‌ای اعمال کنید تا مهاجم نتواند ارتباط باز برقرار کند.

✔️ بکاپ فوری از فایل‌های حساس مثل /etc/passwd, /etc/shadow, /var/log/*، اسکریپت‌های سرویس‌ها بگیر تا اگر اشتباهی شد بتوانید بازگردانی کنید.

✔️ ایجاد یک محیط جانبی (مثلاً یک دستگاه جداگانه) برای تحلیل گزارش‌ها و اجرای ابزارها تا امکان دستکاری توسط backdoor نباشد.

3 . شناسایی فرآیندها و فعالیت‌های مشکوک

لیست فرآیندها

  • اجرای:

ps auxf

ps -ef

top

htop

به دنبال فرآیندهایی باشید که نام عجیب دارند (نظیر xyz123, kworker غیر عادی) یا اجرا از مسیر‌های نامعمول.

تطابق /proc با ps

بعضی از backdoorها با پنهان کردن خود در لیست process کار می‌کنند. می توانید بررسی کنید که آیا فرآیندی در /proc هست که ps آن را نشان نمی‌دهد:

for pid in $(ls /proc | grep -E '^[0-9]+$'); do

  pname=$(cat /proc/$pid/comm 2>/dev/null)

  # بررسی اینکه آیا ps خروجی دارد یا نه

done

مسیر نامعمول

به فایل اجرایی فرآیند نگاه کنید (/proc/PID/exe) و مقایسه کنید با مسیری که معمولاً برنامه باید باشد. اگر binary مخرب در /tmp یا دایرکتوری عجیب باشد، مشکوک است.

4 . بررسی نقاط پایدارسازی (Persistence)

cron / crontab

ببین اسکریپتی در cron یا cron.d نیست که اجرای منظم دارد:

 

ls /etc/cron.d

crontab -l

cat /etc/crontab

systemd / init

لیست سرویس‌ها و اسکریپت‌های فعال را بررسی کنید:

systemctl list-units --type=service --all

grep -R "ExecStart" /etc/systemd

همچنین در سیستم‌های قدیمی‌تر، /etc/init.d/ و /etc/rc.local را بررسی کنید.

ld.so.preload

اگر ، /etc/ld.so.preload تغییر کرده باشد، ممکن است کد مخرب در آن قرار داده شده باشد:

cat /etc/ld.so.preload

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

فایل‌های شل کاربر

در ~/.bashrc, ~/.profile, ~/.bash_profile بررسی کنید که آیا اسکریپتی اضافه نشده است که اجرای code داشته باشد.

5 . اجرای ابزارهای تخصصی

rkhunter (Rootkit Hunter)

نصب:

بسته به توزیع:

sudo apt update && sudo apt install rkhunter        # Debian/Ubuntu

sudo yum install rkhunter                             # CentOS/RHEL

به‌روزرسانی دیتابیس:

sudo rkhunter --update

اجرای اسکن:

sudo rkhunter --check

گزارش در: /var/log/rkhunter/rkhunter.log ذخیره می‌شود.

Rkhunter  به بررسی تغییرات هش، وجود فایل‌های مخفی، ماژول‌های کرنل مشکوک و دسترسی‌های نامناسب می‌پردازد .

chkrootkit

نصب:

sudo apt install chkrootkit

اجرا:

sudo chkrootkit

chkrootkit  با بررسی باینری‌های سیستمی و مقایسه خروجی /proc با ps علایم rootkit را می‌یابد.

ابزارهای مکمل

✔️ Lynis : ابزار ممیزی امنیتی کامل

✔️ Linux Malware Detect (LMD / Maldet) : مخصوص تشخیص بدافزار در سیستم‌های لینوکسی

✔️ ابزارهای داخلی forensic مانند strings, grep, lsof، netstat, ss و غیره

✔️ خواندن لاگ‌های سیستمی /var/log/auth.log, /var/log/syslog, /var/log/messages

6. تحلیل گزارش‌ها و تشخیص موارد مثبت

تفسیر هشدار rkhunter

هشدارها ممکن است مواردی مثل «فایل با هش متفاوت»، «ماژول مشکوک»، «پذیرش دسترسی غیرعادی»، «پورت باز غیرمعمول».
باید:

✔️ هشدار را با وضعیت پیش‌فرض سیستم مقایسه کنید.

✔️ مسیر فایل را بررسی کنید.

✔️ تغییرات اخیر بسته‌ها را چک کنید.

مدیریت False Positive

ابزارها ممکن است به اشتباه برخی فایل‌ها را هشدار دهند (مثلاً Redis در پورت ۱۳۰۰۰ به عنوان backdoor علامت زده شده است).  در این حالت باید:

✔️ بررسی دستی مسیر و امضای فایل

✔️ مقایسه با نسخه اصلی (checksum)

✔️ استفاده از منابع مرجع (repository  رسمی)

بررسی ماژول کرنل

اگر ماژولی مشکوک وجود داشته باشد، آن را با lsmod یا جستجو در /lib/modules/$(uname -r)/ بررسی کنید. اگر ماژولی ناشناخته یا غیرمتناسب دیدید، آن را با rmmod یا ابزار دیگر حذف کنید یا جلوی بارگذاری آن را بگیرید.

7 . حذف backdoor و پاکسازی

توقف فرآیند مخرب:

kill -9 PID

حذف فایل‌ها:

✔️ حذف فایل اجرایی مخرب

✔️ حذف ورودی‌هایی در cron / systemd

✔️ حذف ماژول کرنل

✔️ پاک کردن تغییرات در ld.so.preload

بازگردانی باینری‌های سیستم:

اگر باینری‌ای مانند ssh, bash, ls تغییر کرده است، آن را از منبع رسمی سیستم (پکیج توزیع) بازگردان کنید.

بررسی مجدد با ابزارها بعد از حذف:

دوباره rkhunter و chkrootkit را اجرا کن تا مطمئن شوی جدیدترها هم حذف شدند.

8 . بازسازی و تقویت امنیت

✔️ به‌روزرسانی سیستم و بسته‌ها

✔️ غیر فعال کردن سرویس‌های غیرضروری

✔️ رعایت اصل کمترین دسترسی (Least Privilege)

✔️ استفاده از SELinux یا AppArmor برای کنترل دسترسی دقیق

✔️ نصب سیستم مانیتورینگ (SIEM یا ابزارهای لاگ)

✔️ فعال کردن هشدارها برای تغییرات فایل‌های سیستمی

✔️ تفکیک لاگ‌ها و فعال کردن ذخیره‌سازی امن

9 . آزمون نهایی و نگهداری مداوم

✔️ اجرا دوره‌ای rkhunter / chkrootkit

✔️ مانیتورینگ لاگ‌های احراز هویت و ورود

✔️ مقایسه periodical تغییرات فایل‌هایی حیاتی (rpm -Va یا debsums)

✔️ نگه‌داشتن شواهد (فایل‌های گزارش، نسخه پشتیبان قبل از تغییرات) برای تحلیل بعدی

نکات حرفه‌ای و هشدارها

✔️ ابزارهای تشخیص مانند rkhunter و chkrootkit قطعی نیستند. ممکن است backdoor بسیار پیشرفته را رد کنند.

✔️ اگر سیستم بسیار حیاتی است، ممکن است مجبور شوی آن را بازنویسی کامل کرده و از نسخه سالم بکاپ‌گیری شده بازگردانی کنی (rebuild) . این روش در راهنمای Incident Response نیز پیشنهاد می‌شود.

✔️ همیشه لاگ‌ها را حفظ کن؛ ممکن است لازم باشد برای بررسی جرم یا تحلیل بعدی.

✔️ نمونه backdoorهای مدرن مانند Auto-Color  نشان می‌دهد مهاجمان از تکنیک‌های پیچیده و evasion استفاده می‌کنند که تشخیص را سخت‌تر کرده‌اند.

✔️ به‌روزرسانی مداوم، سخت‌سازی، و نظارت فعال، بهترین محافظ در برابر چنین تهدیداتی است.

جمع‌بندی و نتیجه

تشخیص و حذف backdoor در سیستم لینوکسی کاری پیچیده اما شدنی است اگر به صورت مرحله‌ای پیش بروید: شناسایی، بررسی نقاط پایداری، اجرای ابزارهای تشخیصی، تحلیل گزارش‌ها، حذف و بازسازی و نهایتاً محافظت مداوم.

 

کلمات کلیدی: | |

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد