قسمت دوم
هفته های قبل، در بخش اول لغت نامه امنیت درباره نقاط ضعفی که به نفوذگر اجازه ورود به سیستم را میدهند، صحبت کردیم. در این بخش قصد داریم تا به بررسی راه های حمله (Attack Vector) بپردازیم.
اگر مثال قبلی خودمان را که کامپیوتر و شبکه را به ساختمان و نقاظ ضعف را به حفره های ایجاد شده در دیوارهای ساختمان تشبیه کردیم، ادامه دهیم، راه های حمله نیز روش هایی است که نفوذگران برای رخنه و ورود غیرمجاز به ساختمان استفاده می کنند.
بطور کلی، یک راه حمله یعنی بکارگیری برنامه ای که امکان سوءاستفاده از یک نقطه ضعف را فراهم می کند. به این نوع برنامه payload گفته می شود. راه های حمله نیز براساس نحوه بکارگیری این برنامه، با یکدیگر متفاوت هستند.
معمولاً راه های حمله را براساس میزان دخالت قربانی در اجرای موفقیتآمیز آنها طبقهبندی میکنند. برای مثال اگر راه حمله یک فایل مخرب باشد، قربانی باید آن فایل را دریافت و اجرا کند. اما در روش “تزریق به پایگاه داده”، حمله بدون نیاز به کاربر نیز قابل اجرا است.
در حملاتی که دخالت قربانی اندک است، گستره و شدت حملات اغلب محدود است. در حالیکه در حملاتی که قربانی های مختلف دخالت داده می شوند، اهداف بیشتری مورد هدف قرار می گیرند و دامنه حمله گسترده تر است. در یک لحظه، یک نفوذگر به تنهایی فقط میتواند به یک ساختمان حمله کند. ولی در حملاتی که قربانیان نقش بزرگی در اجرای آن ایفا می کنند، می توان بطور همزمان به چندین ساختمان حمله و به آنها رخنه کرد. فقط کافی است که نفوذگر ابزارهای لازم (برنامه مخرب یا Payload) را در محل مناسبی قرار داده و با ظاهرسازی فریبنده آن، قربانیان را به دام بیندازد تا بخش عمده کارهای حمله به دست خود قربانیان انجام شود.
راه های حمله براساس میزان دخالت کاربر، به سه بخش دخالت کم، دخالت متوسط و دخالت زیاد تقسیم میشوند. در این مقاله به بررسی راه هایی که دخالت کاربر در اجرای حملات کم و اندک است، میپردازیم و حالت های دیگر را در سلسله مقالات بعدی بررسی خواهیم کرد.
- راه های حمله با دخالت کم کاربر
در این نوع راه ها، لازم است نفوذگر کارهای زیادی را پیش از آغاز حمله انجام دهد. بسیاری از این کارها به شناسایی و اینکه حمله کجا و چگونه اجرا شود، مربوط میشود. اما قربانیان این حملات، دخالت چندانی در موفقیتآمیز بودن حمله ندارند. همچنین بسیاری از راه های طبقهبندی شده در این گروه، به برنامههای اینترنتی نیاز دارند. سه راه رایج و پرطرفدار در این گروه، عبارتند از:
تزریق به پایگاه داده (SQL Injection): همانطور که از نامش برمیآید این راه حمله تنها بر روی سایت ها و برنامههایی که مستقیماً به یک پایگاه داده متصل هستند، قابل اجرا است. معمولاً نفوذگر، سایت معتبری را که داده وارد شده توسط کاربر را وارسی نمیکند، یافته و حمله را از این راه اجرا میکند. بررسی نشدن دادههای وارد شده توسط کاربر، به نفوذگر اجازه استفاده از کاراکترها یا بهتر بگوییم فرمان هایی را میدهد که میتوانند به دسترسی غیرمجاز و دستکاری اطلاعات ذخیره شده در پایگاه داده منجر شود.
خطای سرریز حافظه (Buffer Overflow): زمانی که برنامهای به دادههای کاربر نیاز دارد آنها را در حافظه ذخیره میکند. برخی برنامهها بدون اینکه بررسی کنند که آیا داده وارد شده توسط کاربر به اندازه حافظه تخصیص داده شده است یا خیر، آن را در حافظه مقیم میکنند. ورود دادههای بیش از حد، سبب میشود که داده اضافی در قسمت هایی دیگر از حافظه ذخیره شده و آن داده ها هرچه باشند، به اجرا در می آیند. در بهترین حالت، تنها آن برنامه را دچار مشکل می کند. اما اجرای برنامهریزی شده این نوع حملات، میتواند به نفوذگر امکان اجرای هر گونه دستوری را بدهد. فقط کافیست که نفوذگر بداند داده های سرریز شده (یا در حقیقت، دستورات او) در چه بخشی از حافظه ذخیره می شود.
تزریق اسکریپت (Cross-Site Scripting): این راه حمله هم نوعی از روش “تزریق” است که تنها بر روی سایت هایی که اجازه اجرای اسکریپت ها (نظیر JavaScript) را میدهند، اجرا میشود. در این حمللات، زمانی که سایت از کاربر میخواهد تا دادهای را وارد کند، نفوذگر اسکریپت های حاوی کدهای مخرب را در بصورت <script> و </script> وارد میکند. سایت نیز اطلاعات را خوانده و آن را به عنوان یک اسکریپت تشخیص می دهد و بدون هیچ محدودیتی آن را اجرا میکند. در صورتیکه این اطلاعات داده شده در جایی از سایت ذخیره شود، این راه حمله می تواند بطور مستمر و مداوم ادامه داشته باشد. به عنوان مثال، اطلاعاتی که در سایت Facebook در بخش های Wall و User Profile ذخیره می شوند، می توانند از این نوع باشند.
راه های دیگر حمله را در سلسله مقالات بعدی بررسی خواهیم کرد.