loading...

وبلاگ تخصصی مباحث آموزش شبکه ، لینوکس ، هک و امنیت و برنامه نویسی

بازدید : 35
دوشنبه 11 فروردين 1404 زمان : 19:40

ARP Spoofing یک تکنیک حمله شبکه است که در آن مهاجم با ارسال پیام‌های ARP جعلی، جداول ARP دستگاه‌های متصل به شبکه را دستکاری می‌کند.هدف اصلی این حمله، جعل ارتباط بین آدرس‌های IP و MAC دستگاه‌های معتبر است.با این روش، ترافیک شبکه به سمت دستگاه مهاجم هدایت شده و امکان شنود یا تغییر داده‌ها فراهم می‌شود.در آموزش هک، این تکنیک به عنوان نمونه‌ای از حملات man-in-the-middle برای دسترسی به اطلاعات حساس مورد بررسی قرار می‌گیرد.ابزارهایی مانند Ettercap و Cain & Abel معمولاً برای اجرای ARP Spoofing و ارسال مداوم پاسخ‌های ARP جعلی به کار می‌روند.

شاید شماهم شنیده باشید که میگن از وای فای های موجود در مکان های عمومی استفاده نکنید و احتمالا این کار رو هم انجام نمی‌دادید. اما قضیه چیه و چرا این کار میتونه خطرساز بشه؟!

خب همونجور که از عنوان مقاله پیداست میتونید حدس بزنید که بخاطر ARP Spoofing این کار میتونه خطرساز باشه ولی خب ARP Spoofing چیه؟! یک قطعس؟! یک برنامس؟! یا شایدهم یک هکر 13 ساله چینی!! البته که آخری یک شوخی بی مزه بود.

برای اینکه بخواهیم ادامه مطلب رو توضیح بدیم ابتدا به نظرم اگر یک دید کلی از موضوع داشته باشید به شدت مفید خواهد بود و به شما این امکان رو خواهد داد که فقط تا جایی که تمایل دارید در این مطب عمیق شوید. زیرا شاید شما یک خواننده کنجکاو باشید که فقط می‌خواهید بدانید در صورت استفاده از وای فای در مکان های عمومی چه چیزی می‌تواند خطرساز باشد و چه بلایی می‌تواند بر سر اطلاعاتتان بیاید و یا شایدهم یک دانشجوی رشته کامپیوتر هستید که می‌خواهید کمی عمیق تر درمورد شبکه و کارکرد آن بدانید.

یک دید کلی از مسئله موجود:

سناریو اول: (وقتی همه چیز آرام است.)

در این سناریو اگر کامپیوترهای موجود در تصویر، همان اشخاص متصل به اینترنت از طریق یک مودم مشترک باشند، قضیه به این صورت است که هر کامپیوتر برای برقراری ارتباط با اینترنت بسته های خود را به مودم تحویل می‌دهند و مودم بسته ها را در بستر اینترنت ارسال می‌کند و جواب آن بسته ها را به کامپیوتر مورد نظر بر می‌گرداند. زیبا نیست؟! همه چیز به درستی کار خود را انجام خواهند داد و شما قادر هستید از این طریق پول های خودتان را از حسابی به حساب دیگر منتقل کنید یا وارد صفحه وبسایت دانشگاهتان شوید و در آن لاگین کنید و نمراتتان را چک کنید و هزاران کار دیگر که امروزه با اینترنت قادر به انجام آن ها هستیم. اما شبکه همیشه به این زیبایی کار نخواهد کرد و اشخاصی وجود خواهند داشت که مانع کارکرد درست یک شبکه شوند.

سناریو دوم: (وقتی همه چیز آرام نیست.)

حال این سناریو را با وجود فردی در شبکه که چیزهایی از شبکه ها و کارکرد آن ها می‌داند بررسی می‌کنم. فرض کنید کامپیوتر B در سناریو اول جای خود را به یک هکر می‌دهد. هکر با چیز هایی که از شبکه می‌داند خود را به جای مودم جا میزند و تمام پیام هارا به سمت خود می‌کشاند. آیا چنین کاری شدنی است؟! بله!! هکر تمام پیام هارا به سمت خود می‌کشاند و می‌تواند یک به یک پیام هارا بخواند (البته در اکثر موارد نمیتواند که در سناریو بعد توضیح خواهیم داد.) و بعد از خواندن پیام ها، پیام هارا جهت ارسال به اینترنت به مودم ارسال می‌کند و جواب هارا از مودم می‌گیرد و یک به یک به صاحبانشان تحویل می‌‎دهد. عجب خر تو خری است؟! دقیقا. آیا شما وقتی درحال لاگین به صفحه دانشگاهتان هستید می‌توانید متوجه شوید که این پیام های ارسالی و دریافتی به دستان شخص سومی هم رسیده و خوانده شده است؟! پیام هایی که از اتفاق رمز عبور و نام کاربری شماهم درون آن قرار داشته است؟! عمرا متوجه شوید!! شبکه به ظاهر آرام است و به کار خود ادامه می‌دهد ولی چیزی در این بین اشتباه است و آن شنودِ (همان Sniff خودمان در دنیای کامپیوتر) ارتباط شما توسط شخص سوم است. آیا شبکه همیشه همینقدر خطرناک است؟! بله. پس دیگر از اینترنت برای کارهای حیاطی خود استفاده نکینم؟! بیاید به سناریو سوم تا بهتون بگم هک و امنیت چجوری با یکدیگر به پیش می‌روند و چقدر پیشرفت هرکدام وابسته به پیشرفت دیگری است. به عبارت دیگر، اگر روشی برای هک پیدا شود، اشخاصی هستند که راه حلی بیابند و جلوی آن را بگیرند (معمولا با آپدیت ها این مشکلات امنیتی برطرف خواهند شد.) و اگر روشی برای هک وجود نداشته باشد، بازهم افراد خلاق و پیگیری پیدا خواهند شد که راهی برای نفوذ پیدا کنند. و این دو قطبی هک و امنیت مدام در حال رشد است.

سناریو سوم: (وقتی همه چیز آرام نیست ولی جای امیدواری هست.)

حال این سناریو که همانند سناریو دوم (سناریو بالایی) است را در نظر بگیرید. با این تفاوت که اینبار، اشخاص پیام های خود را با کلیدی که کپی همان کلید را بانک و دانشگاه در اختیار دارند قفل می‌‎کنند. حال چه اتفاقی رخ می‌دهد؟! اجازه دهید پیام های شخص سبز رنگ (computer B) در شکل را دنبال کنیم تا به صورت صحیح درک کنیم که چرا این شبکه درحالی که شنود می‌شود ولی همچنان امن است.

فرض کنید شخص مو فرفری و سبز رنگ داستان ما می‌خواهد در صفحه دانشگاهی خود لاگین کند و برای این کار یک پیام حاوی نام کاربری و رمز عبور را برروی شبکه و برای دانشگاه ارسال می‌کند. اما قبل از ارسال با یک کلید که کپی همان کلید را دانشگاه در اختیار دارد پیغام خود را قفل می‌کند. پیغام در مرحله اول به هکر بد طینت ما می‌رسد (در واقع اول به مودم می‌رسد ولی شما برای راحت تر شدن توضیح مسئله از من بپذیرید که به دست هکر می‌رسد.). هکر می‌خواهد داخل نامه را بخواند اما ای دریغا به برش که برروی نامه قفل بزرگی قرار دارد و هکر قادر به خواندن آن نیست. در این مرحله هکر چشمش کور می‌شود و نامه را جهت رسیدن به دانشگاه به مودم ارسال می‌کند (چون اگر این کار را انجام ندهد شبکه درست کار نمی‌کند و شما متوجه خواهید شد که جایی از کار میلنگد). مودم نامه را به اینترنت می‌دهد و اینترنت آن را به مقصد خود یعنی دانشگاه می‌رساند. دانشگاه به وسیله کلید خود قفل را باز می‌کند و عملیات های مورد نیاز را انجام می‌دهد و نامه ای که درون آن اجازه ورود به صفحه پرتال دانشگاه است را ایجاد می‌کند. دانشگاه به وسیله همان کلید نامه را قفل می‌کند و ارسال می‌کند. نامه مسیر بازگشت خود را طی می‌کند و به دست هکر می‌رسد، هکر بازهم قفلی بزرگ برروی نامه می‌بیند و از فرط ناراحتی هودی خود را جر می‌دهد، فریاد می‌کشد، قهوه را بر صورت خود می‌پاشد و نامه را به صاحب آن یعنی کامپیوتر B می‌رساند. کامپیوتر B نامه را دریافت می‌کند و با کلید خود آن را باز می‌کند. آنجاست که هکر متوجه موضوعی می‌‍شود. بله بله!!! شبکه ما مجهز به TLS شده است.

