یک هکر یا تست‌کننده نفوذ پیش از حمله به یک وب‌سایت، ابتدا فهرستی از سطوح هدف تهیه می‌کند. پس از آن که عملیات شناسایی به خوبی انجام شد و مکان‌های مناسب برای حمله مشخص گردید، از یک ابزار اسکن وب‌سرور مانند Nikto برای شکار آسیب‌پذیری‌ها استفاده می‌شود تا جهات بالقوه حملات مشخص شوند. در این مطلب به توضیح اصول بسیار مقدماتی آموزش نفوذ به سایت می‌پردازیم. توجه کنید که این مطلب صرفاً با هدف آموزش و آگاه‌سازی در خصوص روش‌های مقابله با هک نگارش یافته است و مجموعه فرادرس در مورد هر نوع سوءاستفاده از این مطلب در جهت نفوذ غیر قانونی و بدون اجازه به وب‌سایت‌ها از خود سلب مسئولیت می‌کند.

Nikto یک اسکنر ساده و اوپن سورس وب‌سرور است که وب‌سایت را مورد بررسی قرار داده و آسیب‌پذیری‌هایی که پیدا می‌کند را گزارش می‌دهد. این آسیب‌پذیری‌ها می‌توانند برای سوءاستفاده یا هک کردن یک وب‌سایت مورد استفاده قرار گیرند. همچنین Nikto یکی از پراستفاده‌ترین ابزارهای بررسی آسیب‌پذیری‌های وب‌سایت است و از جهات مختلف یک ابزار استاندارد محسوب می‌شود.

با این که این ابزار بسیار کارآمد است، اما به هیچ وجه پنهان‌کار نیست. هر سایت دارای سیستم کشف نفوذ یا دیگر تدابیر امنیتی متوجه خواهد شد که در حال اسکن شدن است. این ابزار در ابتدا به منظور تست‌های امنیتی طراحی شده است و از این رو پنهان‌کاری اصلاً دغدغه‌ای محسوب نمی‌شد.

روش صحیح استفاده از Nikto

اگر اولین بار است که Nikto را روی یک وب‌سایت مقصد اجرا کنید، شاید ندانید که با اطلاعات به دست آمده از اسکن باید چه بکنید. Nikto در واقع بیشتر شبیه یک اشاره‌گر لیزی است تا یک شمشیر لیزری که در جنگ ستارگان دیده‌ایم.

نخست باید در مورد سطوح هدف صحبت کنیم. منظور از سطوح هدف در واقع هر جایی است که یک هکر می‌تواند حمله کند و می‌تواند شامل چیزهایی مانند پرینترهای افشاشده در شبکه و یک وب‌سرور باشد. هنگامی که در ادامه به استفاده از Nikto عادت کنیم، باید یکی از سه اطلاعات زیر را در اختیار آن قرار دهیم: یک نشانی IP برای سرویس لوکال، یک دامنه وب برای حمله یا یک وب‌سایت SSL/HTTPS.

پیش از آن که دست به اسکن با Nikto بزنیم، بهتر است قبلاً برخی کارهای شناسایی را با استفاده از ابرارهای تجسسی اوپن سورس مانند Maltego انجام دهیم. ابزارهایی مانند این می‌توانند به ساخت یک پروفایل و لیست متمرکزتری از اهداف در دسترس که باید رویان تمرکز کرد کمک کنند. زمانی که این کار انجام یافت، می‌توان از Nikto برای بررسی آسیب‌پذیری‌های بالقوه روی اهداف داخل لیست استفاده کرد.

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

گام یکم: نصب Nikto

اگر کالی لینوکس را اجرا می‌کنید، Nikto از قبل روی سیستم نصب شده است و از این رو نیازی به دانلود یا نصب چیز دیگر ندارید. این ابزار در دسته Vulnerability Analysis قرار دارد. اگر به هر دلیلی به این ابزار دسترسی ندارید، می‌توانید Nikto را از صفحه گیت‌هاب آن (+) دانلود کنید و یا از دستور apt install بهره بگیرید.

اگر این کار را روی یک سیستم مک انجام می‌دهید، امکان استفاده از Homebrew برای نصب نیکتو نیز وجود دارد.

گام دوم: آشنایی با Nikto

