
أداة بصمة نشطة لخادم TLS ترسل حزم Client Hello مصممة خصيصًا لتوليد بصمات JARM فريدة لتحديد تكوينات الخادم، وتجميع البنية التحتية، وكشف الخوادم الضارة.
يرجى قراءة منشور المدونة الأولي عن JARM لمزيد من المعلومات.
JARM هي أداة بصمة خادم نشطة لطبقة النقل الآمنة (TLS).
يمكن استخدام بصمات JARM من أجل:
تمت أو تتم إضافة دعم JARM إلى:
SecurityTrails
Shodan
BinaryEdge
RiskIQ
Palo Alto Networks
Censys
360
python3 jarm.py [-h] [-i INPUT] [-p PORT] [-v] [-V] [-o OUTPUT] [-j] [-P PROXY] [domain/IP]
مثال:
% python3 jarm.py www.salesforce.com
Domain: www.salesforce.com
Resolved IP: 23.50.225.123
JARM: 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5
لاستخدامه مع Python 2 ستحتاج إلى وحدة ipaddress:
pip install -r requirements.txt
./jarm.sh <list> <output_file>
مثال:
% ./jarm.sh alexa500.txt jarm_alexa_500.csv
قبل تعلم كيفية عمل JARM، من المهم فهم كيفية عمل TLS. يُستخدم TLS وسابقه SSL لتشفير الاتصالات لكل من التطبيقات الشائعة مثل متصفحات الإنترنت، للحفاظ على أمان بياناتك، والبرامج الضارة، لتتمكن من الاختباء في الضوضاء. لبدء جلسة TLS، سيرسل العميل رسالة TLS Client Hello بعد المصافحة ثلاثية الاتجاهات TCP. تعتمد هذه الحزمة وطريقة إنشائها على الحزم والطرق المستخدمة عند بناء تطبيق العميل. سيرد الخادم، إذا كان يقبل اتصالات TLS، بحزمة TLS Server Hello.
تقوم خوادم TLS بصياغة حزمة Server Hello الخاصة بها بناءً على التفاصيل المستلمة في حزمة TLS Client Hello. يمكن أن تختلف الطريقة التي تتم بها صياغة Server Hello لأي Client Hello معين بناءً على كيفية بناء التطبيق أو الخادم، بما في ذلك:
تؤدي كل هذه العوامل إلى استجابة كل خادم TLS بطريقة فريدة. تجعل مجموعات العوامل من غير المحتمل أن يكون للخوادم المنشورة من قبل مؤسسات مختلفة نفس الاستجابة.
يعمل JARM عن طريق إرسال 10 حزم TLS Client Hello بنشاط إلى خادم TLS مستهدف والتقاط سمات محددة لاستجابات TLS Server Hello. يتم بعد ذلك تجزئة استجابات خادم TLS المجمعة بطريقة محددة لإنتاج بصمة JARM.
هذه ليست المرة الأولى التي نعمل فيها مع بصمات TLS. في عام 2017 قمنا بتطوير JA3/S، وهي طريقة بصمة سلبية لخادم/عميل TLS توجد الآن في معظم أدوات أمان الشبكة. ولكن بينما JA3/S سلبي، حيث يقوم ببصمة العملاء والخوادم عن طريق الاستماع إلى حركة مرور الشبكة، فإن JARM هو ماسح بصمة خادم نشط. يمكنك معرفة المزيد حول تفاوض TLS وبصمة JA3/S السلبية هنا.
تم تصميم حزم TLS Client Hello العشر في JARM بعناية لاستخراج استجابات فريدة من خوادم TLS. يرسل JARM إصدارات مختلفة من TLS، وأصفار تشفير، وامتدادات بترتيبات متفاوتة لجمع استجابات فريدة. هل يدعم الخادم TLS 1.3؟ هل سيتفاوض على TLS 1.3 مع أصفار 1.2؟ إذا قمنا بترتيب الأصفار من الأضعف إلى الأقوى، أي صفر سيختار؟ هذه هي أنواع الأسئلة غير المعتادة التي يطرحها JARM بشكل أساسي على الخادم لاستخراج أكثر الاستجابات تميزًا. يتم بعد ذلك تجزئة الاستجابات العشر لإنتاج بصمة JARM.
تجزئة بصمة JARM هي تجزئة ضبابية هجينة، تستخدم مزيجًا من خوارزمية تجزئة قابلة للعكس وأخرى غير قابلة للعكس لإنتاج بصمة مكونة من 62 حرفًا. تتكون الأحرف الثلاثون الأولى من الصفر وإصدار TLS الذي اختاره الخادم لكل من رسائل Client Hello العشر المرسلة. يشير "000" إلى أن الخادم رفض التفاوض مع رسالة Client Hello تلك. الأحرف الـ 32 المتبقية هي تجزئة SHA256 مقتطعة للامتدادات التراكمية التي أرسلها الخادم، مع تجاهل بيانات شهادة x509. عند مقارنة بصمات JARM، إذا كانت الأحرف الثلاثون الأولى متطابقة ولكن الـ 32 الأخيرة مختلفة، فهذا يعني أن الخوادم لها تكوينات متشابهة جدًا، وتقبل نفس الإصدارات والأصفار، وإن لم تكن متطابقة تمامًا نظرًا لاختلاف الامتدادات.
بعد تلقي كل رسالة TLS server hello، يغلق JARM الاتصال بلطف باستخدام FIN لتجنب ترك المقابس مفتوحة.
من المهم ملاحظة أن JARM هي دالة بصمة عالية الأداء ولا ينبغي اعتبارها أو الخلط بينها وبين دالة تشفير آمنة. لقد صممنا بصمة JARM لتكون قابلة للاستهلاك البشري بقدر ما هي قابلة للاستهلاك الآلي. هذا يعني أنها صغيرة بما يكفي لفحصها بالعين ومشاركتها وتغريدها مع مساحة كافية للتفاصيل السياقية.
يتم تكوين خوادم التحكم والأوامر (C2) للبرامج الضارة والخوادم الضارة بواسطة منشئيها مثل أي خادم آخر ثم يتم نشرها عبر أسطولها. لذلك تميل هذه إلى إنتاج بصمات JARM فريدة. فيما يلي أمثلة على البرامج الضارة والأدوات الهجومية الشائعة وتداخل JARM مع Alexa Top 1M (حتى أكتوبر 2020):
مع عدم وجود تداخل يذكر مع مواقع Alexa Top 1M، يجب أن يكون من غير المحتمل أن يتصل مضيف داخل مؤسسة بخادم بهذه البصمات JARM.
John Althouse - الفكرة الأصلية، المفهوم وقائد المشروع
Andrew Smart - المفهوم والاختبار
RJ Nunnally - البرمجة والاختبار
Mike Brady - البرمجة والاختبار
أعيدت كتابتها بلغة Python للاستخدام التشغيلي بواسطة Caleb Yu
| النطاق | JARM |
|---|
| salesforce.com | 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5 |
| force.com | 2ad2ad0002ad2ad00042d42d00000069d641f34fe76acdc05c40262f8815e5 |
| google.com | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d |
| youtube.com | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d |
| gmail.com | 27d40d40d29d40d1dc42d43d00041d4689ee210389f4f6b4b5b1b93f92252d |
| facebook.com | 27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9 |
| instagram.com | 27d27d27d29d27d1dc41d43d00041d741011a7be03d7498e0df05581db08a9 |
| oculus.com | 29d29d20d29d29d21c41d43d00041d741011a7be03d7498e0df05581db08a9 |
| خادم C2 ضار | بصمة JARM | التداخل مع Alexa Top 1M |
|---|
| Trickbot | 22b22b09b22b22b22b22b22b22b22b352842cd5d6b0278445702035e06875c | 0 |
| AsyncRAT | 1dd40d40d00040d1dc1dd40d1dd40d3df2d6a0c2caaa0dc59908f0d3602943 | 0 |
| Metasploit | 07d14d16d21d21d00042d43d000000aa99ce74e2c6d013c745aa52b5cc042d | 0 |
| Cobalt Strike | 07d14d16d21d21d07c42d41d00041d24a458a375eef0c576d23a7bab9a9fb1 | 0 |
| Merlin C2 | 29d21b20d29d29d21c41d21b21b41d494e0df9532e75299f15ba73156cee38 | 303 |