ویروس های مبتنی بر PHP همه جا وجود دارند . از آنجا که بسیاری از توسعه دهندگان و مدیران وردپرسی نیز جهت توسعه وبسایت خود بعضا از هک و کد استفاده میکنند , لذا این مطلب گویای این موضوع است که یک مدیر وردپرسی هرگز نباید کدهای مورد نیاز خود را از وبسایت های ناشناخته و غیر معتبر و یا افرادی که صلاحیت آنان برای ارائه اینگونه کدها تایید نشده , تهیه و استفاده نمایند . بعضا دیده شده که مدیران کدی را برداشته و بعد از استفاده با ارور ۵۰۰ یا انواع و اقسام ارورهای ناشناخته مواجه میشوند , در نهایت ممکن است همان وبسایت به حالت اول برگردد , اما ادامه کارش با مشکل مواجه شده و به عبارتی ریپ میزند . در این مطلب خواهیم دید که در PHP چگونه میتوان شیطنت کرد .

 

همانطور که میدانیم , زبان PHP یکی از پرکاربرد ترین زبانهای تحت وب است و دیری نخواهد پایید که ما در وب , از وردپرس گرفته تا فروشگاه و نتوورک ها هر چه میبینیم PHP باشد . این زبان از قدرت بسیار بالایی در وردپرس برخوردار است و به نوعی اسکلت بندی وردپرس تلقی میشود . موضوعی که در این قسمت به آن پرداخته خواهد شد را شاید اغلب توسعه دهندگان نیز تاکنون به آن برنخورده باشند و آن این است که با PHP میتوان ویروس نویسی کرد . اولین ویروسی که با PHP نوشته شد , ویروسی موسوم به PHP.PIRUS بود . این ویروس توسط فردی به نام Maskbits/VXI در اکتبر سال ۲۰۰۰ نوشته شده بود , هر چند که به طور کلی PHP.PIRUS را نمیتوان یک ویروس واقعی خواند , این ویروس به نوعی نشانه ای بود از اینکه میتوان مبتنی بر PHP نیز ویروس نویسی کرد . این ویروس تنها فایلهای موجود در دایرکتوری را نشانه گذاری میکرد . در ادامه این مقاله , با نحوه این نوع ویروسها و ویروس نویسی مبتنی بر PHP آشنا خواهیم شد .

بی شک یکی از مهمترین ویژگی های یک ویروس ( و شاید اصلی ترین ویژگی ) توانایی آلوده کردن فایلها است . ویروس هایی که با این زبان نوشته میشوند نیز بایستی این ویژگی را داشته باشند که بتوان به آنان ویروس واقعی گفت و به آنان پسوند اجرایی داد . در PHP توابع گوناگونی برای کار کردن با فایلها وجود دارد که نفوذگر با کارکردن با آنها , سعی در آلوده کردن فایلهای دایرکتوری را میکند , با این اقدام , نفوذگر میتواند فایلهای اجرایی را نیز آلوده کند که اجرای همین فایلها نیز تمامی فایلهای باقی مانده را آلوده خواهد کرد . در ادامه توضیح خواهیم داد .

کدهای پیش پردازش شونده

کدهای پیش پردازش شونده چه هستند ؟ این نوع از کدها , کدهایی هستند که معمولا توسط نفوذگران به ابتدای کدهای سالم سایت قربانی کپی میشوند . این کدها , زمانی که مدیر وبسایت , دستوری را اجرا میکند یا پوشه ای را باز میکند , قبل از کدهای سالم اجرا میشوند که یکی از اصلی ترین قسمت ها در کار نفوذگران برای شروع آلودگی است . در واقع میتوان گفت این کدها , اصل ویروس هستند . برای پیدا کردن این کدها , ما در یک مثال , از ۳۹۱ بایت اول شروع میکنیم , آنها را خوانده و در یک متغیر قرار میدهیم . اما قبل از اینکه مدیر وبسایت بخواهد کدهای دایرکتوری سایت خود را چک نماید , میبایستی این کدها و ویروس های PHP را بشناسد . برای همین منظور , در مثال زیر , ما ویروسی را نوشته و با آن قصد آلوده سازی دایرکتوری را داریم ( این مثال , صرفا جنبه آموزشی و فهم بهتر مطلب را داشته و تمامی کدها به صورت اسلاید و غیرقابل استفاده در عمل میباشند ) . نمونه ای از ویروس مبتنی بر PHP را در تصویر زیر میتوان مشاهده کرد :

ویروس در وردپرس

در این نمونه , ویروس ما وظیفه دارد که ۱۳ بایت ابتدایی را خوانده و به دنبال مقادیر زیر بگردد :

ویروس پی اچ پی

حال عملکرد ویروس را بازبینی میکنیم :

این کد , ۳۱۹ بایت را که معرف سایز ویروس است میخواند
در دایرکتوری جاری , به دنبال تمامی فایلها با پسوند PHP میگردد
اگر فایل سالم بود , آن را خوانده و مقادیر مورد نظر را به ابتدای آن اضافه میکند