ما چجوری پیام هامون رو قفل کنیم؟!

حقیقت این است که اگر ما فقط یک کاربر ساده باشیم که از یک وبسایت و یا یک نرم افزار تحت شبکه استفاده می‌‎کنیم، این وظیفه ما نیست که پیام های خودمان را رمزگذاری کنیم و این کار وظیفه وبسایت و یا نرم افزار هاییست که ما به آن ها مراجعه می‌کنیم و به ما خدمات می‌دهند.

ولی آیا میتوان فهمید کدام وبسایت ها از TLS استفاده می‌کنند و این ارتباط امن را در اختیار ما قرار می‌دهند؟! بله. امروزه صفحاتی که از TLS استفاده نمی‌کنند بسیار کم هستند از این رو آیکون "قفل" بالای صفحات وبسایت برای ما موضوعی جا افتاده است و به چشمانمان آشناست. به بالای همین مقاله، جایی که آدرس ویرگول قرار دارد توجه کنید. در ابتدای این آدرس یک قفل می‌بینید؟! بله؟! معنای آن این است که ارتباط شما امن است و شما می‌توانید با خیال راحت از وبسایت ویرگول در هر مکانی استفاده کنید و خیالتان راحت باشد که هکری در بین راه در حال شنود کردن ارتباط شما نیست و یا اگر درحال شنود باشد، راهی از پیش نخواهد برد زیرا ارتباط ما رمزگذاری شده است.

خب تا اینجای مطلب برای آن ها بود که تنها یک دید کلی از موضوع می‌خواستند و فقط می‌خواستند از خطرات هک در امان باشند. ولی اگر شما جزو آن دسته از افراد هستید که می‌خواهید موضوع را کمی عمیق تر دنبال کنید و بدانید از لحاظ فنی این کار چگونه صورت می‌گیرد ادامه مطلب را دنبال کنید و اگر مایل به این موضوع نیستید از شما متشکر هستم که مطالب این جانب را می‌خواندی و اشکالاتش را به طریقی به بنده اطلاع می‌دهید. چراغ ها خاموش می‌شود و کسانی که مایل به ادامه دادن نیستند می‌تواند بدون ذره ای شرمساری مطلب را رها کنند.


مسئله از بعد فنی آن:

اجازه دهید کمی عمیق تر شویم و مسئله را فنی تر بررسی کنیم.

پیام ها در یک شبکه خصوصی (private) بر چه اساسی مسیریابی می‌شوند؟ IP ها؟! نام دیوایس های؟! بر اساس شماره‌ی اتصالشان؟! خیر هیچکدام. مسیریابی در شبکه خصوصی (private) یا همان شبکه محلیمان براساس آدرس های MAC صورت می‌گیرد. هر دیوایس برای خود یک جدولی تشکلی می‌دهد به نام ARP Table که در آن جدول، پارامترهای مختلفی نگهداری می‌شود. اما دوتا از مهم ترین پارامترهایی که در این قسمت برای ما مهم است، آدرس IP و آدرس MAC هست.

برای دیدن این جدول در ویندوز می‌توانید وارد CMD ویندوز شوید و دستور arp -a را وارد کنید. نمونه ای از این جدول را در تصویر زیر میتوانید مشاهده کنید. که ابتدا آدرس IP و روبروی آن آدرس MAC مربوطه ذخیره شده است.

این جدول چگونه ساخته می‌شود؟!

خب سوال درست و به موقع این است که "این جدول چگونه ساخته می‌شود؟". جواب سوال ساده است. دیوایس ها برای ارسال پیام به فلان IP در جدول MAC خود به دنبال IP مورد نظر می‌گردند و درصورت پیدا نکردن آن یک پیغام arp را برای تمام شبکه broadcast می‌کنند و از تمام شبکه می‌خواهند اگر کسی فلان IP را می‌شناسد، آدرس MAC آن را برایش ارسال کنند. و اگر دیوایسی در شبکه آن را بشناسد، آدرس MAC آن را برای درخواست کننده ارسال می‌کند. درخواست کننده MAC مورد نظر را دریافت می‌کند و آن را وارد جدول MAC خود می‌کند و بعد از آن، زمانی که می‌خواهد برای IP مورد نظر پیغامی بفرستد از همان MAC ذخیره شده در جدول ARP استفاده میکند.

چیز به ذهنتون رسید؟! نه؟! خب چرا ما خودمون رو به جای مودم جا نزنیم؟! چرا به تمام دیوایس ها یک پیغام arp نفرستیم و مدعی نشیم آدرس MAC دیواس ما برابر است با IP مودم؟! IP مودم چیست؟! در اکثر موارد 192.168.1.1. بله بله!! ما میتوانیم این کار را انجام دهیم و ترافیک شبکیمان را از خود عبور دهیم!! جالب نیست؟! به نظر من که زندگی یعنی همین.

مسئله از بعد عملی:

خب سوال اساسی اینجاست که ما تمام این کارهای پیچیده شبکه ای را به چه صورتی انجام دهیم؟! و جواب اینه که خوشبختانه برای تمام این چیزها که گفته شد ابزارهای مناسبی ساخته شده که به رایگان در اختیار ما قرار دارند.

مواد لازم:

  • لینوکس (چه بهتر که کالی لینوکس استفاده شود زیرا تمام ابزارهای تست امنیت را در بر دارد و نیاز نیست تمام این هارا دوباره نصب کنیم.)
  • پکیج نرم افزاری dsniff جهت ایجاد پکت های arp در شبکه
  • نرم افزار wireshark برای انجام شنود و دیدن بسته های ارسال و دریافت شده

نکته: در این آموزش فرض شده است که کامپیوتری که می‌خواهیم به آن حمله ARP Spoofing انجام دهیم دارای آدرس آی پی 192.168.1.11 است و مودم ما دارای آدرس آی پی 192.168.1.1 است.

خب ابتدا باید ما به عنوان شخص سوم (هکر) پکت های ARP خود را برروی شبکه منتشر کنیم و آدرس MAC خود را به جای آدرس MAC مودم به شخصی که می‌خواهیم به آن حمله کنیم، قالب کنیم. برای این کار از دستور زیر استفاده میکنیم.

sudo arpspoof -i eth0 -t 192.168.1.11 192.168.1.1

در این دستور با سوئیچ i میگوییم که ما این حلمه را از طریق اینترفیس eth0 خود انجام می‌دهیم و از طریق سوئیچ t مشخص می‌کنیم که target (هدف) ما برای حمله آدرس آی پی 192.168.1.11 است و می‌خواهیم خود را به جای آدرس آی پی 192.168.1.1 (آدرس آی پی مودممان) جا بزنیم تا از این به بعد آدرس آی پی 192.168.1.11 به جای ارسال بسته هایش به مودم برای اتصال به اینترنت، ترافیکش را از ما عبور دهد. به همین راحتی!!! الان ما در بین راه به شنود پیام های ارسالی و دریافتی آدرس آی پی 192.168.1.11 نشسته ایم.

تا اینجای کار آدرس آی پی 192.168.1.11 تمام بسته هایش را برای ما ارسال خواهد کرد و اگر همین الان برای مراجعه به یک وبسایت برروی کامپیوتر مورد حمله قرار گرفته شده تلاش کنید متوجه خواهید شد که به ظاهر اینترنت کامپیوتر مقابل قطع است و هیچ کاری انجام نمی‌دهد. زیرا کامپیوتر مورد حمله بسته های خود را برای ما ارسال می‌کند ولی ما آن بسته هارا دور میریزیم؛ ولی قرار بود ما این بسته هارا بخوانیم و بعد آن هارا تحویل مودم دهیم تا آب از آب تکان نخورد!! برای این کار در لینوکس باید حالت روتر را فعال کنیم که لینوکس کار مسیریابی را انجام دهد و بسته هارا به مقاصد درست خود برساند. برای این کار از دستور زیر استفاده می‌کنیم و حالت روتر لینوکس خود را فعال می‌کنم.

sudo echo 1 >/proc/sys/net/ipv4/ip_forward

