ترفند های وبمستری نحوه‌ی مقابله با تروجان ها - سایت سنگان

هنگام پاکسازی وب سایت ها، یکی از پیچیده ترین بخش های کار ما حصول اطمینان از پیدا کردن همه backdoor  هاست. اغلب مواقع، مهاجمان به مکان های مختلف سایت کد تزریق می کنند تا احتمال نفوذ دوباره به سایت را بالا برده و تا حد ممکن دسترسی به سایت را حفظ کنند. تحقیقات نشان می دهد که در ۶۷ درصد از وب سایت هایی که پاکسازی می کنیم، حداقل یک نوع backdoor  وجود دارد.

اگرچه، ما صدها مطلب در مورد Backdoor ها و تاثیرات آنها داریم ، امروز قصد داریم در مورد چند تکنیک بحث کنیم  و  اطلاعاتی جامع  و فنی در مورد چگونگی رمزگشایی نرم افزارهای مخرب پیشرفته ارائه دهیم.

این نوع خاص از آلودگی، جدید نیست، اما طی چند ماه گذشته، شاهد افزایش حملات از این نوع، برعلیه وب سایت های  مبتنی بر وردپرس و جوملا هستیم!

تروجان

تروجان

پس از به خطر افتادن یک وب سایت، مهاجمان ممکن است در این وب سایت Back Door ، Shell های وب ، کاربران مدیر جعلی و امثال این موارد را  ایجاد کنند. یکی از ویژگی های رایج این دسته از حملات این است که در آن ها از یک یا چند تکنیک زیر برای مخفی سازی کد، رمزگذاری، رمزگشایی و ابهام زدایی استفاده می شود.

در بخش زیر، مهاجمان تقریبا هر سه تکنیک را استفاده کردند. بیایید قدم به قدم با این فرآیند پیش برویم و آن را رمزگشایی کنیم.

 

 

 

 

 

 

 

 

 

 

 

 

ساده سازی کد

این نکته بسیار اهمیت دارد که هنگام رمزگشایی، تصویری منطقی از کد داشته باشید. برای این منظور، از PHP Beautifier کمک گرفتیم و  کد قبلی را به این کد تبدیل کردیم:

 

 

 

اگر چه کد هنوز قابل خواندن نیست، اما اکنون دارای یک ساختار برنامه ریزی منطقی است که به ما امکان ادامه کار را می دهد.

مهاجمان کار خود را با تعریف یک متغیر با نام $ hc7e1d20 شروع کردند که عمدتا این نام گذاری هیچ هدف خاصی ندارد. تجربه به ما ثابت کرده است، شماره اختصاص داده شده به این متغیر (۴۰۶) ممکن است راهی برای مهاجمین برای شناسایی تغییرات مخرب از همان نوع باشد.

 


$hc7e1d20             = ۴۰۶;
$GLOBALS['be10eb436'] = Array();
global $be10eb436;
$be10eb436 = $GLOBALS

 

ما در طول کد،  به چند متغیر عمومی بر میخوریم  که برای درک کد ضروری نیستند. و در نهایت از آنها خلاص خواهیم شد.

اساسا بدافزار به تکنیک های دستکاری کاراکتر / رشته متکی است که در آن مهاجمان کاراکترهای هگزادسیمال را در یک متغیر قرار می دهند و سپس آن را با متغیرهای مختلف جمع می کنند.

اولین مورد چنین است:

${"x47x4cx4fBx41x4cx53"}['tbb6a']                                                                                                                                                                                                             
="x2dx3dx3ex35x4ex73x7dx4fx65x77x59x41x5fx70x6a
x69x23x3bx51x21x57x74x4bx46xdx5bx2bx20x38x76x68x2ex3f
x44x4dx34x67x6fx6bx7cx64x7ax31x24x5cx4cx40x3cx28x5ax79
x2ax58x78x7ex6cx63x43x71x49x33x47x54x36x53x75x27x5ex29
x56x66x26x32x2cx62x30x2fx6exax50x22x25x52x5dx45x60x42
x48x39x61x37x7bx4ax9x55x3ax6dx72";

 

این قطعه کد را می توان به راحتی با استفاده از یکی از فرمان های زیر ترجمه کرد:

 

$ echo -e "x47x4cx4fBx41x4cx53"
GLOBALS
$ php -r 'echo "x47x4cx4fBx41x4cx53";'
GLOBALS

 

مقدار داخل متغیر $ {GLOBALS} [‘tbb6a’] دارای برخی از کاراکترهای خاص است که ممکن است روند ترجمه را مختل کند، اما این کاراکترها در نهایت توسط بدافزار مورد استفاده قرار نمی گیرند. در حال حاضر، ما می توانیم یک اسکریپت ساده PHP ایجاد کنیم که وارد هر رشته شده و  ارزش متناظر آن را چاپ می کند.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

جستجو و جایگزینی

با در دست داشتن این فهرست و  اطلاعات ، می توانیم با ویژگی Find & Replace بازی کنیم.

