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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
recog — التعرف على الأنماط للمضيفين والخدمات والمحتوى | Kitploit
أدوات/GitHubGitHub/rapid7/recog
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعتخطيط الشبكةتحليل الثغرات الأمنيةجمع المعلوماتأمن الويبالأدوات والمكونات
GitHubrapid7/recog

recog

التعرف على الأنماط للمضيفين والخدمات والمحتوى

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Recog: إطار عمل للتعرف

CI Workflow Verify Workflow

Recog هو إطار عمل لتحديد المنتجات والخدمات وأنظمة التشغيل والأجهزة من خلال مطابقة البصمات مع البيانات المسترجعة من مختلف أدوات الاستطلاع الشبكي. يجعل Recog من السهل استخراج معلومات مفيدة من لافتات خوادم الويب، وحقول وصف نظام SNMP، وغير ذلك الكثير.

Recog هو برنامج مفتوح المصدر، يرجى الاطلاع على ملف LICENSE لمزيد من المعلومات.

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

  1. تقسيم المستودع
    1. إعادة تسمية الفرع الافتراضي
  2. تطبيقات مكتبة Recog بلغات البرمجة
    1. تكافؤ الميزات
  3. التثبيت
  4. النضج
  5. البصمات
  6. اختبار المطابقات
    1. ftp_banners
    2. http_cookies
    3. http_servers
    4. favicons
    5. http_wwwauth
    6. tls_jarm
  7. المساهمة

تقسيم المستودع

في 31 مارس 2022، تم فصل محتوى Recog - ملفات بصمات XML والأدوات المساعدة - عن تطبيق مكتبة إطار عمل Recog. يحتوي مستودع Recog الأصلي الآن على محتوى Recog، بينما يحتوي مستودع Recog-Ruby على تطبيق لغة Ruby. يتم تضمين محتوى Recog في Recog-Ruby كوحدة فرعية تابعة لـ git (git submodule) وتكون متداخلة ضمن دليل recog. جميع إصدارات Recog gem بعد الانقسام والتي تساوي 3.0.0 أو أكبر سوف: 1. تحتوي على دليل بصمات XML ضمن دليل recog، و 2. تتضمن فقط أداة recog_match نظرًا لأن الأدوات الأخرى تركّز على إدارة البصمات.

^العودة إلى الأعلى

إعادة تسمية الفرع الافتراضي

إلى جانب تقسيم المستودع، تمت إعادة تسمية الفرع الافتراضي من master إلى main. أي نسخ مستنسخة (clones) تم إنشاؤها قبل هذه التغييرات يجب تحديثها يدويًا في بيئتك المحلية. إذا كان لديك fork، فانتقل إلى إعدادات fork واتبع التعليمات الخاصة بـ إعادة تسمية فرع لتغيير الفرع الافتراضي إلى main.

root@kitploit:~
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

بشكل اختياري، قم بتشغيل الأمر التالي لإزالة المراجع التتبعية لاسم الفرع القديم.

root@kitploit:~
# dry-run to confirm stale references that will be deleted before proceeding
git remote prune origin --dry-run
git remote prune origin

إذا كنت تستخدم سابقًا فرع التتبع العلوي upstream-master، فقم بتشغيل الأوامر التالية لإزالة الفرع القديم وإنشاء فرع تتبع علوي جديد.

root@kitploit:~
git branch -d upstream-master
git checkout -b upstream-main --track upstream/main

بشكل اختياري، قم بتشغيل الأمر التالي لإزالة المراجع التتبعية لاسم الفرع العلوي القديم.

root@kitploit:~
# dry-run to confirm stale references that will be deleted before proceeding
git remote prune upstream --dry-run
git remote prune upstream

^العودة إلى الأعلى

تطبيقات مكتبة Recog بلغات البرمجة

  • Ruby: rapid7/recog-ruby
  • Java: rapid7/recog-java
  • Go: runZeroInc/recog-go

^العودة إلى الأعلى

تكافؤ الميزات

^العودة إلى الأعلى

التثبيت

يتكون Recog من ملفات بصمات XML ومجموعة متنوعة من الأكواد البرمجية، معظمها بلغة Ruby، مما يسهل تطوير البصمات المضمنة واختبارها واستخدامها. لاستخدام كود Ruby المضمن، يلزم إصدار حديث من Ruby (2.31+) إلى جانب Rubygems وحزمة bundler. بمجرد توفر هذه المتطلبات، استخدم الأوامر التالية للحصول على أحدث كود مصدري وتثبيت أي تبعيات إضافية.

root@kitploit:~
$ git clone [email protected]:rapid7/recog.git
$ cd recog
$ bundle install

