مهاجمان دائماً راه های جدیدی برای مخفی کردن بدافزار خود و جلوگیری از شناسایی آنها پیدا می کنند. به هر حال، این همان کاری است که یک بدافزار حرفه ای باید انجام دهد. اخیراً مشاهده شده که مهاجمان از مقادیر زیادی یونیکد و همچنین پسوندهای عجیب و غریب برای backdoor های یونیکد در وردپرس استفاده میکنند تا بدافزار خود را پنهان کرده و یافتن و شناسایی آن را دشوارتر نمایند.
در این مقاله بررسی می شود که بدافزار ایجاد شده از روش RCE یا Remote code execution چه کاری انجام می دهد، ظاهر آن به چه صورت است و چگونه باید از وب سایت خود در برابر این بدافزار محافظت کنید.
تصویر(1)
یونیکد چیست؟
برای اینکه متوجه شوید چرا بدافزار ایجاد شده با روش RCE از یونیکد استفاده می کند، ابتدا باید یونیکد را به خوبی بشناسید. طبیعتا کامپیوتر و وب صرفا توسط انگلیسی زبانان با صفحه کلید انگلیسی به کار گرفته نمی شود و افراد زیادی در سراسر جهان که به زبان های مختلف صحبت می کنند، از آنها استفاده خواهند کرد. این زبانهای مختلف، از اسکریپتها، حروف و نمادهای متفاوتی برای ارائه کلمات بهره می برند. همچنین این زبانها باید در رایانهها قابل استفاده باشند تا افراد مختلف بتوانند در سراسر وب با هم ارتباط برقرار کنند.
تصویر(2)
به عبارت ساده تر، یونیکد سیستمی است که به هر کاراکتر یا نماد از تمام زبان های دنیا یک کد منحصر به فرد اختصاص می دهد تا در اینترنت قابل نمایش باشند. این قابلیت، افراد کشورها و فرهنگ های مختلف را قادر می سازد تا بدون موانع زبانی، با یکدیگر ارتباط برقرار کرده و اطلاعات را به اشتراک بگذارند.
علاوه بر این، یونیکد در فونت معروف WingDings نیز استفاده میشود که ابتدا توسط مایکروسافت در سال 1990 منتشر شد. بنابراین، علاوه بر تایپوگرافی بینالمللی، از یونیکد برای نمادهای سرگرمکننده و صورتکها نیز استفاده میشود.
تصویر(3)
در مثال زیر، برای نوشتن عبارت "!H︎e︎l︎l︎o︎ w︎o︎r︎l︎d︎" از فونت محبوب WingDings استفاده شده است:
☟︎♏︎●︎●︎□︎ ⬥︎□︎❒︎●︎♎︎✏︎
با تبدیل کاراکترهای فوق، عبارت !H︎e︎l︎l︎o︎ w︎o︎r︎l︎d︎ نمایش داده می شود. اکنون که مشخص شد یونیکد چیست، در ادامه نحوه سو استفاده از آن توسط دربهای پشتی مخرب در محیط های وردپرس، بررسی خواهد شد.
backdoor های یونیکد در وردپرس
اخیراً دربهای پشتی بسیار عجیبی در ساختار فایل های وردپرس آلوده، مشاهده شده است:
تصویر(4)
تمامی نمونه ها، دربهای پشتی متفاوتی داشتند. اگرچه محتوا، فرمت و کاراکترهای یونیکد در هر نمونه متفاوت بود اما در واقع شکل های مختلف بدافزاری بودند که کارشناسان امنیتی برای مدت زیادی به دنبال آن می گشتند. تنها تفاوت این نسخهها در کاراکترهای یونیکد می باشد.
تصویر(5)
در نگاه اول به نظر می رسید که این دربهای پشتی مجموعه ای از نمادهای یونیکد زیبا، عجیب و منحصر به فرد هستند که می تواند تشخیص آنها را بسیار دشوار کند.
تصویر(6)
آنها اغلب درون index.php و فایل های موجود در پوشه های اصلی وردپرس تزریق میشوند:
./wp-admin/network/network/index.php
./wp-includes/js/tinymce/themes/themes/index.php
./wp-admin/css/colors/coffee/coffee/index.php
./wp-admin/css/colors/blue/blue/index.php
./wp-admin/css/colors/ectoplasm/ectoplasm/index.php
./wp-includes/js/tinymce/utils/utils/index.php
./wp-admin/css/colors/midnight/midnight/index.php
./wp-admin/js/js/index.php
./wp-includes/blocks/gallery/gallery/index.php
./wp-includes/blocks/post-title/post-title/index.php
./wp-includes/blocks/page-list/page-list/index.php
./wp-includes/js/dist/dist/index.php
اگرچه مشاهده شده است که این کدهای مخرب درون دایرکتوری های جعلی و فایل های مربوط به افزونه ها نیز قرار می گیرند. مانند نمونه های زیر:
./licenses/licenses/licenses/licenses/index.php
./licenses/licenses/licenses/index.php
./tmp/tmp/tmp/tmp/tmp/tmp/index.php
./tmp/tmp/tmp/tmp/index.php
./tmp/tmp/tmp/index.php
./wp-content/plugins/wordpress-seo/vendor/vendor/index.php
./wp-content/themes/astra/inc/builder/type/base/dynamic-css/widget/widget/index.php
با این حال، همانطور که از روی اسکرین شات ها می توانید متوجه شوید، یونیکد در واقع کاری انجام نمی دهد و به صورت کامنت نمایش داده می شود. همانطور که مشخص است، یونیکد صرفا برای اضافه کردن کاراکترهای عجیب و غریب به کدهای اصلی backdoor های یونیکد در وردپرس استفاده میشود تا امکان رمزگشایی آن بسیار دشوار شده و موجب گیج شدن کاربران گردد.
تصویر(7)
شکستن کد
بنابراین، اگر محتوای یونیکد فقط برای گیجکردن و پرت کردن حواس باشد، وقتی همه آنها را پاک کنید چه اتفاقی میافتد؟ وقتی یونیکد حذف و کد اصلی PHP مشخص شود، می توانید دستوراتی که به وضوح یک درب پشتی php با امکان اجرا از راه دور را نشان می دهند، مشاهده کنید:
تصویر(8)
تمام نسخههای این دربهای پشتی، به همین شکل هستند اما ممکن است نام متغیرها و بخش های کوچک دیگر کمی متفاوت باشند.
عملکرد backdoor های یونیکد در وردپرس
عملکرد اصلی backdoor های یونیکد در وردپرس شامل یک تابع مبهم می شود که در هر درب پشتی کمی متفاوت است اما اساساً یکسان هستند و عملکرد مشابهی دارند.
تصویر(9)
با تهیه خروجی از توابع آرایه، میتوانید بسیاری از موارد مشکوک را مشاهده کنید:
Array
(
[0] => create_function
[1] => str_rot13
[2] => json_decode
[3] => pack
[4] => base64_decode
[5] => file_get_contents
[6] => H*
[7] => }
[8] => /*
[9] => ARRAY
[10] => of
)
به طور خلاصه، پس از حذف تمام محتوای یونیکد و تحلیل توابع، این درب پشتی قادر است کدی که به عنوان درخواست کوکی ارسال شده را اجرا کند یا یک URL را از پارامتر "ARRAY" دریافت کرده و کد اجرایی را از یک سرور راه دور، استخراج نماید.
نمونه URL های راه دور (remote) عبارتند از:
hxxp://example.exam[.]cfd/?lc=shell_shao_bing_yunxing_php….
hxxp://example.simple[.]online/?lc=xiadan_rand_path….
hxxp://example.exa[.]sbs/?lc=shao_bing_ruzhu
در تصویر زیر میتوانید یک نمونه از دریافت اطلاعات توسط URL های راه دور را مشاهده نمایید.
تصویر(10)
هنگامی که قطعه کد بزرگ base64 رمزگشایی شود (تصویر زیر)، با بدافزاری مواجه خواهید شد که یکی از رایج ترین انواع بدافزارهای شناسایی شده در سال 2022 می باشد.
تصویر(11)
این فایل ها ارتباط نزدیکی با هک اسپم سئو ژاپنی (Japanese SEO spam hack) دارند که یکی از رایج ترین هک هایی می باشد که در طول سال های گذشته مشاهده شده است. بنابراین به نظر می رسد که این نوع backdoor های یونیکد در وردپرس، ابزار جدیدی می باشد که امروزه توسط برخی از مجرمان سایبری مورد استفاده قرار می گیرد. در محتوای استخراج شده از یک دامنه مخرب، کدهای زیر مشاهده شده است:
تصویر(12)
همانطور که می توانید مشاهده کنید، مجرمان اینترنتی به طور فعال علیه سایر ابزارهای مخرب که توسط رقبا مورد استفاده قرار می گیرند به فعالیت می پردازند. هدف آنها حذف بدافزارهای رقیب خود از وب سایت های در معرض خطر است که نشان دهنده نوعی جنگ بین گروه های رقیب می باشد.
شامل پسوندهای غیر استاندارد فایل
اگرچه این نوع دربهای پشتی اغلب در فایلهای index.php یافت می شوند اما در سایر نسخهها، از روشی دیگر به نام پسوندهای غیر استاندارد فایلها، جهت پنهان کردن خود استفاده میکنند. در برخی موارد، فایلهای index.php به صورت زیر هستند:
تصویر(13)
در مثال فوق، فایل index.php بهجای اینکه خود شامل کدهای مخرب باشد، فایل دیگری را فراخوانی میکند. در مثال بالا وقتی کد base64 را تبدیل کنید، نام فایل GZpETXKDJzSfHN.3gp را دریافت خواهید کرد. بنابراین در حالی که مهاجمان به index.php در آن دایرکتوری دسترسی دارند اما عملکرد واقعی درب پشتی در فایل دیگری انجام می شود. پسوند فایل 3gp. اغلب در وب سایت ها استفاده نمی شود و در واقع یک فرمت فایل ویدئویی است که در دستگاه های تلفن همراه کاربرد دارد. همچنین مشاهده شده که مهاجمان از پسوندهایی مانند mkv ،.mp4. و انواع دیگر فایلهای تصویری استفاده میکنند.
با این حال، محتوای موجود در آنها صرفا انواع دیگری از دربهای پشتی یونیکد را نشان می دهد اما چرا هکرها چنین کاری را انجام می دهند؟ مسلما این کار برای جلوگیری از شناسایی انجام می شود. در بیشتر موارد، اسکنرهای امنیتی وب سایت، صرفا پسوندهای رایج وب سایت ها مانند PHP، JS و HTML را بررسی می کنند. زیرا اغلب فایلهای ویدیویی یا صوتی حاوی بدافزار نیستند. بنابراین، با اینکه پسوندهای استفاده شده توسط مهاجمان معتبر هستند اما محتوای درون آنها ساختگی و جعلی می باشد.
نتیجه گیری نهایی
بدافزارها همواره در حال تلاش برای فرار از شناسایی توسط اسکنرهای امنیتی هستند تا بتوانند دسترسی به محیط های در معرض خطر را حفظ کرده و بسته های مخرب خود را بین بازدیدکنندگان وب سایت توزیع کنند. این یک نبرد دائمی بین محققان امنیتی و مهاجمان است و همیشه نیز ادامه خواهد داشت.
اگر صاحب وبسایت هستید و میخواهید از خود در برابر حملات محافظت کنید، میتوانید از مراحل زیر برای کاهش خطرات backdoor های یونیکد در وردپرس استفاده نمایید:
- از رمزهای عبور قوی و منحصر به فرد برای همه حساب های کاربری وب سایت خود از جمله FTP، مدیریت و پایگاه داده استفاده کنید.
- احراز هویت چند عاملی را برای ورود پنل مدیریت سایت پیاده سازی نمایید.
- در سایت خود از آخرین نسخه های امنیتی برای CMS اصلی، افزونه ها، تم ها و سایر اجزای موردنیاز، استفاده کنید.
- در وب سایت خود از یک فایروال استفاده نمایید تا حملات brute force و ربات ها را کنترل کند.