پاکسازی سایت آلوده به ویروس و Malware

یکی از مشکلاتی که ممکن است برای کاربران رخ دهد، آلوده شدن سایت آنها به ویروس‌های مختلف و Malware می‌باشد. در این مقاله مشکلات و روش‌های برطرف کردن مشکل بد افزارها روی سایت را بررسی می‌کنیم.


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

برخی از رایج‌ترین نشانه‌های هک شدن سایت عبارت است از صفحات وب خراب، لینک‌ به وب‌سایت‌های مخرب، هشدارهای Google blocklist و صفحه‌های سفید مرگ.

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

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

 

بدافزار چیست؟

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

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

اکثر بدافزارهای وب‌سایت دارای ویژگی‌هایی هستند که به مهاجمان اجازه می‌دهد بدون شناسایی دسترسی غیرمجاز به یک محیط در معرض خطر را به دست آورده و حفظ کنند. برخی از انواع رایج بدافزارهای وب سایت عبارتند از دزدی کارت اعتباری، محتوای هرزنامه تزریقی، تغییر مسیرهای مخرب یا حتی تخریب وب سایت.

 

چطور بدافزار را از وردپرس حذف کنیم؟

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

مرحله 1. برای حذف بدافزار وردپرس آماده شوید

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

قبل از حذف بدافزار از سایت وردپرس خود، این مراحل آماده سازی را برای اطمینان از ایمنی داده‌ها انجام دهید:

 

  1. دسترسی به وب سایت را محدود کنید

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


محدود کردن دسترسی به سایت وردپرس به جلوگیری از گسترش بیشتر بدافزار پنهانی که در حال حاضر آن را آلوده می کند کمک می کند. این مرحله را با ویرایش فایل htaccess. از طریق مدیریت فایل کنترل پنل خود یا یک کلاینت FTP مانند FileZilla انجام دهید.


در اینجا نحوه انجام آن آمده است:

در قسمت Files به File Manager بروید.
به دایرکتوری public_html دسترسی پیدا کنید و به پایین بروید تا فایل htaccess. را پیدا کنید. اگر فایل موجود نیست، یک فایل پیش‌فرض htaccess. ایجاد کنید.

این قطعه کد را به فایل .htaccess اضافه کنید تا همه دسترسی ها به جز دسترسی شما مسدود شود:

order allow,deny
deny from all
allow from [your_IP_address]


مطمئن شوید که آدرس IP شما ثابت است. در غیر این صورت، باید فایل htaccess. را به صورت دوره ای به روز کنید.
توجه کنید ثبت ip  اشتباه، دسترسی شما را از بین خواهد برد و نمی‌توانید به سایت یا هاست خود دسترسی داشته باشید.

 

  1. یک نسخه پشتیبان (بکاپ) ایجاد کنید

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

آموزش بکاپ در دايرکت ادمين
برای آموزش تهیه بکاپ در دایرکت ادمین، پیشنهاد می‌کنیم این مقاله را مطالعه نمائید
  1. نسخه های پشتیبان موجود را بررسی کنید

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

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

 

  1. همه رمزهای عبور و کلیدهای دسترسی را به روز کنید

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

اطمینان حاصل کنید که از رمزهای عبور قوی استفاده می کنید و از استفاده مجدد آنها در بیش از یک حساب در یک زمان خودداری کنید. 

در زیر تعدادی از حساب‌هایی هستند که در سریع‌ترین فرصت نیاز به بازنشانی رمز عبور دارند:

 

  • محیط کاربری پارسدو - از قسمت مدیریت سرویس می‌توانید تغییر رمز عبور هاست را انجام دهید.
  • رمز عبور FTP - به خطر افتادن حساب های FTP شما به هکرها اجازه می دهد تا حملات FTP Bounce را انجام دهند. با تغییر رمز عبور حساب های اصلی و ثانویه خود، این خطر را به حداقل برسانید.
  • دسترسی SSH - این دسترسی برای کاربران سرور فعال است و در هاست اشتراکی به آن دسترسی نخواهید داشت، رمز root را تغییر داده و کلیدهای SSH را تنظیم کنید تا از دسترسی هکرها به وب سایت جلوگیری کنید.
  • رمز مدیر وردپرس - رمز عبور مدیریت و اعتبار ورود سایر حساب های کاربری وردپرس که به backend سایت دسترسی دارند را تغییر دهید.
  • کلیدهای Salt وردپرس -  کلیدهای Salt درواقع یک سری کلیدهای امنیتی هستند با عناصر کاملا تصادفی می‌باشند که عبور از سایت شما را تقریبا برای هکرها غیرممکن می‌کنند.به هش نگه داشتن جزئیات ورود به سیستم کمک می کند و حساب وردپرس شما را در برابر حملات brute force تقویت می کند.

 

  1.  وردپرس را به‌روز (آپدیت) کنید


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