حالا همه چیز آماده است و شما میتوانید تمامی ترافیک ارسالی از کامپیوتر مورد حمله را به وسیله نرم افزار wireshark شنود کنید.

نرم افزار wireshark را اجرا کنید.

برروی شبکه eth0 خود کلیک کنید تا بتوانید تمام بسته هایی که از این انترفیس عبور می‌کند را مشاهده کنید.

اما ما نیازی به تمامی پکت های ارسالی و دریافتی برروی اینترفیس eth 0 نداریم و باید تمام پکت هایی که از طرف 192.168.1.11 است را مورد بررسی قرار دهیم.

برای این کار در قسمت فیلتر کردن پکت ها مقدار ip.addr==192.168.1.11 را تایپ می‌کنیم تا فقط و فقط بسته هایی از این آدرس آی پی برای ما نمایش داده شود.

حالا شما شاهد تمامی پکت های ارسالی و دریافتی توسط کامپیوتر 192.168.1.11 هستید و به یاد داشته باشید که اگر کامپیوتر مورد نظر به سایت هایی که از TLS استفاده می‌کند سر بزند شما قادر به خواندن محتوای آن نیستید!!

دوره آموزش وایرشارک | Wireshark به شما بصورت مقدماتی تا پیشرفته ابزار وایرشارک را آموزش می دهد. در این دوره آموزشی شما از نصب اولیه این ابزار تا شناخت محیط و شنود و تجزیه و تحلیل ترافیک شبکه با وایرشارک را آموزش می بینید. این دوره آموزشی وایرشارک مناسب افرادی است که قصد دارند مدیریت و نظارت بهتری بر روی شبکه خودشان داشته باشند یا علاقه مند به ورود یا تکمیل مباحث امنیت اطلاعات و هک و تست نفوذ در شبکه هستند.

دوره آموزش وایرشارک | Wireshark مهندس علیزاده یک آموزش شنود شبکه در قالب 14 فیلم آموزشی Wireshark است که به شما بصورت مقدماتی تا پیشرفته ابزار وایرشارک را آموزش می دهد. در این دوره آموزشی شما از نصب اولیه این ابزار تا شناخت محیط و شنود و تجزیه و تحلیل ترافیک شبکه با وایرشارک را آموزش می بینید. این دوره آموزشی وایرشارک مناسب افرادی است که قصد دارند مدیریت و نظارت بهتری بر روی شبکه خودشان داشته باشند یا علاقه مند به ورود یا تکمیل مباحث امنیت اطلاعات و هک و تست نفوذ در شبکه هستند.یادگیری دوره آموزش نتورک پلاس به عنوان پیشنیاز برای ورود به دنیای تحلیل ترافیک شبکه الزامی است.

بازدید : 27
سه شنبه 12 فروردين 1404 زمان : 1:08

اکتیو دایرکتوری (Active Directory) یک سرویس مدیریت متمرکز از مایکروسافت است که برای احراز هویت، مجوزدهی و مدیریت منابع شبکه استفاده می‌شود. مهم‌ترین اصطلاحات آن شامل دومین کنترلر (DC) برای مدیریت کاربران، جنگل (Forest) که شامل چندین دومین است، دومین (Domain) که محیط مدیریتی اصلی را تشکیل می‌دهد، واحد سازمانی (OU) برای دسته‌بندی کاربران و گروه پالیسی (GPO) جهت اعمال سیاست‌های امنیتی است. اکتیو دایرکتوری به سازمان‌ها کمک می‌کند تا دسترسی‌ها را کنترل کرده و امنیت شبکه را بهبود بخشند.

در این مقاله میخوایم ساختار اکتیو دایرکتوری رو بررسی کنیم و بگیم چه اجزائی داره.

نکته : یک سری از مفاهیمی که بررسی میکنیم مربوط به بحث Windows Internals هستن و اگر سطح بالا به نظر امدن باید برای درک بیشترشون کتاب Windows Internals رو مطالعه بکنید ، من هرچقد بتونم ازش میگم که شما نیاز نداشته باشید 🤝😁

نکته2 : اکثر این مفاهیم بصورت منطقی باید گفته بشه و فرض بشه و چون مثال فیزیکالی براش نیست یکم درکش سخته و به مرور با کار عملی میتونید درکشون کنید پس اولش تو درک زیاد سخت نگیرید

نکته3: این مقاله با دید امنیتی و مختص بچه های امنیت شبکه نوشته شده ، ولی دید کاملی از اکتیو دایرکتوری بهتون میده

نکته4: اکثر این مواردو شما فقط باید بفهمید و نیاز نیست حتما درک کنید

نکته5 : هرچیزی که براتون مبهم بود حتما بپرسید 😉

مفاهیم مقدماتی :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Forest :

منظور از forest یه قضاییه که ما توش بقیه چیز ها مثل دامین و ... رو قرار میدیم ، forest درواقع یک مرز امنیتی هست که یه فضای منطقی یا همون Logical هست برای دامین ها و بقیه اشیا در شبکه، مثلا ما در شکل بالا یه forest داریم که سه تا دامین داره ، دامین اول که اسمش هست apple.com ، دامین دوم که اسمش هست sub1.apple.com و دامین سوم که اسمش هست sub2.apple.com

Domain :

دامین هم یک فضایی هست که ما اشیا خودمون رو توش قرار میدیم ، همون forest ولی کوچیک تر ، ما داخل forest یک یا چندین domain داریم که داخل اون ها ما اشیا مون رو داریم

ما مفهوم parent-child یا والد و فرزندی هم داریم ، به apple.com میگن والد یا HQ(Head Quarters) و به sub1 و sub2 میگن فرزند ، پس ما سه تا مرض و گروه جدا داخل شبکه بالا داریم یا سه تا دامین

توی هر دامین هم ما سخت افزار ها و دارایی های سازمان مثل همون پرینتر و یوزر ها و فایل هارو داریم (سمت راست کادر نارنجی)

Objects :

اشیا همون منابع شبکه ما هستن ولی به صورت مجازی ، اشیا درواقع یک فایله که حاوی یوزر ها و گروه ها ، فایل سرور ، دیتابیس سرور و... است

Domain Controller(DC) :

به سروری گفته میشه که اشیا داخلش باشن ، این سرور تنظیمات active directory رو داره و گردن کلفت محسوب میشه 😅 و سطوح دسترسی رو هم توش تعریف میکنن

Trusts :

اگر هرچیزی داخل دامین ها بخوان باهم ارتباط برقرار بکنن باید بینشون trust برقرار باشه ، همون اتصال خودمونه و یک لینک ارتباطی امنیتیه که امکان و سطح دسترسی رو تعیین میکنه (لینکای مشکی که خط خطین و بین دامین ها وصلن)

Organizational Units (OUs) :

یه فضاییه برای مدیریت بیشتر :))) همش که شد فضا !! جلوتر که بریم بیشتر درک میکنید !! ولی همینقدر بدونید که به هرچیزی که یه فضاییه برای دسته بندی کردن و گروه کردن چیزهایی که داخل دامین داریم مثلا در داخل دامین ما چه واحد هایی داریم ؟ DC - Users - Groups و...

Sites :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

سایت به معنای مکان هست ، تا حالا هرچیزی گفتیم مفهوم Logical و منطقی داشت ولی این مفهوم Physical هست ، مثلا فکر کنید دامین والد توی انگلیس هست و دو دامنه فرزندمون در امریکا ، ما دوتا سایت داریم ، یکیه برای انگلیس که حاوی یک دامینه و یکی هم برای امریکا که حاوی دو دامینه (سایت های برای مدیریت و نظم بیشتر هستن)

نکته : یک site میتونه حاوی چندین domain باشه ولی یک domain نمیتونه به بیشتر از یک site تعلق داشته باشه ( برای درک بیشتر شما site رو کشور فرض کن و domain رو آدم ، یک کشور میتونه چند تا ادم داشته باشه ولی یک ادم نمیتونه متعلق به چند کشور باشه)

برای اینکه ی این مواردی که گفته شد رو بیشتر درک کنید این ساختار رو نگاه کنید :

Apple.com
│   └───GPO
├───sub1.apple.com
│   ├───OU
│   ├───Employees
│       ├───Computers
│       └───Users 
├───sub2.apple.com
...

کمی درمورد Forest :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در ادامه ما میاییم و میگیم که ما دوتا forest داریم ، یک مقدار مباحث جدید ما داریم :

