بررسی روشهای رخنهگری در برنامههای تحت وب (بخش نخست)
ایتنا- استفاده روز افزون کاربران از برنامههای کاربردی تحت وب، پتانسیل پرخطرِ بسیاری را از شبکه اینترنت به سمت کاربران آن سوق میدهد.
سیدمحمدرضا موسوی پور استفاده روز افزون کاربران از برنامههای کاربردی تحت وب، پتانسیل پرخطرِ بسیاری را از شبکه اینترنت به سمت کاربران آن سوق میدهد. علاوه بر این بروز خطاهای انسانی و توسعه برنامههای مبتنی بر وب توسط برنامه نویسانی که آشنایی کافی با مسائل امنیتی ندارند، سرآغاز بروز تهدیدات امنیتی خواهد شد.
وقوع حملات علاوه بر بی اعتمادی کاربران نسبت به این گونه برنامهها و توسعه دهندگانشان، موجب کاهش امنیت عمومی در محیط وب گشته، فضای کسب و کار را به طورکلی نسبت به وب بی اعتماد و هراسان میکند.
حفظ امنیت این برنامهها سخت اما بسیار ضروری است. از این رو شناخت این حملات برای توسعه دهندگان برنامههای وب بسیار حیاتی است. در سناریوی حملات تحت وب آنچه در ابتدا مهاجم برای نفوذ به برنامه به آن نیازمند است، شناخت چگونگی عملکرد برنامه مورد نظر و تشخیص نوع و هویت برنامه میباشد.
در بیشتر این موارد، نفوذگران به کمک ضعفهای موجود، سعی در نفوذ، خرابکاری، سرقت و یا عملیاتی میکنند که مجاز به انجام آن نیستند. در این مقاله سعی شده است نقاط آسیبپذیر برنامههای کاربردی تحت وب و روشهای مورد استفاده مهاجمان برای حمله بیان شود.
دستیابی به این دانش و مطالعه دقیق این حملات کمک میکند تا طراحی و مدیریت برنامههای کاربردی موردِ استفاده به نحو مطلوبتری انجام پذیرفته و تا حد قابل قبولی آسیبپذیریهای آن کاهش یابد. بنابراین با توجه به میزان خطرپذیری مورد قبول و سیاستهای امنیتی تدوین شده، امنیت سیستم مورد نظر به سطح مناسبی خواهد رسید.
سرویس وب سرویس وب یک تکنولوژی است که امکان ارتباط نرمافزارهای کاربردی را مستقل از نوع سیستم عامل و زبان برنامهنویسی با یکدیگر میسر میسازد.
این سرویس شامل نرمافزارهایی است که از XML جهت انتقال اطلاعات بین نرمافزارها، از طریق پروتکلهای متداول اینترنتی استفاده میکند. XML ها فایلهای متنی هستند که برای ذخیره اطلاعات بکار میروند.
از XML همچنین میتوان برای ذخیره اطلاعات در فایلها و بانکهای اطلاعاتی استفاده نمود. به شکل ساده یک وب سرویس از طریق وب اعمالی را انجام میدهد و نتایج آنرا به سایر برنامهها میفرستد.
این بدین معنی است که برنامهای که در یک کامپیوتر در حال اجرا میباشد، اطلاعاتی را به کامپیوتر دیگری میفرستد و از آن درخواست جواب میکند. برنامه مستقر در کامپیوتر دوم نیز کارهای خواسته شده را انجام داده و نتیجه را به برنامه اول باز میگرداند.
از میان تعداد بسیار پروتکلهای موجود، سرویسهای وب بیشتر از HTTP که مهمترین آنهاست استفاده میکنند. سرویس وب هر نوع خدمت رایج نظیر دریافت اخبار روزانه، ارتباطات پست الکترونیکی، انجام اعمال ریاضی، مشاهده صورت حساب بانکی و... را میتواند انجام دهد. سرویس وب دارای خواصی است که آن را از دیگر تکنولوژیها و مدلهای کامپیوتری متمایز مینماید.
سیاستگذاری سرویس وب سیاستگذاری مدیران به سرویسهای وب امکان میدهد نیازها، تنظیمات و تواناییهای خود را براساس مجموعهای از عوامل بیان و مستند سازی نمایند. البته تمرکز این سیاستگذاریها بیشتر بر روی اهداف امنیتی قرار دارد و هرچه به جلو پیش میرویم بر اهمیت موضوع امنیت افزوده میشود. برای مثال سیاستگذاری امنیتی یک سرویس وب میتواند برخی سازوکارهای امنیتی، نظیر رمز گذاری و امضای دیجیتال را شامل شود.
امنیت سرویس وب امنیت سرویس وب مشخصهای جامع است که مجموعهای از تکنولوژیهای متداول امنیتی نظیر امضاهای دیجیتال و رمزگذاری مبتنی بر برچسبهای امنیتی، شامل گواهیهای X.۵۰۹ را در خود دارد. همانطور که پیش از این گفته شد، نرمافزارهای سرویس وب از XML برای جابجایی اطلاعات استفاده میکنند.
بنابراین رمزیسازی این ارتباط بخش مهمی از امنیت سرویس وب را پوشش میدهد. رمزنگاری XML مجموعهای از عناصر XML و قواعد پردازشی را تعریف میکند که محرمانگی را ایجاد نموده و آن را به انواع مختلفی از محتواها اضافه میکند. این رمزنگاری، محرمانگی را در انتقال و ذخیره سازی فراهم مینماید.
روششناسی حمله به نرمافزارهای تحت وب دستهبندی آنچه به آن روششناسی حملات به برنامههای تحت وب نامیده میشود، به صورت زیر است: حمله ردپا به زیرساخت وب حمله به سرورهای وب تحلیل نرمافزارهای تحت وب حمله به سازوکار احراز اصالت حمله به ساختار احراز اصالت حمله به سازوکار مدیریت نشست اجرای حملات تزریق حمله به اتصال داده حمله به نرمافزارهای تحت وب مشتری حمله به سرویسهای وب
حمله ردپا به زیرساخت وب حمله ردپا به زیرساخت وب اولین گام در حمله به نرمافزارهای تحت وب میباشد. این موضوع در انتخاب قربانیان و شناسایی نقاط آسیبِ برنامههای تحت وب به مهاجمان کمک میکند. این حمله بر اساس چهار مرحله اکتشاف سرور، اکتشاف سرویس، شناسایی سرور و اکتشاف محتوی پنهان آن دسته بندی میگردد.
بدین صورت که مهاجم در ابتدا باید از موقعیت فیزیکی سرور اطلاع پیدا نموده، سپس خدمات در حال اجرا بر روی سرور وب را کشف نماید تا بتواند از آن به عنوان مسیرهای حمله برای هک کردن برنامههای وب استفاده نماید.
آنگاه مهاجم به ربایش علائم سرور نظیر نوع نرمافزار سرور و نگارش آن اقدام میکند و پس از آن نسبت به کشف و استخراج محتوای پنهان شده و به طور کلی قابلیتهای پنهان شده ای که به طور مستقیم قابل دسترس نیستند، میپردازد. در ادامه به بررسی این مراحل خواهیم پرداخت.
با یافتن سرور قربانی، اطلاعاتی درباره محل سرورها و نیز روشن بودن سرور هدف بر روی اینترنت بدست میآید. این هدف همان مرحله اکتشاف سرور است که به سه روش صورت میگیرد.
در روش اول که موسوم به روش جستجوی Whois است میتوان اطلاعات تماس را درباره آدرس آی پی سرور وب و نیز دامنههای آن، بدست آورد. از طرفی میتوان با عملیات تجسسی از DNS محل قرار گیری سرور و نوع آن را مشخص نمود.
پس از این مرحله مهاجم اقدام به کاوش درگاههای سرور جهت اتصال به مجموعه خاصی از درگاههای TCP و یا UDP میکند تا خدماتی را که بر روی سرور وجود دارند را شناسایی نموده و جهت بهره برداریهای آینده خود مورد استفاده قرار دهد.
بنابراین یافتن درگاههای باز منجر به شناسایی سرویسهای فعال در سیستم میگردد. بدین ترتیب در مرحله اکتشاف سرویس مهاجم اقدام به کاوش سرویس دهنده وبِ مورد نظر جهت شناسایی درگاههایی میکند که در آن سرویسدهندههای وب برای ارائه خدمات مختلف از آن استفاده میکند.
شناسایی این سرویسها به مهاجم کمک میکند تا از آن به عنوان مسیرهای حمله برای نفوذ به برنامههای تحت وب استفاده نماید.
سرویسهای معمول و درگاههای آن در پروتکل HTTP گام سوم از حمله ردپا به زیرساخت وب، شناسایی سرور و ربایش علائم آن میباشد. این مرحله با تجزیه و تحلیل فیلد سرایندِ پاسخِ سرور برای شناسایی سازنده، مدل و نسخه نرمافزار سرور وب انجام میگیرد. این اطلاعات به مهاجمان کمک میکند تا برای حمله به سرور وب و نرمافزارهای تحت آن رفتارشان را مطابق با قابلیتهای آسیبپذیری پایگاه داده انتخاب نمایند.
شناسایی سرور و نوع آن کشف محتوی پنهان آخرین مرحله این حمله میباشد که هدف آن دستیابی به محتوایی است که از دید کاربر پنهان بوده و امکان بهره برداری از آن توسط کاربر ممکن نیست و به طور کلی از امتیازات نرمافزار برای کاربر نمیباشد.
این موضوع اجازه میدهد تا مهاجم رونوشتهای پشتیبان را از فایلهای جاری، فایلهای تنظیمات، فایلهای ثبت وقایع شامل اطلاعات حساس، آرشیو نسخه پشتیبان که خود نیز حاوی اطلاعات لحظهای از فایلهای موجود در ریشه اصلی وب است و نیز قابلیتهای جدیدی که به نرمافزار اصلی ارتباط داده نشده است و... را بدست آورد.
یک روش برای کشف محتوای پنهان استفاده از جستجوگر عنکبوتی وب است. جستجوگر عنکبوتی به طور خودکار اقدام به بازیابی قابلیتها و محتوای پنهان مینماید. این عمل به کمک تجزیه و تحلیل درخواستها و پاسخهای متون اسکریپ HTML از سمت کلاینت امکان پذیر میگردد.
به طور نمونه میتوان به کمک نرمافزارهایی، جستجوگر وب را مانند یک پروکسی محلی تنظیم نمود و با ارسال فرم درخواست دسترسی امکان دستیابی به تمام برنامههای مورد نظر در هر لینک یا آدرس موجود را فراهم نمود.
همچنین میتوان نگاهی به فعال یا غیرفعال بودن جاوا اسکریپت و فعال یا غیرفعال بودن کوکیها انداخت و یا بوسیله عامل جایگزین، نقشه سایت ایجاد شده را بررسی نموده و هر عملکرد یا محتوای پنهان مربوط به برنامه کاربردی را شناسایی نمود. ادامه این مراحل به صورت بازگشتی تا آنجا ادامه مییابد تا تمامی محتوا و قابلیتها شناسایی گردند.
این جستجوی عنکبوتی به شیوه مستقیم نیز قابل انجام است. بدین صورت که مهاجم به تمام قابلیتهای نرمافزار کاربردی دسترسی پیدا نموده و از یک عامل جایگزین نفوذی جهت نظارت بر تمامی درخواستها و پاسخها استفاده میکند. عامل جایگزین نفوذی تمامی پاسخهای نرمافزار کاربردی را تجزیه کرده و قابلیتها و محتوا کشف شده در آن را گزارش مینماید.
حمله به سرورهای وب پس از شناسایی محیط و زیرساخت سرویس دهنده وب، جستجوی سرویس دهنده برای شناسایی قابلیت آسیبپذیری آن صورت میگیرد. سپس حمله به سرویس دهنده وب بر اساس بهره برداری از قابلیتهای آسیبپذیر و شناخته شده انجام میگیرد.
این موضوع به کمک حمله اخلال در سرویس در سرویس دهنده وب انجام میگیرد. برای این منظور، نرمافزارهایی این نقاط آسیبپذیر امنیتی را در نرمافزارهای وب به کمک اسکنهای تعاملی شناسایی میکنند. بنابراین مهاجم میتواند پس از شناسایی نقاط آسیبپذیر، حملاتی را به سرویس دهنده وب ترتیب دهد.
تحلیل نرمافزارهای تحت وب تجزیه و تحلیل قابلیتها و فناوریهای نرمافزار فعال در یک سیستم به منظور شناسایی سطح حملهای است که نرمافزار در معرض آن قرار دارد و مهاجم میتواند با توجه به نتایج آن تصمیم گیری نماید.
این تقسیم بندی شامل شناسایی نقاط ورودی کاربر، شناسایی عملکرد برنامههای سمت سرور، شناسایی فناوریهای موجود در سرور و برنامهریزی متناسب با سطح حمله میباشد.
برای شناسایی نقاط ورودی کاربر درخواستهای تولید شده HTTP مرور میگردند. محل قرار گیری فایلها یا برنامهها، سرآیند HTTP، پارامترهای رشته پرس و جو، دادههای POST، و کوکیها به منظور تعیین تمامی زمینههای ورودی کاربر مورد بررسی قرار میگیرند.
پس از آن تکنیکهای رمزگذاری URL و دیگر اقدامات رمزگذاری که جهت امن نمودن ترافیک وب مانند SSL اجرا میگردند، مشخص میگردد. از طرفی پارامترهای سرآیند HTTP نیز که میتواند توسط نرمافزار به عنوان ورودی کاربر مورد پردازش قرار بگیرد، همچون عامل کاربر، ارجاع، تایید، زبانِ مورد پذیرش و سرایندهای میزبان شناسایی میگردند.
شناسایی عملکرد برنامههای سمت سرور در گام بعدی دنبال میشود. بدین صورت که با مشاهده و رصد برنامههایی که از طرف سرویس دهنده برای کاربر به نمایش گذارده میشوند، قابلیتها و ساختار آن شناسایی میگردد.
بنابراین آدرس منابع صفحات و URL آنها را مشخص نموده و با تخمینی علمی و اصولی جهت تعیین ساختار داخلی و قابلیتهای نرمافزارهای وب، آن سرویس دهنده را مدل سازی میکند.
شناسایی URL سرویسدهنده وب از طرف دیگر مهاجم اقدام به شناسایی فناوریهای موجود در سرور مینماید. فناوریهای فعال موسوم به اثر انگشت بر روی سرور با استفاده از تکنیکهای مختلفِ اثر انگشت از قبیل انگشت نگاری HTTP انجام میگیرد.
در گام نخست انگشت نگاری دقیقی از سرویسدهنده انجام گرفته و هدرهای HTTP و کد منبع HTML مورد تجزیه و تحلیل قرار میگیرند تا فناوریهای سمت سرور شناسایی گردند.
در مرحله بعد آدرسهای URL برای شناسایی پسوندها، فهرست فایلهای ذخیره شده و دیگر اطالاعات مورد بررسی قرار گرفته و پس از آن پیامهای خطای صفحات بررسی میگردند و در انتها علائم مشخصه نشستها مورد ارزیابی قرار میگیرند.
در انتها نیز حملات قابل انجام مطابق با اطلاعات بدست آمده از برنامه تحت وب را بررسی نموده و با استفاده از نرمافزارها و قابلیتهای آسیبپذیری موجود در هر یک از آنها، سطح حمله قابل انجام را در چندین حالت شناسایی میکند.
یک نمونه گزارش فناوریهای مورد استفاده در سمت سرور در این شماره مروری کوتاه بر مفهوم سرویس وب، سیاستگذاری و امنیت آن ارائه کردیم. همچنین فهرستی از روشهای حمله مهاجمان به برنامههای کاربردی تحت وب معرفی گردید که برخی از آنها مورد بررسی قرار گرفت.
در شماره آینده، سایر موارد نظیر حملات به سازوکار و ساختار احراز اصالت و یا حملات تزریق را که از اهمیت بسیار زیادی برخوردارند به تفصیل مورد بررسی قرار خواهیم داد.