در اینجا چک لیستی از نرم افزارها و فایل هایی که باید به روز کنید آمده است:

نسخه وردپرس - وردپرس خود را از طریق تب Updates پیشخوان وردپرس به آخرین نسخه به‌روز کنید.

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

نسخه PHP - کاربران میزبانی وب در پارسدو می توانند نسخه PHP خود را از طریق منوی تنظیمات PHP در کنترل پنل، انتخاب و اکستنشن‌های لازم را فعال نمایند.

 

  1. تغییرات اخیر و دسترسی را بررسی کنید


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

ابتدا با اجرای دستور find در SSH، تغییرات خود را تجزیه و تحلیل کنید:


find . -type f -name '*.file_extension' -ctime n

 

مقدار file_extension را با نوع فایلی که می خواهید بررسی کنید جایگزین کنید. توصیه می‌کنیم فایل‌های جاوا اسکریپت و PHP را جستجو کنید، زیرا هر دو پسوند فایل هدف رایج تزریق بدافزار هستند. برای تعیین محدوده جستجو، یک مقدار مثبت یا منفی به n محل مکان اضافه کنید.

به عنوان مثال، دستور SSH زیر هر فایل PHP را که سه روز پیش اضافه یا اصلاح شده را نشان می دهد:


find . -type f -name '*.php' -ctime -3

 

در مورد گزارش های دسترسی، کاربران پارسدو می توانند آنها را از طریق مشاهده لاگ در دکنترل پنل بررسی کنند. برای مشاهده لیست بازدیدهای وب سایت خود، زبانه Access logs را باز کنید. می توانید نتایج را بر اساس بازه زمانی انتخابی فیلتر کنید.

 

 

  1.  Symlinks را حذف کنید

Symbolic links یا symlinks  انواع فایل هایی هستند که به فایل یا دایرکتوری دیگری اشاره می کنند و به عنوان میانبر استفاده می‌شوند. در حالی که آنها چندین نقطه دسترسی را ارائه می دهند، هکرها می توانند از آنها برای راه اندازی حملات سیملینک و دسترسی به دایرکتوری root سوء استفاده کنند.

این دستور را از طریق SSH اجرا کنید تا سیملینک ها را از فایل ها و دایرکتوری های خود باز کنید:


find . -type l -exec unlink {} \;

 

  1. بازنشانی مجوزهای فایل و پوشه


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

تنظیمات مجوزهای فایل باید از طریق داشبورد حساب میزبانی شما قابل دسترسی باشد. کاربران پارسدو می توانند از طریق کنترل پنلدایرکت ادمین یا سی پنل  به آنها دسترسی داشته باشند. پس از علامت زدن چک‌باکس، روی Execute کلیک کنید تا همه مجوزهای فایل به مقادیر پیش‌فرض  644 برای فایل‌ها و 755 برای پوشه‌ها تنظیم شوند.

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

 

  1.  کامپیوتر خود را با نرم افزار آنتی ویروس اسکن کنید


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

در اینجا برخی از بهترین راه حل های آنتی ویروس که دارای ویژگی اسکن بدافزار هستند آورده شده است:

 

  • McAfee
  • ESET
  • Norton Antivirus
  • Bitdefender

 

مرحله 2. فایل های هسته وردپرس را مجددا نصب کنید