در بحث شبکه این متداوله که ما چند تا Domain و یا Forest داشته باشیم که با trust به هم وصل شده باشن ولی این ها جهت دارن که در شکل بعد خلاصه توضیح میدم ولی شکل بالا رو اوردم که دیدی از forest داشته باشید

کمی درمورد trust :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در اینجا به صورت خلاصه مبحث trust رو باز میکنیم و جلوتر کامل و جامع بررسیش میکنیم :

نکته : در این شکل کادرهایی که رنگ کرم دارن forest هست و ایکون های سرور نماد دامین هستن

دلیل وجود trust این هست که دامین های مختلف میخوان به محتوا های دامین های دیگه دسترسی داشته باشنو نمیخوان اون دامین رو مجدد بسازن ، چه از نظر داده و چه از نظر منابع فیزیکی

ارتباطات trust و دامین ها یکم پیچیدس و جلوتر بررسی میکنم ولی عکس بالا به صورت مقدماتی اینو داره میگه :

ارتباطی که بین دوتا forest شرکت dell و apple هست به صورت دو طرفه هست(به فلش دقت کنید) یعنی دامین والد dell و apple جفتی به منابع هم دسترسی دارن ، ولــــــی فرزنداشون اینطوری نیستن

فرزند ها به اطلاعات دامین والد خودشون یا فرزند های دیگر در forest خودشون دسترسی ندارن

و فرزندان هیچ forest ای به فرزندان forest دیگر دسترسی ندارن

مثال : واحد فروش شرکت apple به هیچ یک از واحد های دیگه شرکت apple دسترسی نداره و هیچ واحدیم بهش دسترسی نداره ( نه در forest خودش نه در forest شرکت dell)

واحد مالی شرکت dellهم به هیچ واحد دیگه ای دسترسی نداره و برعکس ، نه تو forest خودش نه تو forest شرکت apple

ولی والد ها به اطلاعات فرزندانشون دسترسی دارن ، والد apple به کل اطلاعات والد و فرزند های شرکت dell و والد dell هم به کل اطلاعات خود والد و فرزندان شرکت apple دسترسی داره

منطقیم هست ، هر کسی اطلاعاتی بخواد از والد یا فرزند دیگه باید به والدش اطلاع بده تا براش trust ساخته بشه

این مبحث در اخر مقاله موشکافانه تر بررسی میشه

مفاهیم پیشرفته تر :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Attributes :

هر object در اکتیو دایرکتوری قصه ما یک سری مشخصات و ویژگی ها داره ، با استفاده از این ها میشه اون شئی رو پیدا کرد و طبقه بندی کرد ، مثلا شئی computer ویژگی هاش اینان : hostname ، DNS name و..

همه این attribute ها هم یک نام مترادف در LDAP دارن واسه اینکه اگر ما query زدیم به LDAP بتونیم با استفاده از این نام ها اطلاعات بدست بیاریم مثلا شما نام کاملتو میدی و با displayName مچ میشه در یه entry و سرچ میشه یا نامتو میدی و با give name مچ میشه و قابل جستجو هست

ValueEntry

Full NamedisplayName

First Namegiven name

GPO :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

ما یه چیزی داریم به اسم Group Policy که میاییم و توش خط مشی و قوانین تعریف میکنیم ، و به صورت شئی ذخیره میکنه (این شئی که گفتم با شئی ای که توی اکتیو دایرکتوری در موردش صحبت میکنیم متفاوته)

Schema :

هرجا اینو شنیدید میشه یه نقشه کلی از شبکه AD ای که داریم ، یه شکل کلی که همه چی توش معلوم باشه

در این نقشه نوع اشیا مشخص شده و attribute های مربوط به هر شئی در اون موجوده و برای هر شئی کلاس خاصی در نظر گرفته میشه طبق اون چیزی که اون شئی در اکتیو دایرکتوری هست مثلا :

AD ObjectCorresponding Class in schema

usersuser

computer computer

instantiation و instance of that class :

یک مفهوم خیلی مهمه که اگر اینو یاد نگیرید بعدا به مشکل میخورید :

  • وقتی یک شئی از روی کلاس سخته بشه بهش میگن instantiation
  • اگر شئی از روی یک کلاس خاص ساخته بشه بهش میگن نمونه کلاس یا instance of that class

برای مثال اگر ما بگیم "computer RDS01" این object اکتیو دایرکتوری یک instance هست از کلاس Computer که توی schema بود چون از روی class خاص computer ساخته شده

Container vs Leaf Objects :

ما در کل دو نوع شئی داریم در اکتیو دایرکتوری ، یکی اشئایی که خالین و چیزی نمیتونه داخلشون بره ، یکی اشیایی که داخلشون چیزی هست

  • container درواقع اشئایی هستن که داخلشون اشیاء دیگه ای میتونه قرار بگیره ، خاطرتون هست بالاتر گفتم OU ؟ این اشیاء همه چی داخلشون قرار میگیره ! مثلا
  • leaf این ها اشیائی هستن که چیز دیگری توشون نمیتونه قرار بگیره ، مثلا پرینتر ، شئ پرینتر فقط پرینتره و هیچی دیگه نمیتونه توش قرار بگیره

نکته : فرق بین OU و Container چیه ؟ جفتشون کانتینر هستن ولی GPO فقط به OU اعمال میشه سر همینه که اکثرا از OU استفاده میشه

مثال : فرض کنید شما مدیر دومین asia.mycorp.com هستید و 500 تا کاربر و 500 تا کامپیوتر در شبکه (دامین) دارید ، شبکه شما رفت و امد زیاد دارد ، یعنی افراد زیادی روزانه ثبت نام میکنن و روزانه اخراج میشوند ، حالا میخواید این شبکه رو بدست یه سنیور بدید تا مدیریت بکنه ، امکان ساخت دومین جدیدی هم نیست !! شما میایید و تو همون دامین که دارید یک Organizational Unit میسازید به اسم دلخواه مثلا Manufacturing OU ، و به اون سنیور دسترسی و مجوز ادیت GPO رو میدید ، و در اینجا دسترسی ای که اون فرد سنیور داره روی Manufacturing OU هست نه روی کل شاخه و خود asia.mycorp.com

Tree :

صحبت از درخت شد ، یه اصطلاح داریم به اسم درخت که به صورت شاخه وار میگه چه چیزی زیر مجموعه چه چیزی هست ، بالاتر شکلشو کشیدم و یه یبار

├───Root Domain
│   ├───child Domain
│   │   ├───Computers
│   │   └───Users  
│   └───child Domain
├───Root Domain
│   ├───child Domain

نکته : این نکته مهمه و قبلش حتما Global Catalog رو بخونید تا این نکته رو بفهمید ، تمامی دامین ها که در tree هستن یک standard global catalog مشترک رو به اشتراک میگذارند که تمامی اطلاعات object های مربوط بهtree رو داخلش داره

Global Catalog(GC) :

Domain Controller که اول گفتم رو خاطرتون هست ؟ اگر نیست یه بار دیگه بخونیدش ، GC یه نوع DC هست که اطلاعات تمام object های یک forest رو ذخیره میکنه و ازشون کپی میگیره ، به این صورت هم کپی میگیره که از دامین متعلق به خودش یه کپی کامل (Full Copy) و از دامین های دیگه تو forest یک کپی ناقص (Partial Copy) میگیره

نکته : GC محتوا فقط خواندنی داره و مستقیما آپدیت نمیشه !

نکته : فرق بین DC و GC چیست ؟ DC فقط محتوا اشئا داخل دامین خودشو داره ولی GC علاوه بر محتوا دامینی که توشه محتوا دامین های دیگه رو هم داره

کاربر ها و برنامه ها با استفاده از کوئری زدن به GC میتونن اطلاعات هر شئی رو در هر کدوم از دامین ها بدست بیارن (داخل Forest)

GC دوتا کار میکنه :

  • Authentication : برای تمامی گروه هایی که کاربری توشون هست Authentication و Authorization فراهم میکنن ، که معمولا بعد گرفتن Access Token توسط یوزر انجام میشه
  • Object search : امکان سرچ یک object بر اساس attribute مد نظر رو به وسعت کل دامین های یک forest فراهم میکنن

Global Unique Identifier (GUID) :

