امروز (1 ژانویه 2020) اولین روز از سال نو میلادی، و البته اولین روزی است که نسخه ی 2 زبان برنامه نویسی پایتون به آخر عمر خود رسید و دیگر پشتیبانی نمی شود.
برای مهاجرت از پایتون 2 به نسخه های جدید تر دلایل بسیاری وجود دارد. از امکانات نسخه های جدید که صرف نظر کنیم، این نسخه پشتیبانی نمی شود و دیگر وصله ی باگ ها یا بروز رسانی امنیتی برای آن ارائه نخواهد شد. بنابراین، استفاده از این نسخه تهدیدات امنیتی را افزایش خواهد داد.
مرکز ملی امنیت سایبری بریتانیا (NCSC) هشداری در این رابطه صادر کرده است:
https://www.ncsc.gov.uk/blog-post/time-to-shed-python-2
به این مناسبت، در این مطلب قرار است یک آسیب پذیری تشدید دسترسی در پایتون برای ویندوز بررسی شود. تنظیمات پیشفرض به هنگام نصب نسخه های آسیب پذیر پایتون در سیستم عامل ویندوز، موجب ایجاد آسیب پذیری تشدید دسترسی محلی (Local Privilege Escalation) می شود که با سوء استفاده از آن مهاجم می تواند درجه ی دسترسی خود را بالا ببرد. شناسه ی CVE-2019-13404 به این آسیب پذیری اختصاص یافته است و نسخه های زیر آسیب پذیر هستند:
Python 2.7.x and older versions (Windows)
Python 3.x (before 3.5) (Windows)
جزئیات فنی آسیبپذیری
نسخه های قدیمی پایتون برای ویندوز، توسط سازنده ی آن به صورت فایل نصبی MSI ارائه شده اند. از صفحه ی زیر می توانید آخرین نسخه از سری پایتون 2 (آسیب پذیر) را دانلود و نصب کنید:
https://www.python.org/downloads/release/python-2717/
به صورت پیشفرض، پایتون در دایرکتوری زیر نصب می شود:
C:\Python27
با استفاده از ابزار AccessChk مجوز های دسترسی به این دایرکتوری و محتویات آن را بررسی می کنیم:
مشخص می شود که تمام کاربران معتبر، مجوز خواندن و نوشتن در این دایرکتوری را دارند.
به عنوان مثال، مجوز های دسترسی فایل اجرایی python.exe به شکل زیر است:
دسترسی SYSTEM بالاترین سطح دسترسی در ویندوز است. گروه Administrators مربوط به ادمین های سیستم و گروه Authenticated Users مربوط به کاربران معتبر سیستم است.
R به معنی دسترسی خواندن و RW به معنی دسترسی خواندن و نوشتن است. با توجه به شکل، تمامی کاربران معتبر سیستم (عضو گروه Authenticated Users) دسترسی RW دارند. این دسترسی مشکل امنیتی دارد!
یکی از روش های مورد استفاده در حملات تشدید دسترسی محلی، جایگزینی یک فایل اجرایی (مثل فایل های EXE یا فایل های اسکریپتی) با یک فایل مخرب است. فایل مخرب بعداً توسط یک کاربر یا سرویس با سطح دسترسی بالا اجرا می شود و سطح دسترسی مهاجم افزایش پیدا می کند.
در مورد پایتون، مهاجم (یک کاربر با سطح دسترسی پایین) می تواند فایل های اجرایی (مثل python.exe) یا فایل های ماژول و اسکریپت ها را با فایل مخرب جایگزین کند. در آینده اگر فایل مخرب توسط یک کاربر ادمین یا یک سرویس اجرا شود، کد های فایل مخرب اجرا می شوند و سطح دسترسی مهاجم افزایش پیدا می کند.
اکسپلویت آسیبپذیری
فرض کنید که یک سرویس در ویندوز ثبت شده است که هر ساعت یک اسکریپت پایتون را اجرا می کند. در ویندوز معمولاً سرویس ها با سطح دسترسی SYSTEM اجرا می شوند. ما به عنوان مهاجم از سیستم دسترسی گرفته ایم اما سطح دسترسی پایینی داریم و می خواهیم آن را افزایش دهیم.
برای اکسپلویت آسیب پذیری باید یکی از فایل های اجرایی یا فایل های ماژول را با یک فایل مخرب جایگزین کنیم تا دفعه ی بعد که سرویس اسکرپیت پایتون را اجرا می کند، فایل مخرب اجرا شود. یک کد در زبان C می نویسیم که با اجرا شدن آن در دسترسی بالا یک حساب کاربری با نام کاربری و رمز عبور exploited ساخته شود و سپس به گروه Administrators اضافه شود:
کد را کامپایل کرده و فایل حاصل (فایل مخرب) را جایگزین فایل اجرایی پایتون در آدرس زیر می کنیم:
C:\Python27\python.exe
صبر می کنیم تا سرویس مذکور فایل مخرب را اجرا کند و حساب با دسترسی بالا برای ما ساخته شود. پس از آن، با استفاده از نام کاربری و رمز عبور exploited وارد حساب جدید می شویم که عضو گروه Administrators است.
فایل های مربوط به این آسیب پذیری در گیت هاب بارگذاری شده اند:
https://github.com/alidnf/CVE-2019-13404/
رفع آسیبپذیری
برای رفع این آسیب پذیری و آسیب پذیری های مشابه، باید دسترسی های مربوط به فایل کنترل شوند. همچنین، استفاده از سیستم عامل و نرم افزار هایی که پشتیبانی آن ها متوقف شده است باید پایان یابد.
کشف آسیبپذیری
آسیب پذیری مذکور، هنگام تست نفوذ و عملیات Privilege Escalation، کشف شد. گزارش آن به سازنده ارسال و شناسه ی CVE به آن اختصاص داده شد.
ختم کلام
در نهایت،مرسی بابت مطالعه ی مطلب. امیدوارم مفید بوده باشه و البته، منتظر نظرات خوب شما هستم. علاوه بر قسمت نظرات، می توانید از طریق توییتر یا لینکدین با من در ارتباط باشید.
ممنونم
خیلی جالب بود 🙂
سلام.ممنون از نظرتون.
خوشحالم که مطلب مفیدی بوده.
موفق باشید 🙂
بنظر من که عالی بود و من ورژن های قبلی پایتون و که چک کردم این مشکلو نداشت فکر کنم برای اینکه مردمو مجبور به مهاجرت به پایتون ۳ کنند این کارو انجام دادند نظر شما چیه ؟
سلام.ممنون از نظرتون.
این آسیب پذیری که گفته شد، به صورت “پیشفرض” روی نسخه های آسیب پذیر وجود داره. ممکنه تنظیمات به هنگام نصب جوری باشه که از وقوع آسیب پذیری جلوگیری بشه.
آخرین نسخه ی پایتون ۲ که توی مطلب بهش اشاره شده هم همین آسیب پذیری رو داره. مهاجرت به پایتون ۳ هم حتما باید انجام بشه برای جلوگیری از مشکلات امنیتی و غیر امنیتی.
موفق باشید 🙂
سلام خسته نباشید و ممنون از اموزش های عالی که میزارید ممنون میشم که در صوردت امکان تصویری این اموزش ها رو هم بزارید ضمن اینکه میخواستم خواهش کنم که اگر امکان داره اموزش کرک کردن نرم افزارها رو هم بزارید منظور من همون Key هست
سلام، مرسی بابت نظر.
در مورد آموزش هایی که طولانی یا دارای جزئیات هستند با شما موافقم که آموزش تصویری بهتر است. آموزش های تصویری خوبی دوستان دیگر آماده کرده اند و من هم سعی می کنم که از این روش استفاده کنم.
کرک نرم افزار، نیازمند دانش و مهارت خوب در زمینه ی باینری و مهندسی معکوس هستش. به عنوان مثال، آشنایی قبلی با زبان اسمبلی برای این مورد ضروریه. اگر مقدور بود، آموزشی ساده در این مورد آماده می کنم.
موفق باشید. 🙂
سلام علی آقا
ممنون بابت آموزش خوبتون
شما در مورد آزمون فازینگ ، اطلاعاتی دارید ک بتونم از شما کمکی بگیرم؟