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

SID چیست؟ بررسی مفهوم Security Identifier و Well-Known SID ویندوز

SID چیست؟ مفهوم Security Identifier در ویندوز چیست؟ Well-Known SID چیست؟ شاید بسیاری از مدیر شبکه ها یا به قول خودمان Admin های شبکه اصلا به این موضوع توجه نکنند که کاربران و گروه هایی که در اکتیودایرکتوری ساخته می شوند ، همانند کاربران و گروه هایی که بر روی کلاینت ها ساخته می شوند قابل شناسایی هستند. آنها را می توان براحتی از طریق SID هایشان شناسایی کرد ، در این مقاله ما به شما مفهوم SID را توضیح خواهیم داد و همچنین لیستی از SID های شناخته شده که مشخص هستند برای چه کاربرانی هستند را به شما معرفی می کنیم. توجه کنید که مفهوم و تکنولوژی بکار رفته در SID ها برای مسائل امنیتی و زیرشاخه های امنیتی ویندوز بسیار مهم و حیاتی است همانطور که در منابع موجود در شبکه این موضوع بسیار حیاتی و مهم است.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

SID یا Security Identifier چیست ؟

SID یا Security Identifier به معنای شناسه امنیتی می باشد. همانطور که ما کاربرها و گروه های موجود در سیستم عامل ویندوز را با اسامی Mohammad ، Ali و Unity می شناسیم ، سیستم عامل آنها را به شماره های 1000 ، 512 و مثلا 1500 به علاوه چند عدد دیگر شناسایی می کند. این دقیقا مشابه چیزی است که شما در وب سایت های اینترنتی مشاهده می کنید ، در واقع هر آدرس اینترنتی وب دارای یک آدرس IP است که شما برای اتصال به آن وب سایت از این آدرس استفاده می کنید .

برای مثال آدرس IP مربوط به وب سایت انجمن تخصصی فناوری اطلاعات ایران شماره 91.98.88.21 می باشد اما شما برای اینکه بتوانید به این وب سایت متصل شوید نیاز ندارید که این آدرس را حفظ کنید بلکه فقط آدرس این وب سایت به نام www.tosinso.com را حفظ می کنید ، این تبدیل اسم به آدرس IP از طریق سرویسی به نام DNS انجام می شود ، شما نیز در مورد SID ها می توانید دقیقا همچنین مثالی را در نظر بگیرید ، نام های کاربری یا User ها و گروه های یا Groups در سیستم عامل در قالب شماره هایی به نام SID در سیستم عامل شناسایی می شوند اما شما آنها را به شکل نام های کاربری مشاهده می کنید. برای اینکه درک بهتری از ساختار SID داشته باشید می توانید به مثال زیر توجه کنید ، نمونه ای از یک SID را مشاهده می کنید :

S-1-5-21-549688327-91903405-2500298261-1000

در این شماره SID رشته S-1-5-21 بیشتر برای User ها و Group ها مورد استفاده قرار می گیرد در حالیکه 549688327-91903405-2500298261 شناسه ای است که در آن Domain مورد نظر شناسایی می شود. توجه کنید که این شناسه های Domain بصورت کاملا منحصر به فرد ایجاد می شوند و دو نمونه مثل هم به ندرت به وجود می آید ( شاید بتوانیم بگوییم به هیچ عنوان به وجود نمی آید ).

آیا امکان به وجود آمدن دو SID یکسان وجود دارد ؟

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

وظیفه SID چیست ؟

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

SID چیست

شکل یک : یک Token از کاربر که شامل SID های گروه و کاربر می باشد

SID ها همچنین برای کنترل کردن دسترسی به منابع زیر مورد استفاده قرار می گیرند ، سیستم عامل ویندوز از ساختار SID ها برای اعمال سطوح دسترسی به منابع مختلف استفاده می کند ، در اینجا منظور از منابع فایل ها ، فولدر ها ، کلید های رجیستری ، پرینترها ، اشیاء موجود در اکتیودایرکتوری و سرویس ها می باشد. در واقع سیستم عامل شما هیچگونه درکی از ساختار نامگذاری کلاینت ها ندارد و صرفا با هویتی به نام SID می تواند کار کند ، در تصویر پایین می توانید نمونه ای از ACL ها یا سطوح دسترسی را مشاهده کنید :

SID چیست
شکل دوم : سطح دسترسی های فایل که در واقع کاربرانی که مشاهده می کنید مجموعه ای از SID ها هستند

زمانیکه یک کاربر درخواست دسترسی پیدا کردن به یک منبع اطلاعاتی را می دهد ، SID کاربر مورد نظر با SID ای که بر روی ACL ها وجود دارد مقایسه می شود ، اگر SID مورد نظر به درستی مقایسه شد و در ACL وجود داشت ، اجازه دسترسی با توجه به سطوح دسترسی تعیین شده برای کاربر به وی داده می شود. در صورتیکه SID مورد نظر در لیست وجود نداشته باشد ، دسترسی نیز به منبع اطلاعاتی مورد نظر منع خواهد شد.

SID های شناخته شده یا Well-Known SIDs

