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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
HTTP-Basma — في مجال الأمن السيبراني، يُعد التحديد والتحليل الدقيق لخوادم الويب أمرًا بالغ الأهمية لكشف التهديدات وتقييم الثغرات ورسم خرائط الشبكات. نقدم لكم HTTP-Basma، وهي خوارزمية بصمة نشطة مبتكرة تكشف عن ملفات تعريف فريدة للخوادم من خلال نهج متعدد الطبقات. | Kitploit
أدوات/GitHubGitHub/netomize/http-basma
الاستطلاعتخطيط الشبكةتحليل الثغرات الأمنيةجمع المعلوماتأمن الويبتحليل البرمجيات الخبيثةالقيادة والسيطرةاستخبارات التهديداتالفريق الأحمر
GitHubnetomize/http-basma

HTTP-Basma

في مجال الأمن السيبراني، يُعد التحديد والتحليل الدقيق لخوادم الويب أمرًا بالغ الأهمية لكشف التهديدات وتقييم الثغرات ورسم خرائط الشبكات. نقدم لكم HTTP-Basma، وهي خوارزمية بصمة نشطة مبتكرة تكشف عن ملفات تعريف فريدة للخوادم من خلال نهج متعدد الطبقات.

3منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودعالموقع الإلكتروني
HTTP-Basma Logo

البصمة التكيفية: نهج HTTP-Basma متعدد المراحل للتمييز الدقيق بين الخوادم

HTTP-Basma متاح على https://httpbasma.netomize.ca/

مقدمة

في مجال الأمن السيبراني، يُعد التحديد الدقيق وتوصيف خوادم الويب أمرًا بالغ الأهمية لكشف التهديدات، وتقييم الثغرات الأمنية، ورسم خرائط الشبكات. نقدم HTTP-Basma، وهي خوارزمية بصمة نشطة جديدة تكشف ملفات تعريف فريدة للخوادم من خلال نهج متعدد الطبقات، مما يعالج هذا التحدي.

الميزات الرئيسية: طلبات مصممة، استجابات كاشفة: يرسل HTTP-Basma 8 طلبات HTTP مصممة بدقة، مما يستحضر استجابات مميزة تعكس تكوينات الخادم. تجزئة مزدوجة للمرونة. تولد الخوارزمية تجزئتين:

  • تجزئة ضبابية بطول 38 بايت، "verbosus"، قابلة للعكس
  • تجزئة أحادية الاتجاه بطول 16 بايت، "pacto"، مشتقة من verbosus، لتعزيز الخصوصية والأمان

التجميع والاصطياد: تمكن هذه التجزئات من تجميع الخوادم، وتحديد الخوادم الفريدة والمتشابهة، وتعقب الجهات الخبيثة بثقة عالية.

تصميم معياري للتوسع: تعزز بنية الخوارزمية إضافة متغيرات تجزئة جديدة، مما يشجع التعاون والقدرة على التكيف.

في هذه الورقة، نستعرض أولاً الأعمال البارزة القائمة حول بصمة HTTP ثم نستكشف وظيفة الخوارزمية وتصميمها وبنيتها ونتائجها. بالإضافة إلى ذلك، سنعرض نتائج مقنعة من مسح أفضل مليون موقع Majestic، بما في ذلك تحديد وتجميع خوادم HTTP الخاصة بـ C&C لعائلات برمجيات خبيثة متعددة.


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

الطلبات التي ترسلها هي من الأنواع التالية:

  1. P1 - GET عادي - طلب صالح
  2. P2 - GET بإصدار HTTP غير صالح
  3. P3 - GET لمورد عشوائي
  4. P4 - فعل عشوائي
  5. P5 - get بفعل أحرف صغيرة
  6. P6 - طلب GET - Accept-Encoding - كامل
  7. P7 - طلب GET - Accept-Encoding - أقل
  8. P8 - طلب OPTIONS

بعد كل طلب، يتم تحليل استجابة الخادم لاستخراج رؤوس وقيم محددة. تخضع هذه البيانات المستخرجة لمزيد من المعالجة، بما في ذلك التشريح والترميز، لتوليد بصمة قابلة للعكس.

التفاصيل التقنية الكاملة لكيفية عمل الخوارزمية موجودة في الورقة المرفقة.

تعامل فلسفة التصميم المعياري هذه بصمة كل طلب ككتلة بناء، مما يسمح بإعادة هيكلة أنيقة، مع إمكانية إضافة وطرح بصمة أي طلب.

عينات من البصمات:

CobaltStrike

root@kitploit:~
  - بصمة verbosus: 011420958a0014514bd5221420958a221420958a221420958a2200001420958a22000000001f
  - بصمة pacto: 02464ae8b7d86f82c9918e2c2b9d6b91
  - ملاحظة: معدل الإيجابيات الكاذبة (72/986,910)

Havoc

root@kitploit:~
  - بصمة verbosus: 01142494d60914514bd522142494d6221420958a701420958a220000140e04922032c37f1609
  - بصمة pacto: 020769322f3d94ac2f258ddf5ce08502
  - ملاحظة-1: معدل الإيجابيات الكاذبة 0
  - ملاحظة-2: tevedadav.site/43.209.165.126:443 (TLS)
    - عينة-(sha-256): 9aa1dec8dd12f8adc7fc1274e1958f3613450109ee8b4ec6442a0fcf06df0972

BruteRatel

root@kitploit:~
  - بصمة verbosus: 01140a85e40014512f3612140a85e422140a85e422140a85e4220000140a85e4220000000001
  - بصمة pacto: 0207292309a7a7e798e417d69df5f2a5
  - ملاحظة: معدل الإيجابيات الكاذبة (73/986,910)

Google

root@kitploit:~
  - بصمة verbosus: 01140a85e4001320958a22142494d62214254c5e2214254c5e22080014254c5e220000000000
  - بصمة pacto: 0202be780e1eaae0eaa6184e20c909b6
  - ملاحظة: معدل الإيجابيات الكاذبة (4/986,910)

YouTube

root@kitploit:~
  - بصمة verbosus: 01140a85e4011320958a22142494d67214254c5e2214254c5e22080014254c5e220000000000
  - بصمة pacto: 02cc5be6d05192e17de041538508bc22
  - ملاحظة: معدل الإيجابيات الكاذبة (38/986,910)

X

root@kitploit:~
  - بصمة verbosus: 01140a85e40914514bd522140a85e4721420958a701420958a220800140a85e4720000001609
  - بصمة pacto: 0221b4e46bbd0e5c037f5a852ca3fdc0
  - ملاحظة: معدل الإيجابيات الكاذبة (6/986,910)

أداة HTTP-Basma

HTTP-Basma هي أداة بلغة C++ قمت بتطويرها لعرض الجدوى العملية لهذه الخوارزمية. تستفيد من مكتبة Chilkat لجميع تفاعلات مقابس HTTP وتستخدم فئات داعمة أخرى داخل المكتبة. بالإضافة إلى ذلك، تتضمن الأداة ميزة تفكيك يمكنها تشريح وعكس التجزئة الضبابية verbosus، وإخراج كائن JSON شامل، ووظيفة مقارنة تخرج الاختلافات بين بصمتي verbosus.

لاحظ أن بعض مخرجات الأداة قد تستخدم أرقام استطلاع مختلفة قليلاً، لكن الترتيب الأساسي يظل ثابتًا: P1->P1, P2->P2, P3->P3, P4->P4, P->P5, P6->P6F, P7->P6L, P8->P7a.

خيارات الأداة

انقر للتوسيع
root@kitploit:~
Usage:
  HTTP-Basma [OPTION...]

  -d, --domain arg         domains/IPs (you may query multiple domains, comma separated)
  -p, --port arg           port number
  -s, --ssl                does the HTTP connection have to be carried over SSL/TLS?
  -q, --qpath              check domain with url path included (not recommended)
  -w, --redirect           enable/disable HTTP redirects. If disabled/false, only the next redirect is followed,
                           otherwise, all redirects are followed (default: true)
  -t, --ctimeout arg       socket connection timeout value in seconds (default: 1)
  -g, --rtimeout arg       socket read (from the server) timeout value in seconds (default: 1)
  -e, --sleep arg          the duration (in milliseconds) to pause between each request (default: 100)
  -x, --proxy arg          proxy config: <"socks4|socks5|http">,<domain>,<port>,<bool:direct_tls>,<login>,<pass>
                                         all values are comma-separated. <direct_tls> is ignored with a non-HTTP proxy
  -f, --file arg           file with list of domains/IPs (requires "-c/--csv" or "-j/--json")
  -P, --parallel           Scan list of domains passed via the "-f/--file" option in parallel
  -c, --csv                save to csv file; if the option 'n' is not specified, the CSV filename will be auto
                           generated
  -n, --csvfile arg        name of the CSV file
  -j, --json               save to json file; if the option 'l' is not specified, the JSON filename will be auto
                           generated
  -l, --jsonfile arg       name of the JSON file
  -r, --saveh              save request response headers
  -o, --pjson              display fingerprint dissection to the console as a JSON object
  -i, --demangle_json arg  demangle a fingerprint into a detailed json format (you can have more than one, comma
                           separated)
  -u, --demangle_txt arg   output a concise text format of the fingerprint, comma-separated for multiple results
  -C, --compare arg        compare two verbosus fingerprints (comma-separated)
  -a, --pacto arg          obtain the Pacto fingerprint using Verbosus
  -h, --help               print usage	

