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

Null Session چیست؟ بررسی مفهوم و آناتومی حملات نال سشن

حمله ای از نوع تهی یا Null Attack از زمانی که ویندوز سرور 2000 روی کار آمد معرفی شد و همچنان نیز مورد استفاده قرار میگیرد ، جالب اینجاست با اینکه این نوع از حملات بسیار شناخته شده هستند و مدت هاست که از آنها استفاده می شود همچنان مدیران سیستم در هنگام امن سازی شبکه یا Network Hardening به این مورد چندان اهمیت نمی دهند. همین عدم توجه به امن سازی در مقابل چنین خمله ای می تواند به یک هکر یا مهاجم این امکان را بدهد که بتواند به سیستم هدف یک Null Session ایجاد کرده و تمامی اطلاعات مورد نیاز برای حمله کردن به سیستم از راه دور را به دست بیاورد و چه بسا که حمله خود را نیز با موفقیت انجام داده و موفق به نفوذ به سیستم هدف نیز بشود.

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

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

خود من به عنوان یک هکر قانونمند زمانیکه به عنوان یک پروژه در شرکتی به عنوان شخصی از افراد یک گروه تست نفوذ سنجی شرکت می کنم ، اولین قدم را با یک Null Session Attack شروع می کنم. هدف اصلی این مقاله این است که ضمن اینکه روش انجام شدن اینگونه حملات را تشریح می کنیم و به شما می آموزیم که چه اتفاقی در همگام بروز یک حمله Null Session رخ می دهد و در نهایت روش مقابله و جلوگیری از بروز حملات Null Session را نیز بررسی کنیم .

Null Session ها چگونه کار می کنند ؟

زمانیکه یک کاربر بصورت ریموت به یک سرور وارد می شود ( Login می کند ) ، نام کاربری و رمز عبور خود را نیز که دارای دسترسی به منابع سیستم می باشد را وارد می کند و در نهایت یک Remote Session ایجاد می شود. این عملیات توسط پروتکل SMB یا Server Message Block و سرویس Windows Server انجام می شود. این ارتباطات زمانیکه کاربران مجاز به (دارای نام کاربری و رمز عبور معتبر ) سیستم وارد می شوند کاملا قانونی و مفید می باشد.

Null Session ها زمانی وارد عمل می شوند که کاربر یک ارتباط با سرور بدون داشتن نام کاربری و رمز عبور برقرار می کند. این نوع ارتباط لزوما به یک پوشه یا منبع اطلاعاتی به اشتراک گذاشته شده بر روی سرور انجام نمی شود بلکه می تواند به Share مدیریتی به نام InterProccess Communication یا IPC متصل شود. IPC Share همانطور که از نامش مشخص است به وسیله Process ها خود ویندوز و با استفاده از نام کاربری SYSTEM برای برقراری ارتباط با سایر Process ها تحت شبکه ، در شبکه استفاده می شود.

IPC Share بصورت کلی با پروتکل SMB کار می کند.استفاده از IPC Share بدون وارد کردن نام کاربری و رمز عبور معمولا برای استفاده نرم افزارها برای برقراری ارتباط در شبکه استفاده می شود اما هیچ تضمینی نیست که یک کاربر نتواند با استفاده از این IPC Share به یک ماشین دیگر متصل شود . این مسئله باعث بروز دسترسی های غیر مجاز تحت شبکه برای دسترسی به منابع نخواهد شد اما می تواند برای یک هکر به عنوان ابزاری برای بدست آوردن اطلاعات یا فرآیند ( Enumeration) از سرور ،مورد استفاده قرار گیرد.

بدست آوردن اطلاعات یا Enumeration توسط Null Session