پس از انجام پیش نیازها، نوبت به نصب مجدد وردپرس می رسد. اگر همچنان به داشبورد وردپرس خود دسترسی دارید، به قسمت Updates رفته و روی دکمه Re-Install Now کلیک کنید.
در غیر این صورت، می توانید از یک  کلاینت FTP برای نصب مجدد فایل‌های هسته وردپرس به صورت دستی استفاده کنید.

 

نصب وردپرس به جای سایت آلوده

کلیه‌ی اطلاعات یک سایت شامل فایل‌هایی که در File manager و دیتابیس است، می‌باشد. برای پاکسازی باید سراغ فایل‌هایی که موجود در File manager است برویم. برای این‌ کار باید به از مسیر  FileManager » /domains/yourdomain ابتدا پوشه public_html را به public_html2 تغییر نام می‌دهیم. و یک پوشه public_html جدید درست می‌کنیم.

در این مرحله آخرین نسخه سیستم مدیریت محتوای  را از سایت اصلی آن دانلود کرده و public_html ریخته و بعد از unzip کردن نصب کنید. ( برای مثال اگر از سیستم مدیریت محتوای وردپرس استفاده می‌کردید باید یک وردپرس خام را از سایت مربوطه دانلود و نصب کنید.)

در این مرحله باید دیتابیس را به پرتال تازه‌ای که در پوشه public_html نصب کردید متصل کنید. مقادیر زیر را که در پرتال‌های مختلف در فایل‌های متفاوتی قرار دارد را باید پر کنید.

حالا فایل‌های مورد نیازتان را می‌توانید از public_html2 به public_html انتقال دهید توجه داشته باشید که هیچوقت پوشه plugins یا theme هایی که از سایت‌های نامطمئن دانلود کرده‌اید را انتقال ندهید چون دوباره امکان اینکه هاست شما آلوده شود وجود دارد. پوشه uploads و اطلاعاتی که از سالم بودن آن اطمینان دارید را انتقال دهید.


 

مرحله 3. مقایسه وردپرس آلوده با وردپرس تمیز 

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

آموزش کار با FTP و نرم افزار Filezilla
برای آشنایی با نرم افزار مدیریت FTP فایل‌زیلا و درک بهتر مقایسه دایرکتوری‌ها به کمک آن پیشنهاد می‌کنم این مقاله را مطالعه نمائید

به فایل های جاوا اسکریپت و PHP توجه زیادی داشته باشید زیرا میزبانی ایده آل برای بدافزارها هستند. سپس، به تعداد مورد نیاز فایلهای تمیز وردپرس را در وب سایت آپلود کرده و به طور دوره ای بررسی کنید که آیا سایت به درستی کار می کند یا خیر.

همچنین می‌توانید  از دستور diff در SSH برای مقایسه پوشه‌های آلوده و تمیز استفاده کنید:

 

diff -r wordpress-clean/ wordpress-infected/ -x wp-content

 

مراقب هر فایلی باشید که به تازگی ویرایش یا اضافه شده است.
 

 

مرحله 4. فایل های PHP را از Uploads پاک کنید


از آنجایی که فایل‌های PHP مخرب ممکن است دلیل هک شدن سایت شما باشند، حذف فایل‌های PHP از پوشه Uploads یک مرحله ضروری از فرایند پاک‌سازی وب‌سایت وردپرس به خطر افتاده است.

می توانید این کار را به صورت دستی از طریق یک کلاینت FTP با قرار دادن Uploads در پوشه wp-content انجام دهید. اکثر کلاینت‌های FTP مانند FileZilla یک عملکرد فیلتر ارائه می دهند که این فرایند را آسان می کند. راه دیگر برای انجام آن استفاده از دستور find در SSH است:

find . -name "*.php"
 

 

مرحله 5. به دنبال درهای پشتی در فایل های خود بگردید


هکرها ممکن است درهای پشتی را در فایل‌ها تعبیه کنند تا آسیب‌پذیری‌های امنیتی در سایت وردپرس ایجاد نمایند، بنابراین مهم است که فایل‌های هک شده‌ای را که حامل آن‌ها هستند حذف کنید.
Backdoor ها اغلب شبیه فایل های اصلی وردپرس هستند. wp-config.php و فایل‌های موجود در پلاگین‌ها، تم‌ها و پوشه‌های آپلود، محبوب‌ترین اهداف تزریق backdoors هستند.