^العودة إلى الأعلى

النضج

يُرجى ملاحظة أنه بينما تُعد بصمات XML نفسها مستقرة جدًا ومختبرة جيدًا، فإن قاعدة كود Ruby لا تزال جديدة نسبيًا وقابلة للتغيير السريع. يرجى التواصل معنا (research[at]rapid7.com) قبل استخدام كود Recog في أي مشاريع إنتاجية.

^العودة إلى الأعلى

البصمات

يتم تخزين البصمات داخل Recog في ملفات XML، صُمم كل منها لمطابقة سلسلة استجابة أو حقل بروتوكول معين. على سبيل المثال، يمكن لملف ssh_banners.xml تحديد نظام التشغيل (os) والبائع (vendor) وأحيانًا المنتج العتادي (hardware product) من خلال مطابقة سلسلة لافتة برنامج SSH daemon الأولية.

يتكون ملف البصمات من مستند XML مثل التالي:

root@kitploit:~
<fingerprints matches="ssh.banner">
  <fingerprint pattern="^RomSShell_([\d\.]+)$">
    <description>Allegro RomSShell SSH</description>
    <example service.version="4.62">RomSShell_4.62</example>
    <param pos="0" name="service.vendor" value="Allegro"/>
    <param pos="0" name="service.product" value="RomSShell"/>
    <param pos="1" name="service.version"/>
  </fingerprint>
</fingerprints>

يجب أن يتكون السطر الأول دائمًا من تعريف إصدار XML. يجب أن يكون العنصر الأول دائمًا كتلة fingerprints مع سمة matches تشير إلى البيانات التي من المفترض أن يطابقها ملف البصمات هذا. عادةً ما تكون سمة matches بالشكل protocol.field.

داخل عنصر fingerprints يجب أن يكون هناك عنصر fingerprint واحد أو أكثر. يجب أن يحتوي كل fingerprint على سمة pattern، والتي تحتوي على التعبير النمطي (regular expression) الذي سيتم استخدامه للمطابقة مع البيانات. يمكن تحديد سمة اختيارية flags للتحكم في كيفية تفسير التعبير النمطي. راجع توثيق Recog لـ FLAG_MAP لمزيد من المعلومات.

داخل البصمة، يجب أن يحتوي عنصر description على سلسلة نصية مفهومة للبشر تصف هذه البصمة.

يجب أن يكون هناك عنصر example واحد على الأقل، ومع ذلك يُفضَّل وجود عناصر example متعددة. تُستخدم هذه العناصر كجزء من التغطية الاختبارية في rspec التي تتحقق من أن البيانات المقدمة تطابق التعبير النمطي المحدد. بالإضافة إلى ذلك، إذا كانت البصمة تستخدم عناصر param لاستخراج قيم الحقول من البيانات (كما هو موضح لاحقًا)، يمكنك إضافة هذه الاستخراجات المتوقعة كسمات لعناصر example. في المثال أعلاه، هذا:

root@kitploit:~
<example service.version="4.62">RomSShell_4.62</example>

يختبر أن RomSShell_4.62 يطابق التعبير النمطي المقدم وأن قيمة service.version هي 4.62.

يمكن ترميز سلسلة example بترميز base64 للسماح باستخدام أحرف غير قابلة للطباعة. ولإبلاغ Recog بذلك، تتم إضافة سمة _encoding بقيمة base64 إلى عنصر example. يمكن لف النص المشفر بـ Base64 الذي يزيد طوله عن 80 حرفًا عبر أسطر جديدة كما هو موضح أدناه لتسهيل القراءة.

root@kitploit:~
<example _encoding="base64">
  dGllczGEAAAAlQQWMS4yLjg0MC4xMTM1NTYuMS40LjgwMAQuZGF0YS5yZW1vdmVkLjCEAAAAK
  AQdZG9tYWluQ29udHJvbGxlckZ1bmN0aW9uYWxpdHkxhAAAAAMEATc=
</example>

بالإضافة إلى ذلك، يمكن وضع الأمثلة في دليل له نفس الاسم الأساسي لملف XML، وفي نفس الدليل الذي يوجد به ملف XML:

root@kitploit:~
xml/services.xml
xml/services/file1
xml/services/file2
...

يمكن بعد ذلك تحميلها باستخدام سمة _filename:

root@kitploit:~
<example _filename="file1"/>

هذا مفيد للأمثلة الطويلة.

تحتوي عناصر param على سمة pos، والتي تشير إلى حقل الالتقاط من pattern الذي يجب استخراجه، أو 0 لسلسلة ثابتة. سمة name هي المفتاح الذي سيتم الإبلاغ عنه في حالة المطابقة الناجحة، وستكون value إما سلسلة ثابتة لقيم pos التي تساوي 0 أو مفقودة وتُؤخذ من الحقل الملتقط.