یک رکن بسیار مهم هست ، GUID یک مقدار 128 بیتی منحصر بفرد و تکرار نشدنیه برای هر شئی که ساخته میشه ، تکرار میکنم هر شیئی تو شبکه که توسط اکتیو دایرکتوری ساخته میشه این شناسه رو میگیره و مثل MAC Address یکتا و منحصر بفرده ، این مقدار توی attribute ای ذخیره میشه به نام ObjectGUID

ما میتونیم توسط پاورشل کوئری بزنیم و ObjectGUID رو سرچ کنیم و شئی مورد نظر رو پیدا کنیم ،

سرچ توسط GUID دقیق ترین روشه مخصوصا که اگر ما کوئری زده باشیم به GC و چند مورد مشابه ببینیم و ندونیم کدوم مد نظرمونه و این مقدار تو تست نفوذ و فاز Enumerate بسیار بدردمون میخوره

نکته : تا وقتی شئی مد نظر ما در اکتیو دایرکتوری هست این مقدار ObjectGUID یا همون GUID شئی عوض نمیشه و به شئی دیگری تخصیص نمیگیره تا وقتی که اون شئی از اکتیو دایرکتوری ما خارج بشه !

برای سرچ کردن در اکتیو دایرکتوری ما گزینه های متفاوتی داریم از قبیل SID-GUID-SAM Account name-DN که جلوتر بهش میپردازیم

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Distinguished Name (DN) :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

به مسیر کامل یه object میگن DN در اکتیور دایرکتوری ، مثلا تو مثال کامپیوتر خودم الان یه یوزر هست به نام محمد حسن پزشکیان که توی دامینیه به اسم mamad.com

قبل دیپ شدن یه مثال بزنم : فرض کنید میگن ادرستون کجاست ؟ میگید شهر اراک ، خیابون ملک ، کوچه فریدی ، ساختمان اجر سه سانتی ، پلاک 2 ، محمد حسن پزشکیان

هر کدوم از این بلاک ها با یه attribute مشخص میشن، مثلا DC="خیابان ملک" و... پس اینطوری یه object در AD پیدا میشه !

ما سه نوع Attribute داریم برای نام گذاری :

  • O - OU : اولی organizationName یا organizationalUnitName هست و معمولا بیانگر دامین root-level هست و میگه این شئی کجا قرار داره
  • DC : این مورد organizationalUnitName هست و برای دامین و DNS هست و اگر مثلا دامین ما یه DNS داشته باشه به این صورت " rebeladmin.com " ما این نوع ادرس دهی رو داریم : DC=rebeladmin,DC=com
  • CN : این هم commonName هست و بیانگر شئی و container یا همون فضای دربرگیرنده object های ماست

معمولا اکثرا از CN استفاده میشه ولی فورم درستش به این صورته :

CN=bill gates,CN=Users,DC=microsoft,DC=com

اینجا microsoft.com دامین ما هست که با DC نمایش داده شده و users ابجکت یوزر ماست که با CN نمایش داده شده و درواقع users واسه این با CN امده چون یه Container object هست (بالاتر توضیح دادم) و توش کلی اسم ذخیره میشه و جناب بیل گیتسم که اسم کامل فرد هست و نام ابجکت ماست

نکته : اگر شئی از یک DC منتقل بشه به DC دیگه DN اش عوض میشه

Relative Distinguished Name :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

این مفهوم خیلی کلکیه ! خوب و با دقت بخونید :

RDN یک جزء از DN هست که اون object رو منحصر به فرد میکنه

فرض کنید شما توی یه OU دوتا کاربر دارید به اسم محمد (عکس سمت چپ) و این دوتا دقیقا DN یکسانی دارن ! یعنی مسیرشون همینطوری زیر شاخه خورده تا رسیدن به OU منابع انسانی ، حالا ما که نمیتونیم دوتا محمد یکسان داشته باشیم ! فقط یک محمد

نکته : اگر دوتا اسم یکسان بود خب دوتا فامیلی که یکسان نیست ؟ مثلا تو عکس سمت چپ سناریویی ک داریم دوتا اسم یکسانه ولی خب دوتا فامیلی متفاوته پس مشکلی نیست

نکته : اگر اسم و فامیلی جفتشون یکی بود چی ؟ یکیشون باید یک مشخصه داشته باشه که اون یکی نداره ، مثلا یکیشون سنش 27 عه و دیگری 31 ، خب فقط کافیه یه cn=34 اضافه کنیم به یکیشون و اونوقت این یکی یه RDN متفاوت داره پس توی یه OU میتونه کنار اون یکی باشه !

نکته : RDN میتونه اسم باشه ، یا OU باشه یا سن باشه یا قد باشه یا جنسیت باشه یا یه شماره خاص باشه یا .. فقط یه وجه تمایز باید باشه

نکته : هر جزئی از DN یک RDN هست ، یا به عبارتی چندین RDN کنار هم یک DN تشکیل میدهند

کلید : حداقل یکی از RDN ها در یک OU یا همون Container باید منحصر به فرد باشند ، یعنی تکراری نباشد ، اگر همشون تکراری بودند باید در Container های مختلف باشند(در Cotainer مختلف یعنی در مکان های مختلف ، یعنی DN مختلف) !

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

یک مثال اینجا اوردم ، ما یک شئی داریم در users به نام استیو جابز که دامینشم apple.com هست ، اینجا ما تو خط دوم یه کاربر دیگه با اسم steve jobs میاریم و اکتیو دایرکتوری این اجازرو به ما نمیده ! پس دوتا کار میتونیم بکنیم ، توی همون مسیر یه RDN دیگه تعریف کنیم ، مثلا سومی براش یه مشخصات تعریف کردیم که عدد 27 هست و سنشه ! یا میتونیم مثل گزینه اول مسیرشو عوض کنیم و یدونه RDN بهش اضافه کنیم که ما بردیمش تو sales و اینطوری DN عوض شد (نسبت به اصلی)

Access Tokens & SID :

قبل پرداخت به کانسپت های امنیتی یکم با مبحث Access Token و SID اشنا بشیم

Access Token یک شئی داخل کرنله که به Porcess یا Thread تعلق میگیره و سطح دسترسی و گروه و... های دیگشو تعیین میکنه ، این موارد امنیتین ، یک توکن خالی که به process یا thread خاصی تعلق نداره ارزشی نداره !

thread ها هم معمولا از process شون به ارث میبرن token و دسترسی هارو !

یک نمونه توکن :

ffffc4097ba54060

SID (Security IDentifiers)

درواقع یک شناسس برای شناسایی یوزر ، گروه و یا دامین و سطح دسترسیش ، درواقع از دیدگاه امنیتی به هر کدوم یه عدد اختصاصی داده میشه که بشه تشخیص دادشون

در اکتیو دایرکتوری DC این شناسه رو تولید میکنه برای هر شئی و اونو تو دیتابیس خودش ذخیره میکنه

هر SID فقط یکبار حق استفاده داره و بعد دلیت کردن Security principals هم حتی اون SID حق استفاده شدن نداره

نکته : چه زمانی مقدار SID یه شئی میتونه عوض بشه ؟ زمانی که منتقل بشه به یک DC دیگه !

نکته : تغییر مقادیر در هر object هیچ موقع SID شو عوض نمیکنه

نکته : اگر یک object توی یک دامین یک مقدار SID داشته باشه این مقدار SID در دامین دیگه برای همین object مورد قبول نیست

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

sIDHistory :

مقدار SID یک object که توی یک دامین بوده و منتقل شده به یه دامین جدید میره توی sIDHistory و به اون object یه SID جدید توی دامین جدیدی که امده توسط DC تعلق میگیره

نکته : از دیدگاه امنیتی این قسمت اگر درست کانفیگ نشده باشه میتونه مورد سوء استفاده قرار بگیره و یک object جدید ایجاد بشه و SID قدیمی اون object ای رو بگیره که منتقل شده به یه دامین دیگه ! و این خطرناکه ، برای جلوگیری از این حمله باید SID Filtering فعال باشه

یک مقدارم درمورد اجزا سطح دسترسی :

Authorization and access control components :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در عکس بالا subject رو بگیرید یک برنامه که یه کاربر اجرا کرده و این برنامه سعی داره یک object (این object مال ویندوزه و با اونی که توی اکتیو دایرکتوری تا الان گفتیم یکی نیست !) مثلا Share folder رو بخونه و بهش دسترسی بگیره

