
ماسح SYN عديم الحالة وأداة التقاط الشعارات أسرع وأكثر كفاءة بفضل استخدام مكدس TCP/IP في مساحة المستخدم.
الملخص
polarbearscan هي محاولة لإجراء مسح للمنافذ وسرقة اللافتات بشكل أسرع وأكثر كفاءة. تجمع بين فكرتين مختلفتين قد تجعلانها جديرة باهتمامك ووقتك.
الفكرة الأولى هي استخدام مسح SYN عديم الحالة باستخدام ملفات تعريف محمية تشفيرياً لتحليل الإقرارات الواردة. على حد علم المؤلف، كانت هذه التقنية رائدة من قبل Dan Kaminsky في scanrand. كان scanrand جزءًا من Paketto Keiretsu، وهي مجموعة من أدوات المسح، وتم إصدارها في حوالي 2001-2002. يمكن العثور على نسخة من هذا الكود في Packet Storm [1].
الفكرة الثانية هي استخدام حزمة TCP/IP معدلة في مساحة المستخدم بحيث يمكن للماسح استعادة الحالة فوراً عند استلام حزمة تم التحقق منها تشفيرياً مع تعيين كل من علمي SYN و ACK. حزمة مساحة المستخدم المستخدمة هنا بواسطة polarbearscan تسمى libuinet [2]. على عكس بعض حزم TCP/IP الأخرى في مساحة المستخدم، هذه ناضجة جداً لأنها ببساطة نسخة من حزمة TCP/IP الخاصة بـ FreeBSD.
من خلال تعديل حزمة libuinet، يمكن للمرء إنشاء socket وإكمال المصافحة الثلاثية العادية لـ TCP عن طريق الرد بـ ACK مناسب. بهذه الطريقة، يتم إنشاء اتصال TCP فعال بالكامل فوراً. هذا على عكس الماسحات الأخرى (مثل nmap) التي ستضطر، بعد ملاحظة أن منفذ TCP مفتوح، إلى إجراء اتصال TCP كامل عبر kernel للقيام بأشياء مثل سرقة اللافتات أو مسح الإصدارات. يؤدي اتصال TCP الكامل إلى مصافحة ثلاثية جديدة كاملة لـ TCP، مما يتجاهل الحالة الضمنية التي تم بناؤها بواسطة الحزمتين الأوليتين المتبادلتين بين المضيفين. من خلال تجنب ذلك، يمكن تقليل استخدام النطاق الترددي والانتقال فوراً من اكتشاف أن المنفذ مفتوح إلى الاتصال به. يمكن لهذا الاتصال بعد ذلك أن يستقبل البيانات ببساطة في وضع سرقة اللافتات أو يمكنه إرسال طلب HTTP.
يرجى ملاحظة أن الماسح يدعم حالياً فقط المسح المستند إلى IPv4 وسيعمل بشكل صحيح فقط على واجهات من نوع Ethernet (سلكية أو لاسلكية). لا توجد خطط لدعم IPv6 أو واجهات مختلفة في المستقبل القريب.
التثبيت
تجميع الكود بسيط إلى حد ما. يحتاج المرء فقط إلى اتصال عمل بالإنترنت ويجب تثبيت git بحيث يمكن تنزيل التبعيات المطلوبة. بالإضافة إلى ذلك، هناك حاجة إلى أدوات التطوير القياسية (gcc, make, patch)، والإصدارات التطويرية من المكتبات (pthread, pcap, OpenSSL). على توزيعات Debian، يمكن للمرء ببساطة تثبيت جميع الحزم المدرجة في ملف DEPENDENCIES. بعد ذلك، يجب أن يكون المرء قادراً على كتابة make فقط وسيتم سحب التبعيات الخارجية باستخدام git وسيتم بناء الماسح بالكامل. يمكن بعد ذلك نسخ هذا الملف الثنائي إلى /usr/bin أو /usr/local/bin أو ما شابه ذلك.
إذا فشل التجميع، يرجى إرسال بريد إلكتروني إلى المؤلف (تفاصيل الاتصال أدناه) مع تضمين مخرجات الخطأ وإصدار kernel وإصدار libc وأي شيء آخر قد يساعد في إعادة إنتاج المشكلة وإصلاحها. مساعدتكم مقدرة.
الاستخدام
تشغيل الأداة يجب أن يكون بسيطاً إلى حد ما. ستحتاج إلى صلاحيات الجذر. يظهر الخيار -h معلومات الاستخدام المختصرة مع شرح الخيارات. في معظم الحالات، لا يحتاج المرء إلى أكثر من تحديد نوع الفحص الذي سيتم تنفيذه، وقوائم المنافذ التي سيتم فحصها، وعنوان IP الهدف أو نطاقات IP. يتم دعم تدوين CIDR لنطاقات IP.
هناك أربعة أنواع مختلفة من الفحص يتم تحديدها باستخدام -s.
-sB: يقوم هذا بسحب اللافتات القياسي. لن يرسل الماسح أي بيانات حيث سينتظر ببساطة ويستقبل البيانات ويعرضها حتى أول سطر جديد أو إرجاع عربة يتم استلامها.
-sH: يرسل هذا الوضع طلب "GET / HTTP/1.1" إلى كل اتصال تم إعداده بنجاح. إنه مفيد جداً لتحديد خوادم HTTP بسرعة.
-sT: وضع فحص TLS يرسل استبيان TLS1.0 فارغ مع صفر خيارات وصفر خوارزميات محددة. ومع ذلك، إذا كان هناك خادم TLS صالح على الطرف المستقبل، فسيقوم بتحليل ومحاولة تحديد ما إذا كانت استجابة خطأ TLS صالحة سيتم عرضها.
-sC: فحص مخصص يقوم بتحميل حمولة من ملف (محدد بـ -d) وإرسال هذه الحمولة إلى كل socket تم إنشاؤه بنجاح. يمكن أن يكون مفيداً لاستجواب بروتوكولات محددة بسرعة.
-p: قائمة منافذ TCP التي سيتم فحصها، والتي يمكن أن تكون نطاقاً من المنافذ أو منافذ فردية مع نطاقات ومنافذ فردية مفصولة بفواصل. بعض الأمثلة: -p22,80,8080-9000,143 سيقوم بفحص المنافذ 22 و80 و143 ونطاق 8080 إلى 9000.
-b : حد النطاق الترددي لتطبيقه على الاستبيانات الصادرة. لا ينطبق هذا على البيانات المرسلة والمستقبلة عبر sockets بل فقط على استبيانات SYN الفعلية المرسلة. أمثلة: -b300k, -b67m, -b500b ستعطي حدود نطاق ترددي 300kbps و76mbps و500bps على التوالي.
-d : اسم الملف الذي يحتوي على الحمولة المستخدمة في الفحص المخصص. سيتم إرسال الملف بأكمله حتى حد أقصى 128 كيلو بايت، وهو ما يجب أن يكون أكثر من كافٍ لمعظم الأغراض.
-t: يحدد هذا عدد الثواني التي سينتظرها الماسح بعد إرسال جميع الاستبيانات لاستقبال البيانات مرة أخرى عبر sockets المتصلة. أي بافتراض وجود أي منها، وإلا فسيخرج بمجرد عدم وجود عمل متبقي.
-x: يجبر هذا الأداة على عرض المخرجات المستلمة دائماً بالتدوين السداسي العشري. بخلاف ذلك، ستعرض البيانات بتدوين سداسي عشري فقط إذا تم العثور على أحرف غير قابلة للطباعة.
-v: يحدد هذا بعض المخرجات التفصيلية. إنها مفيدة في الغالب لتصحيح الأخطاء.
-i : الواجهة التي سيتم استخدامها لاختيار عنوان IP المصدر وإعداد خلفية pcap. لا ينبغي أن يكون هذا ضرورياً على الأجهزة القياسية التي تحتوي على بطاقة NIC واحدة مهيأة بشكل صحيح، ولكن مع وجود بطاقات NIC متعددة قد يحتاج المرء إليها.
-r : البذرة العشوائية لاستخدامها في RNG. مفيدة في الغالب لتصحيح الأخطاء والتأكد من أن الأداة يمكنها توليد نفس تسلسل الحزم تماماً مرة أخرى. الوسيطة هي عدد صحيح ويمكن تحديدها بالتدوين السداسي العشري والعشري.
-T : تجاوز قيمة TTL الافتراضية لـ IP لاستخدامها في استبيانات SYN. ليست ضرورية حقاً لأي شيء، ولكن تم تضمينها من أجل الاكتمال.
-W : تجاوز قيمة حجم نافذة TCP الافتراضية لاستخدامها في استبيانات SYN. ليست ضرورية حقاً لأي شيء، ولكن تم تضمينها من أجل الاكتمال.
-I : تجاوز قيمة معرف IP الافتراضية لاستخدامها في استبيانات SYN. ليست ضرورية حقاً لأي شيء، ولكن تم تضمينها من أجل الاكتمال.
-n: يجب استخدام هذا الخيار فقط إذا كنت تعرف ما تفعله. سيجعل الأداة لا تقوم بتعيين قاعدة جدار الحماية لإسقاط جميع حزم RST الصادرة. إذا تم استخدام هذا، فلن يقوم الماسح بعمل fork ويكون على المستخدم مسؤولية تعيين هذه القاعدة يدوياً، وإلا سيرسل kernel حزم RST مرة أخرى لكل حزمة SYNACK يتم استلامها. هذا سيجعل الأداة لا تعمل ببساطة. القاعدة كما يتم تعيينها على Linux هي التالية:
$ /sbin/iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP
-o: لا يقوم هذا الخيار بإعادة توجيه I/O، لذا سترى المزيد من مخرجات داخلية uinet. تمت إضافته فقط من أجل الاكتمال أو لسيناريوهات تصحيح الأخطاء لأنه ليس مفيداً جداً بخلاف ذلك.
-h: معلومات الاستخدام.
بعض الأمثلة على كيفية استخدام الأداة. لعمل سحب لافتات للمنفذ 22 على نطاق /24، استخدم:
./pbscan -sB -p22 x.x.x.x/24
لإجراء فحص HTTP على عدة منافذ HTTP شائعة لعنوان IP واحد مع المخرجات بالتدوين السداسي العشري، استخدم:
./pbscan -sH -x -p80,8080-9000 x.x.x.x
أثناء الفحص، عند الضغط على مفتاح على الإدخال القياسي، سترى بعض الإحصائيات تظهر، مثل عدد المنافذ المفتوحة المحددة، وعدد إقرارات TCP الصالحة المستلمة، وعدد الاتصالات النشطة حالياً، وعدد استبيانات SYN التي تم إرسالها من الإجمالي. ستبدو شيئاً مثل:
sent: 1.97% (of 254), open: 0, active: 2, acks: 2
المؤلف
تم كتابة هذه الأداة بواسطة Vincent Berg. اتصل بي عبر البريد الإلكتروني على [email protected] أو قم بزيارة موقعي http://santarago.org للحصول على إصدارات/أخبار محدثة حول هذا الماسح.
الشكر
تقدير كبير للعديد من الأشخاص الذين ساعدوا في الاختبار ونقل هذه الأداة الرائعة والإبلاغ عن الأخطاء. شكراً لـ Ehab و Joseph و Alejandro و Julian و Diego.
المراجع
[1] http://packetstormsecurity.com/files/30489/paketto-1.10.tar.gz.html