زمانیکه شما اکتیودایرکتوری را نصب می کنید یک سری کاربر بصورت پیشفرض به نام Guest و Administrator و KRBTGT و ... ایجاد می شوند. این حساب های کاربری در همه انواع نصب اکتیودایرکتوری بصورت پیشفرض در سیستم عامل بصورت Hardcode ایجاد شده و وجود دارند. به دلیل اینکه این حساب های کاربری بصورت پیشفرض و بر روی یک سیستم عامل ایجاد می شوند بایستی دارای یک ساختار مشابه SID باشند. توجه کنید که همیشه قسمت ابتدایی یک SID به شکل S-1-5-21 می باشد ، قسمت وسط که مربوط به Domain می باشد بصورت تصادفی ایجاد می شود و مابقی که در واقع قسمت منحصر به فرد یک SID می باشد از RID تشکیل شده است و شما یک کاربر را در یک Domain همیشه با این RID شناسایی می کنید.

RID آخرین قسمت یک SID است و مخفف کلمات Relative Identifier است . این عدد برای کلیه کاربران پیشفرض سیستم به یک شکل مشخص ایجاد می شود. از طریق نگاه کردن به این RID و ساختاری که دارد شما می توانید متوجه بشوید که این RID متعلق به کدام کاربر پیشفرض است ، البته این حالت برای کاربرانی که بعدا بصورت دستی ایجاد می شوند متفاوت است و آنها از سیستم شماره گذاری متفاوتی استفاده می کنند ، در جدول پایین شما می توانید SID های موجود برای این کاربران پیشفرض را مشاهده کنید :

User account	Well-known SID
Administrator	S-1-5-21domain-500
Guest	S-1-5-21domain-501
KRBTGT	S-1-5-21domain-502
Creator Owner	S-1-3-0
Interactive	S-1-5-4
Anonymous	S-1-5-7
جدول یک : حساب های کاربری پیشفرض و SID های مربوط به آنها

SID های شناخته شده یا Well-Known SID های گروه ها

همانند حساب های کاربری پیشفرضی که در اکتیودایرکتوری ایجاد می شود ، یک سری گروه نیز بصورت پیشفرض در اکتیودایرکتوری ایجاد می شود که هر کدام برای خود یک SID منحصر به فرد دارند. به نسبت کاربران پیشفرضی که در اکتیودایرکتوری ساخته می شوند تعداد گروه ها بسیار بیشتر است . در جدول زیر می توانید لیست SID های شناخته شده این گروه های پیشفرض را مشاهده کنید :

Group account	Well-known SID
Everyone	S-1-1-0
Enterprise Domain Controllers	S-1-5-9
Authenticated Users	S-1-5-11
Domain Admins	S-1-5-21domain-512
Domain Users	S-1-5-21domain-513
Domain Computers	S-1-5-21domain-515
Domain Controllers	S-1-5-21domain-516
Cert Publishers	S-1-5-21domain-517
Schema Admins	S-1-5-21domain-518
Enterprise Admins	S-1-5-21domain-519
Group Policy Creator Owners	S-1-5-21domain-520
Administrators	S-1-5-32-544
Users	S-1-5-32-545
Guests	S-1-5-32-546
Account Operators	S-1-5-32-548
Server Operators	S-1-5-32-549
Print Operators	S-1-5-32-550
Backup Operators	S-1-5-32-551
Replicators	S-1-5-32-552
Pre-Windows 2000 Compatible Access	S-1-5-32-554
Remote Desktop Users	S-1-5-32-555
Network Configuration Operators	S-1-5-32-556
Incoming Forest Trust Builders	S-1-5-32-557
Enterprise Read-only Domain Controllers	S-1-5-21domain-498
Read-only Domain Controllers	S-1-5-21domain-521
Allowed RODC Password Replication Group	S-1-5-21domain-571
Denied RODC Password Replication Group	S-1-5-21domain-572
Event Log Readers	S-1-5-32-573

SID های شناخته شده چه معنایی برای شما دارند ؟

همانطور که گفتیم SID های کاربرها قابل تغییر نیستند در حالی که نام کاربری قابل تغییر است . یکی از اولین مراحلی که یک هکر بایستی برای انجام دادن حمله خود انجام دهد بدست آوردن نام های کاربری موجود بر روی سیستم هدف است ، شناسایی این کاربران باعث می شود که هکر بتواند حمله خود را بر اساس کاربر مورد نظر طراحی کند. یکی از نکات امنیتی که در کلاس های شبکه به دوستان گفته می شود این است که نام کاربر Administrator و Guest را عوض کنید ، هر چند عوض کردن این نام های کاربری و ایجاد یک نام کاربری جعلی به نام Administrator و Guest می تواند هکر های معمولی را فریب دهد اما یک هکر حرفه ای از طریق نام کاربری کاربران را شناسایی نمی کند .

بلکه از طریق شماره SID آن کاربر تشخیص می دهد که این کاربر دسترسی مدیریتی دارد یا خیر ، به این تعویض نام کاربری در اصطلاح ایجاد یک نوع Honeypot می گویند. یک هکر حرفه ای فقط کافیست متوجه RID کاربر مورد نظر شود ؛ اگر این شماره عدد 500 باشد نمایانگر این است که این کاربر Administrator است هر چند تغییر نام داده شده باشد. یکی از مهمترین راهکار های امنیتی برای مقابله با چنین حملاتی ، جلوگیری از به وجود آمدن Anonymous Access ها و محدود کردن SID Name Translation و SAM Enumeration و مواردی مشابه این می باشد. برای اینکه بهتر بتوانید این مفاهیم را درک کنیم به مقاله زیر از خودم مراجعه کنید :

خلاصه

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


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات