
أداة بصمة نشطة تحدد 16 رصة TCP/IP مضمنة على أجهزة الشبكة باستخدام تقنيات الاستقصاء ICMP وTCP وHTTP وSSH وFTP لتقييم الثغرات.
تهدف أداة project-memoria-detector إلى تحديد ما إذا كان جهاز شبكة مستهدف يقوم بتشغيل حزمة TCP/IP مدمجة معينة.
حالياً، تدعم الأداة بصمات لـ 16 حزمة TCP/IP مدمجة (وتنويعاتها):
تم العثور على العديد من الحزم المذكورة أعلاه على أنها ضعيفة أثناء بحث Project Memoria.
يحدد البرنامج النصي استخدام حزم TCP/IP الـ 16 على جهاز مستهدف عبر طرق البصمة النشطة التالية:
على الرغم من اختبار البرنامج النصي في بيئة معملية، لا يمكننا ضمان أن استخدامه آمن ضد كل جهاز محتمل. فقد تؤدي حزم ICMP المشوهة، على سبيل المثال، إلى تعطل جهاز يقوم بتشغيل حزمة مختلفة. لذلك، لا نوصي باستخدامه مباشرة على البيئات الحية ذات الأجهزة ذات المهام الحرجة (مثل المستشفيات التي تحتوي على أجهزة متصلة بالمرضى أو أنظمة التحكم الصناعية الحرجة للسلامة). النهج المثالي هو اختبار الأجهزة في بيئة معملية أو خلال فترة الصيانة.
يرجى ملاحظة أنه تم اختبار الأداة فقط في بيئة اختبار Linux (أي توزيعة Linux حديثة يجب أن تعمل). من المفترض أن بيئة الاختبار تستخدم iptables (https://linux.die.net/man/8/iptables) كجدار ناري أساسي.
تتطلب الأداة إصداراً حديثاً من Python 3.x (انظر https://www.python.org/، يُفضل الإصدار >= 3.7.7)، بالإضافة إلى Scapy (انظر https://scapy.net/، يُفضل الإصدار >= 2.4.3).
لتثبيت Scapy مع Python وللاستكشاف العام، يرجى اتباع التوثيق هنا: https://scapy.readthedocs.io/en/latest/installation.html
إذا كان Python مثبتاً بالفعل على جهازك، لتثبيت التبعيات المطلوبة يمكنك استخدام pip وملف requirements.txt المقدم:
$ pip install -r requirements.txt
نظراً لأن Scapy يتطلب صلاحيات الجذر للتشغيل، يجب تشغيل الأداة باستخدام sudo، على سبيل المثال:
$ sudo python project-memoria-detector.py [options]
لعرض الخيارات المتاحة لتشغيل البرنامج النصي، قم بتشغيله مع الخيار -h:
$ python project-memoria-detector.py -h
بشكل عام، يتطلب البرنامج النصي عنوان IP واحداً على الأقل للجهاز المستهدف (يمكن تحديد هذه المعلمة صراحةً باستخدام -ip_dst)
$ sudo python project-memoria-detector.py 192.168.3.1
يدعم البرنامج النصي فحص نطاقات عناوين IP. يمكنك إما تحديد شبكة فرعية لفحصها باستخدام تدوين CIDR، أو توفير ملف .txt يحتوي على مجموعة من عناوين IP لفحصها.
يمكن استخدام تدوين CIDR على النحو التالي (في هذا المثال، سيتم فحص عناوين IP من 192.168.3.1 إلى 192.168.3.254):
$ sudo python project-memoria-detector.py 192.168.3.0/24
يمكنك أيضاً استخدام ملف .txt لتحديد عناوين IP المطلوبة: يجب أن يبدأ كل عنوان IP في هذا الملف بسطر جديد. على سبيل المثال، يمكننا إنشاء ملف باسم input.txt بالمحتوى التالي:
$ cat input.txt
192.168.1.8
192.168.1.9
192.168.3.1
192.168.2.14
ثم يمكننا تشغيل البرنامج النصي كما يلي:
$ sudo python project-memoria-detector.py --in-file input.txt
يستخدم البرنامج النصي قيماً افتراضية للمنافذ لبصمات البروتوكولات المختلفة مثل SSH (22) و FTP (21) و HTTP (80). لتجاوز هذه القيم الافتراضية، يمكنك القيام بذلك عن طريق تعيين العلامات مثل:
$ sudo python project-memoria-detector.py -ip_dst 192.168.212.42 --tcp-port 80 --http-port 80 --ssh-port 22 --ftp-port 21 -i eth1
سيخرج البرنامج النصي التطابقات مع البصمات الفردية بالإضافة إلى درجة اليقين بين قوسين دائريين:
$ sudo python project-memoria-detector.py 192.168.6.42
192.168.6.42 is alive
ICMP => uIP/Contiki (High)
TCP => uIP/Contiki (Medium)
HTTP => uIP/Contiki (High)
SSH => Unknown (No match)
FTP => Unknown (No reply)
يمكن أن تكون درجة اليقين لبصمة معينة High أو Medium أو Low. يعني No match أنه لا يوجد تطابق مع أي بصمات معروفة، ويعني No reply أن منفذاً/خدمة معينة غير متوفرة.
حقوق الطبع والنشر (C) 2020 Forescout Technologies, Inc.
ترخيص البرنامج
يشير "البرنامج" إلى أي عمل قابل لحقوق الطبع والنشر مرخص بموجب هذا الترخيص. يُخاطب كل مرخص له بـ"أنت".
جميع الحقوق الممنوحة بموجب هذا الترخيص ممنوحة لمدة حقوق الطبع والنشر للبرنامج، وهي غير قابلة للإلغاء بشرط استيفاء الشروط المذكورة. يؤكد هذا الترخيص صراحةً على إذنك غير المحدود بتشغيل البرنامج غير المعدل للاستخدام الشخصي أو الحكومي أو التجاري أو غير الربحي. يُحظر عليك استخدام البرنامج في أعمال مشتقة لأغراض تجارية. يُحظر عليك تعديل البرنامج لاستخدامه في منتج أو خدمة تجارية، سواء بمفرده أو بالاشتراك مع كود آخر، سواء كان قابلاً للتنزيل أو يتم الوصول إليه كخدمة. تعني "الأعمال المشتقة" أي عمل، سواء في شكل مصدر أو كائن، يعتمد على (أو مشتق من) البرنامج وتمثل فيه المراجعات التحريرية أو التعليقات التوضيحية أو التفصيلات أو التعديلات الأخرى، ككل، عملاً أصلياً للتأليف.
يمكنك نقل نسخ حرفية من كود مصدر البرنامج كما تستلمها، بأي وسيلة، بشرط أن تنشر بشكل بارز ومناسب على كل نسخة إشعار حقوق الطبع والنشر المناسب؛ وتحتفظ بجميع الإشعارات التي تنص على أن هذا الترخيص ينطبق على الكود؛ وتحتفظ بجميع الإشعارات بعدم وجود أي ضمان؛ وتعطي جميع المستلمين نسخة من هذا الترخيص مع البرنامج؛ ولا تستفيد مالياً من بيع أو نقل البرنامج سواء بمفرده أو بالاشتراك مع كود آخر، تم تنزيله أو الوصول إليه كخدمة.
البرنامج مُقدم "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لن يكون المؤلفون أو أصحاب حقوق الطبع والنشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء تعاقدي أو تقصيري أو غير ذلك، تنشأ عن أو من أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى فيه.
لا يمنح هذا الترخيص الإذن لاستخدام الأسماء التجارية أو العلامات التجارية أو علامات الخدمة أو أسماء المنتجات الخاصة بالمرخص، إلا حسبما هو مطلوب للاستخدام المعقول والمعتاد في وصف أصل البرنامج وإعادة إنتاج محتوى إشعار حقوق الطبع والنشر.