پیش از آن که دست به اسکن کردن وب‌سرور‌ها با Nikto بزنیم، می‌توانیم از گزینه Help- استفاده کرده و کارهایی که می‌توان با این ابزار اجرا کرد، مشاهده کنیم.

گام سوم: استفاده از ساختار مقدماتی

چنان که در گام پیش دیدیم، Nikto گزینه‌های زیادی دارد. اما با توجه به اهداف مورد نظرمان فعلاً روی ساختار مقدماتی تمرکز می‌کنیم. در دستور زیر به جای عبارت <IP or hostname> یک نشانی IP واقعی یا نام میزبان را داخل علامت‌های <> وارد کنید:

با این حال توانایی اجرای اسکن SSL و پورت 443 یعنی پورت وب‌سایت‌های HTTPS دارد. بنابراین محدود به اسکن کردن وب‌سایت‌های قدیمی نیستیم و می‌توانیم ارزیابی امنیتی در مورد سایت‌هایی که از SSL استفاده می‌کنند نیز داشته باشیم.

اگر بدانیم که وب‌سایت مقصد ما از نوع SSL است، می‌توانیم در Nikto این موضوع را تعیین کنیم و به این ترتیب با افزودن گزینه ssl- به انتهای دستور در زمان مورد نیاز برای اجرای دستور صرفه‌جویی می‌کنیم.

گام چهارم: اسکن کردن یک وب‌سایت SSL

برای نمونه کار خود را با اسکن کردن وب‌سایت pbs.org شروع می‌کنیم تا بخشی از اطلاعاتی که این ابزار می‌تواند به ما نشان ‌دهد را مشاهده کنیم. پس از این که Nikto به پورت 443 وصل شد، می‌بینیم که برخی اطلاعات مفید در مورد cipher و همچنین لیستی از دیگر جزییات مانند نوع وب‌سرور که Nginx است نشان می‌دهد، اما این اطلاعات که نمایش یافته‌اند چیزی نیستند که چندان برای ما جالب باشند.

گام پنجم: اسکن کردن یک نشانی IP

اکنون که یک اسکن سریع روی یک وب‌سایت اجرا کرده‌ایم، می‌توانیم از Nikto روی یک شبکه لوکال استفاده کنیم تا سرورهای جاسازی‌شده مانند صفحه لاگین برای یک روتر یا یک سرویس HTTP روی یک ماشین دیگر که سروری بدون وب‌سایت است را پیدا کنیم. برای شروع باید نشانی IP را با کمک دستور ifconfig پیدا کنیم:

نشانی آی‌پی همان نشانی inet است. در ادامه می‌توانیم دستور ipcalc را روی آن اجر کنیم تا محدوده شبکه خود را به دست آوریم. اگر ipcalc را ندارید، می‌توانید با استفاده از دستور زیر نصب کنید:

این محدوده در ادامه کلمه Network نمایش می‌یابد و در این مورد 192.168.0.0/24 است.

اکنون می‌خواهیم Nmap را اجرا کرده و سرویس‌هایی که روی محدوده شبکه در حال اجرا است را پیدا کنیم. ابتدا پورت 80 را با محدوده شبکه اسکن می‌کنیم و گزینه –oG را هم اضافه می‌کنیم تا تنها میزبانی‌هایی استخراج شوند که راه‌اندازی شده و در حال اجرا هستند. این میزبان‌ها نشان می‌دهند که پورت 80 باز است. در ادامه همه چیز را در یک فایل ذخیره می‌کنیم که در این مورد نام آن را nullbyte.txt گذاشته‌ایم، اما شما می‌توانید از هر نامی استفاده کنید.

یک ترفند کوچک و زیبا وجود دارد که می‌توان همه میزبان‌ها را مستقیماً به Nikto ارسال کرد تا اسکن کند. ما از دستور cat برای خواندن خروجی ذخیره شده در سند nullbyte.txt استفاده می‌کنیم. در ادامه دستور awk را می‌بینیم که یک ابزار لینوکسی برای جستجوی الگوهای خاص است. Up به این معنی است که میزبان آغاز شده و print $2 به این معنی است که کلمه دوم در هر خط باید چنین یعنی نشانی IP باشد. در ادامه داده‌ها را به یک فایل جدید به نام targetIP.txt ارسال می‌کنیم.

