حمله ای از نوع تهی یا Null Attack از زمانی که ویندوز سرور 2000 روی کار آمد معرفی شد و همچنان نیز مورد استفاده قرار میگیرد ، جالب اینجاست با اینکه این نوع از حملات بسیار شناخته شده هستند و مدت هاست که از آنها استفاده می شود همچنان مدیران سیستم در هنگام امن سازی شبکه یا Network Hardening به این مورد چندان اهمیت نمی دهند. همین عدم توجه به امن سازی در مقابل چنین خمله ای می تواند به یک هکر یا مهاجم این امکان را بدهد که بتواند به سیستم هدف یک Null Session ایجاد کرده و تمامی اطلاعات مورد نیاز برای حمله کردن به سیستم از راه دور را به دست بیاورد و چه بسا که حمله خود را نیز با موفقیت انجام داده و موفق به نفوذ به سیستم هدف نیز بشود.
حملات Null Session همانند روزهای پیشین معمول هستند و همچنان مهاجمین از این نوع روش حمله قدیمی استفاده می کنند. جالب اینجاست بدانید که با اینکه سیستم عامل های امروزی بصورت پیشفرض تا حدودی امن هستند اما همچنان در هنگام انجام تست های نفوذ سنجی و حملات هکری ، این نوع حمله از اولین اقدام هایی است که یک هکر انجام می دهد و در بیشتر مواقع در سیستم عامل های ویندوز نیز جوابگو می باشد.
خود من به عنوان یک هکر قانونمند زمانیکه به عنوان یک پروژه در شرکتی به عنوان شخصی از افراد یک گروه تست نفوذ سنجی شرکت می کنم ، اولین قدم را با یک Null Session Attack شروع می کنم. هدف اصلی این مقاله این است که ضمن اینکه روش انجام شدن اینگونه حملات را تشریح می کنیم و به شما می آموزیم که چه اتفاقی در همگام بروز یک حمله 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) از سرور ،مورد استفاده قرار گیرد.
خوب تا اینجا متوجه شدید که Null Session ها به چه شکل کار می کنند و یک هکر چقدر آسان می تواند از این نقطه ضعف امنیتی استفاده کند. برای اینکه بتوانیم یک Null Session به سرور هدف ایجاد کنیم ، حتما نیاز به استفاده از ابزار خاصی نیست و شما می توانید براحتی با استفاده از دستور NET در ویندوز برای متصل شدن به آن استفاده کنید.
دستور NET کاربردهای مدیریتی زیادی دارد ، شما می توانید با استفاده از دستور NET به سرور مورد نظر یا هر سرور دیگری که دارای پوشه های به اشتراک گذاشته شده است متصل شوید ، اما توجه کنید که شما در اینجا دارای نام کاربری و رمز عبور معتبری نمی باشید و طبیعتا همانطور که در شکل یک مشاهده می کنید ، ارتباط شما دچار مشکل خواهد شد . نکته : در اینجا به کامپیوتری که قصد حمله به آن را داریم در اصطلاح HACKME می گوییم.
با استفاده از همان دستور NET و دستکاری نام Share به IPC$ نتیجه همانطور که در شکل پایین مشاهده می کنید موفقیت آمیزتر خواهد بود.
در این قسمت ما به وسیله یک Null Session به کامپیوتر قربانی متصل شده ایم . اما گام بعدی چیست ؟ توجه کنید که متصل شدن به وسیله Null Session به شما دسترسی مدیریتی به سیستم قربانی را نخواهد داد و شما نمی توانید پس از برقراری ارتباط با قربانی هارد درایو آن را باز کنید و محتویات Hash مربوط به رمزهای عبور کاربران را از آن استخراج کنید . با خاطر داشته باشید که IPC Share برای برقراری ارتباطات بین Process های سیستم استفاده می شود و دسترسی ما نیز صرفا به اندازه دسترسی کاربر SYSTEM می باشد. شما می توانید با استفاده از دستور NET اطلاعات بیشتری را از سیستم هدف بدست بیاورید اما ابزارهای خودکاری وجود دارند که می توانند این فرآیند را برای ما ساده تر کنند.
ابزار مورد علاقه من برای بدست آوردن اطلاعات تکمیلی از سیستم قربانی که هم سبک و هم دارای کارایی نسبتا بالایی می باشد ، ابزاری به نام Enum می باشدکه در همین محیط DOS مورد استفاده قرار می گیرد. این ابزار رایگان که یک ابزار Command-line است می تواند اطلاعاتی همچون username ها ، Group name ها ، اطلاعات سیستمی و بسیاری دیگر از اطلاعات را در اختیار شما قرار دهد. به عنوان یک هکر مهمترین اطلاعاتی که در این لحظه برای من کاربرد دارد ، اسامی کاربرانی است که بر روی سیستم قربانی قرار دارند ، با داشتن این لیست از نام های کاربری در این لحظه من می توانم حملات Brute force و یا Password Guessing خود را برای بدست آودن رمز عبور کاربران شروع کنم. برای اینکه بتوانید لیست کاربران را توسط ابزار Enum بدست بیاورید کافیست دستور زیر را مشابه شکل زیر وارد کنید :
با استفاده از لیست نام کاربری شما می توانید در خصوص Password Policy موجود بر روی سرور هم اطلاعاتی بدست بیاورید و این به شما در جهت حدس زدن بهتر رمز کمک خواهد کرد.
شما می توانید پا را فراتر از این هم بگذارید و با استفاده از این ابزار لیست Share های موجود بر روی کامپیوتر قربانی را نیز بدست بیاورید.
ابزار Enum امکانات دیگری را نیز در اختیار شما قرار می دهد که بتوانید اطلاعات بیشتری در خصوص سیستم قربانی بدست بیاورید ، حتی این ابزار در درون خود یک موتور dictionary Attack ساده نیز دارد که می تواند برای شکستن رمز ها بر اساس لیست کلماتی که به آن می دهیم ، استفاده شود .
این اطلاعاتی که توسط Null Session و ابزار Enum بدست آمده به ما دسترسی به سرور را نخواهد داد اما به مهاجم اطلاعاتی می دهد که برای حمله و بدست آوردن دسترسی بتواند از آنها استفاده کند و به سیستم قربانی حمله کند. این ابزار و آناتومی حمله در فاز اول از انجام عملیات هک که شناسایی هدف یا قربانی می باشد انجام می شود ، شما برای بدست آوردن اطلاعات بیشتر در خصوص متدولوژی حمله می توانید به مقاله زیر مراجعه کنید.
حتما اولین سئوالی که از خود می پرسید این است که آیا سیستم من هم آسیب پذیر است ؟ پاسخ به این مسئله بستگی به نوع سیستم عاملی دارد که شما در شبکه استفاده می کنید ، اگر شما از ویندوزهای XP یا Windows Server 2003 یا Windows Server 2000 استفاده می کنید و چه بسا از ویندوز سرور 2008 استفاده می کنید ، پاسخ این است که حداقل در مواردی شما در برابر حملات Null Session آسیب پذیر هستید.
شاید این نوع حملات بر روی سیستم عامل های دیگر نیز قابل اجرا باشد اما در بیشتر موارد بر روی سیستم عامل های ویندوز XP و سرور 2003 انجام می شوند ، اما راهکارهایی وجود دارند که هر چند بصورت کامل این نوع آسیب پذیری را درست نمی کنند اما تا حدود زیادی می توانند در برابر اینگونه حملات ما را امن کنند که در ادامه به معرفی و انجام برخی از آنها می پردازیم.
خوب چه بخاهیم و چه نخواهیم همچنان شرکت ها و سازمان هایی در کشور وجود دارند که از سرورهایی مثل سرور 2000 به دلایل مختلفی اعم از بودجه و یا عدم امکان ارتقاء استفاده می کنند ، اگر در سازمان خود دارای سیستم عامل های ویندوز سرور 2000 و یا ویندوز 2000 هستید می توانید از طریق وارد شدن به آدرس رجیستری زیر و اعمال تغییرات ذکر شده از بدست آوردن اطلاعات از طریق Null Session جلوگیری کنید.وارد رجیستری بشوید و به آدرس زیر بروید :
HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous
با وارد شدن به این مسیر شما می توانید سه امکان یا Option زیر را تنظیم کنید :
همانطور که مشاهده کردید ، شما هیچوقت نمی توانید بصورت 100 درصد از بروز چنین حملاتی جلوگیری کنید اما تا حدود زیادی می توانید این نوع حملات را محدود کنید ، توجه کنید که زمانیکه بر روی سرورهای خود سیستم Clustering دارید به هیچ عنوان این تنظیمات را انجام ندهید زیرا ساختار clustering شما دچار مشکل خواهد شد. همین عملیات بالا را شما می توانید بر روی سرور 2003 و ویندوز XP به شکل زیر انجام دهید ، وارد قسمت زیر شوید :
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous
1- Null Session ها نمی توانند لیست Share ها را بدست بیاورند.
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM
HKLM\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous
همانطور که در شکل بالا مشاهده می کنید ، تنظیمات پیشفرض در ویندوز XP به گونه ای است که به مهاجم امکان بدست آوردن لیست Share ها موجود بر روی سرور را می دهد ، این حالت از وضعیت پیشفرضی که بر روی ویندوز سرور 2000 بصورت پیشفرض وجود دارد امن تر است اما به هر حال اطلاعاتی ر در اختیار مهاجم قرار می دهد که بتواند بعد ها از آن سوء استفاده کند.
اگر شما نمی تواند تنظیمات رجیستری ذکر شده را بر روی سیستم های خود اتجام دهید ، می تواند با مسدود کردن یک سری چیزها بر روی فایروال ویندوز و یا فایروال شبکه خود مشابه همان ساختار پیشگیری را پیاده سازی کنید . اینکار به وسیله مسدود کردن دسترسی به یک سری پورت های مختص سرویس های NetBIOS و SMB می باشد که شامل موارد زیر می باشد :
این پورت ها برای انجام فعالیت های شبکه ای سیستم عامل ویندوز اعم از File Sharing ، Network Printing ، Clustering و مدیریت از راه دور سیستم ها مورد استفاده قرار می گیرند. خوب این بدین معناست که شما در صورت مسدود کردن این پورت ها بر روی فایروال خود احتمال به مشکل خوردن سرویس های مورد نظر را قطعا افزایش می دهید.
مواردی که تاکنون در خصوص تنظیمات فایروال و رجیستری ذکر شد بطور قطع کارایی و فعالیت سیستم و نرم افزرهای تحت شبکه را دچار اختلال می کند ، بنابراین شما بایستی به دنبال راهکاری باشید که فعالیت سیستم شما را دچار اختلال نکرده و حداقل تاثیرگذاری منفی روی شبکه را داشته باشد ، هر حمله مانند یک ویروس رایانه ای برای خود شناسه ای دارد که توسط آن شما می توانید آن را تشخیص دهید ، سیستم های تشخیص نفوذ می توانند در سطح شبکه و با استفاده از مشخصات نوع حمله اینگونه حملات را شناسایی کنند و چه بسا از بروز آنها نیز جلوگیری کنند ، قطعا یکی از معمولترین انواع سیستم های 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 داشته باشید ، امیدوارم مورد توجه شما قرار گرفته باشد.
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود