برای مطالعه قسمت قبل آموزش رایگان دوره CEH اینجا کلیک کنید.
کرم تزریق اسکریپت از طریق وبسایت
کرم XSS، که گاهی به عنوان یک ویروس تزریق کننده کد شناخته میشود، یک ابزار مخرب است. بهطور معمول این کرم با جاوا اسکریپت نوشته میشود و با استفاده از نقض امنیتی مرورگر، با انتشار خود در میان بازدیدکنندگان یک وب سایت، میزان آلودگی را افزایش میدهد. این کرمها اولین بار در ارتباط با یک آسیبپذیری اسکریپتی متقابل سایت Hotmail در سال ۲۰۰۲ شناسایی شدند. کرمهای XSS از یک آسیبپذیری امنیتی که به عنوان یک اسکریپت بین سایتی شناخته میشوند (XSS) در یک وبسایت سوء استفاده میکنند و بسته به آسیبپذیری، کاربر را آلوده میکنند. برخی از ویژگیهای سایتها همچون پروفایلها و سیستمهای چت میتوانند توسط کرمهای XSS به دلیل ناقص بودن یا به دلیل عدم توجه به امنیت تحت تأثیر قرار گیرند. آسیبپذیریهای اسکریپت بین سایتی بهطور معمول در قالب کرمها در وبسایتهای اجتماعی یا تجاری یافت میشوند. این کرمها میتوانند برای اهداف مخرب مورد استفاده قرار گیرند و به مهاجم اجازه دهند اطلاعات شخصی ارائه شده به وبسایت، مانند گذرواژهها و شمارههای کارت اعتباری را سرقت کند.
کرم samy
کرم Samy، بزرگترین کرم تزریقکننده کد شناخته شده است که موفق شد بیش از ۱ میلیون پروفایل سایت مایاسپیس را در کمتر از ۲۰ ساعت آلوده کند
کرم justin.tv
Justin.tv یک وبسایت ویدئویی است که در حدود ۲۰ هزار کاربر فعال دارد. آسیبپذیری اسکریپتی بین سایتی که مورد سوءاستفاده قرار گرفت، این بود که فیلد موقعیت جغرافیایی که به درستی و طبق اصول در حسابهای کاربری بارگذاری نشده بود را استخراج میکرد. این کرم چند ساعت قبل از برداشت موفقیتآمیز، پیدا شد و براساس اطلاعاتی که ثبت شده بود (با توجه به اهداف اولیه کرم برای تحقیق)، کرم قادر به آلوده کردن پروفایلهای آلوده نشده بود. پس از اصلاح آسیبپذیری، کرم از سایت پاک شد.
برنامهنویسی بازگشتگرا
برنامهنویسی بازگشتگرا (Return Oriented Programming) زمانی استفاده میشود که مکانیزمهای امنیتی مانع اجرا کدهای مخرب میشوند. در تکنیک فوق هکر پس از بهدست گرفت کنترل جریان برنامه، فهرستی از دستورات اسمبلی را به برنامه تزریق میکند. این دستورات که بهنام ابزارک شناخته میشوند هر یک فعالیت مخربی انجام میدهند. بهطور معمول ابزارکها با دستور return خاتمه پیدا میکنند و محل آنها میتواند داخل خود کد برنامه هدف یا داخل کد کتابخانههای بارگذاری شده در حافظه باشد. شکل زیر نحوه پیادهسازی این مکانیزم را نشان میدهد.
در تصویر بالا زیرروتی DrawLine را مشاهده میکیند که توسط روال DrawSquare فراخوانی شده است. دقت کنید که استک در تصویر فوق یک روند روبهرشد دارد.
برنامهنویسی بازگشتگرا یکی از حملات پیشرفته است که در زیر گروه حملات stack smashing طبقهبندی میشود. بهطور معمول این مدل حملات با سوءاستفاده از یک باگ داخل کد برنامه call stack برنامه را تغییر میدهند تا هکرها کنترل جریان برنامه را به دست آورد. این مدل باگها به دلیل اینکه برنامهنویس اندازه ورودی دریافت شده را بررسی نکرده اتفاق میافتند و به هکر اجازه میدهند مقدار دلخواه ورودی به برنامه بفرستند و با اینکار محتوای پشته را تغییر دهد. رویکرد فوق باعث میشود که مقدار آدرس برگشتی که داخل پشته است تغییر کند و در نتیجه هکر کنترل رجیستر Instruction Pointer را به دست آورد. در حملات stack smashing ساده حمله کنند مقدار آدرس بازگشتی را به آدرسی داخل خود پشته تغییر میدهد و در نتیجه بارداده مخرب خود را داخل پشته مینویسد و با پرش به کد خود فعالیت مخرب را انجام میدهد. با اینحال بیشتر سیستمعاملها و کامپایلرها برای پیشگیری از بروز این مدل حملات مکانیزمهای امنیتی مختلفی را استفاده میکنند که در این تکنیک محلهایی از حافظه که دادهها در آنها ذخیره میشوند مانند پشته قابلیت رونویسی نداشته باشند. با این مکانیزم امنیتی هکرها نمیتوانند به محلهایی از حافظه که قابلیت نوشتن در آنها وجود دارد شبیه به پشته را برای اجرای کد خود استفاده کنند و در نتیجه نمیتوانند بارداده مخرب را درون پشته نوشته و برای اجرا به آن بخش پرش کنند. در نتیجه هکرها برای دور زدن این مکانیزمهای امنیتی به تکنیکهای دیگری رو آوردند که از کدهای موجود داخل برنامه و کتابخانهها برای اجرای کارهای مخرب استفاده میکند. در مجموع هکرها دو انتخاب برای پرش دارند، یکی استفاده از کدهای کتابخانههای بارگذاری شده در حافظه است که به روش Ret2Lib معروف است و روش دوم استفاده از کدهای خود برنامه هدف. مکان دیگری که هکرها به آن حمله می کنند سرریز حوضچه ورودی است. سرریز حافظه ورودی (Buffer overrun) حالتی است که در آن برنامه، هنگامی که در حال نوشتن دادهها در داخل حافظه میانگیر است، از مرز حافظه میانگیر تخطی میکند و باعث رونویسی حافظه مجاور میشود. این یک مورد خاص از نقض ایمنی حافظه است و گاه مورد توجه خرابکاران یا هکرهای اینترنتی هم به منظور افزایش سطح دسترسی واقع میگردد. سرریزهای حافظه میانگیر توسط ورودی نامناسب توسط کاربران ناآگاه یا خرابکاران برای اجرای کد خاصی، راه عمل برنامه را تغییر میدهند. این امر ممکن است در رفتار نامنظم، از جمله خطاهای دسترسی به حافظه، نتایج نادرست، تصادف، یا نقض امنیت سیستم منجر شود. بنابراین، آنها اساس بسیاری از آسیبپذیریهای نرمافزاری هستند و میتوانند مخرب بوده یا مورد سوء استفاده قرار بگیرند.
مکانیزم Ret2Lib راهکاری برای گذر از مکانیزمهای امنیتی سیستمعاملها
در روش فوق هکرها از کدهای موجود در کتابخانههای بارگذاری شده در حافظه برای فعالیتهای مخرب استفاده میکنند، یعنی به جای پرش به داخل خود پشته و اجرای بارداده از داخل آن، به یک سری از توابع داخل کتابخانههای بارگذاری شده پرش میکند. در این روش معمولاً توابعی که قابلیت اجرای کد را به برنامهنویس میدهند استفاده میشوند. بهطور مثال تابع system در libc به عنوان یکی از ورودیهای خود رشتهای دریافت میکند که مسیر برنامهای است که برنامهنویس میخواهد آنرا اجرا کند، در نتیجه حمله کننده میتواند ابتدا آدرس بازگشتی را به این تابع تغییر داده و به عنوان آرگومان نیز آدرس رشته /bin/sh را داخل پشته قرار دهد، در نتیجه برنامه به جای بازگشت به محل اصلی، به تابع system پرش میکند و با اجرای /bin/sh باعث میشود حملهکننده یک shell از سیستم دریافت کند.
مکانیزم حمله Borrowed Code Chunk
پردازشگرهای 64 بیتی تغییراتی در نحوه ارسال آرگومانها برای توابع به وجود آورند و به جای اینکه آرگومانها داخل پشته قرار داده شوند، داخل یک سری از رجیسترها قرار داده میشوند. در این حالت حمله کنندهها نمیتوانند به راحتی به توابع کتابخانهای پرش کرده و آرگومان را داخل پشته قرار دهند. همچنین توسعهدهندگان کتابخانهها نیز برخی از توابع مورد استفاده هکرها را از کدهای خود حذف کردند، در نتیجه انجام حملات ret2lib سختتر از قبل شد. برای دور زدن این محدودیتها هکرها به جای پرش مستقیم به توابع از قسمتهایی از کدهای موجود در توابع استفاده کرده و به آنها پرش میکردند که کارهای مورد نیاز آنها را انجام دهد، بهطور مثال به قسمتهایی پرش میکردند که مقادیر داخل پشته را در داخل رجیسترهای هدف قرار میدهد و در نتیجه با این روش آرگومانهایی مورد نیاز را به توابع ارسال میکنند. در این حالت سایر فعالیتها همچون گذشته انجام میشود. در رویکرد برنامهنویسی بازگشتگرا از Chunkهای مختلف کدها داخل برنامه برای انجام اعمال مخرب استفاده میشود که در واقع یک عملکرد Turning Complete در اختیار هکر قرار میدهد که شامل حلقهها و دستورات پرشی شرطی است. این مدل حملات نسبت به سایر حملات هم از لحاظ قدرت و هم از لحاظ دور زدن مکانیزهای امنیتی برتری دارد. همچنین هیچیک از مکانیزهای امنیتی امکان مقابله با این حمله را ندارند.
پویش پورتها
یکی دیگر از روشهای مورد استفاده هکرها که پیشتر به آن اشاره داشتیم، پویش پورتها است. پویش پورتها یا پویش درگاهها (Port Scanning) یکی از محبوبترین روشهایی میباشد که نفوذگران برای تشخیص سرویسهای راهاندازی شده در یک میزبان هدف (host target) استفاده میکنند. تمامی سیستمهایی که به شبکههای داخلی یا اینترنت متصل میشوند سرویسهای مشخص و مشهوری را اجرا میکنند. با استفاده از ابزارهای مشخصی، نفوذگر دادههایی را به صورت بستههای TCP و UDP به سمت پورتهای سیستم ارسال میکند. با استفاده از پاسخهایی که از این پورتها دریافت میکند، میتواند بفهمد کدام پورتها در حال استفاده است یا به زبان دیگر کدام پورتها باز میباشند. وقتی که نفوذگر متوجه شد کدام پورتهای سیستم باز هستند، حمله را روی این پورتها متمرکز میکند و با استفاده از ضعفهای موجود، سیستم هدف را در دست میگیرد.
پویش پسیو
پویش غیرفعال یک روش اسکن پورت TCP است که متشکل از ارسال بستههای جعلی به یک کامپیوتر برای پیدا کردن خدمات در دسترس است. بدین صورت است که با جعل هویت یک کامپیوتر دیگر به نام (زامبی) است که انتقال یا دریافت اطلاعات یا با مشاهده رفتار سیستم زامبی انجام میشود. این اقدام میتواند از طریق برنامهها و نرمافزارهای معمول شبکه مانند پویشگر nmap و hping انجام شود. این حمله شامل فرستادن بستههای جعلی به یک ماشین هدف خاص برای پیدا کردن ویژگیهای متمایز دستگاه زامبی دیگراست. حمله پیچیدهاست زیرا هیچ تعامل میان رایانههای حمله و هدف وجود ندارد: حملهکننده فقط با کامپیوتر" زامبی " در تعامل است. سیستم هدف با کامپیوتر " زامبی " درتعامل است و تفاوت در رفتاری را که مشاهده میکند با استفاده از "زامبی"های مختلف با شواهدی از امتیازات مختلف اعطا شده توسط هدف به رایانههای مختلف است.
آشنایی کلی با TCP/IP
طراحی و بهرهبرداری از اینترنت برپایه پروتکلهای به هم پیوسته که معمولاً TCP/ IP نامیده میشود. آیپی پروتکل اصلی در لایه اینترنت ازمجموعه پروتکلهای اینترنت است و وظیفه ارسال دادهها و دیتاگرام از میزبان منبع به میزبان مقصد صرفاً براساس آدرس خود را دارد. برای این منظور، IP روشهای آدرس دهی وساختارهایی را برای تلفیق دادهها تعریف میکند. این یک پروتکل بدون اتصال است و متکی برانتقال بستهها است. هر بسته IP از یک منبع داده دارای یک شناسهاست که ip شناسایی منحصربهفرد دیتاگرام است. TCP، تحویل مرتب جریان بایتها از یک برنامه بر روی یک کامپیوتر به یک برنامه دیگر بر روی یک کامپیوتر دیگر را به شکل معتبر و قابل اطمینان فراهم میکند TCP. پروتکلی است که برنامههای کاربردی واصلی اینترنت به آن تکیه میکنند، مانند انتقال وب، ایمیلها و فایلهای گسترده جهانی است. هر یک ازبرنامههای کاربردی سرور، سرویس نامیده میشود. در این سیستم، میزبان وخدمات میزبان به استفاده از دو جزء اشاره میکنند: آدرس و شماره پورت.۶۵۵۳۶ شماره پورت مشخص وقابل استفاده در میزبان وجود دارد. بیشترین خدمات با استفاده از طیف محدودی از اعداد است. بعضی از پویشگرهای درگاه تنها شمارههای پورت رایج ومشخص را یا پورتها یی را که اغلب با خدمات آسیبپذیری بر روی یک میزبان معین درارتباط هستند را اسکن میکنند.. ببینید: لیست TCP و شماره پورت UDP است. نتیجه اسکن روی یک پورت معمولاً به یکی از سه دسته زیرتعمیم میابد:
۱-باز یا پذیرش: میزبان یک پاسخ تعیینکننده ارسال میکند که یک سرویس در حال گوش دادن به پورت است. مسدودشده یا رد شده یا غیرقابل شنود: میزبان یک پاسخ تعیینکننده ارسال میکند که نشان میدهد که ارتباط با پورت بسته شدهاست.
۳-فیلتر شده، کاهش یافته یا مسدود شده: پاسخ از میزبان وجود دارد. پورتهای باز در حال حاضر دو آسیبپذیری امنیتی دارند که مدیران باید درموردآنها دقت کنند:
۱- پورتهای باز- نگرانیهای امنیتی و پایداری با برنامهای مسئول ارائه خدمات است مرتبط هستند.
۲- نگرانیهای امنیت و پایداری با سیستم عاملی است که در حال اجرا بر روی میزبان است مرتبط هستند - پورت باز یا بسته پورتهای فیلترشده میلی ندارند تا آسیبپذیریها رانشان دهند. میزبان در یک شبکه محلی میتواند توسط یک دیواره آتش محافظت شود که فیلترها، مطابق با قواعدی است که مدیر راه اندازی کردهاست. این عمل خدماتی را که برای میزبان شناخته شده نیست و از نفوذ در داخل شبکه جلوگیری میکند رد میکند. پروتکل آیپی پروتکل لایه انتقال شبکه است.
در حمله استراق سمع(Session sidejacking) هکر از طریق بستههای TCP/IP اطلاعات رد و بدل شده را به روش استراق سمع (معمولاً در شبکههای بیسیم) دریافت و از آن کلید جلسه را استخراج میکند. برای جلوگیری از این راه علاوه بر تأمین امنیت شخصی، استفاده از پروتکل امن(https) میتواند به جلوگیری از این روش کمک کند. شایان ذکر است که اگر در https استراق سمع صورت گیرد، مرورگر با نمایش پیغام خطا شما را مطلع میکند.
در شماره آینده مبحث فوق را ادامه میدهیم.
برای مطالعه رایگان تمام بخشهای دوره CEH روی لینک زیر کلیک کنید:
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