اکنون می‌توانیم محتوای فایل جدید را با دستور cat مشاهده کنیم تا همه نشانی‌های IP که پورت 80 آن‌ها باز است را ببینیم.

این اطلاعات برای Nikto ذی‌قیمت هستند، زیرا به سادگی می‌تواند فایل‌هایی مانند این را تفسیر کند. ازا این رو این خروجی را با دستور زیر به Nikto ارسال می‌کنیم.

نتایج مشابه نتایجی هستند که در زمان اجرای اسکن SSL مشاهده کردیم.

گام ششم: اسکن کردن یک وب‌سایت HTTP

در گام پیشین یک وب‌سایت امن و یک نشانی IP را روی شبکه لوکال اسکن کردیم. اکنون زمان آن رسیده است که یک دامنه وب ناامن را با استفاده از پورت 80 اسکن کنیم. در این مثال از دامنه afl.com.au استفاده می‌کنیم که در زان اجرای اسکن مجهز به پروتکل SSL نبوده است.

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

آیتم‌های دارای پیشوند OSVDB آسیب‌پذیری‌هایی هستند که در پایگاه داده آسیب‌پذیری‌های اوپن سورس (این سایت در سال 2016 خاموش شده است) گزارش شده بودند. البته پایگاه‌های داده دیگری در مورد آسیب‌پذیری‌ها مانند SecurityFocus, Microsoft’s Technet, و Common Vulnerabilities and Exposures وجود دارند و یکی از بهترین مکان‌ها برای بررسی National Vulnerability Database است.

با این که از بین نتایج این اسکن چیز عمده‌ای که بتوان از آن بهره‌برداری کرد پیدا نکردیم، اما اگر چنین چیزی وجود می‌داشت می‌شد از ابزار CVE reference (+) برای بازگردانی شناسه OSVDB به موجودیت CVE استفاده کرد و به این ترتیب از یکی از سایت‌های فوق برای کسب اطلاعات بیشتر در خصوص این آسیب‌پذیری به خصوص بهره جست.

فرض کنید ما نوعی اکسپلویت باارزش مانند CVE-2018-10933 (+) یافته باشیم که یک آسیب‌پذیری Libssh است. CVE شامل اطلاعاتی در مورد آن چه می‌توان بهره‌برداری کرد، نمره شدت آسیب‌پذیری و برخی اطلاعات دیگر است که می‌تواند به ساخت بردار حمله کمک کند. اگر ارزش استفاده داشته باشد، می‌توان از ابزار Metasploit برای جستجو کرد چون حتماً کسی قبلاً یک ماژول برای بهره‌برداری آسان‌تر از این آسیب‌پذیری توسعه داده است.

آموزش نفوذ به سایت

گام هفتم: همراهی اسکن با Metasploit

یکی از بهترین نکات در مورد Nikto این است که می‌توان عملاً اطلاعات را در فرمتی اکسپورت کرد که Metasploit در زمان اجرای اسکن بتواند بخواند. به این منظور کافی است با دستورهای فوق اسکن را آغاز کنید اما به انتهایان عبارت -Format msf+ را اضافه کنید. این فرمت موجب می‌شود داده‌های بازیابی شده به سرعت در اختیار یک اکسپلویت مسلح قرار گیرد.

سخن پایانی

در این راهنما اقدام به تعیین سطوح هدف برای یافتن آسیب‌پذیری‌ها و سپس جفت کردن آن با یک اکسپلویت کردیم تا امان نفوذ به وب‌سایت را پیدا بکنیم. از آنجا که نیکتو یک ابزار پنهان‌کار نیست، بهتر است این نوع از اسکن‌ها را از طریق یک VPN مانند Tor یا دیگر انواع سرویس‌هایی که نشانی IP واقعی را پنهان می‌کنند انجام دهیم. در نهیت باید مجدداً اشاره کنیم که تمام اطلاعات ارائه شده در این مطلب صرفاً با مقاصد آگاهی بخشی برای جلوگیری از هک ارائه شده‌اند و مسئولیت هر گونه سوء استفاده از این مطالب در جهت نفوذ غیر قانونی و بدون کسب اجازه به سایت‌های مختلف بر عهده فرد مورد نظر خواهد بود.

اگر این مطلب برای شما مفید بوده است، آموزش‌ها و مطالب زیر نیز به شما پیشنهاد می‌شوند:

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *