بررسی روشهای رخنهگری در برنامههای تحت وب (بخش پایانی)
ایتنا- استفاده روز افزون کاربران از برنامههای کاربردی تحت وب، پتانسیل پرخطرِ بسیاری را از شبکه اینترنت به سمت کاربران آن سوق میدهد.
سیدمحمدرضا موسوی پور در شماره گذشته، موضوع شناخت روشهای نفوذ و حمله مهاجمان به برنامههای تحت وب را آغاز نموده و حمله ردپا، حمله به سرورهای وب و حمله تحلیلِ نرمافزارهای تحت وب را معرفی نمودیم. در این شماره به بحث درباره سایر روشها پرداخته و آنها را بررسی مینماییم. یکی از مهمترین این حملات به واسطه درهم شکستن سازوکار احراز اصالت انجام میگیرد.
حمله به سازوکار احراز اصالت سازوکار احراز اصالت روشی است که به کمک آن هویت طرف مقابل یک ارتباط شناسایی میگردد. مهاجم میتوانند از شیوه طراحی و نیز معایب پیادهسازی این سازوکار در برنامههای کاربردی وب، از قبیل نارسایی نحوه بررسی و استحکام رمز عبور و یا انتقال ناامن گواهی نامهها استفاده نماید.
الف - تعیین نام کاربری یک روش برای حمله به سازوکار احراز اصالت، تعیین نام کاربری قربانی بصورت فهرستنویسی، توسط مهاجم است. در صورتی که برای ورود به سیستم به دلیل رخداد خطا در وارد نمودن قسمتی از نام کاربری یا رمز عبور پیام خطا اعلام شود، نام کاربری و رمز عبور کاربرانِ نرمافزار را میتوان از روشهای سعی و خطا حدس زد.
برخی از برنامههای کاربردی به طور خودکار حساب کاربری را بر اساس یک دنباله ( مانندuser۱۰۰۱، user۱۰۰۲ و... )، تولید میکنند.
بنابراین مهاجم میتواند به گونه ای آنرا پیش بینی نماید. در نتیجه میتواند توالی و نحوه تعیین نام کاربری معتبر را بدست آورد. لازم به توضیح است که در روش تعیین نام کاربری، در صورتی که در برنامه سیاست تحریم حساب کاربری پیادهسازی شده باشد، پیامهای خطای پشت سر هم با شکست مواجه خواهد شد. بطور نمونه برنامه کاربردی پس از دریافت پیامهای خطای پشت سرهم حساب کاربری را برای مدت زمان معینی قفل مینماید.
ب - حمله به رمز عبور حمله به رمز عبور و سوء استفاده از قابلیتهای آن روش دیگری است که برای درهم شکستن سازوکار احراز اصالت بکار میرود. این حمله خود شامل روشهای مختلفی است. بعنوان یک راهکار، مهاجم اقدام به یافتن راه حلی برای تغییر رمز عبور در داخل برنامه کاربردی، به کمک جستجوی عنکبوتی برنامه و یا ایجاد یک حساب کاربری برای ورود به سیستم مینماید.
بدین صورت که سعی میشود تا رشته ای تصادفی برای فیلد رمز عبور قدیمی، رمز عبور جدید و نیز فیلد تکرار رمز عبور جدید در نظر گرفته شود. پس از آن مهاجم به تجزیه و تحلیل خطاها برای شناسایی نقاط آسیبپذیری در قابلیتهای تغییر رمز عبور می پردازد.
روش دیگری نیز وجود دارد و آن استفاده از ویژگی «فراموشی رمز عبور» است که جهت بازیابی رمز عبور توسط کاربر از آن استفاده میشود و ما تاکنون بارها از آن استفاده کردهایم.
این موضوع معمولا یک چالش برای کاربر محسوب میشود. اگر تعداد تلاش برای بازیابی رمز عبور محدود نباشد، مهاجم به کمک مهندسی اجتماعی میتواند در این زمینه صاحب موفقیت شود. از این رو ممکن است برنامههای کاربردی آدرس بازیابیURL منحصربفرد یا همان رمز عبور فعلی را به آدرس ایمیل تعیین شده توسط مهاجمی که توانسته در این چالش پیروز شود، ارسال نماید.
یک ویژگی دیگر نیز میتواند مورد سوءاستفاده مهاجم قرار گیرد و آن استفاده از ویژگی «مرا به خاطر داشته باش» است. این کارکرد، ابزاری است که برای استفاده از آن از کوکیهای پایدار استفاده میشود.
این کوکیها بصورت شناسه دائمی یک نشست و یا یک نام همچون RememberUser=MP۶۴۲۹ یا RememberUser= mousavipour میباشند. مهاجم میتواند از یک شمارشگر نام کاربری یا پیش بینی شناسه یک نشست، مثل استفاده از مشخصات فرد استفادهکننده برای دور زدن سازوکار احراز اصالت استفاده نماید.
ج - حمله نشست در مرحله اول این حمله که مربوط به حملات به سازوکارِ احراز اصالت است، مهاجم اقدام به جمعآوری مقادیر چند شناسه نشستِ معتبر مینماید. جمعآوری این مقادیر با آزمایش مداوم و تشخیصِ ترافیک کاربران معتبر انجام میگیرد.
سپس مهاجم شناسههای جمعآوری شده نشست را تجزیه و تحلیل نموده و فرایند تولید شناسه نشست را همچون ساختارِ شناسه نشست، اطلاعاتی که در ایجاد آن مورد استفاده قرار میگیرد و الگوریتم رمزگذاری و یا الگوریتم درهم نمودن متن را که جهت محافظت نرمافزار استفاده میشود، تعیین مینماید.
سازوکارهای تولید نشستی که مورد حمله قرار میگیرند، ترکیبی از نام کاربری یا دیگر اطلاعات قابل پیش بینی نظیر برچسب زمانی و یا آدرس IP مشتری هستند که از آنها برای شناسههای نشست استفاده میشود. مهاجم میتواند به کمک تکنیکی موسوم به کاربریِ ناشیانه مقادیر مختلفی از شناسههای نشست را تولید نموده و تست نماید و تا موفقیت در دسترسی به نرمافزار کاربردی آنرا ادامه دهد.
د - سوء استفاده از کوکیها آخرین موردی که در چهارچوب حملات به سازوکار احراز اصالت بررسی میگردد، سوءاستفاده از کوکیها توسط مهاجم است. در صورتی که کوکیها شناسههای نشست یا رمزهای عبور را در خود داشته باشند، مهاجم میتوانند با استفاده از روشهایی مانند تزریق اسکریپت و یا استراق سمع آنها را سرقت کند. آنگاه کوکیهای مشابه را با تغییر رمزهای عبور یا شناسههای نشست، برای دور زدن برنامه احراز هویت به محل خود باز میگرداند.
حمله به ساختار احراز اصالت یکی از روشهای دیگر حمله به برنامههای تحت وب، حمله به ساختار احراز اصالت است. مهاجم برای خرابکاری تمهیداتِ برنامههای مجازشناسی، از طریق تغییر فیلدهای ورودیِ درخواستهای HTTP اقدام نموده و آنها را دستکاری مینماید. این فیلدها مربوط به شناسه کاربر، نام کاربری، گروه دسترسی، هزینه، نام فایل، شناسههای فایل، و... میباشد.
اولین دسترسی مهاجم به نرمافزار وب با استفاده از حساب کاربری کم اهمیت انجام میگیرد و بعد از آن دسترسی به منابع حفاظت شده با اهمیتتر صورت میگیرد. در این روش مهاجم اقدام به مطالعه و بررسی غیر مجاز درخواستهای HTTP شامل پارامترهای بررسی رشتههای جستجو و نیز سرآیندهای HTTP میکند.
در صورتیکه رشته پرس و جو که جهت استخراج دادهها از پایگاه دادهها و به كارگیرى آنها استفاده میگردد، در نوار آدرس جستجوگر صفحات وب قابل دیدن باشد، مهاجم بسادگی میتواند با تغییر پارامترهای رشته، سازوکار احراز اصالت را دور بزند و از آن عبور کند.
در ارتباط با سرآیندهای HTTP نیز این نکته حائز اهمیت است که، اگر نرمافزار از سرآیند ارجاع جهت ایجاد تصمیم گیریهای کنترل دسترسی استفاده کند، مهاجم میتواند از آن برای تغییر عملکردهای دسترسی حفاظت شده نرمافزار استفاده نماید.
علاوه بر مطالعه غیر مجاز درخواستهای HTTP مهاجم اقدام به مطالعه غیر مجاز پارامترهای کوکی میکند. به این صورت که در گام نخست، اقدام به جمعآوری برخی از کوکیهای ذخیره شده توسط برنامه تحت وب نموده و جهت تعیین سازوکار و چگونگی تولید کوکیها، آنها را مورد تجزیه و تحلیل قرار میدهد.
پس از آن مهاجم کوکیهای ذخیره شده توسط برنامه تحت وب را در تله انداخته و در آنها تغییرات غیر مجاز خود را انجام میدهد.
حمله به سازوکار مدیریتِ نشست مهاجم سازوکار مدیریت یک نشست را در یک برنامه کاربردی تجزیه نموده تا بتواند از کنترلهای مجازشناسی آن عبور کرده و خود را بجای کاربران دارای امتیاز ویژه و در واقع با هویت جعلی جا بزند.
برای تولید مجوز یک نشست ابتدا مجوزهای آن نشست پیشبینی شده و سپس دستکاری غیرمجاز بر روی علائم و مجوزهای نشست انجام میگیرد. چگونگی استفاده و بکارگیری مجوز نشست نیز موضوعی است که به آن پرداخته میشود.
همانطور که گفته شد، برای تولید مجوز یک نشست این دو عنوان مورد توجهاند. موضوع اول محاسبه و پیش بینی مجوزهای نشست و دیگری مطالعه و دستکاری غیر مجاز علائم و مجوزهای نشست میباشد. نمونهای از یک رمزگذاری ضعیف که منجر به حمله گردیده است در شکل آورده شده است که در آن رمزگذاری در مبنای شانزده یک رشته اسکی بصورت user=mousavipour;app=admin;date=۱۰/۱۲/۱۳۹۱, میباشد. در این مثال، مهاجم میتواند مجوزهای دیگر نشست را تنها با تغییر تاریخ این متن حدس بزند و از آن در ارتباطات آتی با سرور استفاده نماید. بنابراین مهاجم میتواند مجوز نشست معتبر را با بررسی مداوم و تشخیصِ ترافیک و یا بصورت ورود غیرقانونی به نرمافزار و تجزیه و تحلیل آن برای شیوه رمزگذاری (hex-encoding, Base۶۴ ) و یا هر الگوی و نشانه دیگری بدست آورد.
در صورتیکه بتوان از هر نشانه و مفهومی با استفاده از مهندسی معکوس و نمونه برداری از مجوز نشست پی به ساختار مجوز نشست برد، مهاجم مبادرت به حدس زدن مجوزهای اخیری میکند که برای سایر کاربران برنامه صادر شده است. سپس تعداد بسیار زیادی درخواست را که مربوط به صفحه وابسته به نشست است، با حدس مجوز میسازد و جهت تعیین مجوز معتبر بکار میگیرد.
در ادامه مهاجم استفاده از مجوز نشست را در دستور کار خود قرار خواهد داد. بدین صورت که بوسیله ابزارهای ردیابی یا یک پروکسی بینراهی بصورت مداوم اقدام به بررسی ترافیک برنامه میکند. در صورتیکه از کوکیهای HTTP جهت سازوکارِ انتقال برای مجوزِ یک نشست استفاده گردد و نیز فلگ امنیت در آن فعال نگردیده باشد، مهاجم میتواند یک کوکی را جهت دسترسی غیر مجاز به برنامه کاربردی جایگزین کوکی فعلی نماید. استفاده مهاجم از کوکیهای نشست میتواند منجر به حملات جلسه ربایی، برگرداندن نشست و مَرد میانی شود.
اجرای حمله تزریق حملات تزریق یکی دیگر از روشهای حمله به برنامههای تحت وب است. در این حمله مهاجم ورودیهای مخرب آلوده و ساختگی را بگونه ای تهیه میکند که کدی منطبق با زبان مفسرِ بوجود آوردنده آن ایجاد شود و از آن درست مانند آنچه در دیگر برنامههای معمول بکار میرود، استفاده میکند. برخی از انواع این حملات تزریق را در ادامه بررسی میکنیم.
- یک نمونه از این گونه حملات، تزریق دستورات STMP در ارتباطاتِ بین برنامه کاربردی و سرور STMP میباشد که برای ایجاد حجم زیادی از هزرنامههای ایمیل بکار میرود. - یک نمونه دیگر تزریق دستورات سیستمعامل نام دارد. در این حمله در صورتیکه ورودیهای کاربر در سطح فرمانهای سیستمی مورد استفاده قرار گیرند، مهاجم بوسیله وارد کردن کدهای مخرب در فیلدهای ورودی از سیستم عامل بهره برداری خواهد نمود. - تزریق اسکریپتهای وب نمونه دیگری از این حمله است. در صورتیکه ورودیهای کاربر درون کدهایی قرار بگیرند که عملکرد پویایی دارند، این ورودیهای آلوده میتوانند دستورات اجرایی را بر روی سرویس دهنده و محتویات دادههای مورد هدف، بشکنند. - تزریق SQL نیز با داخل نمودن یکسری از دستورات جستجوی مخرب به درون فیلدهای ورودی جهت استخراج داده از پایگاه داده SQL انجام میشود. بنحوی که بطور مستقیم بتوان دادهها را در پایگاه داده دستکاری نمود. - تزریق LDAP امکان استفاده غیر معتبر از قابلیتهای آسیبپذیر در ورودیهای نرمافزار کاربردی را با عبور از فیلترهای LDAP میسر میسازد. امکان دسترسی مستقیم به منابع پایگاه داده به کمک این نوع حمله تزریق امکانپذیر میگردد. - و سرانجام تزریق XPath معرفی میشود که در آن مهاجم امکان وارد نمودن رشتههای مخرب را در فیلدهای ورودی به منظور دستکاری فرمانهای جستجوی و استخراج دادههای XPath را مییابد. به طوری که با منطق برنامه مطابق بوده و با آن تداخلی ایجاد نشود.
حمله به اتصال داده در حمله اتصال به پایگاه داده به جای آنکه از پرسوجوی پایگاه داده استفاده شود، از نرمافزارهای مرتبط با پایگاه داده استفاده میگردد. حملات اتصال داده در سه دسته حمله تزریق رشته اتصال، حمله آلودگی پارامترهای رشته اتصال و حملات ترکیبی اخلال در خدمت اتصال تقسیم بندی شدهاند.
این رشتههای اتصال به پایگاه داده در ارتباطات بین موتور پایگاه داده و برنامههای کاربردی مورد استفاده قرار میگیرند. بطور نمونه جهت ارتباط با پایگاه داده سرورSQL مایکروسافت از یک رشته اتصال رایج استفاده میشود.
بنابراین مهاجم با تزریق پارامترهای مورد نظر در رشته اتصال، در محیطی که اجازه آنرا یافته است، اقدام به این حمله مینماید و کاراکترهای خود را بعد از یک نقطه ویرگول به رشته وارد میکند. این حمله وقتی قابل انجام است که از رشته الحاقی پویـا در ساختار ورودیهای رشته اتصال کاربر استفاده شود.
در روش دوم آلوده نمودن پارامترهای رشته اتصال مورد توجه قرار میگیرد. از این رو مهاجم اقدام به بازنویسی مقدار پارامترها در رشته اتصال مینماید که خود در سه مرحله انجام میگیرد.
سرقت تابع درهمساز که در رمزیسازی کاربرد دارند، یکی از مراحل این حمله است. در این حالت مهاجم با اجرای عملیات مطالعه و بررسی گواهی نامههای ویندوز و نیز جایگزینی مقادیر پارامترهای منبع دادهای که با اینترنت در ارتباط هستند، اقدام به سرقت توابع درهمساز میکند.
در گام بعدی مهاجم بوسیله تغییر مقادیر و بررسی خطاهای بوجود آمده، اقدام به جستجو و شناسایی درگاههای باز سیستم میکند. آنگاه تلاش میکند بوسیله ربایش گواهی نامههای وب و ایجاد یک شناسه کاربری در آن به پایگاه داده متصل شود.
اما روش سومی نیز برای حمله به اتصال داده وجود دارد و آن ایجاد حملات ترکیبی اخـلال در خدمت است. در این روش مهاجم به بررسی تنظیمات اتصال برنامه کاربردی پرداخته و آنها را شناسایی میکند.
سپس یک بدافزار پرسوجوی SQL را جهت انجام پرسوجوهای همزمان بر روی قربانی راهاندازی میکند تا تمامی ارتباطات آنرا مشغول نموده و سبب شود دیگر درخواستهای پرس و جوی کاربران قانونی دچار اشکال شود.
بطور مثال در ASP.NET بصورت پیش فرض، حداکثر تعداد ۱۰۰ تماس با زمان اتمام ۳۰ ثانیه در نظر گرفته شده است. بنابراین مهاجم تماسهای همزمان متعددی بیش از این مقدار، با زمان اجرای بیش از ۳۰ ثانیه ایجاد خواهد نمود تا موجب اخلال در خدمت پایگاه داده و نرمافزار روی آن شود.
حمله به نرمافزارهای تحت وب مشتری مهاجمان با توجه به اهدافشان میتوانند بخشهایی از حملات گفته شده را بر روی نرمافزارهای مشتری پیادهسازی نمایند و حتی با آلوده نمودن آنها و اجرای بدافزارهایی، آنها را جهت اجرای حملات بر روی سایر اهداف به خدمت بگیرند.
بطور معمول نبود دانش کافی، نبود حساسیتهای امنیتی صاحبان این وسایل و یا بیتوجهی به موارد امنیتی که بطور معمول در پایینترین سطح توجه قرار دارند، رخنـه به نرمافزارهای کاربردی مشتریان توسط مهاجم را به سادگی ممکن میسازد.
حمله تعیین مسیر مجدد پیام، تزریق به سرایندHTTP، تزریق به فریم، حمله درخواستهای ساختگی، جلسه ربایی، حمله سر ریـز بافر، فریبکاری درARP، حمله کانال پنهان و حملات اکتيو ايکـس تنها بخشی از حملاتی است که توسط مهاجم صورت میگیرد.
حمله به سرویسهای وب تکامل خدمات وب و استفاده روز افزون آنها در تبادل اطلاعات، کسبوکار و بنگاههای اقتصادی، پیشنهادهای جدیدی را پیش روی مهاجمان و سوءاستفاده کنندگان گشوده است.
بنابراین آنها مسیر حمله به بدنه این برنامهها را دنبال میکنند. بطور کلی فناوری سرویس وب امکان ارتباط نرمافزارهای کاربردی را با یکدیگر مستقل از نوع سیستم عامل و زبان برنامه نویسی میدهد. سرویسهای وب مبتنی بر پروتکلهای XML هستند.
این پروتکلها همچون WSDL برای تشریح نقاط تماس؛ UDDI برای توصیف و پیدا کردن سرویسهای وب؛ و پروتکلهایSOAP، برای ارتباطات بین وب سرورها میباشند که در معرض تهدید قرار دارند. مهاجم در فازهای اولیه اقدام به جمعآوری اطلاعات از سرویس وب مینمایند و حملاتی را ترتیب میدهد.
این عملیات با مشاهده و جمعآوری ردپای اطلاعات UDDI یک برنامه وب همچون موجودیتهای کسب و کار، سرویسهای کسب و کار، الگوهای الزام اور و مدلهایT انجام میگیرد.
سپس مهاجم اقدام به مسمـوم نمودن کدهای XML سرویس وب مینماید. بدین صورت که با قرار دادن کدهای مخرب XML درون درخواستهای SOAP، منجر به جابجایی و دستکاری دادههای گره XML شده و یا موجب مسمومیت الگوی XML شود. بنابراین منطق زبانی XML تولید خطا نموده و درنتیجه اجرای آن با شکست مواجه شده و متوقف میگردد.
از این به بعد مهاجم میتوانند منابع موجودیتهای خارجی XML را دستـکاری نمایند، بطوریکه منجر به اجرای فایلی خودسر گشته و یا اتصال TCP موردنظر را باز نموده و برای حملات آتی سرویس وب مورد سوءاستفاده قرار دهند. مهاجم با مسموم نمودن XML توانایی انجام حمله اخـلال در خدمت را دارد و نیز ممکن است قادر به شکستن محرمانگی اطلاعات گردد.
جمـعبندی در این مقاله مفاهیم مرتبط با امنیت برنامههای کاربردی تحت وب مورد مطالعه قرار گرفت. این بررسی با نگاهی بر روش و قواعد کلی حملات انجام گرفت. پیش از بررسی جزئیات روشهای رخنهگری در برنامههای تحت وب، به درک ساختار و معماری وب، سیاستگذاریهای سرویس وب و نیز مهمترین سیاست آن یعنی امنیت برنامههای کاربردی تحت وب پرداخته شد.
با این نگاه، به بررسی حملات و روشهای رخنه مهاجمان پرداخته شد. بدین ترتیب که مهاجم در اولین گام اقدام به حمله ردپا به زیرساختهای وب مینماید. این موضوع در شناسایی قربانیان و شناخت نقاط آسیبپذیر برنامههای تحت وب کمک بسیاری میکند.
بنابراین مهاجم در چهار مرحله اکتشاف سرور، اکتشاف سرویس، شناسایی سرور و اکتشاف محتوای پنهان حملاتی را ترتیب میدهد.
مهاجم در ابتدا از موقعیت فیزیکی سرور اطلاع پیدا نموده، سپس خدمات در حال اجرا بر روی سرویسدهنده وب را کشف نموده تا از آن به عنوان مسیرهای حمله برای رخنه در برنامههای کاربردی تحت وب، استفاده نماید.
در ادامه با ربایش علائم سرویس دهنده، مهاجم به کشف و استخراج محتوای پنهان شده و بطور کلی قابلیتهای پنهان شدهای که بطور مستقیم در دسترس نیستند، میپردازد.
این مراحل با استفاده از ابزارهای مختلفی انجام میگیرد. این ابزارها همچون شمشیر دولبـهای هستند که مهاجمان با استفاده از آنها سعی در تحقق اهداف غیرمجاز خود دارند و مدیران شبکه نیز از آن در جهت ایمنی و اجرای سیاستهای امنیتی بهره میبرند.
پیروزی در این رقابت نیازمند کسب دانش و آگاهی بیشتر از رقیب بوده و مستلزم آن است که با تجزیه و تحلیل قابلیتها و نقاط ضعف در مجموعه تحت اختیار بتوانیم سازوکار مناسبی را جهت امنیت برنامههای تحت وب ارائه داده و تا حد امکان هزینههای رخنـهگری را کاهش دهیم.