آموزش گامبهگام بازیابی سایت هکشده؛ از قرنطینه تا بازگشت امن
ایمیل ساعت یازده شب میرسد: هشدار مرورگر میگوید سایت شما «خطرناک» است، مشتری تلفنی میپرسد چرا صفحهٔ محصول به سایت دیگری ریدایرکت میشود و در فهرست کاربران ادمین، نامی را میبینید که خودتان نساختهاید. این دقیقاً همان لحظهای است که تصمیمهای عجولانه گران تمام میشوند؛ کاربر فایل مشکوک را حذف میکند، سایت را دوباره بالا میآورد و دو روز بعد همان نشانهها سر جایشان نشستهاند.
این راهنما مسیر خنثی و ترتیبدار را باز میکند: هر گام چه ورودی میخواهد، چه خروجی میدهد و کدام اشتباه رایج همانجا پیش میآید. چارچوب از تجربهٔ پاکسازی سایتهای وردپرس ایرانی جمع شده و برای تیمهای دونفره تا تیمهای بزرگتر قابل اجراست؛ چیزی که وعده نمیکنیم میانبُر بیدردسر است، چون هر هک داستان دسترسی و پیکربندی خودش را دارد.
بازیابی سایت هک شده؛ چهار فاز در هفت گام
چهار فاز بازیابی، ترتیبی دارد که بهخودیخود معنادار است. قرنطینه یعنی آسیب از اینجا به بعد پخش نشود؛ پاکسازی یعنی کد و دسترسیِ بیگانه از محیط حذف شود؛ بازگردانی یعنی سایت تمیز روی زیرساخت سالم دوباره بالا بیاید؛ و مقاومسازی یعنی همان مسیری که مهاجم استفاده کرد، بسته شود. اگر ترتیب را بشکنید، هر فاز کار فاز قبلی را خراب میکند: پاکسازی بدون قرنطینه یعنی نشت ادامه دارد، بازگردانی بدون پاکسازی یعنی هک فردا برمیگردد و مقاومسازیِ حذفشده یعنی قبض بعدی سنگینتر است.
هر فاز به یک یا چند گام تقسیم میشود و هر گام یک خروجی مشخص دارد که باید قبل از رفتن به گام بعدی ثبت شود. اگر بکاپ سالم و دسترسیهای مرتب داشته باشید، هفت گام در یک روز قابل اجراست؛ بدون آنها مسیر به چند روز و گاهی چند هفته کشیده میشود، ولی ترتیب تغییری نمیکند.
| فاز | گامها | خروجی کلیدی |
|---|---|---|
| قرنطینه و ارزیابی | ۱ تا ۳ | آسیب مهار شده، شواهد کامل، دامنهٔ نفوذ مشخص |
| پاکسازی | ۴ و ۵ | فایل و دیتابیس بدون کد و دسترسی بیگانه |
| بازگردانی | ۶ | سایت تمیز روی زیرساخت سالم و تستشده |
| مقاومسازی | ۷ | بستن مسیر تکرار هک و پایش دائمی |
ترتیب فازها خط تولید بازیابی است؛ جابهجایی آنها رایجترین علت برگشت هک است.
گامهای ۱ تا ۳؛ قرنطینه و ارزیابی آسیب