برای شناسایی درهای پشتی احتمالی، فایل های خود را برای این توابع PHP بررسی کنید:

  • base64
  • exec
  • move_uploaded_file
  • str_rot13
  • gzuncompress
  • eval
  • stripslashes
  • system
  • assert
  • preg_replace (with /e/)

 

از دستور SSH زیر برای شناسایی فایل های هک شده در دایرکتوریهای خود استفاده کنید:

 

find . -type f -name '*.php' | xargs egrep -i "(mail|fsockopen|pfsockopen|stream\_socket\_client|exec|system|passthru|eval|base64_decode) *("


دستور زیر فایل های تصویری با توابع Backdoor را پیدا می کند:


find wp-content/uploads -type f -iname '*.jpg' | xargs grep -i php

 

در نهایت، از دستور زیر برای یافتن iframe های آلوده استفاده کنید:


find . -type f -name '*.php'| grep -i '

 

نکته مهم! برخی از افزونه‌ها از این توابع در عملیات خود استفاده می کنند، بنابراین مطمئن شوید که تغییرات ایجاد شده را آزمایش کنید. توصیه می‌کنیم فایل‌های افزونه اصلی را دانلود کنید و کد آن‌ها را با فایل‌هایی که از سایت هک شده دانلود کرده‌اید مقایسه کنید تا از حذف توابع ضروری جلوگیری کنید.


 

مرحله 6. فایل پایگاه داده SQL را بررسی کنید

 


پایگاه داده شما از تزریق بدافزار مصون نیست. پس از اطمینان از تمیز بودن فایلهای هسته و محتوای وردپرس، قدم بعدی این است که نگاه دقیق‌تری به پایگاه داده (دیتابیس) بیندازید.
ابتدا پایگاه داده MySQL خود را به عنوان یک فایل پشتیبان .sql با phpMyAdmin اکسپورت کرده و با استفاده از یک ویرایشگر متن مانند Sublime، فایل را برای محتوای مخرب بررسی کنید. ورودی های مشکوک را از فایل پشتیبان پایگاه داده خود حذف نکنید. در عوض، مکان آنها را یادداشت کنید و به مرحله بعدی بروید.
 

 

مرحله 7. کد هر برگه و نوشته را مرور کنید


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

 

مرحله 8. وب سایت خود را از لیست های مسدود کننده URL حذف کنید

 

در این مرحله، سایت وردپرس شما باید عاری از کدهای مخرب باشد. تنها کاری که باید انجام دهید این است که URL وب سایت خود را از لیست سیاه Google حذف کنید.

می توانید این کار را از طریق کنسول جستجوی گوگل انجام دهید. به داشبورد مدیریت خود بروید و گزینه Security & Manual Actions -> Security Problems را باز کنید. I have fixed these troubles -> Request a review را انتخاب کنید تا گوگل سایت وردپرس شما را بازبینی و دوباره ایندکس کند.
به خاطر داشته باشید که Google ممکن است چند روز طول بکشد تا درخواست blocklist removal را پردازش کند.

وب سایت خود را تأیید کنید نحوه افزودن دامنه به کنسول جستجوی گوگل را بررسی کنید تا مالکیت وب سایت خود را تأیید کرده و درخواست بررسی کنید.

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

ارسال ایمیل اسپم از طریق اسکریپت در دایرکت ادمین


یکی از روش‌های تشخیص آلودگی در سایت دریافت پیام در بخش Massage system کنترل پنل است
به پیام‌هایی که در قسمت Massage system دریافت می‌کنید بی توجه نباشید. معمولا وقتی که هاست آلوده می‌شود و ایمیل Spam ارسال می‌کند در قسمت massage system پیام داده می‌شود در داخل این پیغام ها مسیر فایل های آلوده ای که منجربه ارسال اسپم کرده اند مشخص است.

نکته : راهکارهای مبتنی بر SSH در این مقاله برای کاربران هاست اشتراکی قابل استفاده نیست و ویژه کاربران سرور با دسترسی SSH خواهد بود