کار با نرمافزار Nessus
- نرمافزار Nessus چیست؟
Nessus یک نرمافزار برای Vulnerability Scanning است. اگر بخوام دقیقتر بگم بهترین نرمافزار Vul Scanning که به صورت Network-Based به کار میره همین نرمافزار است. مهمترین ویژگی این نرمافزار مجانی و Open-Source بودن آن است ( اگرچه تو ایران همهچی مجانیه! ) این نرمافزار توسط Renaud Deraison نوشته شده و توسط او توسعه پیدا میکند. الان که من دارم مقاله رو مینویسم، نسخه 2.0.7 اون ارائه شده است.
ویژگی مهم دیگر اون داشتن حالت Client-Server است. فرض کنید که از چند کامپیوتر به صورت شبکهای استفاده میکنید. اگر بخواهید در تعدادی از این کامپیوترها از Nessus استفاده کنید، کافی است فقط در یکی از آنها سرور Nessus و روی همه Client اونو اجرا کنید. ولی اگه فقط یه کامپیوتر دارید و میخواین روی اون از Nessus استفاده کنید، هم کلاینت و هم سرور Nessus رو باید نصب و اجرا کنید.
در حال حاضر Server نرمافزار Nessus فقط برای سیستمهای عامل مبتنی بر یونیکس مثل لینوکس، OpenBSD Unix و... در دسترس است ونسخه ویندوزی وجود نداره. پس اگه روی یک کامپیوتر هم کلاینت و هم سرور اونو نصب میکنید، سیستمعامل اون کامپیوتر باید مبتنی بر یونیکس باشه. به عبارت دیگه اگه از سیستمعامل ویندوز استفاده میکنید، وقت خودتون رو با خوندن این مقاله تلف نکنید! اما راجع به کلاینت Nessus باید عرض کنم که نسخههای ویندوز ( به نام NessusWX ) و نسخه جاوا و نیز نسخههای مبتنی بر یونیکس وجود داره. یعنی اینکه اگه چند تا کامپیوتر به صورت شبکه در اختیار دارین، اونی که قراره سرور Nessus روش نصب بشه باید مبتنی بر یونیکس باشد و بقیه که کلاینت هستند، میتونن هر چیزی باشند. امیدوارم متوجه شده باشین!
من در این مقاله فرض می کنم که شما سیستمعامل لینوکس دارید و میخواهید هم سرور و هم کلاینت Nessus رو روی همون کامپیوتر نصب کنید. برای استفاده از Nessus باید لینوکس شما هم nmap و هم gtk و هم OpenSSL رو داشته باشه که معمولا داره ( فقط اگه nmap ندارین، یه فکری براش بکنید!)
- از کجا Nessus رو داونلود کنم؟
برای داونلود Nessus باید به به آدرس http://www.nessus.org/download.html مراجعه کنید. در این صفحه میتونید آخرین نسخه از Nessus رو ببینید که الان Nessus 2.0 هست که به صورت یک لینک داخل جدول خاکستری رنگ هستش. روی همون کلیک کنید، تا به یک صفحه دیگر منتقل شوید. در این صفحه جدید دو تا جدول میبینید که یکی وسطهای صفحه و دیگری آخرهای صفحه است. بالای جدول اولی نوشته شده:
You can find the installer hereما از همین جدول استفاده میکنیم. توجه کنید که Nessus را میتوان به سه شکل مختلف نصب کرد که ما همین روش که nessus-installer نام داره رو انتخاب میکنیم. از همین جدول با توجه به منطقه جغرافیایی که هستید، روی یکی از لینکها کلیک کنید ( هرچقدر اون کشور به شما نزدیکتر باشه سرعت داونلود بالاتر میره ولی در کل همه لینکها قرتیبازیه! هر کدوم رو خواستید کلیک کنید ). شما به یک صفحه جدید منتقل میشوید و در این صفحه سه تا فایل وجود داره به نامهای MD5 و README.txt و nessus-installer.sh که از این سه تا nessus-installer.sh رو باید داونلود کنید که فکر کنم سه چهار مگی باشه :) در مورد فایل MD5 هم بگم که میتونین داونلودش کنید یا نکنید. اگه خیلی وسواس دارید که مطمئن بشید این نرمافزار که داونلود میکنید دقیقا همونیه که Nessus.org تولید کرده ( یعنی اینکه نرمافزار تغییر یافته نیست و کدهای اضافی مثل spy-ware و ... اینا نداره) این فایل رو هم میتونید داونلود کنید، تا بعد از اینکه فایل nessus-installer.sh رو گرفتید به کمک دستور md5sum در لینوکس این موضوع رو تست کنید. بنابراین فایل اصلی و لازم همون nessus-installer.sh هستش.
- فایل nessus-installer.sh رو داونلود کردم. چطوری نصب کنم؟
اولا باید در مود root یعنی super-user به لینوکس login کرده باشید. حالا shell لینوکس رو باز کرده و به دایرکتوری که فایل رو اونجا داونلود کردهاید وارد میشوید. مثلا اگر در root/Desktop/ فایل رو داونلود کردهاید، مینویسید:
# cd /root/Desktopحالا دستور زیر رو مینویسید:
# sh nessus-installer.shبلافاصله صفحه پاک میشه و نوشته زیر میاد (البته صفحه پاک نمیشه فقط اینکه انقدر نوشته میاد که به نظر میرسه صفحه پاک شده):
-------------------------------------------------------------------------------- NESSUS INSTALLATION SCRIPT -------------------------------------------------------------------------------- Welcome to the Nessus Installation Script ! This script will install Nessus 2.0.7 (STABLE) on your system. Please note that you will need root privileges at some point so that the installation can complete. Nessus is released under the version 2 of the GNU General Public License (see http://www.gnu.org/licences/gpl.html for details). To get the latest version of Nessus, visit http://www.nessus.org Press ENTER to continueدکمه Enter رو فشار میدهید. یه سری چرت و پرت نوشته میشه و صفحه پاک شده و متن زیر میاد:
-------------------------------------------------------------------------------- Nessus installation : installation location -------------------------------------------------------------------------------- Where do you want the whole Nessus package to be installed ? [/usr/local]این میگه که Nessus رو کجا نصب کنم؟ شما دکمه Enter رو فشار بدین که در محل پیشفرض یعنی usr/local/ نصب بشه. حالا صفحه پاک میشه و نوشته زیر میاد:
-------------------------------------------------------------------------------- Nessus installation : Ready to install -------------------------------------------------------------------------------- Nessus is now ready to be installed on this host. The installation process will first compile it then install it Press ENTER to continueبازهم چرت و پرتها شروع به ظاهر شدن میکنند ولی ایندفعه یکم بیشتر طول میکشه که اراجیف تموم بشن ( اینا ابدا اراجیف نیستند ولی چون ما به صورت اتوماتیک داریم نصب میکنیم، اصلا لزومی نداره فکرتون رو خراب بکنید! ) حالا میتونین یه چایی واسه خدتون بریزین و چند دقیقه استراحت کنید.
وقتی کار نصب تموم شد، صفحه زیر ظاهر میشه:
-------------------------------------------------------------------------------- Nessus installation : Finished -------------------------------------------------------------------------------- Congratulations ! Nessus is now installed on this host . Create a nessusd certificate using /usr/local/sbin/nessus-mkcert . Add a nessusd user use /usr/local/sbin/nessus-adduser . Start the Nessus daemon (nessusd) use /usr/local/sbin/nessusd -D . Start the Nessus client (nessus) use /usr/local/bin/nessus . To uninstall Nessus, use /usr/local/sbin/uninstall-nessus . Remember to invoke 'nessus-update-plugins' periodically to update your list of plugins . A step by step demo of Nessus is available at : http://www.nessus.org/demo/ Press ENTER to quitیه Enter بزنید که نصب تموم بشه. این صفحه آخر اطلاعات مهمی داره که توضیح میدم.
اولین جمله اینه:
Create a nessusd certificate using /usr/local/sbin/nessus-mkcertپس ما در Shell مینویسیم:
# /usr/local/sbin/nessus-mkcertوقتی Enter بزنیم، صفحه پاک شده و متن زیر ظاهر میشه:
------------------------------------------------------------------------------- Creation of the Nessus SSL Certificate ------------------------------------------------------------------------------- This script will now ask you the relevant information to create the SSL certificate of Nessus. Note that this information will *NOT* be sent to anybody (everything stays local), but anyone with the ability to connect to your Nessus daemon will be able to retrieve this information. CA certificate life time in days [1460]:از همینجا تا آخر کار ۶ تا Enter به ترتیب میزنیم تا کار ایجاد certification تموم بشه. به صورت زیر:
CA certificate life time in days [1460]: Server certificate life time in days [365]: Your country (two letter code) [FR]: Your state or province name [none]: Your location (e.g. town) [Paris]: Your organization [Nessus Users United]:بعد صفحه زیر میاد:
------------------------------------------------------------------------------- Creation of the Nessus SSL Certificate ------------------------------------------------------------------------------- Congratulations. Your server certificate was properly created. /usr/local/etc/nessus/nessusd.conf updated The following files were created : . Certification authority : Certificate = /usr/local/com/nessus/CA/cacert.pem Private key = /usr/local/var/nessus/CA/cakey.pem . Nessus Server : Certificate = /usr/local/com/nessus/CA/servercert.pem Private key = /usr/local/var/nessus/CA/serverkey.pem Press [ENTER] to exitحالا آخرین Enter رو هم میزنیم، تا کار تموم بشه.
پس ما تا حالا هم nessus-installer.sh رو اجرا کردیم و هم SSL Certificate برای Nessus درست کردیم. حالا باید یک user روی سرور nessus درست کنیم که بتونیم بعدا از طریق او به نرمافزار login کنیم. برای اینکار از دستور زیر استفاده میکنیم:
# /usr/local/sbin/nessus-adduserبه محض اجرای این دستور متن زیر ظاهر میشه:
Add a new nessusd user ---------------------- Login :این یعنی یک username وارد کن. اسم مورد نظر رو وارد میکنیم و بعد سطر زیر میاد:
Authentication (pass/cert) [pass] :این یعنی روش هویتسنجی چی باشه. ما Enter میزنیم که همون پیشفرض یعنی pass بمونه. بعد سطر زیر میاد:
Login password :اینجا باید پسورد برای یوزر رو وارد کنیم. اول یه نگاه به چپ، بعد یه نگاه به راست، بعد یه نگاه به عقب! حالا پسورد رو بنویسید ( از کاراکتر * موقع وارد کردن پسورد خبری نیست. واسه همین مراسم رو بجا آوردیم! )
حالا این متن ظاهر میشه:
User rules ---------- nessusd has a rules system which allows you to restrict the hosts that ali has the right to test. For instance, you may want him to be able to scan his own host only. Please see the nessus-adduser(8) man page for the rules syntax Enter the rules for this user, and hit ctrl-D once you are done : (the user can have an empty rules set)اینجا میشه یه سری Rules واسه user تعریف کنیم که دامنه جاهایی که میتونه اسکن کنه رو محدود کنیم، ولی فعلا لازم نیست، پس ترکیب ctrl-D رو فشار میدیم. حالا این ظاهر میشه:
Login : xxxxxxxxxx Password : yyyyyyyyy DN : Rules : Is that ok ? (y/n) [y]یه Enter میزنیم که کار تموم بشه.
تبریک میگم. نرمافزار nessus به همین راحتی نصب شد!
- نرمافزار رو نصب کردم. حالا چطوری nessus را اجرا کنیم؟
۱- هر بار که کامپیوتر رو restart میکنید، اگه بخواین از nessus استفاده کنید، اول باید سرور nessus رو اجرا کنید. برای اجرا کردن سرور nessus که به اون nessus daemon یا به شکل خلاصه nessusd میگن، دستور زیر رو مینویسیم:
# /usr/local/sbin/nessusd -Dبه این راحتی سرور nessus راهاندازی میشود.
۲- حالا کلاینت رو اجرا میکنیم. نکته مهم اینکه هر چند تا کلاینت که بخواین میتونین اجرا کنید. برای این کار از دستور زیر استفاده میشود:
# /usr/local/bin/nessusبا اجرای این دستور پنجره نرمافزار ظاهر میشه. توجه کنید که nessus در حالت متنی هم کار میکنه ولی استفاده از حالت گرافیکی راحتتر است.
- پنجره کلاینت nessus باز شده است. چگونه از nessus استفاده کنیم؟
در صفحه اول login-name و password رو وارد کنید. اگر برای بار اول login میکنید، ممکن است که پنجرهای باز شود به اسم SSL Setup که دارای سه سطر با دکمه رادیویی است که اولی را که به صورت پیشفرض انتخاب شده رو تغییر نمیدهیم و دکمه OK رو فشار میدهیم. ولی اگر بار اول نباشد، این پنجره ظاهر نمیشود و اگر username و password درست باشد، برگه دوم که Plugins نام دارد باز میشود.
در مورد Plugins باید توضیح بیشتری بدم. میشه گفت Plugins قلب نرمافزار nessus است. مثلا فرض کنید که nessus میخواد تست کنه که آیا قربانی مشکلی به اسم Unicode bug دارد یا نه. واسه این کار باید یک Plugin خاص داشته باشد که این مطلب رو تست کنه. Plugin ها به صورت فایلهای جدایی هستند که معمولا به زبان NASL که مخصوص nessus است نوشته میشوند (اگرچه میتوان با توابع مخصوص nessus به زبان C هم Plugin نوشت ). در قسمت بالای پنجره میبینید که در آن Plugins دستهبندی شدهاند مثل Windows و SNMP و ... هر کدوم را که انتخاب کنید، در پایین پنجره لیست Plugins مرتبط ظاهر میشه. و میتوان اونها رو فعال یا غیر فعال کرد. هر Plugins ی که فعال باشه، روی قربانی تست خواهد شد و اگه nessus تشخیص بده قربانی اون مشکل رو داره، اونو گزارش خواهد کرد. در حال حاضر نرمافزار nessus با بیش از هفتصد Plugin عرضه میشه یعنی میتونه بیش از ۷۰۰ نوع حفره امنیتی ( و گاه اطلاعات مهم رو ) به ما ارائه بده و در واقع قدرت nessus در همین plugin هاست. مرتبا plugin های جدیدی واسه حفرههای امنیتی جدیدی که کشف میشن نوشته میشه و به سایت اضافه میشه که بعدا توضیح میدم چطوری این plugin های جدید رو داونلود کنیم.
اگه بخوام بهصورت مختصر بگم، ما در این برگه مشخص میکنیم کدام Vul ها تست بشن روی سرور که nessus ببینه اون vul هست یا نه!
بر خلاف عقیده بعضیها باید عرض کنم که nessus سایت یا سروری رو hack نمیکنه، فقط به ما کمک میکنه که بدونیم واسه هک کردن اون سرور از چه راهی باید وارد بشیم!
نکته بعدی اینکه nessus بعضی از plugin ها رو به نام dangerous plugins معرفی میکنه که plugin هایی هستند که اگه روی یه سرور تست بشوند ممکنه که کامپیوتر قربانی hang کنه یا کند بشه یا restart بشه. اگه بخوایم همه plugin ها روی قربانی تست بشه، دکمه Enable all را فشار میدیم و اگه بخوایم همه رو بجز اونایی که خطرناک هستند، تست کنیم، دکمه Enable all but dangerous plugins رو انتخاب میکنیم و اگه بخوایم همه عیر فعال بشوند، disable all رو کلیک میکنیم.
برگه بعدی Prefs نام دارد. در این برگه میتوان تنظیماتی در مورد Plugin ها انجام داد. مثلا اگه لازم به Ping کردن باشه، میشه مشخص کرد که TCP یا ICMP باشد. یا اگر اطلاعاتی راجع به SMB یا FTP مثل username یا password داریم وارد کنیم و ... معمولا این برگه رو تغییر نمیدیم.
برگه بعدی Scan Options است. در این برگه میتوان مشخص کرد چه port هایی اسکن شود و ... که این برگه را هم تغییر نمیدیم. دقت کنید که Port Scanning در nessus از طریق nmap صورت میگیرد.
آخرین برگه مهم Target Selection نام دارد که مشخص میکند که کجا رو میخوایم اسکن کنیم. چند مثال از مواردی که در قسمت target(s) میشه نوشت رو میگم:
۱- اگه بخوایم ip به شماره ۱۹۲.۱۳۰.۱۲.۴۵ رو اسکن کنیم:
192.130.12.45۲- اگه بخوایم ip هایی رو سه رقم اول اون ۱۹۲ و ۱۳۰ و ۱۲ و رقم آخر هم بین ۱۰ تا ۳۰ باشد رو تست کنیم:
192.130.12-10-30۳- اگه بخوایم ip هایی رو که سه رقم اول همون بالاییها و رقم آخر از ۰ تا ۲۵۵ باشد رو اسکن کنیم، میشود به دو صورت نوشت:
192.130.12.0-255
192.130.12.0/24۴- اگه بخوایم دو تا ip جدا رو تست کنیم، با یک کاما (,) از هم جدا میکنیم:
192.130.12.25,192.125.46.120۵- اگه بخوایم از روی دومین یک سرور (سایت) رو اسکن کنیم، دومین رو مینویسیم:
www.iums.ac.irحالا که همهچی آماده است، دکمه Start the Scan رو از پایین پنجره کلیک میکنیم که کار اسکن شروع بشه.
- بعد از کلیک کردن Start the Scan چه اتفاقی میافتد؟
این پرسیدن داره؟! خوب اسکن شروع میشه. توجه کنید که با توجه به تعداد Plugin های انتخابی و و و ... زمان میتونه تا ۳۰ دقیقه یا بیشتر هم طول بکشه ( یکی از ایرادهایی که به nessus وارد میشه،کند بودن اونه ) خلاصه تو این مدت بهتره برید ناهارتون رو هم بخورید! بعد از اتمام کار یه پنجره باز میشه که بیان میکنه چه حفرهای امنیتی در کامپیوتر قربانی کشف شده است. این حفرهها درجهبندی شده هستند. مثلا بعضیها در حد Low یعنی کم خطر، بعضی در حد Medium ، بعضی در حد High یعنی خطرناک و بعضی هم در حد Serious یعنی فاجعه! هستند. اونایی که High یا Serious هستند معمولا اگه ازشون استفاده بشه، میشه سرور رو هک کرد. البته باید false positive رو هم در نظر داشت، یعنی مواردی که nessus یک حفره رو گزارش میکنه ولی حفرهای در کار نیست!
حالا شاید بپرسید که وقتی nessus یه حفره رو کشف کرد، چظور از طریق اون حفره به کامپیوتر قربانی نفوذ کنیم؟
همونطور که گفتم با خود nessus نمیشه. اما nessus در اکثر موارد یه CVE به ما میده که با کلیک روی اون لینک میتونیم، با کمی گشتن اینور و اونور exploit واسه اون حفره پیدا کنیم و دست به عمل کثیفی به اسم هک بزنیم! توجه کنید که در خیلی از کشورها یه port Scanning ساده هم جرم محسوب میشه، پس مراقب باشید :)
در همان پنجرهای که نتایج رو نشون میده، یه دکمه به اسم Save as وجود داره که به کمک اون میشه نتایج رو در قالبهای مختلفی مثل text و html با نمودارها و... ذخیره کرد؛ تا بعدا دقیقتر بررسی بشوند.
- از دیدگاه یک هکر یا یک متخصص امنیت شبکه، nessus در چه جایگاهی است؟
مسلما جایگاه خیلی خیلی بلندی نیست! این نرمافزار فقط میتونه حفرههایی رو کشف کنه که plugin براش داشته باشه. از دیدگاه یک هکر، تجربه بسیار مهمتر از ابزاری چون nessus است ( ضمنا nessus آنقدر ردپا بجا میذاره که قابل چشمپوشی نیست ) و از دیدگاه یک متخصص امنیت شبکه حتی اگر nessus هیچ حفره امنیتی را هم پیدا نکند،دلیل بر امن بودن ۱۰۰٪ اون سرور نیست. مخلص کلام اینکه nessus نرمافزار خوبی است ولی خدا نیست!!
- نکاتی راجع به nessus
۱- گفتم که Plugin ها بصورت فایلهای جداگانه هستند. اگه بخواین ببینید که این فایلها چه شکلیاند یا چه اسمهایی دارند یا اینکه در حال حاضر چند plugin دارید به دایرکتوری usr/local/lib/nessus/plugin/ بروید. با دستور زیر :
# cd /usr/local/lib/nessus/plugin۲- با تایپ دستور زیر به فولدر usr/local/sbin/ رفته و دستور ls رو صادر کنید:
# ls
# cd /usr/local/sbin # lsفایلهای زیر رو خواهید دید:
nessus-adduser nessus-mkcert nessus-update-plugins nessusd nessus-rmuser uninstall-nessusاز بین این فایلهای اجرایی nessusd و nessus-mkcert و nessus-adduser رو قبلا توضیح دادم. حالا سه فایل دیگر رو توضیح میدم:
nessus-rmuser : همانطور که از اسمش بر میآید، میتوان به کمک اون یک user خاص رو که قبلا با nessus-adduser ایجاد کردهایم رو پاک کنیم.
uninstall-nessus : به کمک این دستور میتوان nessus رو از سیستم پاک کرد.
nessus-update-plugins : این مهمترین دستور این شاخه است. فرض کنید که چند هفته پیش آخرین نسخه nessus رو داونلود کردهاید و دارید استفاده میکنید. مسلما در این مدت plugin های جدیدی نوشته شده است. برای اینکه plugin های جدید رو دریافت کنید، ار این دستور استفاده میکنید. با اجرای آن با دستور زیر، خود فایل اجرایی به سایت nessus.org کانکت شده و Plugin های شما رو تکمیل میکند:
# /usr/local/sbin/nessus-update-pluginsیادتون باشه که حداقل هفتهای یکبار این دستور رو اجرا کنید. با توجه به سرعت connection شما به اینترنت و تعداد plugin های جدیدی که باید داونلود بشه، اجرای این دستور ممکن است چند دقیقهای طول بکشد.