اینجا اون شئی یه سری سطح دسترسی ویندوز براش تعریف کرده که هرکسی میخواد بهش دسترسی داشته باشه باید اون حد از دسترسی رو حداقل داشته باشه ، و اینجا یوزری که میخواد به این object دسترسی داشته باشه هم یه سطوح دسترسی ای داره (همون access token ای که گفتم) و حالا اینجا ویندوز میاد این دوتارو باهم مقایسه میکنه ، اگر سطوح دسترسی برنامه در حد اون object بود میتونه ازش استفاده کنه

یکم فنی تر توضیح بدم میشه اینکه اون object یه سری لیست دسترسی داره که بهش میگن ACE که تک تک اون ها با Access Token فرد تطابق داده میشن تا یک مورد Match پیدا بشه

مثال : فرض کنید شما میخواید وارد سینما بشید وسینما یه لیست داره از افرادی که میتونن وارد بشن ، وقتی شما میرید اونجا از باجه دم در یه بلیط یا Access Token میخرید ، روی اون بلیط شماره صندلی شمارو هم نوشته که مثلا 52 (مثلا ما فرض میکنیم اینطوریه) و وقتی شما میخواید از در رد بشید کارمند اونجا اول تو ذهنش میگه خب چه کسی حق داره از اینجا رد بشه ؟ یه لیست داره :

افرادی که حق عبور دارند :

مدیر سینما

مسئول فنی

فروشنده بلیط مستقر در باجه

نظافتچی و سایر کارکنان

مشتری دارای بلیط

و وقتی شمارو میبینه میگه خب شما گزینه اخر هستی ، یعنی 4 گزینه اول رو رد میکنه و وقتی به اخر میرسه میبینه سطح دسترسی شما با اون اخری Match شده و اصطلاحا اجازه عبور شمارو میده

این مکانیزم دقیقا تو ویندوز هست ، و اسم اون لیست در ذهن فرد دم در همون ACE هست که پایین میخوایم بهش بپردازیم :

Security principals :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

هر چیزیه که سیستم عامل بتونه احراز بکنه ، شامل یوزر ها ، اکانت ها ، گروه ها یا حتی Process ها و Thread ها که در چارچوب یوزر اجرا میشن ! مثلا اگر ما Tomcat رو داشته باشیم و اجرا بشه حتی Security principals اونم احراز میکنه !

در اکتیو دایرکتوری ها این Security principals ها object هایی هستن که متعلق به دامین هستن و سطح دسترسی کاربرا و .. رو به منابع تعیین میکنن ، ما ارکان دیگه ای هم برای تعیین سطح دسترسی مثل local user accounts و یا security groups داریم که توسط SAM مدیریت میشن و سطح دسترسی رو کنترل میکنن

نکته : کنترل سطح دسترسی کلا مقوله ایه که به چندین عامل وابستس ، مثلا شما وقتی گوشیتونو به ضبط ماشین وصل میکنید که آهنگ پخش کنید ، اگر صدا ضبط تا ته زیاد باشه و صدای گوشیتون خیلی خیلی کم باشه ، اهنگ صداش کمه و برعکس ، پس به همه عوامل بستگی داره ، مثال واقعی تر بخوام بزنم مثل NTFS Permission و Share Permission هست ، اگر هر هرکدوم مجوز ندن و اون یکی بده ، تا زمانی که یکیشون مجوز کم تعیین بکنه همون مجوز کم اعمال میشه !

Access Control List (ACL) :

یک لیستی هست از سطح دسترسی هایی که به یه Object اعمال میشن

وقتی یک object به دامین دیگری منتقل میشه ACL از روی SID اون object که تو لیستش داشته دسترسی بهش میداده و وقتی اون object توی sIDHistory نیاد ثبت کنه که من منتقل شدم و SID قدیمیش اونجا ثبت نباشه ، ACL مجوز بهش نمیده ! چون SID جدیدش جایی ثبت نشده ، ولی وقتی بیاد و SID قدیمیشو تو sIDHistory ثبت کنه و بره SID جدید بگیره ACL رهگیریش میکنه و مجوز های SID قبلی اون شئی رو روی SID جدیدش ست میکنه !

Access Control Entries (ACEs) :

یک Entry و مقداریه و مجوزی که به هر Object توی دامین چه دسترسی ای میشه داشت برای Trustee ها (Trustee همون اکانتای یوزر هاست ، یا گروه ها )

Discretionary Access Control List (DACL) :

تعریف میکنه که چه اصول امنیتی و قوانینی روی یک object اعمال و تعریف میشه

System Access Control Lists (SACL) :

لاگ برداری خودمونه ، که چه زمان چه یوزری سعی کرده به چه Object ای دسترسی بگیره

برای درک کامل این موارد عکس بالا رو ببینید که با رنگ نارنجی و مشکی مشخص کردم ، یکم با بحث سطح دسترسی ها در ویندوز کار کرده باشید دستتون میاد این موارد

برای درک این موارد یکبار عکس نارنجی و ابی ای که بالا گذاشتم رو ببینید !

Foreign Security Principals :

این هم همینجا بگم ، وقتی یک شئی ای در اکتیو دایرکتوری ایجاد میشه برای بحث security principal منتها مروبط به forest دیگه ای هست (external forest یعنی forest خارجی)

فرض کنید از یک forest دیگه یک شئی مثلا یک کامپیوتر اضافه شده به دامین ما توی forest ما ، بلافاصله باید براش FSP تهیه بشه ، در این FSP یک چیز مهم یعنی SID اون شئی که تو forest خارجی بود هم ذخیره میشه و اگر ویندوز بخواد این شئی رو از طریق SID اش پیداش بکنه از طریق trust میره و از forest مبدا شئی میپرسه

این FSP ها در کانتیر خاصی قرار میگیرن "ForeignSecurityPrincipals" و RN شونم اینطوریه :

cn=ForeignSecurityPrincipals,dc=mamad,dc=com.

sAMAccountName :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

این درواقع اسمیه که کاربر باهاش وارد میشه و logon میکنه ، این اسم باید منحصر بفرد و یکتا باشه و کمتر از 20 کاراکتر باشه

(فلش صورتی)

userPrincipalName :

اینم یه روش دیگس برای اینکه کاربرا رو بشه پیدا کرد ، یک attribute که یک پیشوند داره که همون اسم یوزره و پسوند که دامینه

(تو عکس بالا با فلش بنفش مشخصه)

Service Principal Name (SPN) :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

ساده بگم کاربرا در اکتیودایرکتوری با استفاده از SPN میتونن سرویس هارو تو اکتیو دایرکتوری پیدا کنن ، اگر واسه یه سرویسی SPN نباشه نه کاربرا میتونن پیداش کنن نه Kerberos

SPN درواقع یک Instance از سرویس هست ، SPN ها توسط Kerberos استفاده میشن که یک logon account رو به Service Instance تخصیص بده ؛ یعنی به یه اپلیکیشن (Client Side Application) ، اجازه میده که به یه سرویس درخواست بزنه که احراز بشه بدون اینکه نیاز باشه اسم اکانت رو بدونه

(این مفهوم الان یکم براتون شاید گنگ باشه ، وقتی Kerberos و توضیح دادم اونجا کامل درکش میکنید)

(این مفهوم تو بحث Persist و Priv Esc در اکتیو دایرکتوری خیلی بدردتون میخوره !)

لینک مقاله Kerberos

Replication :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

Replication یا تکرار زمانی اتفاق میفته در اکتیو دایرکتوری قصه ما که اشیاء ما Update میشن و و از یه DC به DC دیگه منتقل میشن

وقتی به AD ما یه DC اضافه میشه ، بین DC ای که از قبل بوده و DC جدید یه لینک ارتباطی صورت میگیره که بهش میگن "connection objects" و کل اشیاء از DC قبلی کپی میشن میرن DC جدید

در هر DC در اکتیو دایرکتوری یه سرویسی هست به نام Knowledge Consistency Checker (KCC) که یه برنامس به زبان ساده و مسئولیتش همین Replication هست و این لینک ارتباطی که خط بالا گفتم "connection objects" رو اون ایجاد میکنه و مسئول انتقال Object هاست

دلیل وجود replication اینه که اول مطمئن بشیم دیتا ها به صورت منظم و کامل در کل DC ها وجود داره و همه یه نسخه از اون دیتا رو دارند و درواقع اگر یه DC به مشکل خورد ما بکاپ داشته باشیم

نکته : Replication فقط بین DC های یک Forest صورت میگیره

SYSVOL :