همین ویروس ها را میتوان به اشکال دیگری نیز نوشت . به صورتی که خودشان به عنوان یک فایل جداگانه نیز اجرا شده و به آلوده سازی مشغول شوند . اما اینبار بدنه اصلی بعد از مقادیر موجود در فایل اضافه میشوند . به طور مثال به صورت زیر :

ویروسی شدن وردپرس

اکنون دوباره عملکرد ویروس را بازبینی میکنیم :

فایل آلوده را گشوده و بند اصلی ویروس را در یک متغیر ذخیره میکند
به دنبال تمامی فایلها در دایرکتوری جاری با پسوند PHP میگردد
میزان آلودگی فایل را بررسی میکند ( در صورتی که فایلی حاوی پسوند SPTH نباشد آن را آلوده نمیداند )
بند ویروس را در تمامی فایلهایی که آلوده نیستند کپی میکند

آلوده سازی چندگانه

آلوده سازی چندگانه به این معناست که ویروس , بیش از ۱ نوع فرمت از فایلها را مورد هجوم قرار دهد ( برای نمونه , ویروس بالا علاوه بر اینکه به دنبال فایلهای با پسوند PHP باشد , پسوندهای دیگر نظیر XML را نیز آلوده کند ) این نوع از ویروس های مبتنی بر PHP بسیار خراب کننده و خطرناک هستند . با استفاده از این روش , نفوذگر , یا بهتر است بگوییم خرابکار , سرعت پخش ویروسش را به چندین برابر میرساند . در ادامه با چند روش آلودگی چند گانه آشنا میشویم . یکی از مشکلاتی که برای خرابکاران در نوشتن ویروس های چندگانه وجود دارد , اجرا نشدن مستقیم فایلهای PHP به صورت مستقیم است . این فایلها تنها به وسیله مرورگرهای حرفه ای قابل اجرا هستند . اما خرابکاران برای رفع این مشکل , از توابع ماکروسافت برای اجرای IE کمک گرفته و هدف خود را پیش میبرند .

آلوده سازی با VBS

آلوده سازی به کمک اسکریپ های VB بسیار ساده است اما در این میان نیز یک نکته بسیار مهم نهفته است . اغلب توسعه دهندگان معتقدند که نشانه این نوع آلودگی , وجود علامت ( + ) در کدهاست . در حالی که دقیقا برعکس است و در این نوع آلودگی ها , ویروس نویس از این علامت استفاده نمیکند زیرا این کارش باعث میشود که اسکریپ , تمامی فایلهایی را که با این علامت مشخص میشوند , به عنوان یک رشته واحد به حساب بیاورد . ویروس نویس برای رفع این مشکل , از تابع CHR در PHP کمک میگیرد و نتیجه نیز چیزی شبیه تصویر زیر میشود :

ویروس php

حال , عملکرد ویروس را ارزیابی میکنیم :

جداسازی کدهای PHP ( در واقع کدهای ویروس ) از میان خطوط CHR 10 , CHR13
ساخت کدهای VBS که یک فایل HTML حاوی کدهای ویروس را میسازند
اضافه کردن تمامی خطوط به VBS
جستجو برای پیدا کردن دیگر فایلها با پسوند VBS و بازنویسی آنها توسط کدهای از پیش ساخته شده توسط ویروس

آلوده سازی به کمک JS

آلوده سازی به کمک جاوا اسکریپت , بسیار شبیه آلودگی با ویژوال بیسیک اسکریپت است . در نوشتن این نوع ویروس , از Wscript برای نوشتن استفاده میشود . در اینجا تنها کاری که ویروس نویس برای آلوده کردن فایلهای JS انجام میدهد , تغییر اعلان متغیرها از SET به VAR و نوع فایلها به JS است .

آلوده سازی به کمک CMD

این روش یکی از سخت ترین راه ها برای آلوده کردن فایلهای Batch است . دلیل این سختی نیز قابل استفاده نبودن برخی از علامات در این فرمت است . برای نمونه , ویروس نویس اجازه ندارد در یک فایل DOS از علاماتی مانند < & ^ استفاده نماید . ویروس نویس های مسلط در اینجا به جای استفاده از این علامتها , از کاراکترها استفاده میکنند . اما مشکل بعدی , مورد نیاز بودن دو علامت < > در ابتدای یک فایل PHP است . در اینجا ویروس نویس , چاره ای جز استفاده از جاوا اسکریپت برای نوشتن این مقادیر در یک فایل HTML و فراخوانی آن ندارد .

در این سری مطالب , نلاش شد تا مواردی مختصر و مستند از موارد امنیتی در PHP درج گردد تا جایی که قابل فهم برای مدیران وردپرس و کاربردی برای توسعه دهندگان نیز باشد . بی شک بحث و مباحث در این مورد بسیار گسترده تر بوده و نیازمند مباحث مفصل تری است . با امید به اینکه امنیت , در رکن اول توجه توسعه دهندگان و در درجه بالای اهمیت برای مدیران قرار گیرد .

پایان

منبع