برای مطالعه قسمت قبل آموزش رایگان دوره CEH اینجا کلیک کنید.
گریز از سامانههای کشف نفوذ
مهاجمان از تکنیکهای مختلفی برای پیشگیری از شناسایی استفاده کنند. برخی از این تکنیکها به شرح زیر است:
سیلاب
یکی از اساسیترین تلاشهای برای گذر از سامانههای کشف نفوذ ارسال ترافیک سیلآس به سمت هدف است. ممکن است مهاجم تعدادی از محرکهای با اولویت پایین که سامانه تشخیص نفوذ نسبت به آنها حساس است را به کار گیرد و تلاش کند سامانه را به این شکل مشغول نگه دارد و حملات خطرناکتر را وارد کند. ایجاد حجم عظیمی از سرپرست را مجبور میکند تا همه دادهها را مرتب کند و به نوعی سعی کند همه آنرا به عنوان عامل محرک برای سامانه تعریف کند. هدف واقعی مهاجم این است که نشانهها و علایم مشکوک به حمله در میان حجم انبوهی از پیامها و هشدارهای کاذب از میان برود. اگر مهاجم درباره توپولوژی شبکه اطلاع داشته باشد، ممکن است با شکستن ترافیک به بستههای کوچک سعی کند یک حمله TTL را علیه سامانه تشخیص نفوذ پیادهسازی کند. ایده این است که سامانه تشخیص نفوذ را مجبور کنیم بررسی بستههای شکسته شده TTL را به عنوان نشانههای کمتر مهم متوقف کند. اکنون اجازه دهید برخی از روشهای گریز از سامانههای تشخیص نفوذ را بررسی کنیم.
حمله و گریز
حمله درج هنگامی اتفاق میافتد که سامانه تشخیص نفوذ بستهای را قبول کند که یک سامانه نهایی آنرا رد کند. به عنوان نمونه، مهاجم میتواند یک سری بستههای تک کاراکتری را با استفاده از TTLهای مختلف به سمت سیستم روانه کند تا برخی بستهها با موفقیت به IDS و نه به سیستم مورد نظر برسند. نتیجه این خواهد بود که سیستم هدفمند و IDS دو جریان کاراکتری متفاوت را دریافت میکنند. در رویکرد حمله و گریز این مفهوم میتوند کاملا پیچیده شود، بهطوری که سیستم هدف بستهای را میپذیرد که IDS آنرا رد میکند. بهطور مثال، اجازه دهید نحوه انجام یک حمله گریز را بررسی کنیم. یک مهاجم بخش اول بستههای تکهتکه شده را برای سامانه تشخیص نفوذ ارسال میکند که مدت زمان قطعه قطعه شدن 15 ثانیه است، در حالی که سیستم هدف روی بازه تایماوت 30 ثانیه تنظیم شده است. مهاجم باید بیش از 15 ثانیه و کمتر از 30 ثانیه صبر کند تا قطعه دوم را ارسال کند. هنگام ورود به شبکه، سامانه تشخیص نفوذ قطعه دوم را رها میکند، زیرا پارامتر timeout قبلاً باعث از بین رفتن قطعه اول شده است. پس از تحویل قطعه دوم به هدف، قطعه دوم را میپذیرد، زیرا اولین قطعه هنوز در حافظه اولیه نگه داشته شده است. این سناریو در نهایت باعث میشود تا حمله با موفقیت انجام شده و بستهها به سیستم هدف تحویل داده شوند در حالی که سامانه تشخیص نفوذ هیچ سابقهای از حمله را نگهداری نکند. حمله درج، بستهها را برای سامانه تشخیص نفوذ و دستگاه هدف ارسال میکند که توسط سامانه تشخیص نفوذ قبول و توسط سامانه هدف رد میشود. ایده حملات درج و گریز، ارسال جریانهای دادهای مختلف به سامانه تشخیص نفوذ و سیستم هدف است.
نکته: اطمینان حاصل کنید درباره رمزنگاری به عنوان یکی از موثرترین تکنیکها برای مقابله با حملات گذر از سامانه تشخیص نفوذ سطح دانش خود را افزایش دادهاید.
Session Splicing
یکی دیگر از تکنیکهای استفاده در مقابله با سامانه تشخیص نفوذ، تلاش برای درهم شکستن یک نشست است. تکنیک Session Splicing به این شکل انجام میشود که باردادهها روی چند بسته به هدف تحویل داده میشود تا فرآیند تطبیق الگو درهم شکسته شود، بدون آنکه نشست فعال خراب شده یا به بازسای آن نیاز باشد. این بارداده ممکن است به روشهای مختلف تحویل داده شود و حتا در یک بازه زمانی طولانی پخش شود. با شکستن بارداده روی چند بسته مختلف، بیشتر سامانههای تشخیص نفوذ در شناسایی هدف درست با مشکل روبرو شده و قادر به تشخیص هدف واقعی نخواهند بود. بستههای شکسته شده بهطور معمول به شکل مرتبط ارسال میشوند، هرچند اینکار ضرورتی ندارد. با ارسال بستهها به صورت غیر مرتب و بازی با شناسههای بستهها، به هم متصل کردن آنها فرآیند کاملا پیچیدهای خواهد بود. اگر IDS نتواند تمامی قطعات را برای استفاده مجدد در حافظه نگهداری کند، یک مهاجم میتواند از این اشتباه به بهترین شکل استفاده کند. ابزارهایی مانند Whisker و Nessus قابلیت اجرای تکنیکهای تقسیم جلسات را دارند.
حملات Shellcode
حملات Shellcode نیز ممکن است علیه IDS قابل استفاده باشند. Shellcode فهرستی از دستورالعملهای خاص است که میتواند به یک برنامه در حال اجرا تزریق شوند. این کدها به این دلیل Shellcode نامیده میشوند که به شکل هدفمندی برای باز و اجرا کردن فرامین خاص طراحی شدهاند. Polymorphic و ASCII دو تکنیک در این زمینه هستند که ممکن است از سوی هکرها استفاده شوند. Shell code چندریختی اجازه میدهد تا حملهکننده نوع حمله را تغییر دهد تا تطبیق امضا قابل استفاده نباشد. بهطور مثال، “\x90\x90\x90\x90”, “/bin/sh” به راحتی توسط سامانه تشخیص نفوذ شناسایی میشود، اما اگر مهاجمی بتواند از رویکرد رمزگذاری و سایفر در بارداده یک حمله همراه با یک کلید تصادفی استفاده کند، تشخیص این مسئله برای سامانه تشخیص نفوذ سخت میشود. تکنیک Shellcode اسکی شبیه به حالت قبل است، اما به جدی shellcode اسکی تنها از کاراکترهای استاندارد اسکی استفاده میشود. به مثال زیر دقت کنید:
char shellcode[] =
"LLLLYhb0!X5Yhbo!"
"HZTYRRRPTURWa-5lmm-2QQQ-8AAAfhRRfZ0p>0x?fh88fZ0p?fh "
"fZ0pS0pH0p?fh55fZ0p@fhbbfZ0pA0pBfhyyfZ0pAfhwwfZ0pE0pB"
"fhDDfZ0pCfhddfZ0pU0pDfhzzfZ0pW0pDfhuufZ0pEfhhhfZ0pJ0p"
"FfhoofZ0pF0pMfhccfZ0pV0pGfhiifZ0pGfh//fZ0pL0pM0pHfhss"
"fZ0pIfhmmfZ0pIfhaafZ0pJfhHHfZ0pKfhnnfZ0pLfheefZ0pR0pN"
"0pOfhttfZ0pO0pN0xPfhVVfZ0pP0xQfh((fZ0pQfhPPfZ0pQfhfff"
"Z0pRfhFFfZ0pS0xSfhIIfZ0pTfhssfZ0pT0xTfhOOfZ0pV0xVfh22"
"cM2KgmnJGgbinYshdvD9d"
در آخرین خط که bin sh به شکل برجسته مشخص شده دقت کنید. ایده این است که قفل کد را به گونهای مخفی کنید که سامانه تشخیص نفوذ به سختی بتواند آنرا شناسایی کند. در این حالت، زمانی که کد اجرا میشود، این کد میتواند یک bin/sh shell باشد. سایر تکنیکهای فرار از دست سامانههای تشخیص نفوذ که هکرها از آنها استفاده میکنند به شرح زیر است:
■ False positives: تعداد زیادی از موارد هشدار کاذب در تلاش برای بی اثر کردن مکانیزم دفاعی قربانی ارسال میشود.
■ Obfuscation: مبهمسازی یا پنهانسازی حمله را میتوان از تکنیکهای مقابله با سامانههای تشخیص نفوذ توصیف کرد. تکنیکهای به کار گرفته شده در این زمینه ممکن است از یونیکد، رمزگذاری و Shellcode Ascii استفاده کنند. بهطور مثال، یک مهاجم ممکن است دادهها را از طریق یونیکد رمزگذاری کند تا از تطبیق الگو و تطبیق امضا در IDS جلوگیری کند.
■ DoS: مهاجم به سادگی اطلاعات زیادی را ارسال میکند که IDS یا سرور مرکزی با مشکل اضافه بار روبرو شوند.
■ Pre-connection SYN: این حمله بهنام اتصال نیز شناخته میشود و سعی میشود کرنل به یک پورت محلی متصل شود تا قبل از اتصال فرآیند سوکتزنی انجام شود.
■ Post-connection SYN: این تکنیک تلاش میکند مانع از آن شود تا IDS به شکل همزمان به دنبال اعداد ترتیبی واقعی باشد.
■ Invalid RST: تکنیک با این هدف انجام میشود که سامانه تشخیص نفوذ فرآیند شناسایی چکسامهای (checksum) غیرمعتبر را متوقف کرده و همچنین اطلاعات را ضبط نکند.
به این نکته دقت کنید تکنیکهای حملهای که به آنها اشاره شد، همواره با موفقیت به سرانجام نمیرسند. بهطور مثال، Snort از یک کلمه کلیدی برای بهینهسازی فرآیند تطابق قواعد مربوط به دادههای یک جلسه استفاده میکند. کلمه کلیدی flow به ما امکان میدهد تا مشخص کنیم جلسهای منتشر شده یا خیر. كلمه كليدي established شبیه به موارد قبل عمل میکند با این تفاوت که پس از اتمام دستدهی سه مرحلهای، Snort موجودیتی در یک جدول مربوط به ردیابی جلسه ایجاد میکند. هر زمان Snort سعی کند با استفاده از کلمه کلیدی established یک قاعده را تطابق دهد، ابتدا به سراغ موجودیت ساخته شده در جدول جلسه میشود. اگر موردی وجود داشته باشد به معنای آن است که همه چیز در حالت ایدهآل قرار دارد. هنگامی که اسنورت مشاهده کند که یک ارتباط به شکل عادی و با استفاده از بستههای FIN به پایان رسیده یا ارتباط به شکل ناگهنای و از طریق RST به پایان رسیده، موجودیت درون جدول را پاک میکند.
اگر بتوانیم یک RST درون یک ارتباط را با استفاده از شمارههای ترتیب بد جعل کنیم، ممکن است بتوانیم از مکانیزم اسنورت فرار کنیم؟ اجاره دهید این موضوع را بررسی کنیم. فرض کنید اسنورت در حال اجرا است و از یک قاعده منفرد به شرح زیر استفاده میکند:
alert tcp any any -> any 6666 (sid:10;msg:"Session Data";
flow:established;classtype:not-suspicious;)
این قاعده برای هدف قرار دادن هر بسته از هر میزبانی، روی هر منبعی و روی هر پورتی تنظیم شده تا هر میزبانی روی پورت 666، قادر به انتشار یک جلسه باشد. برای آزمایش این قاعده، یک کاراکتر Telnet متصل به پورت 6666 را تایپ میکنیم. اسنورت موارد زیر را به عنوان خروجی باز میگرداند:
06/09-12:01:02.684761 [**] [1:50:0] content data [**]
[Classification: Not Suspicious Traffic] [Priority: 3] {TCP}
0.10.1.42:4210 -> 10.10.1.9:6666
اکنون دستور hping2 را اجرا میکنیم تا یک بسته RST با اعداد متوالی اشتباه ساخته شود. ترکیب نحوی به شرح زیر است:
hping2 -c 1 -R -M 0 -L 0 -s 6666 -p 4210 10.10.1.42
در انتها، کاراکتر دیگری را از طریق تلنت ارسال میکنم. اسنورت خروجی زیر را نشان میدهد:
06/09-12:04:28.672541 [**] [1:50:0] content data [**]
[Classification: Not Suspicious Traffic] [Priority: 3] {TCP}
10.10.1.42:4210 -> 10.10.1.9:6666
اسنورت بسته RST که یک شماره متوالی نادرست دارد را شناسایی و کنترل کرده و اجازه انجام حمله را نمیدهد. از ابزارهای دیگری که برای شناسایی یک چنین حملاتی در دسترس هستند به Netcat ، Loki ، ICMPSend و AckCmd میتوان اشاره کرد.
ابزارهای فرار از مکانیزمهای IDS
ابزارهای مختلفی برای فرار از سامانههای تشخیص نفوذ در دسترس هستند. بیشتر این ابزارها از یک یا چند تکنیکی که مورد بحث قرار گرفتند برای فرار از دست سامانههای تشخیص نفوذ استفاده میکنند. از جمله این ابزارها به موارد زیر میتوان اشاره کرد:
■ HTTP tunneling: از پروکسی، HTTP یا HTTPS برای تونلزنی ترافیک استفاده میکند.
■ ADMutate: سعی میکند یک موتور سرریزبافر چند ریختی را ایجاد کند. یک مهاجم یک اکسپلیوت سرریز بافر را به عنوان ورودی در اختیار ADMutate قرار میدهد تا صدها یا هزاران مورد اکسپلویت همارز که در امضا کمی متفاوت با یکدیگر هستند را تولید کند.
■ Mendax: برای ساخت روشهای فرار مختلف از آن استفاده میشود.
■ NIDSbench: از tcpreplay، idstest و fragrouter استفاده میکند. Fragrouter ترافیک را تکهتکه میکند که ممکن است مانع شناسایی محتوای واقعی توسط سامانه تشخیص نفوذ شود.
■ Nessus: میتواند برای آزمایش سامانههای تشخیص نفوذ استفاده شود، هرچند قابلیت اجرای حملات متقاطع جلسه را دارد.
دقت کنید در آزمون CEH باید بتوانید به درستی از سامانههای تشخیص نفوذ برای شناسایی حملات استفاده کنید، البته به این نکته دقت کنید که آنها کامل نیستند و این توانایی را ندارند تا تمامی حملات رایج را تشخیص دهند. به همین دلیل به ابزارهای مکمل دیگری همچون سامانههای پیشگیری از نفوذ و دیوارهای آتش نیاز است.
دیوارهای آتش
دیوارهای آتش به دو صورت نرمافزاری و سختافزاری برای محدود یا فیلتر کردن ترافیک بین یک شبکه قابل اعتماد و غیر قابل اعتماد و کنترل ترافیک و محدود کردن فعالیت خاص استفاده میشوند. بهطور مثال، برخی از دیوارهای آتش از رویکردی شبیه به بررسیهای قبل پرواز استفاده میکنند. در فرودگاهها مسافران قبل از آنکه بتوانند در هواپیما سوار شوند باید یک سری کنترلهای امنیتی را پشت سر بگذارند. در این حالت از دستگاههای فلزیاب برای بررسی چمدان و وسایل شخصی مسافران استفاده میشود و اگر مورد مشکوکی وجود داشته باشد، ممکن است برای بررسیهای بیشتر به بخشهای دقیقتر هدایت شوید. دیوارهای آتش به روش یکسانی کار میکنند. آنها ترافیک را بررسی میکنند، جریان را محدود میکنند و ترافیکی را که به نظر مشکوک است را رد میکنند.
در این بخش انواع مختلف دیوارهای آتش، نحوه استفاده از آنها برای ایمنسازی شبکه و تفاوتهای بین بازرسی دارای وضعیت و بدون وضعیت را بررسی کرده و در ادامه بهسراغ راههایی میرویم که مهاجمان سعی در شناسایی دیوارهای آتش و نحوه آزمایش یا دور زدن آنها دارند.
انواع دیوارآتش
دیوارهای آتش برای محدود کردن و بازرسی ترافیک هنگام ورود و خروج به شبکه استفاده شده و نقشی شبیه به گیتهای ورودی/خروجی دارند. در حالی که دیوارهای آتش مختلفی وجود دارد، اما در حالت کلی همه آنها طراحی مشخصی دارند:
فیلتر کردن بستهها
گیتهای در سطح برنامههای کاربردی
گیتوی در نقاط حساس
gate دروازه سطح مدار
بازرسی چند لایه دارای حالت
اجازه دهید ابتدا نگاهی گذرا به ترجمه آدرس شبکه (NAT) بیندازیم و سپس در مورد فیلترهای بستههای و سایر فناوریهای مورد استفاده توسط دیوارهای آتش بحث کنیم.
در شماره آینده مبحث فوق را ادامه میدهیم.
برای مطالعه رایگان تمام بخشهای دوره CEH روی لینک زیر کلیک کنید:
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