خوب تا اینجا متوجه شدید که Null Session ها به چه شکل کار می کنند و یک هکر چقدر آسان می تواند از این نقطه ضعف امنیتی استفاده کند. برای اینکه بتوانیم یک Null Session به سرور هدف ایجاد کنیم ، حتما نیاز به استفاده از ابزار خاصی نیست و شما می توانید براحتی با استفاده از دستور NET در ویندوز برای متصل شدن به آن استفاده کنید.

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


حملات Null Session
شکل یک : یک ارتباط قطع شده به Share با استفاده از دستور NET

با استفاده از همان دستور NET و دستکاری نام Share به IPC$ نتیجه همانطور که در شکل پایین مشاهده می کنید موفقیت آمیزتر خواهد بود.


حملات Null SEssion
شکل دو : برقراری یک ارتباط Null Session موفقیت آمیز با استفاده از دستور NET

در این قسمت ما به وسیله یک Null Session به کامپیوتر قربانی متصل شده ایم . اما گام بعدی چیست ؟ توجه کنید که متصل شدن به وسیله Null Session به شما دسترسی مدیریتی به سیستم قربانی را نخواهد داد و شما نمی توانید پس از برقراری ارتباط با قربانی هارد درایو آن را باز کنید و محتویات Hash مربوط به رمزهای عبور کاربران را از آن استخراج کنید . با خاطر داشته باشید که IPC Share برای برقراری ارتباطات بین Process های سیستم استفاده می شود و دسترسی ما نیز صرفا به اندازه دسترسی کاربر SYSTEM می باشد. شما می توانید با استفاده از دستور NET اطلاعات بیشتری را از سیستم هدف بدست بیاورید اما ابزارهای خودکاری وجود دارند که می توانند این فرآیند را برای ما ساده تر کنند.

ابزار مورد علاقه من برای بدست آوردن اطلاعات تکمیلی از سیستم قربانی که هم سبک و هم دارای کارایی نسبتا بالایی می باشد ، ابزاری به نام Enum می باشدکه در همین محیط DOS مورد استفاده قرار می گیرد. این ابزار رایگان که یک ابزار Command-line است می تواند اطلاعاتی همچون username ها ، Group name ها ، اطلاعات سیستمی و بسیاری دیگر از اطلاعات را در اختیار شما قرار دهد. به عنوان یک هکر مهمترین اطلاعاتی که در این لحظه برای من کاربرد دارد ، اسامی کاربرانی است که بر روی سیستم قربانی قرار دارند ، با داشتن این لیست از نام های کاربری در این لحظه من می توانم حملات Brute force و یا Password Guessing خود را برای بدست آودن رمز عبور کاربران شروع کنم. برای اینکه بتوانید لیست کاربران را توسط ابزار Enum بدست بیاورید کافیست دستور زیر را مشابه شکل زیر وارد کنید :


حملات Null Session
شکل سوم : استفاده از ابزار Enum برای بدست آوردن لیست کاربران موجود بر روی سیستم قربانی

با استفاده از لیست نام کاربری شما می توانید در خصوص Password Policy موجود بر روی سرور هم اطلاعاتی بدست بیاورید و این به شما در جهت حدس زدن بهتر رمز کمک خواهد کرد.


حملات Null Session
شکل چهارم : با استفاده از Enum می توانید Password Policy موجود بر روی سرور را بدست بیاورید

شما می توانید پا را فراتر از این هم بگذارید و با استفاده از این ابزار لیست Share های موجود بر روی کامپیوتر قربانی را نیز بدست بیاورید.


حملات Null Session
شکل پنجم : بدست آوردن لیست Share های موجود بر روی سیستم قربانی

ابزار Enum امکانات دیگری را نیز در اختیار شما قرار می دهد که بتوانید اطلاعات بیشتری در خصوص سیستم قربانی بدست بیاورید ، حتی این ابزار در درون خود یک موتور dictionary Attack ساده نیز دارد که می تواند برای شکستن رمز ها بر اساس لیست کلماتی که به آن می دهیم ، استفاده شود .


