
ماسح مضيف افتراضي يقوم بإجراء عمليات بحث عكسية، يمكن استخدامه مع أدوات المحور، ويكتشف سيناريوهات الالتقاط الشامل، ويتعامل مع أحرف البدل والأسماء المستعارة والصفحات الافتراضية الديناميكية.
ماسح مضيف افتراضي يمكن استخدامه مع أدوات المحور (pivot tools)، لكشف سيناريوهات catch-all، والأسماء المستعارة، والصفحات الافتراضية الديناميكية. تم تقديمه لأول مرة في SecTalks BNE في سبتمبر 2017 (عرض الشرائح).
هذه نسخة محسنة من أداة VHostScan الأصلية بواسطة Codingo مع تحسينات إضافية، تحديث قاعدة الكود، وقوائم كلمات موسعة لاكتشاف أفضل للمضيفات الافتراضية.
ثم قم بتشغيل التطبيق `docker run --rm -it vhostscan -t´
VHostScan يتطلب Python 3.8 أو أعلى. قم بالتثبيت باستخدام:
$ pip install VHostScan
أو قم بالتثبيت من المصدر:
$ git clone https://github.com/codingo/VHostScan.git
$ cd VHostScan
$ pip install .
للتطوير:
$ pip install -e .
سيتم بعد ذلك تثبيت التبعيات وإضافة VHostScan إلى مسارك.
لاحظ أن عددًا من هذه الأمثلة تشير إلى 10.10.10.29. يشير عنوان IP هذا إلى BANK.HTB، وهو جهاز هدف متقاعد من HackTheBox (https://www.hackthebox.eu/).
المثال الأكثر وضوحًا يقوم بتشغيل قائمة الكلمات الافتراضية ضد example.com باستخدام المنفذ الافتراضي 80:
$ VHostScan -t example.com
إذا كان اتصالك يتطلب SSL، يمكنك استخدام:
$ VHostScan -t example.com --ssl

لنفترض أن لديك إعادة توجيه منفذ SSH تستمع على المنفذ 4444 وتوجه حركة المرور إلى المنفذ 80 على جهاز التطوير الخاص بـ example.com. يمكنك استخدام ما يلي لجعل VHostScan يتصل عبر نفق SSH الخاص بك عبر localhost:4444 ولكن بتنسيق طلبات الترويسة لتناسب الاتصال المباشر بالمنفذ 80:
$ VHostScan -t localhost -b example.com -p 4444 -r 80
يدعم VHostScan الأنابيب (piping) من التطبيقات الأخرى وسيعامل المعلومات التي تم تمريرها إلى VHostScan كبيانات قائمة كلمات، على سبيل المثال:
$ cat bank.htb | VHostScan -t 10.10.10.29

لا يزال بإمكانك تحديد قائمة كلمات لاستخدامها مع stdin. في هذه الحالات، سيتم إلحاق معلومات قائمة الكلمات بـ stdin. على سبيل المثال:
$ echo -e 'a.example.com\b.example.com' | VHostScan -t localhost -w ./wordlists/wordlist.txt
هذا مثال مع تفعيل المنطق الضبابي. يمكنك رؤية أن المقارنة الأخيرة أكثر تشابهًا بكثير من الأولين (إنها تقارن المحتوى وليس التجزئات الفعلية):
يتضمن VHostScan الآن عدة قوائم كلمات متخصصة لسيناريوهات مختلفة. تم إنشاء قوائم الكلمات الأصلية بواسطة Codingo بناءً على خبرة اختبار الاختراق الواقعية، وتتضمن هذه النسخة المحسنة قوائم كلمات متخصصة إضافية للبنية التحتية الحديثة.
للحصول على معلومات مفصلة حول كل قائمة كلمات، راجع WORDLISTS.md.
استخدم قائمة الكلمات المركزة على اختبار الاختراق لتقييمات الأمان:
$ VHostScan -t target.com -w ./wordlists/pentest-focused.txt
اجمع بين قوائم كلمات متعددة للفحص الشامل:
$ VHostScan -t target.com -w "./wordlists/common-vhosts.txt,./wordlists/cloud-modern.txt"
استخدم قائمة الكلمات المركزة على السحابة للبنية التحتية الحديثة:
$ VHostScan -t example.com -w ./wordlists/cloud-modern.txt --ssl
يتضمن هذا المشروع مجموعة صغيرة من الاختبارات. من السهل جدًا تشغيل الاختبارات:
pip install -r test-requirements.txt
python3 setup.py test
إذا كنت تفكر في إضافة ميزة جديدة إلى المشروع، ففكر أيضًا في المساهمة ببعض الاختبارات. قاعدة كود مختبرة جيدًا هي قاعدة كود سليمة. :)
تتضمن هذه النسخة المحسنة:
تم إنشاء VHostScan في الأصل بواسطة Codingo وتم تقديمه لأول مرة في SecTalks BNE في سبتمبر 2017. تبني هذه النسخة المحسنة على هذا الأساس الممتاز مع تحسينات إضافية لاختبار الاختراق الحديث وصيد الثغرات.
| الوسيطة | الوصف |
|---|
| -h, --help | عرض رسالة المساعدة والخروج |
| -t TARGET_HOSTS | تعيين المضيف الهدف. |
| -b BASE_HOST | تعيين المضيف لاستخدامه أثناء الاستبدال في قائمة الكلمات (الافتراضي هو TARGET). |
| -w WORDLISTS | تعيين قائمة الكلمات لاستخدامها. يمكنك تحديد قوائم كلمات متعددة بتنسيق مفصول بفواصل (مثال: -w "./wordlists/simple.txt, ./wordlists/hackthebox.txt" (الافتراضي ./wordlists/virtual-host-scanning.txt). قوائم الكلمات المتاحة: simple.txt, hackthebox.txt, common-vhosts.txt, pentest-focused.txt, cloud-modern.txt, virtual-host-scanning.txt. |
| -p PORT | تعيين المنفذ لاستخدامه (الافتراضي 80). |
| -r REAL_PORT | المنفذ الحقيقي لخادم الويب لاستخدامه في الترويسات عندما لا يكون 80 (انظر RFC2616 14.23)، مفيد عند التنقل عبر ssh/nc إلخ (الافتراضي هو PORT). |
| --ignore-http-codes IGNORE_HTTP_CODES | قائمة مفصولة بفواصل من رموز http لتجاهلها مع فحص المضيف الافتراضي (الافتراضي 404). |
| --ignore-content-length IGNORE_CONTENT_LENGTH | تجاهل أطوال المحتوى بمقدار محدد. |
| --prefix PREFIX | إضافة بادئة إلى كل عنصر في قائمة الكلمات، لإضافة dev-<word>, test-<word> إلخ. |
| --suffix SUFFIX | إضافة لاحقة إلى كل عنصر في قائمة الكلمات، لإضافة <word>dev, <word>dev. |
| --first-hit | إرجاع أول نتيجة ناجحة. استخدم فقط في السيناريوهات التي تكون متأكداً فيها من عدم وجود catch-all (مثل CTF). |
| --unique-depth UNIQUE_DEPTH | إظهار التطابقات المحتملة لمحتوى الصفحة الموجود x مرة (الافتراضي 1). |
| --ssl | إذا تم تعيينه، فسيتم إجراء الاتصالات عبر HTTPS بدلاً من HTTP. |
| --fuzzy-logic | إذا تم تعيينه، تتم مقارنة جميع ردود المحتوى الفريدة ويتم إعطاء نسبة تشابه لكل زوج. يساعد ذلك في عزل المضيفات الافتراضية في الحالات التي لا تكون فيها الصفحة الافتراضية ثابتة (مثل وجود الوقت عليها). |
| --no-lookups | تعطيل عمليات البحث العكسي (يحدد أهدافًا جديدة ويضيفها إلى قائمة الكلمات، مفعل افتراضيًا). |
| --rate-limit | مقدار الوقت بالثواني للتأخير بين كل عملية فحص (الافتراضي 0). |
| --random-agent | إذا تم تعيينه، سيستخدم كل فحص وكيل مستخدم عشوائي من قائمة محددة مسبقًا. |
| --user-agent | تحديد وكيل مستخدم لاستخدامه في عمليات الفحص. |
| --waf | إذا تم تعيينه، سيتم إرسال ترويسات بسيطة لتجاوز WAF. |
| -oN OUTPUT_NORMAL | الإخراج العادي المطبوع إلى ملف عند تحديد الخيار -oN مع وسيطة اسم ملف. |
| -oG OUTPUT_GREPABLE | إخراج قابل للبحث (grepable) مطبوع إلى ملف عند تحديد -oG مع اسم ملف. |
| -oJ OUTPUT_JSON | إخراج JSON مطبوع إلى ملف عند تحديد الخيار -oJ مع وسيطة اسم ملف. |
| -v VERBOSE | زيادة إخراج الأداة لإظهار التقدم. |