تدعم سمة value استيفاء البيانات من الحقول الأخرى. غالبًا ما يكون هذا مفيدًا عند التقاط قيمة hw.product عبر regex وإعادة استخدام هذه القيمة في os.product.

فيما يلي مثال منhttp_servers.xml حيث يتم التقاط hw.product وإعادة استخدامه.

root@kitploit:~
  <fingerprint pattern="^Eltex (TAU-\d+[A-Z]*(?:\.IP)?)$">
    <description>Eltex TAU model VoIP gateway</description>
    <example hw.product="TAU-72">Eltex TAU-72</example>
    <example hw.product="TAU-1.IP">Eltex TAU-1.IP</example>
    <param pos="0" name="os.vendor" value="Eltex"/>
    <param pos="0" name="os.product" value="{hw.product} Firmware"/>
    <param pos="0" name="os.device" value="VoIP Gateway"/>
    <param pos="0" name="hw.vendor" value="Eltex"/>
    <param pos="1" name="hw.product"/>
    <param pos="0" name="hw.device" value="VoIP Gateway"/>
  </fingerprint>

هناك معالجة خاصة للسمات المؤقتة التي يبدأ اسمها بـ _tmp.. يمكن استخدام هذه السمات للاستيفاء ولكن لا يتم إخراجها في النتائج. يكون هذا مفيدًا عندما يكون اسم منتج معين غير متسق في اللافتات المختلفة، أو في تسويق البائع، أو مع قيم NIST عند محاولة توليد CPEs. في هذه الحالات، يمكن استخراج الأجزاء المفيدة من اللافتة وصياغة قيمة جديدة دون إرباك البيانات الصادرة عن المطابقة.

root@kitploit:~
<fingerprint pattern="^foo baz switchThing-(\d{4})$">
  <description>NetCorp NX series switches</description>
  <example hw.product="NX8200">foo baz switchThing-8200</example>
  <param pos="0" name="hw.vendor" value="NetCorp"/>
  <param pos="0" name="hw.product" value="NX{_tmp.001}"/>
  <param pos="2" name="_tmp.001"/>
</fingerprint>

لا يتم تتبع هذه السمات المؤقتة في identifiers/fields.txt.

^العودة إلى الأعلى

اختبار المطابقات

