بدافزار NDSW/NDSX باعث آلودگی گسترده جاوا اسکریپت شده و هزاران فایل آن را در بر میگیرد. باتوجهبه تعداد بسیار بالای فایلهای آلوده، پاککردن آن میتواند کار آزاردهندهای باشد. به همین دلیل بهتر است انجام این کار را به گامهای کوچک تقسیم کرده و هر بار یکقدم برداریم:
- سایت وردپرس خود را به طور موقت غیرفعال کنید.
- یک روش پاکسازی بر اساس دسترسی خود انتخاب کنید.
- فایلهای هسته وردپرس را مجدداً نصب کنید.
- جستجوی بچ فایل انجام داده و فایلهای آلوده را جایگزین کنید.
1. وبسایت وردپرسی خود را موقتاً غیرفعال کنید.
قطعاً شما نمیخواهید بازدیدکنندگان یا موتورهای جستجو وبسایت شما را حین یک عملیات گستردهٔ ویرایشی بازدید کنند. چالش اصلی عملیات در اینجا است که حتی نمیتوانید از یک افزونه تعمیر و نگهداری استفاده کنید، زیرا آن هم آلوده میشود.
سادهترین راه برای غیرفعالکردن وب در سرور آپاچی، اضافهکردن موارد زیر در بالای فایل htaccess خود است:
<FilesMatch “*”>
# Apache 2.2
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</FilesMatch>
برای Nginx یا سایر وب سرورها، لطفاً به دستورالعملهای مربوطه مراجعه کنید.
2. آمادهسازی قبل از پاکسازی
خلاصشدن از شر عامل اصلی آلودگی، مهمترین کاری است که باید قبل از پاکسازی فایلهای جاوا اسکریپت خود انجام دهید که در اینجا معمولاً یک PHP-Backdoor است. اهمیت این کار در آن است که فایلهای شما پس از انجام پاکسازی مجدداً آلوده نشوند؛ بنابراین سایت خود را به طور کامل اسکن کرده و مطمئن شوید که هیچ آلودگی دیگری به جز ndws / ndsx وجود ندارد.
3. انتخاب روش پاکسازی
روش پاکسازی تا حد زیادی به نوع دسترسی و ترجیح فنی شما بستگی دارد. برای این مشکل خاص، اساساً دو استراتژی وجود دارد:
3.1. پاکسازی از طریق SSH
تأثیرگذاری هیچچیز بهپای دسترسی به WP CLI نمیرسد. اگر به ssh دسترسی دارید، این روش سریعترین راه است که به شما این امکان را میدهد تا هزاران فایل را با سرعت نور پاک کنید.
3.2. دانلود فایلها بهصورت محلی، پاکسازی و بارگذاری مجدد
این روش کمی صبر و زمان میخواهد. در اینجا باید همه فایلها را بهصورت محلی در سیستم خود دانلود کرده، سپس عملیات جستجو و جایگزینی بچ را روی همه فایلهای جاوا اسکریپت انجام دهید. برای این کار میتوان از هر ابزار جستجو یا جایگزین دیگری که امکان اجرای عملیات بچ روی فایلها و عبارات منظم را فراهم میکند، استفاده کرد.
4. نصب مجدد فایلهای Core WordPress
اگر میخواهید پاکسازی را از طریق ssh انجام دهید، به مرحله 5 بروید؛ اما اگر فایلها را بهصورت دستی دانلود، جستجو و جایگزینی میکنید، مراحل زیر را دنبال کنید:
- نسخهٔ وردپرس خود را پیدا کنید.
- همان نسخه را از WordPress.org دانلود کنید.
- آرشیو دانلود شده را استخراج کنید.
- پوشههای wp-admin و wp-includes را در وبسایت خود آپلود کرده و پوشههای قدیمیتر را بازنویسی کنید.
5. پاکسازی از طریق SSH: استفاده از sed برای انجام جستجو و جایگزینی بچ در همه فایلهای جاوا اسکریپت
(اگر دسترسی ssh ندارید، به مرحله 6 بروید) در زیر دستوری آمده که باید آن را بر اساس آلودگی خود سفارشیسازی کنید:
find . -type f -name ‘*.js’ -exec sed -i ‘s/;if(ndsw===undefined).*//g’ {} \;
حال بیایید این دستور را باهم تجزیهوتحلیل کنیم:
- find .: فایل را در دایرکتوری فعلی پیدا میکند.
- · –type f: دستور find را به جستجوی فایلها (بهجای دایرکتوریها و غیره) محدود میسازد. نگران نباشید، میتوان آن را به حالت قبلی برگرداند.
- · –name ‘*.js‘: دستور find را محدود به فایلهای جاوا اسکریپت میکند.
- · –exec: دستور را اجرا میکند.
- sed -i: دستور sed را وادار کنید تا یک عملیات جایگزینی در محل را روی فایل انجام دهد.
- · ‘s/;if(ndsw===undefined).*//g’: s مخفف جایگزینی رشته (شامل الگوهای عبارت منظم) است. بخش بین اولین اسلشها الگوی جستجو است و قسمت بین جفت دوم اسلش جایگزین آن است (در اینجا خالی است). g در انتها آن باعث تا sed تمامی رخدادها را جایگزین کنید.
- · {} \;: هر فایل را جداگانه به دستور sed ارسال میکند. تغییر آن به {} + همه فایلها را به یکباره به دستور sed ارسال میکند.
6. استفاده از VSCode برای انجام جستجو و جایگزینی بچ در تمام فایلهای جاوا اسکریپت
با دانلود محلی همه فایلها در دسکتاپ خود شروع کنید. اگر از سیستمعامل ویندوز استفاده میکنید، احتمالاً هشدار وجود فایل مشابه در سیستم را دریافت میکنید، زیرا ویندوز به حروف بزرگ و کوچک در نام فایلها حساس نیست. در نتیجه قبل از شروع دانلود، دایرکتوری محلی را به حروف کوچک و بزرگ حساس کنید (اگر از macOS یا Linux استفاده میکنید، لازم نیست نگران این قضیه باشید).
پس از دانلود همه فایلها، باید دایرکتوری loval را با حروف کوچک و بزرگ تنظیم کنید تا در همه فایلها جستجو و جایگزینی بچ انجام دهد. امروز ابزار ویرایشگر انتخابی ما Microsoft VSCode است که تقریباً برای همه پلتفرمهای رایج در دسترس است. عملیات جستجو و جایگزینی با عبارت منظم آن بهصورت زیر است.
عبارت جستجو این است:
;if\(\w+===undefined\)[\s\S\n]*
که در VSCode اینگونه به نظر میرسد:
هنگامی که عملیات جستجو و جایگزینی کامل شد، کافی است فایلها را مجدداً بارگذاری کرده و فایلهای قبلی را بازنویسی کنید.
7. پاکسازی پست
- وبسایت خود را مجدداً فعال کنید: کافی است دستورات مرحله 1 را حذف کنید.
- کش وبسایت را پاک کنید.
- تغییر wordpress salts: با این کار همه از وبسایت شما خارج میشوند.
- نظارت بر وبسایت برای آلودگی مجدد! بهعنوان یک SOP (استاندارد رویه عملیاتی)، وبسایت را زیر نظر داشته و قبل از بستن پرونده، موارد آلودگی مجدد را زیر نظر میگیریم. اگر وبسایتتان مجدداً آلوده شود، احتمالاً هنوز یک آسیبپذیری امنیتی در وبسایت یا محیط میزبانی شما وجود دارد که باعث آلودگی مجدد شما شده است.
خلاصه
دردسر بودن پاکسازی بدافزار جاوا اسکریپت NDSW / NDSX به دلیل پیچیدگی آن نیست، بلکه به دلیل بالابودن تعداد فایلهایی است که آلوده میکند. برای رفع آن میتوانید عملیاتی را به کار ببرید که امکان استفاده از عبارات منظم برای انجام جستجو و جایگزینی بچ را به شما میدهد. نکتهٔ مهم دیگر این است که قبل از پاکسازی آلودگیهای جاوا اسکریپت حتماً مطمئن شوید که هیچ درب پشتی و آسیبپذیری دیگری وجود ندارد.