پیکوسیستم خدمات فنی IT

علائم هک شدن سایت: نشانه ها، بررسی سریع و اولین کارها بعد از هک

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

علائم هک شدن سایت: نشانه ها، بررسی سریع و اولین کارها بعد از هک

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

تمرکز این مطلب روی وردپرس است، چون بیشترین سهم سایت های هک شده ای که بررسی می شوند وردپرسی هستند. اما بیشتر نشانه ها و قدم ها برای هر سایت PHP دیگری هم صدق می کند.

علائم هک شدن سایت از دید بازدیدکننده

  • ریدایرکت به سایت ناشناس: بعضی کدهای مخرب فقط کاربرانی را که از گوگل یا با موبایل وارد می شوند منتقل می کنند. پس اگر خودتان با تایپ مستقیم آدرس مشکلی نمی بینید، دلیل سالم بودن سایت نیست.
  • هشدار مرورگر: پیام قرمز «Deceptive site ahead» یا «Dangerous site» در کروم و فایرفاکس یعنی سایت در فهرست Google Safe Browsing قرار گرفته است.
  • پاپ آپ و تبلیغ ناخواسته: پنجره ها و لینک هایی که شما اضافه نکرده اید.
  • دانلود خودکار فایل یا درخواست نصب افزونه مرورگر.
  • کندی ناگهانی بدون تغییر در محتوا یا ترافیک واقعی. اسکریپت های ماینر یا ارسال انبوه ایمیل منابع را مصرف می کنند.

نشانه ها در گوگل و سرچ کنسول

یکی از سریع ترین راه های بررسی، جست و جوی site:example.com در گوگل است. اگر صفحاتی با عنوان های ژاپنی، چینی، تبلیغات دارو، شرط بندی یا فروش کالای تقلبی می بینید که شما نساخته اید، سایت به احتمال زیاد درگیر هک اسپم سئو شده است. این نوع آلودگی معمولا از دید مدیر سایت پنهان می ماند چون صفحات در منوی سایت نیستند.

در Google Search Console گزارش Security issues و گزارش Manual actions را باز کنید. اگر گوگل بدافزار یا محتوای هک شده تشخیص داده باشد، همین جا نمونه آدرس ها را نشان می دهد. افزایش ناگهانی تعداد صفحات ایندکس شده در گزارش Pages هم نشانه قابل توجهی است.

نشانه ها در پیشخوان وردپرس و هاست

  • کاربر مدیر (Administrator) ناشناس در بخش کاربران، یا کاربری که نقشش بی دلیل تغییر کرده است.
  • افزونه یا قالبی که نصب نکرده اید، یا افزونه ای که در فهرست دیده نمی شود ولی فایلش روی هاست هست.
  • تغییر ایمیل مدیر سایت یا آدرس سایت در تنظیمات.
  • ایمیل از شرکت هاستینگ درباره ارسال اسپم، مصرف غیرعادی منابع یا مسدود شدن حساب.
  • برگشت خوردن ایمیل های سازمانی چون IP سرور در لیست سیاه قرار گرفته است.
  • فایل های PHP در پوشه wp-content/uploads، که در حالت عادی باید فقط تصویر و فایل رسانه ای داشته باشد.
  • تغییر در فایل .htaccess یا wp-config.php بدون اینکه کسی از تیم شما کاری کرده باشد.
  • کرون جاب ناشناس در کنترل پنل هاست یا خروجی crontab -l.

چطور متوجه شویم سایت هک شده است؟ بررسی سریع با دسترسی SSH

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

1. مقایسه فایل های هسته و افزونه ها با نسخه رسمی

WP-CLI می تواند فایل های هسته وردپرس و افزونه های مخزن رسمی را با checksum منتشرشده مقایسه کند:

wp core verify-checksums
wp plugin verify-checksums --all

هر فایل تغییر یافته یا فایل اضافه ای که در هسته پیدا شود مشکوک است. توجه کنید افزونه های تجاری که از مخزن wordpress.org نیامده اند با این روش بررسی نمی شوند.

2. فایل های PHP در پوشه آپلود و فایل های تازه تغییر یافته

find wp-content/uploads -type f -name "*.php"
find . -type f -name "*.php" -mtime -10 -printf "%TY-%Tm-%Td %p\n" | sort

تاریخ تغییر فایل قابل جعل است، پس نبودن نتیجه به معنی سالم بودن نیست. ولی اگر نتیجه ای دیدید، بازه زمانی نفوذ را هم تخمین زده اید.

3. جست و جوی الگوهای رایج کد مخرب

