
ماسح منافذ IPv6 مصمم ليكون سريعًا، يهدف إلى المسح والاكتشاف عبر الإنترنت.
fi6s هو ماسح منافذ IPv6 مصمم ليكون سريعاً، يهدف إلى مسح واكتشاف الإنترنت. يتم تحقيق ذلك عن طريق إرسال ومعالجة الحزم الخام بشكل غير متزامن.
التصميم والهدف مشابهان جداً لـ Masscan، رغم أنه ليس بنفس الميزات الكاملة.
يرجى ملاحظة الترخيص.
أخيراً: هذه أداة بحث أمني وأنت (المستخدم) مسؤول مسؤولية كاملة عن اتباع اللوائح المحلية والحصول على الإذن اللازم عند استخدامها.
بناء fi6s سهل نسبياً على أي نظام Linux حديث، مثلاً على Ubuntu:
# apt install gcc make git libpcap-dev
$ git clone https://github.com/sfan5/fi6s.git
$ cd fi6s
$ make BUILD_TYPE=release
سيكون الملف التنفيذي جاهزاً في ./fi6s.
لاحظ أن fi6s تم تطويره واختباره فقط على Linux. المنصات الأخرى المشابهة لـ UNIX يجب أن تعمل، لكن Windows لن يعمل.
سيقوم fi6s بالكشف التلقائي عن تفاصيل الشبكة القذرة (المصدر، عناوين MAC للراوتر وعناوين IP) لك، لذا يمكنك البدء مباشرة في المسح:
# ./fi6s -p 80,8000-8100 --max-rate 170 2001:db8::/120
هذا المثال سيقوم بما يلي:
list" (افتراضي ضمني)هناك طرق مختلفة أخرى لتحديد نطاق عناوين للمسح. إذا لم تكن متأكداً مما سيحدث، استخدم --print-summary للحصول على نظرة عامة سريعة عن المسح أو --print-hosts لطباعة جميع عناوين IP المحتملة المستهدفة.
للميزات الأكثر تقدماً والشروحات الإضافية، يرجى مراجعة مخرجات fi6s --help.
البيانات التي يرسلها المضيف البعيد استجابة لاتصال جديد أو طلب استكشاف تسمى 'بانر'. يجعل fi6s جمعها سهلاً.
كل ما عليك فعله هو تمرير الخيار --banners:
# ./fi6s -p 22 --banners 2001:db8::xx
أضف العلامة --udp إلى سطر الأوامر الخاص بك:
# ./fi6s -p 53 --banners --udp 2001:db8:xx::1
لاحظ أنه على عكس TCP، ستحصل فقط على نتائج مفيدة (أو أي نتائج) إذا قمت بمسح منفذ يكون بروتوكوله مدعوماً للاستكشاف بواسطة fi6s. استخدم fi6s --list-protocols لعرض القائمة.
بما أن fi6s يجلب مكدس TCP/IP الخاص به والحد الأدنى، يجب منع نظام التشغيل من محاولة التحدث بـ TCP على نفس المنفذ الذي يستخدمه fi6s، وإلا سيعطل عملية المسح.
بشكل افتراضي، سيطلب fi6s من نظام التشغيل حجز منفذ مؤقت واستخدامه طوال مدة المسح. يعمل هذا فقط على Linux.
إذا فشل ذلك أو كنت على منصة مختلفة (سيخبرك fi6s!) فعليك اختيار منفذ مصدر وتكوين جدار الحماية لإسقاط كل حركة المرور على هذا المنفذ، مثلاً:
# ipfw add 1000 deny tcp from any to any 12345 in ip6
أو:
# ip6tables -A INPUT -p tcp -m tcp --dport 12345 -j DROP
ثم:
# ./fi6s -p 22 --banners --source-port 12345 2001:db8::xx
بما أن UDP عديم الاتصال، لا حاجة للقيام بذلك، لكنها لا تزال فكرة جيدة لمنع إرسال استجابات ICMPv6 غير الضرورية. سيقوم fi6s بذلك أيضاً بشكل افتراضي.
ميزة كبيرة لـ IPv6 هي المساحة الكبيرة للعناوين، وطريقة أخرى لتجنب المشكلة الموصوفة أعلاه هي استخدام عنوان IP مصدر مختلف.
يجب ألا يكون عنوان IP هذا مخصصاً لجهازك المحلي، لكن يجب أن يتم توجيهه بشكل ثابت إلى جهازك، لأن fi6s لن يجيب على استعلامات NDP.
للتحقق من أن الإعداد يعمل بشكل صحيح، يمكنك ببساطة إجراء ping لعنوان IP عام معروف، مثلاً:
# ./fi6s --icmp --source-ip ${chosen_src_ip} 2001:4860:4860::8888
استخدم --icmp للقيام بمسح Ping ICMPv6:
# ./fi6s --icmp 2001:xxx0::1
لن يتم قياس زمن الرحلة ذهاباً وإياباً.
للسماح بتصميم fi6s، كان لا بد من وضع بعض الافتراضات حول بيئة الشبكة. لا تؤثر هذه الافتراضات على الاستخدام النموذجي على الإطلاق ولكنها مدرجة هنا للاكتمال.
هذا يعني أن fi6s قد لا يعمل كما هو متوقع أو لا يعمل تماماً إذا:
بالنسبة لجمع البانرات، لاحظ أن fi6s لا يأتي مع أي شيء يشبه مكدس TCP حقيقي. إنه يدعم فقط إرسال استعلام واحد وقراءة بيانات الاستجابة التي تليه. لم يتم تنفيذ إعادة الإرسال أو منطق النافذة.
بينما يستخدم fi6s أرقام المنافذ والتسلسل لضمان أن النتائج التي تحصل عليها متعلقة بالمسح الجاري المحدد، فإنه ليس لديه فحص لمقارنة عنوان IP الذي أُرسل إليه الاستكشاف مع عنوان IP الذي يستجيب بالفعل.
هذا يعني أن تشغيل مثلاً أي نوع من tracerouting أثناء المسح لن يتداخل مع نتائج المسح.
ومع ذلك، من الممكن أن يظهر عنوان IP في نتائج المسح لم يكن جزءاً من قائمة الإدخال، إذا رد هدف ممسوح على عنوان IP مختلف. يمكن أن تكون هذه الخاصية مفيدة عملياً، حيث أن بعض أجهزة التوجيه ستقبل استعلامات SNMP أو DNS على عنوان الشبكة الصفري، لكنها تجيب بعنوان IPv6 الأساسي الخاص بها.
مثال: مسح 3fff:1234:1234:44xx:: -> استجابة من 3fff:1234:1234:44a3:e2a:86ff:fe12:3456
طريقة عشوائية عناوين IP الممسوحة بواسطة fi6s (--randomize-hosts 1، وهو الإعداد الافتراضي) بعيدة عن الكمال.
سيقوم بما يلي:
على سبيل المثال، إذا قمت بمسح 3fff::/108، فسيكون ترتيب 3fff::1 و 3fff::20 و 3fff::300 عشوائياً. لكن جميع العناوين في 3fff::0:* سيتم مسحها قبل 3fff::1:*، قبل 3fff::2:* وهكذا.