در این بخش از دوره آموزشی SEC504 به ادامه مباحث مربوط به پروتکل SMB می پردازیم. اتصال به SMB از لینوکس به ویندوز، مشاهده و حذف Session های SMB نمونه ای از مطالب این بخش می باشد.
اتصال به SMB از لینوکس به ویندوز با استفاده از smbclient
علاوه بر ابزار enum که بر روی ویندوز اجرا میشود، ما میتوانیم از ابزار smbclient نیز برای ایجاد یک ارتباط پروتکل SMB از یک سیستم لینوکس به ویندوز استفاده نماییم.
برنامه smbclient بخشی از مجموعه samba میباشد که با استفاده از آن میتوان لیستی از Shareهای سیستم هدف را شناسایی نمود. برای این منظور از دستور زیر استفاده میگردد:
smbclient –L [WinIP] -U [username] -p 445
پس از اجرای دستور بالا، کلمه عبور از شما درخواست خواهد شد. با استفاده از smbclient میتوان یک ارتباط تعاملی با ویندوز نیز برقرار نمود. برای این منظور از دستورات زیر استفاده میشود:
$ smbclient //[WinIP]/test -U [username] -p 445
Enter [username]’s password:
smb: > ls
smb: > get [filename]
Rpcclient Tool
بزرگترین گنجینه اطلاعاتی که میتوانید از طریق جلسات SMB دریافت کنید از طریق یک ابزار لینوکسی به نام rpcclient در دسترس است.
این ابزار به عنوان یک ابزار عیب یابی و رفع اشکال برای مجموعه SAMBA ایجاد شده است، ولی در سناریوهای حمله میتوان از آن برای جمع آوری اطلاعات در سطح سیستمها استفاده نمود. rpcclient فوق العاده انعطاف پذیر بوده و شامل صدها ویژگی میباشد که در ادامه به برخی از آنها اشاره مینماییم.
برای ایجاد یک جلسه SMB با rpcclient، ابتدا باید دستور زیر را اجرا کنید:
$ rpcclient -U [username ] [WinIP]
پس از اجرای دستور بالا، کلمه عبور از شما درخواست خواهد شد و پس از آن وارد محیط rpcclient خواهید شد.
rpcclient $>
در این محیط شما میتوانید بیش از صدها دستور را وارد نمایید و از قابلیتهای این ابزار استفاده نمایید. برخی از دستورات کاربردی در این ابزار عبارتند از:
enumdomusers: این دستور، کاربران داخلی (Locally) و کاربران دامین که توسط سیستم شناخته شدهاند را نمایش میدهد.
enumalsgroups: این دستور به دنبال کلمات Domain و Built in میگردد و گروهها را نمایش میدهد. عبارت als در میان این دستور بیانگر alias میباشد.
lsaenumsid: این دستور SID مربوط به کلیه کاربران داخلی بر روی سیستم هدف را نمایش میدهد.
lookupnames [name]: این دستور SID مربوط به یک نام کاربر یا گروه را نمایش میدهد.
lookupsids [sid]: این دستور نام کاربری مربوط به یک SID را نمایش میدهد.
Servinfo: این دستور نوع سیستمعامل و نسخه آن را نمایش میدهد.
مشاهده SMB Session و حذف آن
در ویندوز برای مشاهده اینکه به چه سیستمهای خارجی ارتباط SMB داریم از دستور net use استفاده میکنیم.
برای از بین بردن دسترسی از دستور زیر استفاده میکنیم:
C:> net use \[IPadd] /del
برای مشاهده اینکه چه سیستمهایی با ما ارتباط SMB دارند از دستور net session استفاده میکنیم.
برای از بین بردن دسترسی مذکور از دستور زیر استفاده میکنیم:
C:> net session \[IPadd] /del
توانایی جدا نمودن جلسات SMB (inbound – outbound) میتواند برای متخصصان Incident Handling مفید باشد، زیرا انجام این کار میتواند مهاجم را به صورت موقت از استفاده از جلسه SMB منع نماید. این توقف کوتاه در پیشرفت مهاجم میتواند برای شما زمان را ذخیره نماید.
روشهای مقابله با حملات SMB Session
برای مسدود نمودن استخراج اطلاعات از طریق Null Session باید به مسیرهای زیر در رجیستری رفته و مقادیر آنها را تغییر دهید:
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous
اگر مقدار پارامتر بالا صفر باشد امکان دسترسی به Shareها در Null Session وجود دارد و اگر مقدار آن برابر یک باشد این امکان وجود ندارد. در اغلب سیستم عاملها این مقدار به صورت پیشفرض برابر صفر میباشد.
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM
اگر مقدار پارامتر بالا صفر باشد امکان دسترسی به کاربران در Null Session وجود دارد و اگر مقدار آن برابر یک باشد این امکان وجود ندارد. این مقدار در سیستم عاملهای جدید به صورت پیشفرض یک میباشد.
HKLM\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous
اگر مقدار پارامتر بالا صفر باشد امکان دسترسی به Null Session وجود ندارد و اگر مقدار آن برابر یک باشد Null Session بخشی از گروه Everyone میباشد. که در سیستم عاملهای جدید به صورت پیشفرض صفر میباشد.
لازم به ذکر است این موارد برای مسدود نمودن کسب اطلاعات برای Null Session میباشد که ایده مناسبی برای جلوگیری از دسترسی از طریق Null Session است اما اگر این تنظیمات هم انجام شده باشد، نفوذگر با یک نام کاربری و کلمه عبور معتبر میتواند به سیستم متصل شده و اطلاعات مختلفی را استخراج نماید.
موارد دیگری که برای مقابله با حملات پروتکل SMB باید به آنها توجه شود عبارتند از :
مسدود نمودن دسترسی به پورتهای زیر از طریق شبکه، هنگامی که نیازی به ارتباط Sharing وجود ندارد:
• پورت 445 TCP/UDP که مربوط به پروتکل SMB
• پورت 135 TCP که مربوط به RPC End Point mapper میباشد.
• پورت 137 UDP که مربوط به NetBIOS Name Service میباشد.
• پورت 138 UDP که مربوط به NetBIOS Datagram Service میباشد.
• پورت 139 TCP که مربوط به NetBIOS Session Service میباشد.
باید توجه داشت که اجازه دسترسی به این پورتها تنها به سیستمهای مورد نظر داده شود. استفاده از ویژگی Private VLAN میتواند به شما در طراحی این مورد کمک نماید. البته کلیه پورتهایی که به آنها نیازی نیست باید مسدود شوند.
برای شناسایی نفوذگر هم میتوان لاگ مربوط به پورتهای مذکور را در IDS بررسی نمود.