Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
hfinger — يُنتج بصمات فريدة لطلبات HTTP الضارة من ملفات pcap باستخدام Tshark، مما يتيح تحديد وتجميع عائلات البرامج الضارة من خلال تحليل بنية الطلب والرؤوس وخصائص الحمولة. | Kitploit
أدوات/GitHubGitHub/cert-polska/hfinger
جمع المعلوماتتحليل البرمجيات الخبيثةاستخبارات التهديدات
GitHubcert-polska/hfinger

hfinger

يُنتج بصمات فريدة لطلبات HTTP الضارة من ملفات pcap باستخدام Tshark، مما يتيح تحديد وتجميع عائلات البرامج الضارة من خلال تحليل بنية الطلب والرؤوس وخصائص الحمولة.

عرض المستودع
14710منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Hfinger - بصمة طلبات HTTP للبرامج الضارة

أداة لبصمة طلبات HTTP للبرامج الضارة. مبنية على Tshark ومكتوبة بلغة Python3. مرحلة نموذج أولي عملي :-)

هدفها الرئيسي هو تقديم تمثيلات فريدة (بصمات) لطلبات البرامج الضارة، مما يساعد في التعرف عليها. فريد يعني هنا أن كل بصمة يجب أن تُرى فقط في عائلة واحدة معينة من البرامج الضارة، ولكن يمكن لعائلة واحدة أن تحتوي على بصمات متعددة. يمثل Hfinger الطلب بشكل أقصر من طباعة الطلب بالكامل، لكنه يظل قابلاً للتفسير البشري.

يمكن استخدام Hfinger في تحليل البرامج الضارة يدويًا وأيضًا في أنظمة الصندوق الرملي أو أنظمة SIEM. البصمات المولدة مفيدة لتجميع الطلبات، وتحديد الطلبات لعائلات معينة من البرامج الضارة، وتحديد العمليات المختلفة لعائلة واحدة، أو اكتشاف الطلبات الخبيثة غير المعروفة التي تتجاهلها أنظمة الأمان الأخرى ولكنها تشترك في البصمة.

ورقة أكاديمية ترافق العمل على هذه الأداة، وتصف، على سبيل المثال، الدافع وراء اختيارات التصميم، وتقييم الأداة مقارنة بـ p0f وFATT وMercury.

جدول المحتويات

  1. الفكرة
  2. التثبيت
  3. الاستخدام
  4. إنشاء البصمة
  5. أوضاع التقرير

الفكرة

الافتراض الأساسي لهذا المشروع هو أن طلبات HTTP لعائلات البرامج الضارة المختلفة فريدة إلى حد ما، لذا يمكن بصمتها لتوفير نوع من التعريف. يحتفظ Hfinger بمعلومات حول بنية وقيم بعض الرؤوس لتوفير وسائل لمزيد من التحليل. على سبيل المثال، تجميع الطلبات المتشابهة - في هذه اللحظة، لا يزال العمل قيد التقدم.

بعد تحليل طلبات HTTP ورؤوسها للبرامج الضارة، حددنا بعض أجزاء الطلبات على أنها الأكثر تميزًا. وتشمل هذه:

  • طريقة الطلب
  • إصدار البروتوكول
  • ترتيب الرؤوس
  • قيم الرؤوس الشائعة
  • طول الحمولة، والإنتروبيا، ووجود أحرف غير ASCII

بالإضافة إلى ذلك، تم أيضًا أخذ بعض الميزات القياسية لعنوان URL للطلب في الاعتبار. تم ترجمة كل هذه الأجزاء إلى مجموعة من الميزات، موصوفة بالتفصيل هنا.

تُترجم الميزات المذكورة أعلاه إلى تمثيل بطول متغير، وهو البصمة الفعلية. اعتمادًا على وضع التقرير، يتم استخدام ميزات مختلفة لبصمة الطلبات. مزيد من المعلومات حول هذه الأوضاع معروضة أدناه. سيتم وصف عملية اختيار الميزة في الورقة الأكاديمية القادمة.

التثبيت

الحد الأدنى من المتطلبات اللازمة قبل التثبيت:

  • Python >= 3.3,
  • Tshark >= 2.2.0.

التثبيت متاح من PyPI:

pip install hfinger

تم اختبار Hfinger على Xubuntu 22.04 LTS مع حزمة tshark في الإصدار 3.6.2، ولكن يجب أن يعمل مع الإصدارات الأقدم مثل 2.6.10 على Xubuntu 18.04 أو 3.2.3 على Xubuntu 20.04.

يرجى ملاحظة أنه كما هو الحال مع أي PoC، يجب تشغيل Hfinger في بيئة منفصلة، على الأقل باستخدام بيئة Python الافتراضية. لا يتم تغطية إعدادها هنا، ولكن يمكنك تجربة هذا البرنامج التعليمي.

الاستخدام

بعد التثبيت، يمكنك استدعاء الأداة مباشرة من سطر الأوامر باستخدام hfinger أو كوحدة Python باستخدام python -m hfinger.

على سبيل المثال:

root@kitploit:~
foo@bar:~$ hfinger -f /tmp/test.pcap
[{"epoch_time": "1614098832.205385000", "ip_src": "127.0.0.1", "ip_dst": "127.0.0.1", "port_src": "53664", "port_dst": "8080", "fingerprint": "2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4"}]

يمكن عرض المساعدة باستخدام المفاتيح القصيرة -h أو الطويلة --help:

root@kitploit:~
usage: hfinger [-h] (-f FILE | -d DIR) [-o output_path] [-m {0,1,2,3,4}] [-v]
               [-l LOGFILE]

Hfinger - fingerprinting malware HTTP requests stored in pcap files

optional arguments:
  -h, --help            show this help message and exit
  -f FILE, --file FILE  Read a single pcap file
  -d DIR, --directory DIR
                        Read pcap files from the directory DIR
  -o output_path, --output-path output_path
                        Path to the output directory
  -m {0,1,2,3,4}, --mode {0,1,2,3,4}
                        Fingerprint report mode. 
                        0 - similar number of collisions and fingerprints as mode 2, but using fewer features, 
                        1 - representation of all designed features, but a little more collisions than modes 0, 2, and 4, 
                        2 - optimal (the default mode), 
                        3 - the lowest number of generated fingerprints, but the highest number of collisions, 
                        4 - the highest fingerprint entropy, but slightly more fingerprints than modes 0-2
  -v, --verbose         Report information about non-standard values in the request 
                        (e.g., non-ASCII characters, no CRLF tags, values not present in the configuration list). 
                        Without --logfile (-l) will print to the standard error.
  -l LOGFILE, --logfile LOGFILE
                        Output logfile in the verbose mode. Implies -v or --verbose switch.

يجب توفير مسار إلى ملف pcap (-f)، أو دليل (-d) يحتوي على ملفات pcap. المخرجات بتنسيق JSON. ستتم طباعتها إلى المخرجات القياسية أو إلى الدليل المقدم (-o) باستخدام اسم الملف المصدر. على سبيل المثال، مخرجات الأمر:

hfinger -f example.pcap -o /tmp/pcap

سيتم حفظه في:

/tmp/pcap/example.pcap.json

يمكن استخدام وضع التقرير -m/--mode لتغيير وضع التقرير الافتراضي عن طريق توفير عدد صحيح في النطاق 0-4. تختلف الأوضاع في ميزات الطلب الممثلة أو طرق التقريب. تم اختيار الوضع الافتراضي (2) من قبلنا لتمثيل جميع الميزات التي تُستخدم عادةً أثناء تحليل الطلبات، ولكنه يوفر أيضًا عددًا منخفضًا من التصادمات والبصمات المولدة. مع الأوضاع الأخرى، يمكنك تحقيق أهداف مختلفة. على سبيل المثال، في الوضع 3 تحصل على عدد أقل من البصمات المولدة ولكن فرصة أعلى للتصادم بين عائلات البرامج الضارة. إذا كنت غير متأكد، لست بحاجة لتغيير أي شيء. مزيد من المعلومات حول أوضاع التقرير هنا.

بدءًا من الإصدار 0.2.1، أصبح Hfinger أقل تفصيلاً. يجب استخدام -v/--verbose إذا كنت تريد تلقي معلومات حول القيم غير القياسية للرؤوس التي تمت مواجهتها، والأحرف غير ASCII في الجزء غير الحمولة من الطلب، وغياب علامات CRLF (\r\n\r\n)، ومشاكل أخرى في الطلبات المحللة التي ليست أخطاء تطبيق. عند مواجهة أي من هذه المشكلات في الوضع التفصيلي، سيتم طباعتها إلى مخرجات الخطأ القياسية. يمكنك أيضًا حفظ السجل في موقع محدد باستخدام مفتاح -l/--log (وهو يتضمن -v/--verbose). سيتم إلحاق بيانات السجل بملف السجل.