grep -rlE --include="*.php" "eval\(base64_decode|gzinflate\(base64_decode|str_rot13\(|assert\(\\\$_(POST|GET|REQUEST)" .

بعضی افزونه های سالم هم از این توابع استفاده می کنند، پس هر نتیجه را باز کنید و ببینید کد به چه منظوری آنجاست.

4. کاربران مدیر و لاگ دسترسی

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
grep "POST" /path/to/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -30

درخواست های POST به فایل هایی با نام عجیب یا به فایل هایی داخل uploads، اغلب همان درِ پشتی (backdoor) است که مهاجم از آن استفاده می کند.

اولین کارها پس از هک شدن سایت

ترتیب کارها مهم است. کار عجولانه مثل پاک کردن همه فایل ها یا بازگرداندن فوری بکاپ ممکن است مشکل را پنهان کند ولی راه نفوذ را باز بگذارد.

  1. از وضعیت فعلی نسخه کامل بگیرید. فایل ها، دیتابیس و لاگ های وب سرور را قبل از هر تغییری کپی کنید و جدا نگه دارید. این نسخه برای پیدا کردن راه نفوذ لازم است.
  2. آسیب را محدود کنید. سایت را در حالت تعمیر قرار دهید یا دسترسی عمومی را موقتا ببندید، به خصوص اگر بازدیدکنندگان به سایت آلوده منتقل می شوند یا فرم پرداخت دارید.
  3. رمزها را از یک دستگاه سالم عوض کنید. کنترل پنل هاست، FTP و SSH، کاربر دیتابیس، همه کاربران مدیر وردپرس و ایمیل مدیر. اگر کامپیوتر خودتان آلوده باشد، رمز جدید هم لو می رود.
  4. کلیدهای امنیتی وردپرس را تعویض کنید تا همه نشست های فعال باطل شوند: wp config shuffle-salts
  5. هسته وردپرس را از منبع رسمی جایگزین کنید و افزونه ها و قالب ها را از منبع اصلی دوباره نصب کنید. قالب و افزونه نال شده (کرک شده) را حذف کنید؛ این نسخه ها از رایج ترین مسیرهای آلودگی هستند.
  6. دیتابیس را بررسی کنید: جدول کاربران، مقادیر siteurl و home در جدول options، و اسکریپت های تزریق شده در محتوای نوشته ها.
  7. راه نفوذ را پیدا کنید. افزونه آسیب پذیر، رمز ضعیف، حساب FTP قدیمی یا سایت آلوده دیگری روی همان هاست. بدون این مرحله، پاکسازی موقتی است.
  8. پس از اطمینان از پاک بودن، در Search Console درخواست بررسی مجدد (Request review) بدهید.

آیا بازگرداندن بکاپ کافی است؟

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

کارهایی که بعد از هک نباید انجام داد

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

چک لیست پیشگیری بعد از پاکسازی

اقدام چطور
به روزرسانی منظم هسته، افزونه ها، قالب و نسخه PHP؛ حذف افزونه های بلااستفاده
جلوگیری از ویرایش فایل از پیشخوان افزودن define('DISALLOW_FILE_EDIT', true); به wp-config.php
بستن اجرای PHP در uploads قاعده وب سرور (نمونه پایین)
ورود امن رمز قوی، ورود دومرحله ای برای مدیران، محدود کردن تلاش ناموفق
دسترسی حداقلی حذف کاربران قدیمی، استفاده از SFTP به جای FTP، کاربر دیتابیس مجزا برای هر سایت
بکاپ خارج از هاست نسخه های منظم در محلی جدا از سرور اصلی با چند نسخه قدیمی تر
پایش بررسی دوره ای Search Console و تغییرات فایل ها

برای بستن اجرای PHP در پوشه آپلود روی Apache یا LiteSpeed، یک فایل .htaccess داخل wp-content/uploads با این محتوا بسازید:

<FilesMatch "\.(php|phtml|phar)$">
    Require all denied
</FilesMatch>

در Nginx همین کار با یک location انجام می شود:

location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
    deny all;
}

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

کمک برای پاکسازی سایت هک شده

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

فوری

گزارش مشکل فوری

برای قطعی کامل، تماس تلفنی سریع ترین راه است. اگر نمی توانید تماس بگیرید، فرم را پر کنید تا با شما تماس بگیریم.

همین حالا تماس بگیرید 0900-000-0000
  1. 01تماس و گرفتن شرح مشکل.
  2. 02مهار آسیب و حفظ لاگ ها پیش از هر تغییری.
  3. 03رفع مشکل و گزارش علت و کارهای انجام شده.

اطلاعات شما فقط برای پاسخ به همین درخواست استفاده می شود.