توضیح کامل و جامع درباره Nikto
1. معرفی Nikto
ابزار Nikto یک اسکنر امنیتی وب (Web Application Vulnerability Scanner) متنباز است که برای کشف آسیبپذیریها و مشکلات امنیتی روی وبسرورها به کار میرود.
این ابزار توسط Chris Sullo طراحی شد و بعدها با مشارکت جامعه امنیتی گسترش یافت. Nikto تحت مجوز GPL منتشر شده و به همین دلیل یک پروژه Open Source محسوب میشود.
هدف اصلی Nikto بررسی وبسرورها از نظر:
- فایلها و اسکریپتهای خطرناک یا مشکوک (CGIها)
- نسخههای قدیمی نرمافزارهای وبسرور مانند Apache، Nginx یا IIS
- پیکربندیهای نادرست امنیتی مثل فعال بودن روشهای ناامن HTTP Methods (مثلاً TRACE)
- مشکلات مربوط به SSL/TLS
- وجود Headerهای غیرایمن یا مفقود مثل X-Frame-Options یا X-XSS-Protection
به بیان ساده، Nikto مانند یک پزشک عمومی برای وبسرورها عمل میکند: مشکلات رایج و مهم را بررسی میکند و گزارشی از وضعیت امنیتی سرور در اختیار مدیر شبکه یا تستکننده نفوذ قرار میدهد.
2. تاریخچه Nikto
اولین نسخه Nikto در اوایل دهه ۲۰۰۰ معرفی شد، زمانی که ابزارهای امنیتی وب محدود بودند و اکثر سازمانها صرفاً از اسکنرهای شبکه مثل Nmap استفاده میکردند.
Chris Sullo این ابزار را نوشت تا روی آسیبپذیریهای لایه وب تمرکز کند، چون Nmap و ابزارهای مشابه بیشتر روی لایه شبکه (پورتها، سرویسها) کار میکردند.
با گذشت زمان، تعداد تستهای Nikto افزایش یافت و اکنون این ابزار بیش از ۶۵۰۰ تست امنیتی مختلف انجام میدهد. جامعه امنیتی و محققان مرتباً پایگاه داده Nikto را بهروزرسانی میکنند تا آسیبپذیریهای جدید تحت پوشش قرار بگیرند.
3. ساختار و نحوه کار Nikto
Nikto به زبان Perl نوشته شده است، بنابراین برای اجرا به یک مفسر Perl نیاز دارد.
زمانی که دستور اجرا میشود، Nikto مراحل زیر را طی میکند:
- بررسی پارامترها: بررسی میکند چه هاست یا آیپی مشخص شده و کدام پورتها باید اسکن شوند.
- ارسال درخواستها (HTTP Requests): Nikto صدها یا هزاران درخواست به سرور هدف ارسال میکند (GET، POST، TRACE و غیره).
- تحلیل پاسخها: هدرها، کدهای وضعیت (Status Codes) و محتوای صفحات بررسی میشوند.
- مقایسه با پایگاه داده آسیبپذیریها: خروجیها با پایگاه داده داخلی Nikto تطبیق داده میشود.
- تولید گزارش: در نهایت گزارشی به صورت TXT، HTML، XML یا CSV ایجاد میشود.
📌 نکته مهم: Nikto یک ابزار فعال (Active Scanner) است، یعنی با ارسال درخواستها ممکن است باعث ثبت لاگ در سرور شود. بنابراین استفاده از آن روی سرورهای غیرمجاز غیرقانونی است.
4. ویژگیها و قابلیتهای اصلی
Nikto امکانات متنوعی دارد. در جدول زیر برخی قابلیتها را خلاصه میکنیم:
|
قابلیت |
توضیح |
|---|---|
|
پشتیبانی از SSL |
امکان اسکن وبسایتهایی که روی HTTPS اجرا میشوند |
|
پشتیبانی از پروکسی |
قابلیت عبور از Proxy و انجام اسکن از طریق آن |
|
تولید گزارش |
خروجی در قالب TXT، HTML، XML، CSV |
|
اسکن چندین پورت |
امکان تعریف پورتهای متعدد یا محدودهای از پورتها |
|
اسکن چند هاست |
امکان وارد کردن لیست هاستها از فایل یا خروجی Nmap |
|
پشتیبانی از LibWhisker IDS |
جلوگیری از شناسایی توسط سیستمهای تشخیص نفوذ |
|
شناسایی نرمافزارها |
تشخیص نرمافزارهای نصبشده با استفاده از فایلها، هدرها و favicon |
|
گزارش برای Metasploit |
خروجی قابل استفاده در Metasploit |
|
پشتیبانی از Authentication |
امکان تست هاستهایی که نیاز به ورود (Basic و NTLM) دارند |
|
توقف خودکار |
قابلیت Pause خودکار در زمان مشخص |
|
بهروزرسانی پایگاه داده |
با دستور -update آخرین افزونهها و تستها دریافت میشوند |
5. کاربردهای Nikto
Nikto بیشتر برای ارزیابی امنیتی وبسرورها به کار میرود. برخی سناریوهای واقعی:
- تست نفوذ (Penetration Testing): هکر کلاه سفید از Nikto برای کشف نقاط ضعف یک وبسرور استفاده میکند.
- مانیتورینگ امنیتی سازمانها: مدیر سیستم به صورت دورهای سرور را اسکن میکند تا از بهروز بودن نسخهها مطمئن شود.
- آموزش و یادگیری: در کلاسهای امنیت سایبری برای نشان دادن مشکلات رایج وبسرورها از Nikto استفاده میشود.
- کشف فایلهای حساس: مثل phpinfo.php یا /test.html که ممکن است اطلاعات مهمی افشا کنند.
- بررسی پیکربندی SSL: اطمینان از اینکه سرور از پروتکلها و Cipherهای ناامن استفاده نمیکند.
6. نصب و راهاندازی
Nikto نیاز به نصب Perl، برخی ماژولهای Perl و OpenSSL دارد.
📌 مثال نصب روی Debian/Ubuntu:
📌 مثال نصب روی CentOS/RedHat:
7. گزینهها و دستورات مهم Nikto
Nikto گزینههای متعددی دارد. در جدول زیر پرکاربردترینها را آوردهام:
|
دستور |
توضیح |
|---|---|
|
-h |
تعیین هاست هدف (آیپی یا نام دامنه) |
|
-p |
تعیین پورت یا محدوده پورتها |
|
-ssl |
مجبور کردن به استفاده از SSL روی پورت مشخص |
|
-id |
تعیین یوزرنیم/پسورد برای ورود |
|
-o |
ذخیره خروجی در فایل |
|
-Format |
تعیین فرمت خروجی (txt، html، xml، csv) |
|
-Tuning |
تنظیم نوع تستها (مثلاً فقط تست فایلها یا فقط تست پورتها) |
|
-update |
بهروزرسانی پایگاه داده و پلاگینها |
|
-list-plugins |
لیست پلاگینهای موجود |
|
-nossl |
غیرفعال کردن استفاده از SSL |
|
-no404 |
غیرفعال کردن بررسی خطای 404 |
8. مثالها و خروجیها
مثال ۱: اسکن یک آیپی روی پورت ۸۰
📌 خروجی:
- نسخه وبسرور (Apache/2.2.15)
- فایلهای حساس مثل /robots.txt
- نسخه قدیمی PHP
- آسیبپذیریهای OSVDB
مثال ۲: اسکن روی HTTPS (پورت ۴۴۳)
📌 خروجی:
- اطلاعات SSL Certificate
- هشدار درباره نسخه قدیمی Apache
- روشهای HTTP فعال
مثال ۳: اسکن چند پورت
📌 خروجی:
- نمایش نتیجه برای هر پورت به صورت جداگانه
مثال ۴: استفاده از پروکسی
📌 خروجی:
- تمامی درخواستها از طریق Proxy ارسال میشوند.
9. محدودیتها و نکات
- Nikto یک ابزار محدود به اسکن سطحی است و حملات پیچیده مثل SQL Injection یا XSS را به شکل کامل پوشش نمیدهد.
- به دلیل ارسال تعداد زیاد درخواست، ممکن است توسط IDS/IPS شناسایی شود.
- برخی نتایج نیاز به تحلیل انسانی دارند (مثلاً فایلهایی که “ممکن است جالب باشند”).
- سرعت اسکن ممکن است پایین باشد چون بیش از ۲۰۰۰ تست روی هر هاست انجام میشود.
10. مقایسه با ابزارهای مشابه
|
ابزار |
کاربرد اصلی |
تفاوت با Nikto |
|---|---|---|
|
Nmap |
اسکن پورتها و سرویسها |
تمرکز روی شبکه، نه وب |
|
Wpscan |
اسکن آسیبپذیریهای WordPress |
فقط برای وردپرس |
|
OpenVAS |
اسکن جامع آسیبپذیریها |
سنگینتر و پیچیدهتر |
|
Burp Suite |
تست نفوذ وباپلیکیشن |
پیشرفتهتر، اما غیررایگان |
|
Nikto |
اسکن سریع وبسرور |
ساده، متنباز، رایگان |
11. جمعبندی
Nikto یک ابزار قدرتمند و ضروری برای مدیران سیستم، کارشناسان امنیت و تستکنندگان نفوذ است.
این ابزار به سادگی نصب و اجرا میشود و با چند دستور ساده میتواند وضعیت امنیتی یک وبسرور را بررسی کند.
با وجود محدودیتها، به دلیل سرعت و سادگی، همچنان یکی از پرکاربردترین اسکنرهای متنباز در حوزه امنیت وب است.