استخدام hfinger في تطبيق Python

بدءًا من الإصدار 0.2.0، يدعم Hfinger الاستيراد إلى تطبيقات Python الأخرى. لاستخدامها في تطبيقك، ما عليك سوى استيراد دالة hfinger_analyze من hfinger.analysis واستدعائها بمسار ملف pcap ووضع التقرير. النتيجة المرجعة هي قائمة من القواميس (dicts) بنتائج البصمة.

على سبيل المثال:

root@kitploit:~
from hfinger.analysis import hfinger_analyze

pcap_path = "SPECIFY_PCAP_PATH_HERE"
reporting_mode = 4
print(hfinger_analyze(pcap_path, reporting_mode))

بدءًا من الإصدار 0.2.1، يستخدم Hfinger وحدة logging لتسجيل المعلومات حول القيم غير القياسية للرؤوس التي تمت مواجهتها، والأحرف غير ASCII في الجزء غير الحمولة من الطلب، وغياب علامات CRLF (\r\n\r\n)، ومشاكل أخرى في الطلبات المحللة التي ليست أخطاء تطبيق. يقوم Hfinger بإنشاء مسجل خاص به باستخدام الاسم hfinger، ولكن بدون تكوين مسبق، يتم تجاهل معلومات السجل عمليًا. إذا كنت ترغب في تلقي معلومات السجل هذه، قبل استدعاء hfinger_analyze، يجب تكوين مسجل hfinger، وتعيين مستوى السجل إلى logging.INFO، وتكوين معالج السجل وفقًا لاحتياجاتك، وإضافته إلى المسجل. مزيد من المعلومات متوفرة في سلسلة توثيق (docstring) دالة hfinger_analyze.

إنشاء البصمة

تعتمد البصمة على الميزات المستخرجة من الطلب. استخدام ميزات معينة من القائمة الكاملة يعتمد على وضع التقرير المختار من قائمة محددة مسبقًا (مزيد من المعلومات حول أوضاع التقرير هنا). يمثل الشكل أدناه إنشاء بصمة نموذجية في وضع التقرير الافتراضي.

مثال

يتم تحليل ثلاثة أجزاء من الطلب لاستخراج المعلومات: URI، وبنية الرؤوس (بما في ذلك الطريقة وإصدار البروتوكول)، والحمولة. يتم فصل الميزات الخاصة للبصمة باستخدام | (خط عمودي). البصمة النهائية المولدة لطلب POST من المثال هي:

2|3|1|php|0.6|PO|1|us-ag,ac,ac-en,ho,co,co-ty,co-le|us-ag:f452d7a9/ac:as-as/ac-en:id/co:Ke-Al/co-ty:te-pl|A|4|1.4

يتم وصف إنشاء الميزات أدناه بترتيب ظهورها في البصمة.

أولاً، يتم استخراج ميزات URI:

  • طول URI ممثلًا كلوغاريتم أساس 10 للطول، مقربًا إلى عدد صحيح، (في المثال، طول URI هو 43 حرفًا، لذا log10(43)≈2)،
  • عدد الدلائل، (في المثال هناك 3 دلائل)،
  • متوسط طول الدليل، ممثلًا كلوغاريتم أساس 10 لمتوسط الطول الفعلي للدليل، مقربًا إلى عدد صحيح، (في المثال هناك ثلاثة دلائل بطول إجمالي 20 حرفًا (6+6+8)، لذا log10(20/3)≈1)،
  • امتداد الملف المطلوب، ولكن فقط إذا كان موجودًا في قائمة الامتدادات المعروفة في hfinger/configs/extensions.txt،
  • متوسط طول القيمة ممثلًا كلوغاريتم أساس 10 لمتوسط طول القيمة الفعلي، مقربًا إلى منزلة عشرية واحدة، (في المثال قيمتان لهما نفس الطول 4 أحرف، وهو ما يساوي بوضوح 4 أحرف، وlog10(4)≈0.6).

ثانيًا، يتم تحليل ميزات بنية الرؤوس:

  • طريقة الطلب مشفرة كأول حرفين من الطريقة (PO)،
  • إصدار البروتوكول مشفر كعدد صحيح (1 للإصدار 1.1، 0 للإصدار 1.0، و 9 للإصدار 0.9)،
  • ترتيب الرؤوس،
  • والرؤوس الشائعة وقيمها.

لتمثيل ترتيب الرؤوس في الطلب، يتم ترميز اسم كل رأس وفقًا للمخطط في hfinger/configs/headerslow.json، على سبيل المثال، يتم ترميز رأس User-Agent كـ us-ag. يتم فصل الأسماء المشفرة بـ ,. إذا كان اسم الرأس لا يبدأ بحرف كبير (أو أي من أجزائه عند تحليل الرؤوس المركبة مثل Accept-Encoding)، فإن التمثيل المشفر يسبق بـ !. إذا لم يكن اسم الرأس موجودًا في قائمة الرؤوس المعروفة، يتم تجزئته باستخدام تجزئة FNV1a، ويتم استخدام التجزئة كترميز.

عند تحليل الرؤوس الشائعة، يتم التحقق مما إذا كانت موجودة في الطلب. هذه الرؤوس هي:

  • Connection
  • Accept-Encoding
  • Content-Encoding
  • Cache-Control
  • TE
  • Accept-Charset
  • Content-Type
  • Accept
  • Accept-Language
  • User-Agent

عند العثور على الرأس في الطلب، يتم التحقق من قيمته مقابل جدول القيم النموذجية لإنشاء أزواج من تمثيل_اسم_الرأس:تمثيل_القيمة. يتم ترميز اسم الرأس وفقًا للمخطط في hfinger/configs/headerslow.json (كما هو معروض سابقًا)، ويتم ترميز القيمة وفقًا للمخطط المخزن في دليل hfinger/configs أو ملف configs.py، اعتمادًا على الرأس. في المثال أعلاه، يتم ترميز Accept كـ ac وقيمته */* كـ as-as (asterisk-asterisk)، مما يعطي ac:as-as. يتم إدراج الأزواج في البصمة بترتيب ظهورها في الطلب ويتم الفصل بينها باستخدام /. إذا تعذر العثور على قيمة الرأس في جدول الترميز، يتم تجزئتها باستخدام تجزئة FNV1a. إذا كانت قيمة الرأس مكونة من قيم متعددة، يتم تقسيمها إلى رموز لتوفير قائمة من القيم مفصولة بـ ,، على سبيل المثال، Accept: */*, text/* ستعطي . ومع ذلك، في هذه المرحلة من التطوير، إذا كانت قيمة الرأس تحتوي على علامة "قيمة الجودة" ()، فسيتم ترميز القيمة بأكملها باستخدام تجزئة FNV1a الخاصة بها. أخيرًا، يتم ترميز قيم رأسي و مباشرة باستخدام تجزئات FNV1a الخاصة بهما.

أخيرًا، في ميزات الحمولة:

  • وجود أحرف غير ASCII، ممثلة بالحرف N، وبـ A بخلاف ذلك،
  • إنتروبيا شانون للحمولة، مقربة إلى عدد صحيح،
  • وطول الحمولة، ممثلًا كلوغاريتم أساس 10 لطول الحمولة الفعلي، مقربًا إلى منزلة عشرية واحدة.

أوضاع التقرير

يعمل Hfinger في خمسة أوضاع تقرير، تختلف في الميزات الممثلة في البصمة، وبالتالي المعلومات المستخرجة من الطلبات. هذه هي (مع الرقم المستخدم في تكوين الأداة):

  • الوضع 0 - إنتاج عدد مماثل من التصادمات والبصمات كالوضع 2، ولكن باستخدام ميزات أقل،
  • الوضع 1 - تمثيل جميع الميزات المصممة، ولكن إنتاج تصادمات أكثر قليلاً من الأوضاع 0 و 2 و 4،
  • الوضع 2 - الأمثل (الوضع الافتراضي)، يمثل جميع الميزات التي تُستخدم عادةً أثناء تحليل الطلبات، ولكنه يوفر أيضًا عددًا منخفضًا من التصادمات والبصمات المولدة،
  • الوضع 3 - إنتاج أقل عدد من البصمات المولدة من جميع الأوضاع، ولكن تحقيق أعلى عدد من التصادمات،
  • الوضع 4 - تقديم أعلى إنتروبيا للبصمة، ولكنه يولد بصمات أكثر قليلاً من الأوضاع 0-2.

تم اختيار الأوضاع من أجل تحسين قدرات Hfinger على التعرف الفريد على عائلات البرامج الضارة مقابل عدد البصمات المولدة. تقدم الأوضاع 0 و 2 و 4 عددًا مماثلاً من التصادمات بين عائلات البرامج الضارة، ومع ذلك، يولد الوضع 4 بصمات أكثر قليلاً من الاثنين الآخرين. يمثل الوضع 2 ميزات طلب أكثر من الوضع 0 مع عدد مماثل من البصمات المولدة والتصادمات. الوضع 1 هو الوحيد الذي يمثل جميع الميزات المصممة، لكنه يزيد عدد التصادمات بحوالي مرتين مقارنة بالأوضاع 0 و 1 و 4. ينتج الوضع 3 بصمات أقل بمقدار مرتين على الأقل من الأوضاع الأخرى، لكنه يقدم حوالي تسعة أضعاف التصادمات. وصف جميع الميزات المصممة هنا.

تتكون الأوضاع من الميزات (بترتيب الظهور في البصمة):

  • الوضع 0:
    • عدد الدلائل،
    • متوسط طول الدليل ممثلًا كعدد صحيح،
    • امتداد الملف المطلوب،
    • متوسط طول القيمة ممثلًا كعدد عشري،
    • ترتيب الرؤوس،
    • الرؤوس الشائعة وقيمها،
    • طول الحمولة ممثلًا كعدد عشري.
  • الوضع 1:
    • طول URI ممثلًا كعدد صحيح،
    • عدد الدلائل،
    • متوسط طول الدليل ممثلًا كعدد صحيح،
    • امتداد الملف المطلوب،
    • طول المتغير ممثلًا كعدد صحيح،
    • عدد المتغيرات،
    • متوسط طول القيمة ممثلًا كعدد صحيح،
    • طريقة الطلب،
    • إصدار البروتوكول،
    • ترتيب الرؤوس،
    • الرؤوس الشائعة وقيمها،
    • وجود أحرف غير ASCII،
    • إنتروبيا الحمولة ممثلة كعدد صحيح،
    • طول الحمولة ممثلًا كعدد صحيح.
  • الوضع 2:
    • طول URI ممثلًا كعدد صحيح،
    • عدد الدلائل،
    • متوسط طول الدليل ممثلًا كعدد صحيح،
    • امتداد الملف المطلوب،
    • متوسط طول القيمة ممثلًا كعدد عشري،
    • طريقة الطلب،
    • إصدار البروتوكول،
    • ترتيب الرؤوس،
    • الرؤوس الشائعة وقيمها،
    • وجود أحرف غير ASCII،
    • إنتروبيا الحمولة ممثلة كعدد صحيح،
    • طول الحمولة ممثلًا كعدد عشري.
  • الوضع 3:
    • طول URI ممثلًا كعدد صحيح،
    • متوسط طول الدليل ممثلًا كعدد صحيح،
    • امتداد الملف المطلوب،
    • متوسط طول القيمة ممثلًا كعدد صحيح،
    • ترتيب الرؤوس.
  • الوضع 4:
    • طول URI ممثلًا كعدد عشري،
    • عدد الدلائل،
    • متوسط طول الدليل ممثلًا كعدد عشري،
    • امتداد الملف المطلوب،
    • طول المتغير ممثلًا كعدد عشري،
    • متوسط طول القيمة ممثلًا كعدد عشري،

ممول جزئيًا من مرفق توصيل أوروبا من قبل الاتحاد الأوروبي

تنزيل الأداة
ac:as-as,te-as
q=
User-Agent
Accept-Language
  • طريقة الطلب،
  • إصدار البروتوكول،
  • ترتيب الرؤوس،
  • الرؤوس الشائعة وقيمها،
  • وجود أحرف غير ASCII،
  • إنتروبيا الحمولة ممثلة كعدد عشري،
  • طول الحمولة ممثلًا كعدد عشري.