حملات Null Session
شکل ششم : تمامی سویچ هایی که می توان توسط ابزار Enum استفاده کرد

این اطلاعاتی که توسط Null Session و ابزار Enum بدست آمده به ما دسترسی به سرور را نخواهد داد اما به مهاجم اطلاعاتی می دهد که برای حمله و بدست آوردن دسترسی بتواند از آنها استفاده کند و به سیستم قربانی حمله کند. این ابزار و آناتومی حمله در فاز اول از انجام عملیات هک که شناسایی هدف یا قربانی می باشد انجام می شود ، شما برای بدست آوردن اطلاعات بیشتر در خصوص متدولوژی حمله می توانید به مقاله زیر مراجعه کنید.

مقابله با حملات Null Session

حتما اولین سئوالی که از خود می پرسید این است که آیا سیستم من هم آسیب پذیر است ؟ پاسخ به این مسئله بستگی به نوع سیستم عاملی دارد که شما در شبکه استفاده می کنید ، اگر شما از ویندوزهای XP یا Windows Server 2003 یا Windows Server 2000 استفاده می کنید و چه بسا از ویندوز سرور 2008 استفاده می کنید ، پاسخ این است که حداقل در مواردی شما در برابر حملات Null Session آسیب پذیر هستید.

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

راهکار اول : از طریق Registry و تنظیمات آن Null Session ها را محدود کنید

خوب چه بخاهیم و چه نخواهیم همچنان شرکت ها و سازمان هایی در کشور وجود دارند که از سرورهایی مثل سرور 2000 به دلایل مختلفی اعم از بودجه و یا عدم امکان ارتقاء استفاده می کنند ، اگر در سازمان خود دارای سیستم عامل های ویندوز سرور 2000 و یا ویندوز 2000 هستید می توانید از طریق وارد شدن به آدرس رجیستری زیر و اعمال تغییرات ذکر شده از بدست آوردن اطلاعات از طریق Null Session جلوگیری کنید.وارد رجیستری بشوید و به آدرس زیر بروید :

HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous

با وارد شدن به این مسیر شما می توانید سه امکان یا Option زیر را تنظیم کنید :

  • 0 – تنظیمات پیشفرض ، Null Session ها بدون محدودیت می توانند انجام شوند
  • 1- Null Session ها را بصورت کامل پوشش نمی دهد اما از افشاء شدن نام های کاربری و لیست Share ها جلوگیری می کند.
  • 2- بصورت مجازی تمامی مواردی را که توسط Null Session ها دریافت می شود را محدود کرده و به هیچ چیز امکان دسترسی نمی دهد.

همانطور که مشاهده کردید ، شما هیچوقت نمی توانید بصورت 100 درصد از بروز چنین حملاتی جلوگیری کنید اما تا حدود زیادی می توانید این نوع حملات را محدود کنید ، توجه کنید که زمانیکه بر روی سرورهای خود سیستم Clustering دارید به هیچ عنوان این تنظیمات را انجام ندهید زیرا ساختار clustering شما دچار مشکل خواهد شد. همین عملیات بالا را شما می توانید بر روی سرور 2003 و ویندوز XP به شکل زیر انجام دهید ، وارد قسمت زیر شوید :

HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous
  • 0- تنظیمات پیشفرض ، Null Session ها می توانندلیست Share ها را براحتی بدست بیاورند

1- Null Session ها نمی توانند لیست Share ها را بدست بیاورند.

HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM
    • 0- Null Session ها می توانند لیست نام های کاربری را دریافت کنند
    • 1- تنظیمات پیشفرض ، Null Session ها نمی توانند لیست نام های کاربری را بدست بیاورند.
HKLM\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous
  • 0- تنظیمات پیشفرض ، Null Session ها دسترسی چندانی ندارند !!
  • 1- Null Session ها جزئی از گروه Everyone در نظر گرفته می شوند ( قطعا خطرناک است و ممکن است به Share های شما دسترسی بدهد)