تستخدم الأمثلة التالية bin/recog_match، وهي أداة سطر أوامر Ruby بسيطة تستخدم بيانات بصمات Recog. المعالجة المسبقة مطلوبة عمومًا قبل تشغيل Recog، أي استخراج قيم ترويسات HTTP، وما إلى ذلك. يمكن العثور على جميع بيانات البصمات في xml/*.xml.

ftp_banners

قم ببصمة خوادم FTP استنادًا إلى استجابة لافتة الخادم بعد الاتصال:

root@kitploit:~
# Example plaintext input
echo -n '220 Microsoft FTP Service' | bin/recog_match xml/ftp_banners.xml -

# Example command using nmap
nmap -sV -script=banner -p 21 192.168.123.13 | grep --color=never '_banner' | cut -d: -f2- | bin/recog_match xml/ftp_banners.xml -

# Example output
MATCH: {"matched"=>"Microsoft FTP Server on Windows XP, 2003 or later without version", "service.vendor"=>"Microsoft", "service.product"=>"IIS", "service.family"=>"IIS", "service.cpe23"=>"cpe:/a:microsoft:iis:-", "os.vendor"=>"Microsoft", "os.family"=>"Windows", "os.product"=>"Windows", "os.cpe23"=>"cpe:/o:microsoft:windows:-", "host.name"=>"220", "service.protocol"=>"ftp", "fingerprint_db"=>"ftp.banner", "data"=>"220 Microsoft FTP Service"}

http_cookies

استخدام قيمة ترويسة HTTP Set-Cookie لبصمة خادم HTTP:

root@kitploit:~
# Example plaintext input
echo 'laravel_session=eyJ...etc..etc...%3D; expires=Mon, 13-Mar-2023 16:48:58 GMT; Max-Age=7200; path=/; httponly; samesite=lax' | bin/recog_match xml/http_cookies.xml -

# Example cURL command
curl --silent -I http://localhost:9001 | grep --color=never -i '^Set-Cookie:' | cut -d: -f2- | bin/recog_match xml/http_cookies.xml -

# Example output
MATCH: {"matched"=>"Laravel PHP web application framework", "service.vendor"=>"Laravel", "service.product"=>"Laravel", "service.cpe23"=>"cpe:/a:laravel:laravel:-", "service.protocol"=>"http", "fingerprint_db"=>"http_header.cookie", "data"=>"laravel_session=eyJ...etc..etc...%3D; expires=Mon, 13-Mar-2023 16:48:58 GMT; Max-Age=7200; path=/; httponly; samesite=lax"}

http_servers

استخدام قيمة ترويسة HTTP Server لبصمة خادم HTTP:

root@kitploit:~
# Example plaintext input
echo -n 'Apache/2.4.38 (Debian)' | bin/recog_match xml/http_servers.xml -

# Example cURL command
curl --silent -I http://localhost:9001 | grep --color=never -i '^Server:' | cut -d: -f2- | bin/recog_match xml/http_servers.xml -

# Example output
MATCH: {"matched"=>"Apache", "service.vendor"=>"Apache", "service.product"=>"HTTPD", "service.family"=>"Apache", "service.version"=>"2.4.38", "service.cpe23"=>"cpe:/a:apache:http_server:2.4.38", "apache.info"=>"(Debian)", "service.protocol"=>"http", "fingerprint_db"=>"http_header.server", "data"=>"Apache/2.4.38 (Debian)"}

favicons

استخدام md5sum لأيقونة الموقع (favicon) لتحديد خدمة قيد التشغيل:

root@kitploit:~
# Example plaintext input
echo -n fe22dd2bb09daccf58256611ac491469 | bin/recog_match xml/favicons.xml -

# Example cURL command
curl --silent http://localhost:8000/favicon.ico | md5sum | awk '{ print $1 }' | bin/recog_match xml/favicons.xml -

# Example output
MATCH: {"matched"=>"Drupal CMS", "service.vendor"=>"Drupal", "service.product"=>"CMS", "service.certainty"=>"0.5", "service.cpe23"=>"cpe:/a:drupal:drupal:-", "service.protocol"=>"", "fingerprint_db"=>"favicon.md5", "data"=>"fe22dd2bb09daccf58256611ac491469"}

http_wwwauth

استخدام قيمة ترويسة HTTP WWW-Authenticate لبصمة خادم HTTP:

root@kitploit:~
# Example plaintext input
echo -n 'Basic realm="monit"' | bin/recog_match xml/http_wwwauth.xml -

# Example cURL command
curl --silent -I http://localhost:9001 | grep --color=never -i '^WWW-Authenticate:' | cut -d: -f2- | bin/recog_match xml/http_wwwauth.xml -

# Example output
MATCH: {"matched"=>"Minot", "service.vendor"=>"Tildeslash", "service.product"=>"Monit", "service.cpe23"=>"cpe:/a:tildeslash:monit:-", "service.protocol"=>"http", "fingerprint_db"=>"http_header.wwwauth", "data"=>"Basic realm=\"monit\""}

tls_jarm

بصمة خوادم TLS استنادًا إلى استجابة الخادم لحزم TLS Client Hello العشر. البصمة مبنية على https://github.com/salesforce/jarm

root@kitploit:~
# Example plaintext input
echo -n 07d14d16d21d21d07c42d43d000000f50d155305214cf247147c43c0f1a823 | bin/recog_match xml/jarm.xml -

# Example command using Salesforce's JARM against a running Metasploit listener
python3 $code/jarm/jarm.py -p 8443 192.168.123.1 | grep --color=never 'JARM: ' | awk -F: '{ print $2 }' | bin/recog_match xml/tls_jarm.xml -

# Example output
MATCH: {"matched"=>"Metasploit listener", "service.vendor"=>"Rapid7", "service.product"=>"Metasploit", "service.cpe23"=>"cpe:/a:rapid7:metasploit:-", "service.protocol"=>"tls", "fingerprint_db"=>"tls.jarm", "data"=>"07d14d16d21d21d07c42d43d000000f50d155305214cf247147c43c0f1a823"}

المساهمة

سيقدّر مستخدمو ومشرفو Recog بشدة أي مساهمات يمكنك تقديمها للمشروع. للإرشادات والتعليمات، يرجى الاطلاع على CONTRIBUTING.MD

^العودة إلى الأعلى

تنزيل الأداة
الميزة ✨rapid7/recog-rubyrapid7/recog-javarunZeroInc/recog-go
أداة سطر الأوامر للتحقق من البصمات✅✅✅
أداة سطر الأوامر لمطابقة البصمات✅✅
يدعم الأمثلة المشفرة بـ base64✅✅✅
يدعم الأمثلة الخارجية المستندة إلى نظام الملفات✅✅✅
استيفاء معامل CPE في مطابقة البصمات✅✅✅