اولین متغیر:

$be10eb436[$be10eb436['tbb6a'][55] . $be10eb436['tbb6a'][75] 
. $be10eb436['tbb6a'][8] . $be10eb436['tbb6a'][63]]                                                                                                                                    = $be10eb436['tbb6a'][56] .$be10eb436['tbb6a'][30] . $be10eb436['tbb6a'][97];

$be10eb436['tbb6a'][55]  = ‘l’
$be10eb436['tbb6a'][75]  = ‘۰’
$be10eb436['tbb6a'][8]   = ‘e’
$be10eb436['tbb6a'][63]] = ‘۶’
$be10eb436['tbb6a'][56]  = ‘c’
$be10eb436['tbb6a'][30]  = ‘h’
$be10eb436['tbb6a'][97]  = ‘r’

همه اینها به چنین متنی ترجمه می شود:

$be10eb436[‘l . ‘۰’ . ‘e’ . ‘۶’] = ‘c’ . ‘h’ . ‘r’;  ---- $be10eb436[‘l0e6’] = ‘chr’;

برای هرچه واضح تر کردن کد، می توانیم be10eb436 را به arr تغییر نام دهیم  و به عنوان آرایه آن را تعریف کنیم؛ و به ترجمه بقیه کارکاتر ها ادامه دهیم.

پس از چند دقیقه، ما به یک کد با فرمت خاص دست خواهیم یافت:

 

حال همه چیز برای ما خیلی واضح تر می شود، بنابراین می توانیم تنظیمات بیشتری انجام دهیم.

چند متغیر اول زیر می تواند به راحتی جایگزین شود.

$arr['l0e6'] = ‘chr’;
$arr['ac6c24d1'] = ‘ord’;
$arr['s8bb921e'] = ‘strlen’;

وقتی هر کدام را در جای خود قرار دهید اولین تابع ظاهری شبیه زیر پیدا می کند:

function l3f5($nd0f2d, $yaf8a49ab)
       {
       global $arr;
       $wb1a = "";
       for ($a5be536 = 0; $a5be536 strlen($nd0f2d);)
               {
               for ($jd82720f = 0; $jd82720f strlen($yaf8a49ab) && $a5be536 chr(ord($nd0f2d[$a5be536]) ^ ord($yaf8a49ab[$jd82720f]));
                       }
               }
       return $wb1a;
       }

اهداف مخرب

پس از جایگزینی تمام توابع و متغیرها، به کد زیر می رسیم که به آسانی قابل درک است.

 

نقاط مورد نظر در کد کامل مخرب عبارتند از:

  1. یک تابع به نام l3f5() مسئول انجام رمزگذاری و رمزگشایی از طریق عملیات بیتی (XOR) است؛
  2. تابع q057860() دو سطح از رمزنگاری / رمزگشایی XOR را اعمال می کند.
    1. کلید سطح اول یک  متغیر  از پیش تعریف شده  ثابت است ($w158 = ‘۲cef0f87-62fe-4bb9-a1de-4dc009e818ea’;)
    2. کلید سطح دوم از هر دو پارامتر POST یا کوکی های HTTP می آید.
    3. این تابع برای رمزگشایی داده های سریالی رمزگذاری شده است که مهاجمان از طریق کوکی یا پارامترهای POST به اسکریپت ارسال می کنند.
  3. داده های رمز گشایی شده می تواند شامل موارد زیر باشد:
    1. کد اجرایی PHP، یا
    2. دستوری برای ارائه اطلاعات در مورد نسخه های backdoor و PHP.

 

نتیجه گیری

انواع مختلفی از نرم افزارهای مخرب وجود دارد که همه آنها دستورات را مستقیما از طریق اسکریپت اجرا نمی کنند. همانطور که در این مثال مشهود است، قطعات دیگری از کد وجود دارد که دستورات دلخواه را از طریق درخواست های $_POST or $_COOKIE دریافت می کنند که به طور پیش فرض توسط وب سرور لاگ نمی شوند.

به منظور جلوگیری از آلوده شدن وبسایت، ما توصیه اکید داریم، اقدامات امنیتی مثل “نظارت بر یکپارچگی فایل” و “استفاده از فایروال نرم افزار وب سایت”  را حتما در نظر داشته باشید. همچنین توصیه می شود به طور مداوم بر لاگ های خود جهت جلوگیری از رفتار غیرمنتظره نظارت کنید.

 

برگرفته از [sucuri.net]

به این پست امتیاز دهید.
بازدید : 226 views بار دسته بندی : امنیت تاريخ : 20 دسامبر 2022 به اشتراک بگذارید :
دیدگاه کاربران
    • دیدگاه ارسال شده توسط شما ، پس از تایید توسط مدیران سایت منتشر خواهد شد.
    • دیدگاهی که به غیر از زبان فارسی یا غیر مرتبط با مطلب باشد منتشر نخواهد شد.