توضیح کامل و جامع درباره 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 مراحل زیر را طی می‌کند:

  1. بررسی پارامترها: بررسی می‌کند چه هاست یا آی‌پی مشخص شده و کدام پورت‌ها باید اسکن شوند.
  2. ارسال درخواست‌ها (HTTP Requests): Nikto صدها یا هزاران درخواست به سرور هدف ارسال می‌کند (GET، POST، TRACE و غیره).
  3. تحلیل پاسخ‌ها: هدرها، کدهای وضعیت (Status Codes) و محتوای صفحات بررسی می‌شوند.
  4. مقایسه با پایگاه داده آسیب‌پذیری‌ها: خروجی‌ها با پایگاه داده داخلی Nikto تطبیق داده می‌شود.
  5. تولید گزارش: در نهایت گزارشی به صورت 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:

sudo apt-get install perl openssl libnet-ssleay-perl
git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h

📌 مثال نصب روی CentOS/RedHat:

sudo yum install perl perl-Net-SSLeay openssl
git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h

7. گزینه‌ها و دستورات مهم Nikto

Nikto گزینه‌های متعددی دارد. در جدول زیر پرکاربردترین‌ها را آورده‌ام:

دستور

توضیح

-h

تعیین هاست هدف (آی‌پی یا نام دامنه)

-p

تعیین پورت یا محدوده پورت‌ها

-ssl

مجبور کردن به استفاده از SSL روی پورت مشخص

-id

تعیین یوزرنیم/پسورد برای ورود

-o

ذخیره خروجی در فایل

-Format

تعیین فرمت خروجی (txt، html، xml، csv)

-Tuning

تنظیم نوع تست‌ها (مثلاً فقط تست فایل‌ها یا فقط تست پورت‌ها)

-update

به‌روزرسانی پایگاه داده و پلاگین‌ها

-list-plugins

لیست پلاگین‌های موجود

-nossl

غیرفعال کردن استفاده از SSL

-no404

غیرفعال کردن بررسی خطای 404

8. مثال‌ها و خروجی‌ها

مثال ۱: اسکن یک آی‌پی روی پورت ۸۰

perl nikto.pl -h 172.16.27.56

📌 خروجی:

  • نسخه وب‌سرور (Apache/2.2.15)
  • فایل‌های حساس مثل /robots.txt
  • نسخه قدیمی PHP
  • آسیب‌پذیری‌های OSVDB

مثال ۲: اسکن روی HTTPS (پورت ۴۴۳)

perl nikto.pl -h 172.16.27.56 -p 443

📌 خروجی:

  • اطلاعات SSL Certificate
  • هشدار درباره نسخه قدیمی Apache
  • روش‌های HTTP فعال

مثال ۳: اسکن چند پورت

perl nikto.pl -h 172.16.27.56 -p 80,443

📌 خروجی:

  • نمایش نتیجه برای هر پورت به صورت جداگانه

مثال ۴: استفاده از پروکسی

perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/

📌 خروجی:

  • تمامی درخواست‌ها از طریق Proxy ارسال می‌شوند.

9. محدودیت‌ها و نکات

  • Nikto یک ابزار محدود به اسکن سطحی است و حملات پیچیده مثل SQL Injection یا XSS را به شکل کامل پوشش نمی‌دهد.
  • به دلیل ارسال تعداد زیاد درخواست، ممکن است توسط IDS/IPS شناسایی شود.
  • برخی نتایج نیاز به تحلیل انسانی دارند (مثلاً فایل‌هایی که “ممکن است جالب باشند”).
  • سرعت اسکن ممکن است پایین باشد چون بیش از ۲۰۰۰ تست روی هر هاست انجام می‌شود.

10. مقایسه با ابزارهای مشابه

ابزار

کاربرد اصلی

تفاوت با Nikto

Nmap

اسکن پورت‌ها و سرویس‌ها

تمرکز روی شبکه، نه وب

Wpscan

اسکن آسیب‌پذیری‌های WordPress

فقط برای وردپرس

OpenVAS

اسکن جامع آسیب‌پذیری‌ها

سنگین‌تر و پیچیده‌تر

Burp Suite

تست نفوذ وب‌اپلیکیشن

پیشرفته‌تر، اما غیررایگان

Nikto

اسکن سریع وب‌سرور

ساده، متن‌باز، رایگان

11. جمع‌بندی

Nikto یک ابزار قدرتمند و ضروری برای مدیران سیستم، کارشناسان امنیت و تست‌کنندگان نفوذ است.

این ابزار به سادگی نصب و اجرا می‌شود و با چند دستور ساده می‌تواند وضعیت امنیتی یک وب‌سرور را بررسی کند.

با وجود محدودیت‌ها، به دلیل سرعت و سادگی، همچنان یکی از پرکاربردترین اسکنرهای متن‌باز در حوزه امنیت وب است.

✍️ نویسنده: حسین سیلانی

🔗 درباره من: seilany.ir

📢 نویسندگی و مشارکت در وبلاگ: t.me/seilany