گام یک، قرنطینه است. سایت را به حالت نگهداری ببرید و اگر نشانهها به بازدیدکننده آسیب میرساند — مثل ریدایرکت به صفحهٔ فیشینگ یا تزریق صفحهٔ جعلی — آفلاینکردن موقت را نترسید؛ اعتبار سایت از چند ساعت خاموشی گرانتر است. در همین گام، همهٔ رمزها را عوض کنید اما از بیرون: پنل هاست، پنل دامنه، ایمیل مدیر و سرویسهای جانبی. رمزی که از داخل فایلهای آلوده عوض شود، مثل کلیدی است که مهاجم از جیب شما درآورده و شما جلوی چشمش کپی میکنید.
گام دو، حفظ شواهد است: یک نسخهٔ کامل از فایلها، دیتابیس و لاگهای دسترسی را دانلود کنید و تاریخهای مهم را یادداشت کنید؛ آخرین ورودهای موفق، فایلهایی که تاریخ ساخت تازه دارند و صفحاتی که بهتازگی ساخته شدهاند. این نسخه «نسخهٔ آلوده» است؛ برچسب بزنید و برای بازگردانی استفادهاش نکنید. شواهد بعداً برای فهمیدن مسیر نفوذ و برای گفتوگو با پشتیبانی هاست به کار میآید.
گام سه، ارزیابی آسیب است با سه پرسش: چه نوع آلودگیای داریم — تزریق کد، اسپم سئو، ریدایرکت یا صفحههای ساختهشده؟ کدام دسترسیها لو رفتهاند — FTP، پنل هاست، ادمین وردپرس، کلیدهای API؟ و نفوذ از چه زمانی نشانه دارد؟ پاسخ این سه پرسش، عمق پاکسازی را تعیین میکند؛ بدون آن پاکسازی حدس میشود و حدس در امنیت گرانترین روش کار است.
گامهای ۴ و ۵؛ پاکسازی فایلها و دیتابیس
گام چهارم پاکسازی فایلهاست. هستهٔ وردپرس را با نسخهٔ رسمی همان نسخه مقایسه کنید؛ هر فایل ناآشنا یا با تاریخ تازه در ریشهٔ سایت و پوشههای هسته، مشتاق بررسی است. قالب و افزونهها را از منبع اصلی دوباره بگیرید بهجای ترمیم نسخهٔ آلوده، و پوشهٔ آپلودها را برای فایلهای اجرایی بگردید؛ محل قانونی عکسها نیست که فایل PHP در آن زندگی کند. به تجربهٔ ما بخش بزرگی از هکهای تکرارشونده از همین پوشه دوباره سبز میشوند، چون پاکسازی فایلهای هسته انجام شده ولی بذر داخل آپلودها مانده است.
گام پنجم دیتابیس است: کاربران ادمین ناشناس را حذف کنید، جدولهای نوشتهها و تنظیمات را برای اسکریپت، iframe و لینک بیگانه مرور کنید و وظایف زمانبندیشده را بازبینی کنید؛ کاری که مهاجم در دیتابیس میکند معمولاً کمسروصدا ولی ماندگار است. ابزارهای اسکنر در این مرحله دستیارند نه قاضی؛ خروجیشان را با چشم راستیآزمایی کنید، چون هم نتیجهٔ کاذب میدهند و هم چیزی را از قلم میاندازند.
اگر در میانهٔ پاکسازی مطمئن نیستید یک فایل آلوده است یا نه، آن را با نسخهٔ رسمی همان فایل مقایسه کنید یا موقتاً کنار بگذارید و رفتار سایت را ببینید. حذف سراسری بدون فهم ساختار، سایت را خودش از کار میاندازد و شما را در نیمهٔ راه بازیابی، با دو بحران همزمان تنها میگذارد.
گام ۶؛ بازگردانی نسخهٔ تمیز
بازگردانی ترتیب دارد: اول هستهٔ تازه از منبع رسمی، بعد قالب و افزونهها از منبع اصلی، بعد محتوای پاکسازیشده. اگر بکاپ پیش از هک دارید، نسخهٔ تمیز از همان میآید — به شرطی که تاریخ آن قبل از نخستین نشانهٔ نفوذ باشد؛ بکاپی که بعد از هک گرفته شده همان دام است با ظاهر سالم. قبل از بالا آوردن عمومی، روی محیط آزمایشی باز کنید، صفحات کلیدی را بچرخید و فرمها و پرداخت را تست کنید.
در همین گام، چرخهٔ دسترسی را هم نو کنید: کلیدهای API سرویسهایی که به سایت وصل بودند، رمز دیتابیس و کلیدهای ذخیرهشده در فایل پیکربندی. مهاجمی که یکبار دسترسی داشت، معمولاً چند درب پشتی کار گذاشته؛ بازگردانی فایلها بدون چرخش کلیدها یعنی نصف کار تمام است. صادقانه هم بگوییم: اگر بکاپ سالم ندارید، این گام به پاکسازی دستی کامل گره میخورد و زمان بیشتری میبرد؛ همانجاست که ارزش روتین بکاپ، بعد از حادثه فهمیده میشود.
گام ۷؛ مقاومسازی برای جلوگیری از تکرار

