پاکسازی ویروس سمج وردپرس (SCV/SCD1) وقتی حذف افزونه جواب نمیدهد!
اگر مدیر سایت وردپرسی هستید، احتمالا برای شما هم پیش امده که سایتی ویروسی شود، فایلهای الوده را پاک کنید و با خوشحالی فکر کنید همه چیز تمام شده است، اما درست چند دقیقه بعد ببینید همه فایلها دوباره برگشته اند! اخیرا با گونه ای از بدافزارهای وردپرسی به نام خانواده SCV یا SCD1 درگیر شدم که دقیقا همین رفتار عجیب را داشت. سه بار متوالی پاکسازی شد و هر سه بار خودش را زنده کرد.
در این مقاله میخواهم تجربیاتم را بگویم و راه حل قطعی نابودی این ویروس را قدم به قدم توضیح دهم تا اگر سایت شما هم درگیر شد، ساعتها وقتتان تلف نشود.

این ویروس چطور کار میکند و چرا برمیگردد؟
تصور عمومی این است که وقتی سایتی هک میشود، کافی است افزونه ناشناخته را پاک کنیم یا هسته وردپرس را دوباره بارگذاری کنیم. اما این بدافزار مثل یک بازی چند مرحله ای طراحی شده است:
- لایه اول (دراپ این ها): این ویروس چند فایل با نام های
db.php،advanced-cache.phpوobject-cache.phpدر پوشهwp-contentمیسازد. این فایلها قبل از اینکه وردپرس حتی قالب یا افزونه ها را لود کند اجرا میشوند. - لایه دوم (دیتابیس): ویروس یک نسخه از کدهایش را در جدول تنظیمات دیتابیس (
wp_options) ذخیره میکند. یعنی حتی اگر فایلهایش را از هاست پاک کنید، وردپرس به محض لود شدن، کد مخرب را از دیتابیس میخواند و فایلها را از اول میسازد. - لایه سوم (محرک داخل قالب): یک تکه کد طولانی و رمزشده در اولین خط فایل
functions.phpقالب فعال شما تزریق میکند تا با هر بار باز شدن سایت توسط یک کاربر، دستور بازسازی اجرا شود. - لایه چهارم (افزونه و ادمین قلابی): افزونه هایی با نام های الکی مثل
pulse-tracker-formیاforge-relay-snapمیسازد و در کنارش یک مدیر با نامی شبیهbackup_adminدر لیست کاربران تعریف میکند تا همیشه یک راه فرار داشته باشد.
نکته اصلی اینجاست: اگر همه این بخشها را همزمان و در یک نوبت پاک نکنید، قسمتهای باقیمانده بقیه بخشها را دوباره میسازند!
نشانه های آلودگی در هاست
اگر وارد پوشه wp-content شوید، فایلهای مشکوکی با این شکل و شمایل میبینید:
- فایلهایی که اولشان نقطه دارد مثل
.sc_...،.gk_...یا.kk_... - فایلهایی با پسوندهای عجیب مثل
.datیا.lkg(مثلا.wp-object-cache-*.dat) - فایلهای زیپ با نام های نامفهوم (مثل
b5e171a8.zip) - پوشه های غیرعادی موقت مثل
wp-...-prev - وجود فایلهای
db.phpیاobject-cache.phpدر پوشهwp-contentدر حالی که شما افزونه کش خاصی نصب نکرده اید.
آموزش قدم به قدم پاکسازی قطعی
برای اینکه چرخه بازسازی متوقف شود، باید دسترسی عمومی را موقتا قطع کنید و مراحل زیر را به ترتیب انجام دهید.
قدم اول: قطع موقت دسترسی به سایت
یک خط کد به اول فایل .htaccess اضافه کنید تا در زمان پاکسازی هیچ بازدیدکننده یا رباتی نتواند سایت را لود کند و ویروس فعال نشود:
Deny from all
Allow from IP_شما
اگر با .htaccess آشنایی ندارید. پیشنهاد میکنم تمامی فایل های وردپرس را بجز wp-content و wp-config.php پاک کنید. و پس از انجام کل مزاحل مجددا ودرپرس را از مخزن آن دانلود و بدون پوشه wp-content و wp-config.php بارگزاری کنید.
قدم دوم: پاکسازی ریشه ای دیتابیس (بسیار مهم)
وارد phpMyAdmin هاست شوید، دیتابیس را باز کنید و در تب SQL کدهای زیر را اجرا کنید (اگر پیشوند جداول شما چیزی غیر از wp است آن را تغییر دهید):
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_sc_%'
OR option_name LIKE '%_transient_timeout_sc_%'
OR option_name LIKE 'sc_%'
OR option_name LIKE '%pulse-tracker%'
OR option_name LIKE '%forge-relay%';
DELETE FROM wp_options
WHERE option_name REGEXP '^[a-f0-9]{16,32}$';
DELETE FROM wp_usermeta
WHERE user_id IN (SELECT ID FROM wp_users WHERE user_login LIKE 'backup_%');
DELETE FROM wp_users
WHERE user_login LIKE 'backup_%';
قدم سوم: پاکسازی فایلهای مخرب از هاست
وارد فایل منیجر هاست شوید و فایلهای زیر را بدون فرستادن به سطل زباله، مستقیم حذف کنید:
- وارد پوشه
wp-contentشوید و فایلهایdb.php،advanced-cache.phpوobject-cache.phpرا پاک کنید. - تمام فایلهایی که اولشان با نقطه شروع میشود، فایلهای زیپ بی نام و نشان و فایلهای با پسوند
.datرا درwp-contentحذف کنید. - پوشه
wp-content/mu-pluginsرا بررسی کنید و فایلهای ناشناخته آن را پاک کنید. - اگر در پوشه
wp-content/pluginsافزونه عجیبی دیدید حذفش کنید. - پوشه
wp-content/uploadsرا نگاه کنید؛ این پوشه فقط جای عکس و فیلم است، هر فایل با پسوند.phpدیدید بلافاصله پاک کنید.
قدم چهارم: تمیز کردن فایل فانکشن قالب
به مسیر wp-content/themes/قالب_شما بروید و فایل functions.php را ویرایش کنید. خیلی دقت کنید: در همان خط اول، کدهای طولانی و ناخوانایی میبینید که با دستوراتی مثل include_once یا حروف نامفهوم شروع میشوند. این همان محرک اصلی است؛ آن خط را با احتیاط کامل پاک کرده و فایل را ذخیره کنید.
قدم پنجم: باطل کردن دسترسی ها و افزایش امنیت
- فایل
wp-config.phpرا باز کنید و کدهای کلید امنیتی (Salts) را با کدهای تازه ای که از سایت رسمی وردپرس میگیرید جایگزین کنید تا همه لاگین های قدیمی بیرون بیفتند. - در انتهای همان فایل
wp-config.phpاین خط را اضافه کنید تا دیگر هیچ افزونه یا کدی نتواند فایلهای قالب را دستکاری کند:
define('DISALLOW_FILE_EDIT', true);
- کش سرور یا کش PHP-FPM هاست را ریستارت یا خالی کنید تا کدهای مخرب از حافظه موقت پاک شوند.
- کد مسدودی فایل
.htaccessرا بردارید تا سایت در دسترس قرار بگیرد.
حرف آخر
نبرد با این بدافزار مثل شطرنج است. نباید فقط به یک مهره حمله کنید؛ اگر دیتابیس، دراپ این ها و فایل فانکشن قالب را همزمان تمیز نکنید بازی را باخته اید. بعد از اجرای این مراحل، تا دو روز هر چند ساعت یک بار پوشه wp-content را چک کنید تا خیالتان راحت شود که هیچ فایلی با پسوند های نامتعارف بازسازی نشده است.
سایت شما درگیر این ویروس شده و پاکسازی آن سخت است؟
اگر تجربه کافی در ویرایش فایلهای سیستمی یا کدهای دیتابیس ندارید، دستکاری اشتباه میتواند سایت را کاملا از دسترس خارج کند. در صورت تمایل میتوانید از طریق صفحه تماس با ما پیام بگذارید تا مراحل عیب یابی، پاکسازی و ایمن سازی کامل را شخصا برای شما انجام دهم.