sysvol یک پوشس (folder) یا میتونه (share) هم باشه ، که فایل های public روی توی دامین رو ذخیره میکنه و کپی میگیره ازشون ، مثل system policies - Group Policy settings - logon/logoff scripts و..

همچنین شامل تمامی اسکریپت هایی میشه که تو AD اجرا شدن تا task خاصی رو انجام بدن

دیتاهای sysvol هم برای سایر DC های دیگه Replicate میشه ولی توسط یه چیز دیگه به اسم "File Replication Services (FRS)"

Sysvol
|____
| |____Policies
| |____Scripts
| |____ DO_NOT_REMOVE_NtFrs_PreInstall_Directory
| |____ NtFrs_PreExisting___See EventLog
|
|____Enterprise
| |____Policies
| |____Scripts
|
|____Staging
| |____Domain
| |____Enterprise
|
|____Staging Areas
| |____Enterprise (junction> = SysvolStagingEnterprise)
| |____Your Domain Name (junction> = SysvolStagingDomain)
|
|____Sysvol
| |____Enterprise (junction> = SysvolEnterprise)
| |____Your Domain Name (junction> = SysvolDomain)

Read-Only Domain Controller (RODC) :

یک نوع خاص از DC هست که اطلاعاتش فقط خواندیه و database اش در حالت read-only هست، هیچگونه پسورد هیچ حسابی در AD در RODC نمیمونه (Cache نمیشه) { البته بجز پسورد خود اکانت RODC و پسورد های RODC KRBTGT}

هیچ تغییراتی روی این RODC صورت نمیگیره ، روی نمیشه AD database یا SYSVOL یاحتی DNS سرورشو تغییر داد چون Read only هست ! و تغییرات sysvol از به بقیه DC ها منتقل نمیشه !

نکته : برخلاف اکانت های AD ، ما نمیتونیم به صورت مستقیم و تعاملی به اکانت krbtgt لاگین کنیم و باهاش تعامل داشته باشیم ، چون یه اکانت Built-in هستش و نام krbtgt هم نمیشه عوض کرد !

نکته : به رخش نگاه نکنید که خیلی امنه ، میزنیم میترکونیمش :)

نکته : این مفاهیم اگر براتون گنگه باید حتما Kerboros و ساختارشو یادبگیرید تا اینا براتون جا بیفته !

FSMO Roles :

خب خب ، بشینید میخوام براتون قصه بگم :

یکی بود یکی نبود ، توی AD کبود ، مشکلی بود بین DC ها بر سر مدیریت و فرمان دهی ، لوس بازی بسه

در اوایل شکل گیری AD یه مشکلی بود بر سر اینکه کدوم DC تصمیم بگیره و تغییراتو اعمال کنه ، مایکروسافت امد و یه حرکتی زد ، گفت قانون "last writer wins" رو بیام بنویسم که میگه هرکی اخر همه نوشت اون اعمال بشه ، که خب مشکلش این بود که اگر اخری تغییرات اشتباهی میخواست بده چی؟ سازمان باید به فنا میرفت ؟

مایکروسافت امد گفت خب اولین DC دامینتون که root level هم هست (والد همه هست) بیاد تصمیم بگیره ، درواقع حالت master - slave ایش کرد و خب مشکلی که داشت این بود که اگر اون DC از دسترس خارج میشد کل سازمان به مشکل میخورد ! و مشکل SPF (Single Point of Failure) رو داشت

مایکروسافت امد گفت ، خـب حالا ما بیاییم وظایف رو بین DC ها تقسیم کنیم و امد Flexible Single Master Operation (FSMO) رو ساخت

این قوانین به DC ها اجازه میده که بدون تداخل باهم دیگه کاربران رو احراز بکنن

این 5 قانون به این صورتن :

Schema Master and Domain Naming Master (یدونه برای کل forest), Relative ID (RID) Master (یدونه برای هر دامین), Primary Domain Controller (PDC) Emulator (یدونه برای هر دامین), and Infrastructure Master (یدونه برای هر دامین)

تمامی قوانین به اولین DC توی forest ما اعمال میشه و اگر دامین جدیدی به forest ما اضافه بشه ، به DC اش فقط سه تا قانون اضافه میشه : RID Master، PDC Emulator و Infrastructure Master

این قوانین به کار کردن صحیح و روان شبکه کمک میکنن ، ترافیک replication رو هم کنترل میکنن و...

  • Schema Master :

این قانون کل عملیات های read / write و copy رو در اکتیو دایرکتوری مشخص میکنه ، یعنی میشه تمامی attribute هایی که اعمال میشه به یه object در AD

Domain Naming Master : مدیریت نام دامنه ها رو انجام میده و مطمئن میشه که توی یک forest دوتا دامین با نام یکسان نداریم

  • Relative ID (RID) Master :

قبل اینکه اینو بگم بزارید RID رو بگم :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

درواقع rid قسمتی از sid هست که باعث منحصر به فرد شدنش میشه

حالا RID Master چیکار میکنه ؟ یه مشت از این RID ها میده به DC که هر شئی امد تو شبکه بهش اختصاص بده و کار اصلی RID ام منحصر به فرد کردنه یعنی اگر Domain identifier چند شئی یکی شد از لحاظ RID متفاوت باید باشن

  • PDC Emulator :

این دوست عزیز وظیفش چیه ؟

اگر هاستی یا همون کامپیوتری این قانون بهش اعمال بشه توی دامین ، یک DC معتبر میشه و میتونه احراز هویت ها و اعمال مربوط به امنیت مثل تعویض پسورد ، احراز هویت ، GPO و... رو انجام بده

(زمان هم دست این دوست عزیزمونه)

  • Infrastructure Master :

این قانونم وظیفه تقسیم GUID - SUID - DN رو دامین ها داره (توی یک forest) و نشونه خرابی این قانونم وقتیه که ACL بجای اینکه نام کامل یک شیئو نشون بده SID شو نشون بده ! اونوقته که باید این Infrastructure Master درست بشه

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

AD Recycle Bin :

نوبتیم که باشه نوبت سطح آشغاله :)

اما کاربردش چیه ؟ اگر در AD قصه ما Recycle Bin فعال باشه و ما شئی را پاک کنیم میره توش و اگر بخوایم برش گردونیم نیاز به بکاپ نیست ، برای مدت خاصیم اون شئی رو نگه میداره تو خودش و بعدش کامل پاکش میکنه

زمانش دست خودتونه و اگر ست نکنید پیشفرض 60 روز نگه میدار

Tombstone :

این هم یک مکانیه در اکتیو دایرکتوری قصه ما که اشیاء حذف شده رو نگه میداره

وقتی شئی پاک میشه اگر Recycle bin فعال نباشه میاد اینجا و تمام فلگ هاش پاک میشه و فلگ isDeleted مقدارش True میشه و مثل recycle bin مدت زمان داره که بهش میگن Tombstone Lifetime که اگر بگذره دیگه فایلو کامل پاک میکنه

نکته : فرق بین Recycle Bin و Timbstone چیه ؟ اگر شئی بره توی Recycle bin تمام attribute هاش حفظ میشه ولی اگر بره تو Tombstone تمام attribute هاش پاک میشه

Fully Qualified Domain Name (FQDN) :

به نام کامل میگن FQDNو ساختارش اینطوریه :

[host name].[domain name].[tld]

و برای این بکار میره که مکان یه شئی رو در DNS پیدا کنیم ، کاربرد FQDN اینه که بدون دونستن آیپی یک شئی اون رو در AD پیدا کنیم ، دقیقا مثل google.com که شما ایپیشو نمیدونید ولی نامشو میزنید و سایت میاد

سمپلشم اینطوریه :

Ali01.mamad.com

و ali01 نام hostname هستش ، برای کاربر علی ! حالا 01 میتونه هرچی باشه عدد سن باشه هرچی!

Active Directory Users and Computers (ADUC) :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

برنامه گرافیکی ADUC برای مدیریت AD ، البته با پاورشل هم میشه باهاش ارتباط گرفت

ADSI Edit :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

یه برنامه گرافیکی برای مدیریت اشیاء در AD ، تفاوتش با ADUC اینه که میشه attribute هارو مدیریت کرد و روی تک تک اشیاء کنترل کامل داشت

AdminSDHolder :

این داداشمون یک شیء هست که برای مدیریت ACLs های اعضا داخل گروه ( built-in groups in AD ) که سطح دسترسی بالاییم دارن در AD وجود داره