المخرجات التفصيلية

عند طلب نطاق/عنوان IP معين، يمكن حفظ الاستجابة في ملف CSV أو JSON مع ثروة من المعلومات حول رؤوس استجابة الخادم والبصمة الفريدة لكل استطلاع.

على سبيل المثال، للحصول على بصمة الخادم https://google.com، وحفظ النتائج في ملفي JSON وCSV، مع حفظ رؤوس استجابات HTTP لكل استطلاع:

root@kitploit:~
HTTPBasma.exe -d https://google.com --json --csv --saveh

في مجلد Output، ستجد ملف CSV google_hb_results_2026-05-19_08-35-38_am.csv وملف JSON google_hb_results_2026-05-19_08-35-38_am.json.

أداة التفكيك

تأخذ وظيفة التفكيك "-i/--demangle_json" في الأداة بصمة verbosus وتعيد بناء سمات كل استطلاع، مخرجة كائن JSON شامل. وتجدر الإشارة إلى أنه عند محاولة عكس تجزئات FNV-1a، يستخدم المفكك قاعدتي بيانات محليتين: options.csv لطرق HTTP المسموح بها وstatus_line_db.csv لعبارات سبب سطر الحالة. إذا كانت أي من ملفات قواعد البيانات هذه مفقودة، يتم تعطيل ميزة عكس التجزئة المقابلة تلقائيًا. تم تجميع قواعد البيانات هذه من مسح لأفضل مليون موقع Majestic.

تفكيك بصمة verbosus للنطاق example.com:

root@kitploit:~
HTTPBasma.exe --demangle_json 01140a85e40014514bd522142494d67214254c5e721420958a22020214254c5e720000001609
مخرجات المفكك (انقر للتوسيع)
root@kitploit:~
{
  "type": "verbosus",
  "fp": "01140a85e40014514bd522142494d67214254c5e721420958a22020214254c5e720000001609",
  "p1": {
    "type": "get_normal",
    "fp": "140a85e400",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "0a",
        "val_cmt": "200"
      },
      "http_reason": {
        "fp": "85e4",
        "val_cmt": "OK"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          200,
          404,
          403,
          500,
          204,
          999,
          888,
          603
        ],
        "http_reason": "OK"
      }
    },
    "sts_hdr": {
      "fp": "00",
      "cmt": "this header is not used"
    }
  },
  "p2": {
    "type": "get_invalid_ver_nb",
    "fp": "14514bd522",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "51",
        "val_cmt": "505"
      },
      "http_reason": {
        "fp": "4bd5",
        "val_cmt": "HTTP Version Not Supported"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          505
        ],
        "http_reason": "HTTP Version Not Supported"
      }
    },
    "cont_len_hdr": {
      "fp": "22",
      "name": "Content-Length",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": false,
      "c": true
    }
  },
  "p3": {
    "type": "get_rnd_resource",
    "fp": "142494d672",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "24",
        "val_cmt": "404"
      },
      "http_reason": {
        "fp": "94d6",
        "val_cmt": "Not Found"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          404,
          403,
          501,
          410,
          204,
          400,
          200,
          418
        ],
        "http_reason": "Not Found"
      }
    },
    "cont_len_hdr": {
      "fp": "72",
      "name": "Transfer-Encoding",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": true,
      "c": false
    }
  },
  "p4": {
    "type": "get_rnd_verb",
    "fp": "14254c5e72",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "25",
        "val_cmt": "405"
      },
      "http_reason": {
        "fp": "4c5e",
        "val_cmt": "Method Not Allowed"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          405,
          403,
          204,
          418,
          404
        ],
        "http_reason": "Method Not Allowed"
      }
    },
    "cont_len_hdr": {
      "fp": "72",
      "name": "Transfer-Encoding",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": true,
      "c": false
    }
  },
  "p5": {
    "type": "get_lowercase_verb",
    "fp": "1420958a22",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "20",
        "val_cmt": "400"
      },
      "http_reason": {
        "fp": "958a",
        "val_cmt": "Bad Request"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          400,
          422,
          405,
          401
        ],
        "http_reason": "Bad Request"
      }
    },
    "cont_len_hdr": {
      "fp": "22",
      "name": "Content-Length",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "cnx": {
      "ka": false,
      "c": true
    }
  },
  "p6f": {
    "type": "get_accept_encoding_full",
    "fp": "02",
    "cont_enc_hdr": {
      "value": "br",
      "empty_value": false,
      "total_plus": 0
    }
  },
  "p6l": {
    "type": "get_accept_encoding_less",
    "fp": "02",
    "cont_enc_hdr": {
      "value": "br",
      "empty_value": false,
      "total_plus": 0
    }
  },
  "p7a": {
    "type": "options_allow_hdr",
    "fp": "14254c5e72000000",
    "status_line": {
      "http_version": {
        "fp": "14",
        "val_cmt": "HTTP/1.1"
      },
      "status_code": {
        "fp": "25",
        "val_cmt": "405"
      },
      "http_reason": {
        "fp": "4c5e",
        "val_cmt": "Method Not Allowed"
      },
      "sl_reversed_db": {
        "http_version": "HTTP/1.1",
        "status_code": [
          405,
          403,
          204,
          418,
          404
        ],
        "http_reason": "Method Not Allowed"
      }
    },
    "cont_len_hdr": {
      "fp": "72",
      "name": "Transfer-Encoding",
      "value": ">1",
      "cmt": "content-length/transfer-encoding:chunked header is present with either of the size values: [0,1,>1]"
    },
    "allow_hdr": {
      "fp": "000000",
      "cmt": "this header is not used"
    },
    "cnx": {
      "ka": true,
      "c": false
    }
  }
}

