در دنیای امنیت شبکه، یکی از خطرناکترین وضعیتها زمانی است که مهاجم دسترسی مخفی (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 در سیستم لینوکسی کاری پیچیده اما شدنی است اگر به صورت مرحلهای پیش بروید: شناسایی، بررسی نقاط پایداری، اجرای ابزارهای تشخیصی، تحلیل گزارشها، حذف و بازسازی و نهایتاً محافظت مداوم.