SMB Sessions
یکی از پروتکلهای کاربردی که در لایه هفتم از مدل OSI فعالیت میکند، پروتکل SMB(Server Message Block) میباشد. مایکروسافت این پروتکل را برای پشتیبانی از انواع ویژگیهای قابل دسترس در شبکه مانند Sharing، احراز هویت در دامین و مدیریت از راه دور ایجاد نمود.
ابزارهای مختلفی برای کلاینت وجود دارد که با استفاده از پروتکل SMB فعالیت خود را انجام میدهند. ابزارهایی مانند net use، reg، sc و Windows File Explorer از پروتکل SMB به منظور ارتباط از راه دور استفاده میکنند.
نکته: ابزار psexec (مجموعه PSTools) که یکی از ابزارهای مجموعه Microsoft Sysinternals میباشد، نیز از پروتکل SMB برای کنترل سیستم هدف استفاده میکند.
از طریق پروژه SAMBA، ماشینهای لینوکسی و یونیکسی نیز پیاده سازی SMB را انجام میدهند، از جمله ابزارهای SMB Client میتوان به rpcclient، smbclient و smbmount اشاره نمود.
در سیستم عاملهای جدید ویندوز، پروتکل SMB بر روی پورت 445 قابل دسترسی میباشد ولی در ویندوزهای قدیمی این پروتکل توسط NetBIOS حمل میشد و بر روی پورتهای 135 تا 139 TCP و UDP در دسترس بود.
در سیستم عاملهای ویندوز دستور net use برای برقراری ارتباط با پروتکل SMB استفاده میشود:
C:> net use \[TargetIP]
نکته: با توجه به اینکه در دستور بالا نام کاربری و کلمه عبور وارد نشده است، با همان اطلاعات احراز هویتی که انجام دادهایم، ارتباط برقرار میگردد. به عنوان مثال اگر کاربر ali این دستور را بر روی سیستم خود اجرا کند، ویندوز تلاش میکند تا با نام کاربری ali به آدرس ارتباط برقرار نماید. همچنین به این علت که ما مسیری را برای اتصال خود در سیستم هدف انتخاب نکرده ایم، ویندوز تلاش میکند تا به admin share در دسترس که معمولا IPC$ میباشد متصل شود.
اگر ما قصد اتصال به یک مسیر share شده خاص با یک نام کاربری و کلمه عبور خاص را داشته باشیم از دستور زیر استفاده میکنیم:
C:> net use \[TargetIP][ShareName] [password] /u:[UserName]
توجه داشته باشید که شما مجبور به استفاده از کاربر عضو گروه ادمین برای برقراری ارتباط Share نخواهید بود. شما میتوانید ارتباط SMB را با استفاده از کاربر Non-admin برقرار نمایید ولی اگر قصد دسترسی به بخشهایی مانند C$ یا admin$ را داشته باشید که نیاز به دسترسی ادمین دارید، که باید با دسترسی ادمین به سیستم هدف متصل شده باشید.
همچنین اگر در دستور بالا کلمه عبور را وارد ننمایید، از شما کلمه عبور را درخواست مینماید.
نکته: برخی از سیستمهای ویندوز از Null Session پشتیبانی میکنند. با استفاده از Null Session، فیلد مربوط به نام کاربری و کلمه عبور را خالی قرار میدهیم. برقراری یک Null Session با استفاده از دستور زیر انجام میشود:
C:> net use \[TargetIP]\ ” ” /u:” “
نسخههای قدیمیتر ویندوز(مانند ویندوز NT و 2000) اجازه بازنگری دقیق از ماشین هدف را در جلسات Null Session با تنظیمات پیشفرض آنها را میدهند. در نسخههای جدیدتر ویندوز هنوز هم میتوان از جلسات Null Session برای برقراری ارتباط استفاده نمود، اما امکانات آن نسبت به نسخههای قدیمی تر محدود میباشد.
پس از برقراری یک ارتباط SMB با ماشین هدف بوسیله استفاده از دستور net use، شما میتوانید لیست موارد به اشتراک گذاشته را با استفاده از دستور net view مشاهده نمایید.
C:> net view \[TargetIP]
هنگام استفاده از دستور بالا، Shareهای پیشفرض (IPC$, ADMIN$, C$) نمایش داده نمیشوند.
Enum Tool
برای استخراج اطلاعات و جزئیات بیشتر از سیستم هدف با استفاده از ارتباط SMB میتوان از ابزار enum استفاده نمود. این ابزار توسط Jordan Ritter نوشته شده است و دارای سوییچهای مختلفی جهت استخراج اطلاعات است.
C:> enum -S [TargetIP]
با استفاده از دستور بالا میتوان Shareهای پیشفرض که در دستور net view نمایش داده نمیشد را مشاهده نمود
C:> enum -U [TargetIP]
با استفاده از دستور بالا میتوان لیست نامهای کاربری را مشاهده نمود.
C:> enum -G [TargetIP]
با استفاده از این دستور میتوان لیست گروهها و کاربران عضو در هر گروه را مشاهده نمود.
C:> enum -P [TargetIP]
با استفاده از این دستور میتوان اطلاعات مربوط به Password Policy مانند مقدار طول کلمات عبور، اطلاعات مربوط به Account Lockout را مشاهده نمود.
به صورت پیشفرض ابزار enum سعی میکند تا یک ارتباط Null Session را برقرار نماید. البته شما میتوانید نام کاربری و کلمه عبور را نیز جهت برقرار ارتباط SMB برای آن مشخص نمایید.
C:> enum -u [username] -p [password] -G [TargetIP]
Important Commands in SMB
سه دستور مهم در ارتباطات SMB به صورت زیر هستند.
C:> net view
C:> net user /domain
C:> FOR /F in (user.txt) DO @FOR /F %p in (pass.txt) DO @net use \DOMAINCONTROLLER\IPC$ /user:DOMAIN\ %n %p 1>NUL 2>&1 && @echo [*] %n:%p && @net use /delete \DOMAINCONTROLLER\IPC$ > NUL
هنگامی که مشغول انجام تست هستیم، اغلب با استفاده سه دستور بالا اقدام به دسترسی اولیه به تعداد زیادی از سیستمها مینماییم. با استفاده از دستور اول، سیستمهای حساس و Shareهای آن را شناسایی مینماییم.
در این مرحله ما به دنبال File Shareهای جذاب هستیم. با استفاده از دستور دوم ما به دنبال استخراج نامهای کاربری هستیم. با این دستور نامهای کاربری تحت دامین استخراج میگردند. در مرحله پایانی ابتدا خروجی دستور دوم که نامهای کاربری میباشد را در یک فایل با نام user.txt ذخیره مینماییم سپس تعداد کلمه عبور که شامل کلمات عبور فراگیر و پرکاربر میباشند را در یک فایل با نام pass.txt ذخیره مینماییم.
با استفاده از دستور سوم تلاش میکنیم تا کلمات عبور صحیح را شناسایی نماییم.
نکته: در این مرحله تعداد کلمات عبور داخل فایل pass.txt باید از سیاست قفل نمودن کاربر در دامین کمتر باشد. (Account Lockout Threshold)
Empire Tool
یکی از ابزارهایی که در مراحل تست نفوذ از آن میتوان استفاده کرد PowerShell Empire است. دلیل کاربردی بودن این ابزار ساخته شدن کامل آن در PowerShell است و با توجه به اینکه پاورشل در اکثر سیستمها به صورت پیشفرض نصب میباشد، ابزار Empire بسیار کاربردی میباشد.
با استفاده از این ابزار میتوان با بهره گیری از قابلیتهای داخلی ویندوز قدرت فوق العادهای در انجام فرآیندPost Exploitation داشت. به عنوان مثال ماژول situational_awareness/network به نفوذگر این امکان را میدهد تا به راحتی Shareها و نامهای کاربری را استخراج نماید.
با استفاده از این ابزار به طور چشمگیری زمان لازم برای یافتن نامهای کاربری و Shareهای داخل شبکه کاهش میبابد.
برای دانلود این ابزار میتوانید به آدرس زیر مراجعه نمایید: