پروتکلها را میتوان به دو دسته Stateless و Stateful تقسیم کرد. تفاوت این دو دسته در نگهداری اطلاعات مربوط به ارتباطات میباشد. یعنی سرور به هنگام برقراری یک ارتباط از سمت کاربران، اطلاعات و حالیت (State) ارتباط را نهگداری بکند و یا خیر.
HTTP یک نمونه پروتکل Stateless است. برای فهم بهتر این دستهبندی، با یک مثال شروع میکنیم. فرض کنید یک لیست خرید برای منزل دارید و میخواهید همه آنها را از یک فروشگاه اینترنتی تهیه کنید. این لیست شامل، چند ماده شوینده، مقداری موارد خوراکی و چند وسیله زینتی میباشد. وقتی وارد وب سایت فروشگاه میشوید، باید همه اینها را در سبد خرید خود اضافه و سپس خرید خود را نهایی کنید. اما اینجا یک مشکل وجود دارد:
Stateless بودن پروتکل HTTP. حالا Stateless بودن HTTP چه مشکلی را ایجاد میکند؟
Stateless بودن HTTP به این معناست که اطلاعات ارتباطاتی که بر بستر این پروتکل هستند، ذخیره نمیشود. در اصل ارتباطات در این پروتکل فاقد State هستند. به بیان سادهتر، هر درخواستی که بر بستر HTTP به یک سرور ارسال میشود، گیرنده فکر میکند که کاربر جدیدی در حال ارسال درخواست است، انگار که پروتکل HTTP حافظهای ندارد و برایش مهم نیست که هر کاربر قبلا چه درخواستهایی ارسال کرده است و چه کارهایی در وبسایت انجام داده است.
این به این معناست که اگر در فروشگاه یک ماده شوینده را به سبد خرید اضافه کنید و سپس به صفحه مربوط به مواد خوراکی بروید، ماده شوینده از سبد شما حذف میشود! چرا که با ارسال درخواست جدید (رفتن به بخش مواد خوراکی) گیرنده فکر میکند کاربر جدیدی وارد بخش خوراکی شده است، بدون اینکه بداند که کاربر قبلا در بخش مواد خوراکی حضور داشته است. البته برای حل این مشکل راهحلهای زیادی نظیر استفاده از کوکی وجود دارد.
پس پروتکلهای Stateless دستهای از پروتکلهای شبکه هستند که گیرنده حالت ارتباط و اطلاعات ارتباط را در خود ذخیره نمیکند. یعنی اگر یک کاربر 10 درخواست پشت هم به یک سرور ارسال کند، گیرنده در هر 10 درخواست دریافت شده، فکر میکند که کاربر جدیدی در حال ارسال درخواست است.
از نمونه پروتکلهای Stateless میتوان به HTTP، UDP، SNMP و IP اشاره کرد.
در مقابل دسته پروتکلهای Stateless، پروتکلهای Stateful قرار دارد. این دسته از پروتکلها حالت ارتباط را ذخیره میکنند. به عبارت دیگر، این دسته از پروتکلها درخواستهای کاربران را در نظر دارند. برای مثال، FTP یک پروتکل Stateful است. اگر شما 10 درخواست به یک FTP Server ارسال کنید، چون FTP یک پروتکل Stateful است، سرور میداند که همه این 10 درخواست از سمت یک کاربر به دست او رسیده است.
در جدول زیر به مقایسه پروتکلهای Stateless و Stateful میپردازیم:
پروتکلهای Stateful | پروتکلهای Stateless |
سرور اطلاعات Session را ذخیره میکند. | اطلاعات Session توسط سرور ذخیره نمیشود. |
سرور از پیچیدگی نسبی بیشتری برخوردار است. | طراحی سرور را سادهتر میکند. |
اطلاعات کاربر باید به درستی ذخیره شود و به هنگام خطا به درستی بارگیری شود. مدیریت خطا در این دستهبندی دشوار است. | به هنگام خطا، این مدل بهتر عمل میکند، چرا که نیاز نیست اطلاعاتی بازگردانی شود. |
تراکنشها سرعت بیشتری برای انجام شدن نیاز دارند. | تراکنشها در این پروتکل بسیار سریعتر هستند. |
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence
آموزش ابزار DNSWalk: دیباگر DNS
در این ویدیو از آکادمی ترجنس به بررسی ابزار DNSWalk میپردازیم. این ابزار به دیباگ کردن DNS در زمینه استفاده از Zone Transfer به ما کمک میکند.
در این ویدیو بررسی میکنیم که چطور میتوان بوسیله ابزار BED، عملیات فازینگ را علیه دیمنهای شبکه انجام داد. هدف از انجام این کار تریگر شدن یک آسیبپذیری احتمالی سرریز بافر برروی سیستم هدف میباشد. بعد از تریگر شدن آسیبپذیری باید بررسی کنیم که کدام ورودی ما باعث بوجود آمدن خطا شده است.
در گام اول این ویدیو، تارگت خود را بوسیله ابزار nmap اسکن میکنیم تا اطلاعات اولیه نظیر IP و پورتهای باز را بدست آوریم (برای مشاهده دوره رایگان آموزش nmap کلیک کنید).
پس از دریافت اطلاعات مربوط به تارگت، حال میبایست تصمیم بگیریم که بر بستر کدام سرویس مخواهیم فازینگ را انجام دهیم. برای مثال در این ویدیو، با اسکن کردن تارگت میفهمیم که پورتهای 21، 25 و 80 باز هستند و احتمالا سرویسهای مربوط به هرکدام در حال اجرا میباشد. سپس با هدف انجام فازینگ بر بستر پروتکل HTTP به سراغ ابزار میرویم.
بعد از اینکه تصمیم گرفتیم بر بستر چه پروتکلی فازینگ را انجام دهیم، به سراغ ابزار میرویم. بدین منظور ترمینال سیستمعامل خود را باز میکنیم و دستور زیر را وارد میکنیم:
bed -s HTTP -t 1.1.1.1 -p 80 |
در این ویدیو مطالب زیر پوشش داده میشوند:
آشنایی کوتاه با فازینگ
آشنایی با ابزار BED
بررسی ماژولهای ابزار BED و نحوه اضافه کردن ماژول
اجرای BED علیه تارگت آسیبپذیر
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence
TCP یا Transmission Control Protocol، یک پروتکل لایه انتقال است که وظیفه آن این است که تعیین کند ارتباطات شبکهای میان دستگاهها (کامپیوتر، روتر و …) به چه صورت شروع شود و به چه صورت ادامه یابد.
TCP یک پروتکل Stateful هست. به این معنی که برای ارتباط بین دو دستگاه در TCP، ابتدا یک اتصال یا Connection بین این دو برقرار و تا انتها نگهداری میشود. از این به بعد دو سیستم بر بستر این Connection با یکدیگر تبادل داده میکنند. این اتصال تا زمانی ادامه پیدا میکند که یکی از دو طرف ارتباط، به آن خاتمه ببخشد.
از دیگر وظایف TCP برای انتقالِ داده، این است که چطور دادهها را بصورت بستههای قابل انتقال خرد کند، کنترل جریان (Flow Control) کند و تضمین کند که تمامی دادهها به درستی به مقصد رسیدهاند. این دقیقا برخلاف رفتار UDP هست که در آن تضمینی برای رسیدن تمامی بستهها به مقصد وجود ندارد.
فرض کنید میخواهید وارد یک وبسایت شوید. مرورگر را باز میکنید، آدرس سایت را میزنید. در پشت صحنه چه اتفاقی رخ میدهد؟ قرار است مرورگر شما به سرور مقصد، یک درخواست ارسال کند و در جواب آن، یک صفحه HTML دریافت کند.
ابتدا باید یک ارتباط TCP با سرور مقصد شروع شود. سپس با برقراری این ارتباط، درخواست ما به سرور میرسد و سرور به آن پاسخ میدهد، که این پاسخ همان صفحه HTML است. نکتهای که اینجا قابل بحث است، این است که مکانیزم TCP برای برقراری ارتباط چیست؟
برای برقراری یک ارتباط بر بستر TCP ابتدا باید دست-دهی 3 گانه انجام شود. دست-دهی 3 گانه یا همان TCP Handshake، مکانیزمی است که طی آن یک ارتباط TCP شوع میشود.
این مکانیزم بسیار شبیه به برقراری ارتباط بین انسان هاست. ابتدا یک نفر یک مکالمه را شروع میکند و بعد از اینکه نفر دوم جواب داد، مکالمه ادامه پیدا میکند.
مطابق شکل زیر، ابتدا کاربر یک درخواست را بوسیله یک پیام SYN به سمت سرور ارسال میکند به این معنی که میخواهم یک ارتباط را شروع کنم. سرور درخواست کاربر را بررسی میکند و درصورتی که درخواست مجاز باشد، پیام SYN-ACK را درجواب ارسال میکند. این جواب به این معنی است که با درخواست شروع ارتباط از سمت شما موافقم و میتوانید ارتباط را شروع کنید. در نهایت کاربر میگوید که پیام تو را دریافت کردم و به این صورت ارتباط شروع میشود.
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence
در اولین ویدیو از سری ویدیوهای آموزش پاورشل امپایر به بررسی این فریم ورک قدرتمند میپردازیم. پس ایجاد یک پیشزمینه جهت آشنایی با این فریمورک، نشان میدهیم که چطور میتوان بوسیله آن دسترسی به سیستم قربانی را ارتقا داد. پس از ارتقا سطح دسترسی یا همان Privilege Escalation بوسیله ماژول مربوطه در پاورشل امپایر، بررسی میکنیم که چطور میتوان اطلاعات با اهمیت قربانی مثل هَش پسوردهای کاربران ویندوزی را بدست آورد.
در این ویدیو مطالب زیر پوشش داده میشوند:
استفاده از ماژولهای این فریم ورک
ارتقا سطح دسترسی یا Privilege Escalation
استخراج اطلاعات با اهمیت سیستم قربانی مثل هَش پسورد کاربران ویندوز