لاحظ أن مصفوفة "status_code" تحتوي على رموز حالة HTTP متعددة. يحدث هذا لأن خوادم مختلفة قد تستخدم نفس عبارة السبب لرموز حالة مختلفة، مما يؤدي إلى تجزئات FNV-1a متطابقة.

خيار المقارنة

يقارن خيار المقارنة "-C/--compare" بين بصمتي verbosus ويطبع الاختلافات عبر المكونات الرئيسية لكل استطلاع.

على سبيل المثال، مقارنة البصمتين التاليتين لـ Google وYouTube:

root@kitploit:~
HTTPBasma.exe --compare 01140a85e4001320958a22142494d62214254c5e2214254c5e22080014254c5e220000000000,01140a85e4011320958a22142494d67214254c5e2214254c5e22080014254c5e220000000000

ينتج عن ذلك المخرجات التالية:

root@kitploit:~
 < FPrnt-1 Vs. FPrnt-2 >

 [ P1 ]
    {Strict-Transport-Security}
      sts header: 00 != 01

 [ P2 ]
 [ P3 ]
    {Content-Length}

      cl_name: 2 != 7

 [ P4 ]
 [ P5 ]
 [ P6F ]
 [ P6L ]
 [ P7a ]

تكشف المخرجات عن اختلافات تحديدًا في مكون التجزئة لاستطلاع P1، حيث يكون رأس STS موجودًا في البصمة الأولى وليس في الأخرى. علاوة على ذلك، يختلف ترميز "Content-Length" بين البصمتين لاستطلاع P3.


الإصدار

توفر Netomize إصدارات مجمعة من الكود العام في هذا المستودع لأنظمة Windows وLinux x64. علاوة على ذلك، يتم تضمين ملف CSV لبصمات HTTP-Basma لمليون موقع Majestic - مجموعة البيانات في الإصدار الأول.

المكتبات الخارجية المستخدمة

  • Chilkat v11.4.0
  • rang: لتلوين وحدة التحكم
  • cxxopts (v3.3.1)

الترخيص

  • ترخيص Netomize
  • تم تحديث الترخيص في 30 يوليو 2026، وتغييره من ترخيص BSD 3-Clause إلى ترخيص Netomize

المساهمة

مفتوح لطلبات السحب والمشكلات. التعليقات والاقتراحات محل تقدير كبير.

تنزيل الأداة