در پشتی یا بکدور (back door) اصطلاحی است که به دستکاری در کدهای برنامه با هدف دور زدن کنترلهای امنیتی (مانند پسورد و غیره) گفته میشه. با داشتن در پشتی، هکر میتونه هر وقت بخواد و بدون داشتن پسورد، به هدف دسترسی داشته باشه. برای مثال گاهی پیش میاد که یک هکر با استفاده از یک ضعف امنیتی به یک سایت نفوذ میکنه و برای اینکه بعد از بهروزرسانی یا تغییر پسورد توسط مدیر سایت، دسترسی رو از دست نده اقدام به ایجاد یک بکدور در کدهای سایت میکنه. پیش از این در مورد یافتن درهای پشتی در کدهای PHP یک مطلب نوشتم.
چند روز پیش به دلیل کاری نیاز شد به سایت وردپرس فارسی سر بزنم. وردپرس فارسی سالهاست که کار ترجمه و فارسیسازی وردپرس رو انجام میده و جایی برای ارائه پوستههای ترجمه شده و یا افزونههای فارسی هم بوده. تلاشهای زیادی برای ساده کردن استفاده از وردپرس برای کاربران فارسی کرده و مرجع مهمی برای کاربران ایرانی وردپرسه. همین نقش سایت وردپرس فارسی دلیل خوبیه برای هکرهایی که میخوان با یک تیر چند نشان بزنند. برام سوال پیش اومد که آیا پوستههای ارائه شده در این سایت امنیت لازم رو دارند یا خیر. بیشتر هم قصدم چک کردن روشهای معمول امنیتی در پوستهها بود.
اولین پوستهای که دانلود کردم برای بررسی، پوسته Modern Style بود که رتبه اول پوستههای ممتاز رو داشت. در کمال تعجب با کد ناخوانا شده در فایلی مواجه شدم که کارش نمایش خطا به مراجعه کننده به سایته وقتی که یک نوشته وجود نداشته باشه.
در تصویر بالا میبینید که تا خط ۹ همون کاری که از فایل انتظار داریم انجام میشه اما بعد از اون دو تا دستور PHP دیگه وجود داره. این دستورها برای رمزگشایی کدهایی است که پیش از این با روش برگشتپذیر base64 رمز شدهاند. هکرها از راههای زیادی برای مخفی کردن درهای پشتی استفاده میکنند. از بههم ریختگی در کد، تا استفاده از کوچکترین کدهای ممکن تا از چشم مدیر سایت دور بمونه. همچنین پسورد هم میگذارند گاهی تا توی تستهای نفوذ نشه پیدا کرد این فایلهای دستکاری شده رو.
تصویر زیر، کدهای رمزگشایی شده است.
در این مورد خاص، هم از رمز کردن کد و هم از پسورد استفاده شده. شیوه کار این در پشتی این شکلیه که وقتی قربانی این پوسته رو روی سایتش استفاده کنه، در اولین باری که یک مراجعه کننده صفحه اشتباهی رو باز کنه، صفحه خطای ۴۰۴ رو میبینه و در اون زمان، کدهای مخرب اجرا میشن.
در ابتدا یک ایمیل حاوی آدرس سایت برای هکر ایمیل میشه. حالا هکر که میدونه یک مدیر سایت از پوسته دستکاری شده استفاده میکنه، به آدرس سایت رفته و صفحه خطای ۴۰۴ رو باز میکنه. سپس میتونه با پسوردی که از قبل ست شده، دستورات دلخواهش رو توی سرور قربانی اجرا کنه.
این پسورد رمز شده هکره (به پیشنهاد آیدین، پسورد رو برای مدتی حذف میکنم که کسی آسیب نبینه):
1 | *** |
در ادامه با دستورهای شرطی متفاوت، چک میشه که هکر از کد چه کاری رو خواسته. میتونه اجرای کد باشه، دانلود یک فایل باشه و یا آپلود یک فایل روی سرور باشه. با این دستورات، هکر به راحتی اسکریپتها پیچیدهتر و کاربردیتر روی سرور بریزه که منجر به کنترل کامل سرور بشه.
با جستجوی پسورد رمزشده، متوجه شدم همین در پشتی در اسکریپت virtual freer هم وجود داشته که یکی از کابران iranphp متوجه شده و به دیگران اطلاع داده. از اونجایی که رمز پسورد هنوز در سرویسهای آنلاین و عمومی شکسته نشده، بعید میدونم کس دیگهای از همین کد استفده کرده باشه و پسورد رو تغییر نداده باشه. میشه نتیجه گرفت که کار یک نفر بوده. اسکریپت virtual freer قابلیت اتصال به درگاههای پرداخت و درگاههای واسط پرداخت داره و در تعداد زیادی از سایتهای فروش ویپیان و کارت شارژ و مانند اون استفاده شده.
پس از گزارش من در توییتر، سایت وردپرس فارسی بلافاصله لینک دانلود پوستههای مشکلدار رو غیرفعال کرد و به کاربران اطلاع داد که از این پوستهها استفاده نکنند. غیر از Modern Style پوسته P30Temp هم همین در پشتی رو داشت.
با توجه به اینکه تاریخ تغییر فایلهای حاوی در پشتی مطابق با آخرین آپدیت اعلام شده و نیز تاریخ آخرین تغییر بقیه فایلهای پوسته نبود، به این نتیجه رسیدم که قراردادن در پشتی کار طراح پوسته و مترجم نبوده و به احتمال زیاد فرد سومی با استفاده از دسترسی که داشته (ممکنه این دسترسی رو پس از هک سایت وردپرس فارسی به دستآورده بوده) این تغییرات رو انجام داده.
کسی که این در پشتی رو کار گذاشته از ایمیل infocallpro@gmail.com برای خبرگرفتن از درهای پشتی فعال استفاده میکنه. اگر جایی با این آدرس ایمیل برخورد کردید، به من اطلاع بدید تا موارد خطر احتمالی رو بررسی کنم.
خسته نباشید و ممنون…
منو توی کد footer یه چیز شبیه همین دارم:
آیا اینم از همین مدل کد هاست؟
البته نمی دونم چرا کد نمید:
کد رو در سرویس pastebin اوبونتو ایران می گذارم اگر میشه بررسی بفرمایید:
https://paste.ubuntu.ir/hute
چندبار پیچونده بودن کد رو. چیز خاصی نیست . کردیت همیار ورپدرسه. برات همونجا گذاشتم نتیجه رو:
https://paste.ubuntu.ir/qqbq
واقعا ممنون… فکر هم نمی کردم انقدر سریع پاسخ بدید 🙂
خسته نباشید.
روش برگرپیچوندن(: این کدها چیه؟ در حد کلید واژه هم بگی که خودم برم دنبالش حله.
چون گفتی چند بار، فکر نکنم گوگل decode تنها جواب بده بهم(:
اگر منظورت لینک سوشا است، باید اون بخشی که این شکلیه \x65\x76 رو از HEX به کاراکتر تبدیل کنی که نتیجهاش میشه تابعی که روی بقیه کد اعمال میشه.
بعد همون تابع رو روی بخش دوم رمز شده که شبیه TZPJrqNYEET/pTbVLS است رو خودت اعمال کنی تا کد رو دیکد کنی.
وقتی تابع رو به دست آوردی، همون سرچ کن. معمولا سرویس آنلاین براشون هست.
توی کامنت نمیتونم اون دستورها رو بذارم. حذف میشه
هکر ایدهی جالبی داشته، نمیدونستم میشه چنین کاری کرد!
برای اینکه بابت قالب وبسایتم خیالم راحت بشه باید تمام فایل هاش رو بگردم؟
چطور میتونم بابتش مطمئن باشم ؟
سلام
عالی بود، مرسی و باعث شد دید بازتری نسبت به تم های وردپرسی پیدا کنم
ضمنا می خواستم ازتون بپرسم با چه برنامه ای این کد ها رو decode می کنید؟
ممنون.
برای decode از افزونههای فایرفاکس استفاده میکنم اما چیز خاصی نیستند و سرویسهای آنلاین هم براش هست. مثلا جستجو کند base_64 decode و کلی سایت پیدا میکنی.
این سایت خوبه:
https://www.base64decode.org/
خیلی ممنونم از راهنمایی تون
من از همون سایتی که گفتید و چند تای دیگه کد زیر را دیکد کردم ولی یه سری حروف بی ربط تحویلم میدادند
لطفا اگر وقت کردید بررسی اش کنید
***
کد در لینک زیر
http://pastebin.com/mnkyN3FG
سلام
اتفاقا چند روز پیش برای یکی از مشتری ها یه سایت وردپرسی راه اندازی کردم و بعداز چند روز بهم خبر داد که سایت از کار افتاده
وقتی با پشتیبانی سایت تماس گرفتم گفت یه اسکریپت توی سرور شروع به ارسال ایمیل کرده و از محدوده مجاز بیشتر ایمیل فرستاده و ما هم اکانت رو مسدود کردیم
بعد رفتم توی فایل ها گشتم و فایل مورد نظر رو پیدا کردم که توی یکی از پوشه های وردپرس بود
همونجا فهمیدم مشکل از قالبی بود که دانلود و نصب کرده بودم
من کل وردپرس و فایل هاش رو پاک کردم ولی باز هم یه جای جدید یه فایل ارسال ایمیل به وجود میومد و سرور از کار میفتاد
دوباره شروع به برسی همه پوشه ها کردم و حتی با ابزار های آنتی ویروس موجود توی سی پنل کل سرور رو اسکن کردم ولی فایلی پیدا نمیشد
تا اینکه موندم کدهای برنامه خودم که برای مشتری نوشته بودم رو تک تک برسی کردم و اینجا بود که دیدم توی فایل کانفیگ پروژم یه تکه کد اضافی وجود داره و در نقش بک دور داره فایل مخرب ایجاد میکنه
اینم لینک هردو فایل بک دور و ارسال ایمیل:
http://s9.picofile.com/file/8267284868/haker_code.zip.html
از این اتفاقات میافته. مهم اینه که کدها رو مرور کنیم و مشکلای احتمالی رو پیدا کنیم