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

فایل‌های آلوده، معمولاً در چند محل مشخص پنهان می‌شوند و شناسایی آنها نیازمند ابزارهای تخصصی و مقایسه با نسخه‌های اصلی است.

در این مقاله، چارچوبی عملی برای پیدا و حذف فایل‌های آلوده ارائه می‌شود.

در پروژه‌های متعدد پاک‌سازی، دیده‌ام که فایل‌های آلوده در پوشه‌های غیرمنتظره پنهان می‌شوند و شناسایی دقیق آنها، کلید ریشه‌کن کردن آلودگی است.

چرا فایل‌های آلوده باقی می‌مانند؟

  • پاک‌سازی سطحی بدون اسکن کامل.
  • نبود مقایسه با نسخه اصلی.
  • نادیده گرفتن فایل‌های مخفی.
  • نبود بررسی wp-content.
  • نادیده گرفتن پوشه uploads.
  • عدم بررسی cron jobs.
  • عدم بررسی دیتابیس.

محل‌های رایج فایل‌های آلوده

محلنوع آلودگی
ریشه سایتفایل PHP ناشناخته
wp-content/themesکد مخرب در functions.php
wp-content/pluginsافزونه آلوده
wp-content/uploadsفایل PHP مخفی
wp-includesکد مخرب در فایل هسته
wp-adminکد مخرب در فایل مدیریت
.htaccessریدایرکت مخرب
wp-config.phpکد اضافی
index.phpکد مخرب
wp-content/mu-pluginsافزونه مخفی

شناسایی فایل‌های آلوده

روش‌های شناسایی

  • اسکن با Wordfence یا MalCare.
  • مقایسه فایل‌های هسته با نسخه اصلی.
  • جستجوی الگوهای کد مخرب.
  • بررسی تاریخ تغییر فایل‌ها.
  • بررسی فایل‌های ناشناخته در پوشه‌های اصلی.

مقایسه با نسخه اصلی وردپرس

  1. دانلود نسخه جدید وردپرس از wordpress.org.
  2. استخراج در پوشه جداگانه.
  3. مقایسه با diff یا ابزارهای تخصصی.
  4. شناسایی فایل‌های تغییر‌یافته.

diff -r /original-wp/ /public_html/ --exclude=wp-content --exclude=wp-config.php

الگوهای کد مخرب

  • eval()
  • base64_decode()
  • gzinflate()
  • str_rot13()
  • shell_exec()
  • exec()
  • system()
  • passthru()
  • preg_replace() با /e
  • file_get_contents() با URL ناشناخته
  • کد مخرب مبهم‌شده با \x یا chr()

جستجوی خط فرمان

grep -r "eval(" /public_html --include="*.php" -l
grep -r "base64_decode" /public_html --include="*.php" -l
grep -r "shell_exec" /public_html --include="*.php" -l

بررسی تاریخ تغییر فایل

فایل‌های هسته وردپرس، به‌طور طبیعی در تاریخ نصب تغییر می‌کنند. اگر فایل‌های هسته در تاریخ اخیر تغییر کرده باشند، احتمال آلودگی وجود دارد.

find /public_html -type f -mtime -7 -exec ls -la {} \;

ابزارهای تخصصی

  • Wordfence: اسکن و شناسایی.
  • MalCare: اسکن و پاک‌سازی سریع.
  • Sucuri: اسکن حرفه‌ای.
  • Quttera: اسکن دقیق.
  • VirusTotal: بررسی فایل مشکوک.
  • ClamAV: اسکن سرور.

تحلیل دستی فایل‌ها

  • بررسی فایل‌های جدید در پوشه‌های اصلی.
  • بررسی تغییرات اخیر در فایل‌های هسته.
  • بررسی فایل‌های ناشناخته در uploads.
  • بررسی .htaccess و wp-config.php.
  • بررسی mu-plugins.

حذف امن فایل‌ها

  1. بکاپ از فایل مورد نظر.
  2. تأیید آلودگی فایل.
  3. حذف فایل یا جایگزینی با نسخه اصلی.
  4. بررسی عملکرد سایت پس از حذف.
  5. پایش برای بازگشت.

بکاپ پیش از حذف

بکاپ از فایل‌های آلوده، به‌عنوان شاهد برای تحلیل آینده و برای بازگشت در صورت خطا ضروری است.

بازسازی فایل‌های هسته

  1. دانلود نسخه اصلی وردپرس.
  2. حذف wp-admin و wp-includes.
  3. بارگذاری نسخه اصلی.
  4. حفظ wp-config.php، wp-content، .htaccess و robots.txt.

بررسی افزونه‌ها و قالب

  • مقایسه با نسخه رسمی.
  • حذف و نصب مجدد افزونه‌های مشکوک.
  • بررسی functions.php.
  • بررسی header.php و footer.php.

بررسی پوشه uploads

  • جستجوی فایل‌های PHP در uploads.
  • جستجوی فایل‌های مشکوک با پسوند غیرمعمول.
  • حذف فایل‌های ناشناخته.
  • محدودسازی اجرای PHP در uploads.

فایل‌های مخفی

  • بررسی فایل‌های با نام نقطه‌دار.
  • بررسی فایل‌های با پسوند دوگانه.
  • بررسی فایل‌های با نام شبیه فایل‌های هسته.

پس از پاک‌سازی

  • تغییر همه رمزها.
  • تولید کلیدهای جدید در wp-config.php.
  • فعال‌سازی 2FA.
  • نصب فایروال.
  • پایش مستمر.

رویکردهای توصیه‌شده

  • اسکن کامل پیش از حذف.
  • بکاپ از فایل‌های آلوده.
  • مقایسه با نسخه اصلی.
  • پاک‌سازی چندلایه.
  • سخت‌سازی پس از پاک‌سازی.
  • پایش مستمر.
«پیدا کردن فایل آلوده، تنها بخشی از کار است؛ حذف امن و سخت‌سازی پس از آن، بخش مهم‌تر است.»

اشتباهات رایج

اشتباهاثر عملیاتی
حذف بدون بکاپاز دست رفتن داده
پاک‌سازی سطحیبازگشت آلودگی
نادیده گرفتن uploadsباقی‌ماندن فایل مخرب
نادیده گرفتن mu-pluginsفایل مخفی
عدم بررسی دیتابیسباقی‌ماندن کد مخرب
نبود سخت‌سازیآلودگی مجدد
نبود پایشعدم تشخیص سریع
عدم تغییر رمزهابازگشت دسترسی مهاجم
نبود مستندسازیسردرگمی
عدم آموزش تیمتکرار خطا

پرسش‌های پرتکرار

چگونه فایل آلوده در وردپرس را پیدا کنم؟

با Wordfence، MalCare، مقایسه با نسخه اصلی، جستجوی الگوهای کد مخرب و بررسی تاریخ تغییر فایل‌ها.

فایل‌های آلوده معمولاً کجا پنهان می‌شوند؟

در ریشه، wp-content/themes، wp-content/plugins، wp-content/uploads، wp-includes، wp-admin و mu-plugins.

چگونه فایل آلوده را حذف کنم؟

با بکاپ از فایل، تأیید آلودگی، حذف یا جایگزینی با نسخه اصلی، و پایش پس از حذف.

آیا می‌توانم فایل هسته را دستی جایگزین کنم؟

بله، با دانلود نسخه اصلی از wordpress.org و جایگزینی فایل‌های هسته.

چه الگوهای کد مخرب هستند؟

eval، base64_decode، gzinflate، shell_exec، exec و کدهای مبهم‌شده.

چگونه از بازگشت آلودگی جلوگیری کنم؟

با سخت‌سازی، 2FA، فایروال، بروزرسانی منظم و پایش مستمر.

آیا فایل‌های PHP در uploads طبیعی هستند؟

خیر. اگر در uploads فایل PHP دیده شود، احتمال آلودگی بالاست.

چند وقت یک‌بار اسکن کنم؟

هفتگی برای سایت‌های فعال، ماهانه برای سایت‌های کم‌فعالیت.

پایان‌بندی

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

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

برای درک عمیق‌تر، مقاله پاک کردن ویروس و کد مخرب از وردپرس و مقاله چگونه سایت وردپرسی را در برابر هک محافظت کنیم؟ را مطالعه کنید.

اگر در پروژه‌های خود تجربه‌ای از پاک‌سازی فایل‌های آلوده داشته‌اید، تجربه‌تان را در دیدگاه‌ها بنویسید. 🛡️