هکرها همواره به دنبال راهی جدید برای جلوگیری از شناسایی شدن هستند. متخصصین امنیتی نیز به صورت مداوم با کدهای مبهم یا همان obfuscated code جدیدی روبرو میشوند. تشخیص کدهای obfuscated و عملی که انجام میدهند، با پیشرفت ترفندهای هکرها، سخت تر میگردد. کدهای obfuscated میتوانند شکلهای مختلفی به خود بگیرند. هکرها با بهرهگیری از الگوریتمهای پیچیده برای ایجاد این نوع کدها، تشخیص ماهیت و عملکرد آنها را بسیار دشوار کرده اند. بسیاری از ویروسهای رایج، تحت الگوریتم base64 کد شده اند.
تصویر(1)
یکی از مشکلاتی که در سایتهای وردپرسی افزایش یافته است، ریدایرکت به سایتی دیگر با مضمون "Click allow if you are not a robot" میباشد. طبق مطالعات صورت گرفته توسط متخصصین حوزه امنیت سایبری، هکرها با تزریق توابع مختلف به افزونههای وردپرس، اقدام به پیاده سازی این ریدایرکت ناخواسته وردپرس میکنند. این توابع، توسط الگوریتم hex2dec عمل رمزگشایی را برای محتوای فراخوانی شده از یک فایل دیگر، انجام میدهند. فایل موردنظر حاوی محتوای ویروسی میباشد که توسط الگوریتم hex2dec کد شده است. نتیجه این نفوذ، ریدایرکت ناخواسته وبسایتها به آدرس جدید با محتوای "Click allow if you are not a robot" خواهد بود. این ریدایرکت به محض کلیک روی هر یک از عناصر موجود در سایت، اتفاق میافتد.
ریدایرکت ناخواسته وردپرس
اگر با کلیک روی هر یک از بخشهای سایت، ریدایرکتی به صفحه جدید با محتوای "تایید هویت" رخ دهد، به احتمال زیاد آن سایت ویروسی شده است. این ریدایرکت ناخواسته وردپرس معمولا به صفحاتی با محتوای "Click allow if you are not a robot"، از کاربران تاییدهای اضافی دریافت میکنند.
تصویر(2)
اگر IP سایتهای مقصد مورد بررسی قرار گیرند معمولا مشاهده میشود که آنها زیر مجموعه سایتهای غیر اخلاقی هستند. این ریدایرکت ناخواسته وردپرس توسط کدهای جاوا اسکریپتی انجام میشود که به صورت تصادفی در یکی از افزونههای وردپرسی، تزریق شده است.
تزریق کد جاوا اسکریپت مخرب به افزونه های وردپرس
بررسی افزونههای سایتهای آلوده به ریدایرکت نشان میدهد که اکثر آنها توابع موجود در تصویر را درون کدهای خود دارند:
تصویر(3)
این قطعه کد، پس از فراخوانی محتوای فایلی به نام inc.tmp_، آن را کدگشایی نموده و سپس نتیجه را به سربرگ (header) صفحات وردپرس میافزاید. برای دستیابی به این هدف، کد ذکر شده تابعی با نام get_hex_cache را به هوک wp_head اضافه میکند. حتی اگر چند افزونه همزمان آلوده باشند، این هوک صرفا یک بار اجرا میشود. معمولا این بدافزار برای مدیران سایت اجرا نمی گردد. جهت آشنایی بیشتر با وب هوکهای وردپرس، میتوانید مقاله "Webhook یا وب هوک چیست و چگونه کار میکند؟" را مطالعه نمایید. محتوای فایل inc.tmp_ می تواند شبیه به تصویر زیر باشد:
تصویر(4)
این محتوا در واقع یک رشته کد باینری میباشد که به صورت هگزادسیمال رمزنگاری شده است. تابع get_hex_cache نیز "3c7" را به ابتدای این رشته کد اضافه کرده و سپس توسط تابع پیش فرض PHP با نام hex2bin، آن را رمزگشایی میکند. نتیجه رمزگشایی، یک تگ <script> است که حاوی کد obfuscated جاوا اسکریپت میباشد. این کد نیز با قرار گیری در header وردپرس، عملا به تمام صفحات وردپرس تزریق میشود. کد تزریق شده، مشابه تصویر(5) خواهد بود:
تصویر(5)
کد جاوا اسکریپت آلوده، با تابع "=function _0x18b4(){const _0x188f70" شروع میشود. این قطعه کد دارای ویژگی "data-group="lists است. آمار موجود در سایت PublicWWW نشان میدهد که در زمان نوشته شدن این مقاله تعداد زیادی از سایت ها با این آلودگی شناسایی شده اند. علاوه بر این، اسکریپت آلوده یک listener (هر کد php قابل اجرایی می باشد که منتظر یک رویداد است) به رویداد onclick سایت اضافه میکند. در این صورت با کلیک کاربر روی هر لینکی در سایت، ریدایرکت ناخواسته وردپرس به سایتهای خطرناک اتفاق میافتد.
جلوگیری از شناسایی شدن توسط ابزارهای dev
این بدافزار، به صورت هوشمندانه ای خود را از دید وبمسترها دور نگه میدارد. اگر "ابزار توسعه دهنده" یا همان Developer Tools مرورگر بازدیدکننده فعال باشد این کد ویروسی اجرا نمیشود. این عمل در بدافزار معروف MageCart دیده شده است اما هکرها روش شناسایی dev tools را در بدافزارهای جدید، بهینه و پیچیده تر کردهاند. این بدافزار از توابع زیر برای شناسایی فعال بودن Developer Tools استفاده میکند:
- checkByImageMethod
- checkDevByScreenResize
- detectDevByKeyboard
- checkByFirebugMethod
- checkByProfileMethod
وقتی که بدافزار متوجه شود که Developer Tools مرورگر فعال است، از انجام ریدایرکت خودداری میکند تا شناسایی نگردد.
تصویر(6)
جمع بندی: چگونه از بروز این هک جلوگیری شود
obfuscation موجب میشود تا شناسایی فایل آلوده و پی بردن به عملکرد آن بسیار دشوار گردد. خوشبختانه ابزارهای رایگان و پولی مختلفی در سطح اینترنت وجود دارند که میتوانند به مانیتور و تشخیص محل وقوع مشکل و حذف کدهای آلوده کمک نمایند. از روشهای رایج برای جلوگیری و رفع این نوع آلودگیها می توان به موارد زیر اشاره کرد:
- اسکن بدافزار را به صورت دوره ای انجام داده و وضعیت سایت را در دو حالت ادمین و کاربر معمولی، رصد کنید.
- به محض انتشار آپدیتها و پچهای نرم افزاری افزونه ها، قالب ها و هسته وردپرس، اقدام به نصب آنها نمایید.
- از فایروالهای تحت وب برای بررسی سایت استفاده کنید. این فایروالها نقصهای امنیتی شناخته شده را توسط پچهای امنیتی، پوشش میدهند. همچنین میتوانند رباتهای مخرب را شناسایی و مسدود کرده و از حملات BRUTE FORCE جلوگیری نمایند.
- با محدود کردن دسترسی به صفحات مدیریت و استفاده از رمز عبور قوی و خاص برای تمامی حسابهای کاربری موجود، میتوان وب سایتها را از نظر امنیتی تقویت کرد.
- از file integrity monitoring یا "نظارت بر یکپارچگی فایل" استفاده شود تا هرگونه تغییر در فایلها مورد بررسی قرار گیرد. این ابزار در افزونه های امنیتی که برای وردپرس ارائه شده است موجود می باشد.
در نهایت اگر به تازگی با این مشکل روبرو شدهاید، میتوانید اقدام به بازگردانی بکاپ سایت خود نمایید تا موقتا از اجرای ریدایرکت ناخواسته وردپرس جلوگیری گردد.