درواقع مثل مفاهیم دیگه یه فضایی هست که سطح امنیتی اعضایی که جزو گروه محافظت شده ( protected groups ) هستن رو چک میکنه

خب ما یه پردازش هم داریم به اسم SDProp (SD Propagator) که روی نظم (هر یک ساعت یکبار) اجرا میشه و میاد سطوح دسترسی داخل شئی AdminSDHolder رو با سطوح دسترسی داخل روی یکی از قوانین RODC ای که بالاتر معرفی کردم (PDC Emulator Domain Controller)

فک کنید یه مهاجم رفته و یک ACL entry آلوده ایجاد کرده که مجوز های دسترسی یک یوزر خاص رو بگیره ، که این یوزر صد در صد چون سطح دسترسیش بالاعه جزو Domain Admins group هست

اگر تنظیمات دیگه ای در AD رو هم عوض نکنه و فقط به این بسنده کنه ، وقتی SDProp process قصه ما اجرا بشه و سطح دسترسی هارو چک کنه ، پرتــــش میکنه بیرون

(ما با این دوست عزیز تو تست نفوذ اکتیو دایکتوری خیلی کار داریم)

dsHeuristics :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

dsHeuristics در واقع یک رشتس (string) که روی service object ها اعمال میشه و تنظیمات و Configuration رو تعیین میکنه در کل یک forest

اگر AdminSDHolder بالا رو خونده باشید شاید یکم گیج بشید که چرا گفتی built-in groups بعد گفتی protected groups ، جریان چیه ؟

یکی از این تنظیمات اینه که بیاد و built-in groups رو از Protected Groups جدا کنه (exclude) ، خاطرتون هست که گفتم گروه های Protected توسط شئی AdminSDHolder و پردازش SDProp محافظت میشن و بعد یه مدت خاص هر تغییری که توی protected groups انجام توسط SDProp برمیگرده به حالت اولش؟ حالا اگر ما بیاییم یک گروه رو جدا کنیم از Protected Groups ، یعنی بهش یک dsHeuristics attribute بزنیم دیگه SDProp به اون گروه کاری نداره و هر تغییری که اعمال شه داخل اون گروه دیگه SDProp برش نمیگردونه به حالت قبل و اولش !

adminCount :

یک attribute داریم در AD به نام adminCount که میاد میگه آیا SDProp process از یه user محافظت میکنه یا ن

اگر مقدار این attribute عدد 0 بود یا مشخص نشده بود "not specified" پس یعنی SDProp process از اون کاربر محافظت نمیکنه

اگر مقدارش value بود یعنی محافظت میکنه

الان شاید براتون سوال بشه که مقدار "1" چی پس ؟ اگر مقدار 1 بود یعنی اون اکانت سطح دسترسی خیلی بالایی داره

و مهاجما خیلی به این حساب ها علاقه دارن چون اگر بخوره میتونه منجر به دسترسی به کل دامین بشه

NTDS.DIT :

مهم ترین فایل توی اکتیو دایرکتوری این فایله ، توی هر DC ما این فایلو داریم در مسیر

C:WindowsNTDS

و درواقع همون دیتابیسه ما هست که کل کل اشیاء و عضویت ها و.. همه چیو تو خودش ذخیره میکنه

و مهم تر از همه پسورد های هش شده کل کاربران اون دامین 🤩

و دیگه میدونید که میتونید کرک کنید یا pass-the-hash بزنید ، و درضمن اینم بگم که اگر توی تنظیمات "Store password with reversible encryption" فعال باشه پسورد cleartext هم ذخیره میشه توش که بعیده (یعنی اون شبکه احرازش مبتنی بر kerberos نباشه و مبتنی بر پسورد cleartext باشه (😑 مگه میشه ؟)

بررسی دقیق Trust :

 بررسی جامع اصطلاحات و مفاهیم اکتیو دایرکتوری

در اکتیو دایرکتوری ما سه نوع trust داریم :

  1. two-way trust
  2. one-way incoming trust
  3. one-way outgoing trust

در اولی خب معلومه هر دو سر rtust ما بهم متصلن و ارتباط دارن

در دومی که ورودی یک طرفه هست ، در عکس بالا قسمت پایینش میبینید یک لینک ارتباط وارد شده به لنوو از ایسوز ، به این حالت میگن one-way incoming trust از ایسوز پس کاربران لنوو میتونن توی شرکت ایسوز احراز بشن (اینو پایین تر توضیح میدم)در سومی باز همون لینکه ولی اینبار از دید ایسوز اگر نگاه کنیم داره one-way outgoing trust میزنه به لنوو و یعنی کاربران لنوو میتونن احراز بشن در ایسوز

دقت کنید اگر incoming trust باشه مجوز دسترسی میشه outgoing access (لنوو داره trust از سمت ایسوز میگیره ولی به ایسوز دسترسی گرفته) و اگر outgoing trust باشه هم دسترسی incoming trust میشه ( ایسوز داره به سمت لنوو trust میفرسته ولی این لنوو عه که دسترسی میگیره به ایسوز)نکته : trust هارو معمولا خوب تنظیم امنیتی نمیکنن سر همین ممکنه مشکل ساز بشه حملا و بهش حمله بشه و چون دسترسی هارو به دامین های دیگه باز میکنه خیلی خطرناک و گوگولیه :)

در مثال با لا به asus میگن trusting که داره دسترسی رو باز میکنه و اجازه میده که لنوو وارد بشه و به لنوو که دسترسی داره به ایسوز میگه trusted یا مورد اطمینان واقع شدهفرق بین transitive و non-transitive :

در اکتیو دایرکتوری ما forest داریم که چندین دامین توش داره که این دامین ها به صورت پیشفرض بهم trust دارن

فرض کنید مثال بالا ما apple داریم و dell که dell فقط یدونه root domain هست ولی apple رو با دوتاتا child پایینش یعنی sales و tech در نظر بگیرید ، وقتی بین apple و dell یه trust داریم از نوع forest (مثلا فرض کنید چون توی عکس اینطوری نیست) ، dell نه تنها به خود اون apple دسترسی داره بلکه به child هاشم دسترسی داره ، به این میگن transitive trusts یعنی سطح دسترسی تا child ها و اشئیاشون ادامه داره ! و این یه ویژگیه برای هر trust و Non-transitive trusts فقط بین خود اون دوتا دامین یا هرچیزیه و مجوز دسترسی به child ها داده نمیشه !انواع trust

  • Parent-child :

بین دامنه های درون یک forest هست و بین child ها و parent هست ، رابطه دو طرفه و transitive هست (معنیشو پایین تر میگم)

  • Cross-link :

بین child هاست ، معمولا برای افزایش سرعت احراز هویته

  • External :

بین دو دامین مختلف در forest های مختلفو جدا که قبلا توسط forest trust بهم وصل نشدن ، این نوع از فیلتر SID استفاده میکند و این ارتباط non-transitive هست

  • Tree-root :

یک ارتباط دو طرفه transitive هست بین root domain یک forest و یک tree root domain جدیدو وقتی یک tree میسازیم این ارتباط شکل میگیره

  • Forest :

یک ارتباط transitive بین دوتا forest root domain

بهتون حتما توصیه میکنم یکباره دیگم این مقاله رو بخونید تا کامل جا بیفته ، با یکبار خوندن کامل نمیفهمیدش !

نکته: نصف بیشتر موارد بالا که گفته شد مفهوم هستن و شما نباید توقع داشته باشید عملی کار کنید تا یادشون بگیرید ، چیز عملی ای درکار نیست ، مفهومو درک کنید و دنبال یادگیری از طریق کار عملی نباشید

تقریبا تمـامـی عکس های این مقاله رو خودم درست کردم و کپی فقـط با ذکر منبع جایزه !

رفرنس اکثر مطالب این مقاله کتاب Active Directory, 3rd Edition و کتاب Mastering Active Directory,3rd Edition و داکیومنت های خود مایکروسافت هست

تعداد صفحات : 17

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 177
  • کل نظرات : 0
  • افراد آنلاین :
  • تعداد اعضا : 0
  • بازدید امروز :
  • بازدید کننده امروز : 1
  • باردید دیروز :
  • بازدید کننده دیروز : 0
  • گوگل امروز :
  • گوگل دیروز :
  • بازدید هفته :
  • بازدید ماه :
  • بازدید سال :
  • بازدید کلی :
  • <
    آرشیو
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    لینک های ویژه