حملات Null Session
شکل هفتم : دستکاری کلید restrcitanonymous در Registry

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

راهکار دوم : مسدود کردن دسترسی در سطح شبکه

اگر شما نمی تواند تنظیمات رجیستری ذکر شده را بر روی سیستم های خود اتجام دهید ، می تواند با مسدود کردن یک سری چیزها بر روی فایروال ویندوز و یا فایروال شبکه خود مشابه همان ساختار پیشگیری را پیاده سازی کنید . اینکار به وسیله مسدود کردن دسترسی به یک سری پورت های مختص سرویس های NetBIOS و SMB می باشد که شامل موارد زیر می باشد :

  • پورت TCP شماره 135
  • پورت UDP شماره 137
  • پورت UDP شماره 138
  • پورت TCP شماره 139

این پورت ها برای انجام فعالیت های شبکه ای سیستم عامل ویندوز اعم از File Sharing ، Network Printing ، Clustering و مدیریت از راه دور سیستم ها مورد استفاده قرار می گیرند. خوب این بدین معناست که شما در صورت مسدود کردن این پورت ها بر روی فایروال خود احتمال به مشکل خوردن سرویس های مورد نظر را قطعا افزایش می دهید.

راهکار سوم : شناسایی حملات Null Session با استفاده از سیستم های تشخیص نفوذ یا IDS

مواردی که تاکنون در خصوص تنظیمات فایروال و رجیستری ذکر شد بطور قطع کارایی و فعالیت سیستم و نرم افزرهای تحت شبکه را دچار اختلال می کند ، بنابراین شما بایستی به دنبال راهکاری باشید که فعالیت سیستم شما را دچار اختلال نکرده و حداقل تاثیرگذاری منفی روی شبکه را داشته باشد ، هر حمله مانند یک ویروس رایانه ای برای خود شناسه ای دارد که توسط آن شما می توانید آن را تشخیص دهید ، سیستم های تشخیص نفوذ می توانند در سطح شبکه و با استفاده از مشخصات نوع حمله اینگونه حملات را شناسایی کنند و چه بسا از بروز آنها نیز جلوگیری کنند ، قطعا یکی از معمولترین انواع سیستم های IDS مورد استفاده SNORT است ، اگر از این سیستم تشخیص نفوذ استفاده می کنید می توانید با استفاده از Rule زیر اینگونه حملات را شناسایی کنید ، این rule از وب سایت رسمی SNORT برداشت شده است که توسط شخصی به نام Jack Koziol نوشته شده است ، شما بایستی Rule زیر را در SNORT ایجاد کنید :

alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:”NETBIOS NT NULL session”; flow:to_server.establshed;
content: ‘|00 00 00 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 4E 00 54 00 20 00 31 00 33 00 38 00 31|’; classtype:attempted-recon;)

با استفاده از rule بالا شما می توانید از بروز حملات Null Session باخبر شوید ، در صورت بروز چنین حملاتی Rule بالا با استفاده از سیستم تشخیص نفوذ SNORT برای شما پیام هشدار صادر می کند ، انجام اقدام بعدی بر عهده مدیر سیستم می باشد.

نتیجه

حملات Null Session حمله جدیدی نیستند اما به دلیل عدم درک مناسب و همچنین فراموش کردن این نوع حملات توسط مدیران سیستم معمولا بر روی سیستم های قربانی انجام می شوند . انواع مختلفی از روش ها برای جلوگیری از بروز اینگونه حملات وجود دارد که سه مورد را در این مقاله ذکر کردیم ، شما برای درک بهتر و انجام عملی اینگونه حملات می توانید دوره هک قانونمند را بگذرانید ، به عنوان یک کارشناس امنیت شما بایستی درک مناسبی از حملات Null Sesson داشته باشید ، امیدوارم مورد توجه شما قرار گرفته باشد.


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

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

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

نظرات