مقاومسازی همان بخشی است که «اینبار» را به «دیگر» تبدیل میکند. بهروزرسانی منظم هسته، قالب و افزونهها را به تقویم ببندید نه به حال گارد؛ ورود دومرحلهای برای همهٔ کاربران مدیر، دسترسی حداقلی برای هر نقش و محدودسازی تلاش ورود را فعال کنید. بکاپ را بیرون از سایت نگه دارید و بازگردانی آن را تمرین کنید؛ بکاپی که بازگردانیاش تمرین نشده، امید است نه پشتیبان. و پایش تغییر فایلها را روشن بگذارید تا تغییر ناآشنا، پیش از هشدار گوگل دیده شود.
اگر سرویس مدیریتشده استفاده میکنید، از لایههای امنیتیاش بهصورت مشخص بپرسید: رمزنگاری ارتباطها، سیاست دسترسی و تستهای منظم. در سوئیت، این لایه امنیت سازمانی با HMAC-SHA256، AES-256 و بیش از ۹۰۰ تست خودکار پشتیبانی میشود؛ اما همینجا صادقانه بگوییم: هیچ فناوریای بیتوجهی روزمره به بهروزرسانی و دسترسیها را جبران نمیکند. امنیت ترکیب سه چیز است: پیکربندی درست، عادت منظم و پایش؛ و حذف هر کدام، دو تای دیگر را ناکارا میکند.
بعد از بازگشت؛ پایش و اثبات سلامت
بازگشت به هوا پایان کار نیست؛ اثبات سلامت است. سه هفتهٔ اول را پایش کنید: دسترسپذیری، هشدار تغییر فایل، ورودهای ناموفق پشتسرهم و رفتار صفحات در سرچکنسول. اگر گوگل برای سایت شما هشدار امنیتی نمایش میداد، بعد از پاکسازی کامل در بخش مشکلات امنیتی سرچکنسول درخواست بازبینی بدهید و صبور باشید؛ زمان بازبینی دست گوگل است و ما عدد دقیقی وعده نمیدهیم. آنچه در اختیار شماست، اثبات پاکسازی کامل و پایداری پایش است.
گزارش کوتاه حادثه هم بنویسید: نشانهها از کی شروع شد، مسیر نفوذ چه بود، چه چیزی پاک شد و کدام قاعدهٔ جدید اضافه شد. سه ماه بعد همین گزارش است که میگوید مقاومسازی کجا جواب داده و کجا سوراخ مانده؛ و اگر روزی تیم یا سرویسدهنده عوض شد، همین سند حافظهٔ سازمانی سایت شماست.
جمعبندی
بازیابی در چهار فاز و هفت گام خلاصه میشود: قرنطینه و ارزیابی، پاکسازی فایل و دیتابیس، بازگردانی نسخهٔ تمیز و مقاومسازی با پایش دائمی. سختترین قدم، قدم اول است؛ نه از نظر فنی، از نظر آرامش: تا قرنطینه کامل نشده هیچ چیز را بازگردانی و هیچ چیز را حذف نکنید. اگر این اتفاق برای دامنهٔ شما افتاده و میخواهید وضعیت فنی و ساختاریاش از یک چشم بیرونی بررسی شود، ممیزی رایگان دامنه نقطهٔ شروع کمریسکی است؛ مسائل امنیت و پشتیبانگیری را در هاب امنیت و پشتیبانگیری و لایهٔ امنیتی پلتفرم را در صفحهٔ امنیت سوئیت نوشتهایم.
رصد ما، رشد شما.
سؤالات پرتکرار
اولین اقدام بعد از فهمیدن هک چیست؟
قرنطینه: سایت را به حالت نگهداری ببرید، همهٔ رمزها را از بیرون (پنل هاست و دامنه) عوض کنید و نسخهٔ کامل فعلی را بهعنوان شواهد دانلود کنید؛ هنوز چیزی حذف یا بازگردانی نکنید.
اگر بکاپ سالم نداشته باشیم چه میشود؟
مسیر طولانیتر پاکسازی دستی است: مقایسهٔ هسته با نسخهٔ رسمی، نصب مجدد قالب و افزونهها از منبع اصلی و مرور کامل دیتابیس؛ به تجربهٔ ما زمانبرتر است و مقاومسازی کامل بعدش اجتنابناپذیر.
بازیابی معمولاً چقدر طول میکشد؟
به تجربهٔ ما سایتهای کوچک وردپرسی با بکاپ پیش از هک در یکی دو روز به بازگشت میرسند؛ پاکسازی دستی بدون بکاپ ممکن است چند روز تا چند هفته طول بکشد.
هشدار «سایت خطرناک است» گوگل کی برداشته میشود؟
بعد از پاکسازی کامل، در بخش مشکلات امنیتی سرچکنسول درخواست بازبینی بدهید؛ زمان بازبینی دست گوگل است و ما عدد دقیق وعده نمیدهیم.
چطور جلوی تکرار هک را بگیرم؟
بهروزرسانی منظم، ورود دومرحلهای، دسترسی حداقلی، بکاپ بیرونسایت با بازگردانی تستشده و پایش تغییر فایلها؛ همین پنج عادت بیشترین سهم را در تکرارنشدن هک دارند.