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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
fwknop — تفويض الحزمة الواحدة > طرق المنافذ | Kitploit
أدوات/GitHubGitHub/mrash/fwknop
المصادقة والترخيصأدوات دفاعيةأدوات التشفير/فك التشفيرأمن الشبكاتالتشفيرالمصادقة
GitHubmrash/fwknop

fwknop

تفويض الحزمة الواحدة > طرق المنافذ

عرض المستودع
1.4k253منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

fwknop - تفويض الحزمة الواحدة (Single Packet Authorization)

مقدمة

يطبق fwknop مخطط تفويض يُعرف باسم تفويض الحزمة الواحدة (SPA) لإخفاء الخدمات بشكل قوي. يتطلب SPA حزمة واحدة فقط تكون مشفرة وغير قابلة لإعادة التشغيل وموثقة عبر HMAC من أجل التواصل مع الوصول المطلوب إلى خدمة مخفية خلف جدار ناري في وضع تصفية رفض افتراضي. التطبيق الرئيسي لـ SPA هو استخدام جدار ناري لإسقاط جميع محاولات الاتصال بخدمات مثل SSH لجعل استغلال الثغرات (سواء 0-day أو الكود غير المحدث) أكثر صعوبة. نظرًا لعدم وجود منافذ مفتوحة، فإن أي خدمة يتم إخفاؤها بواسطة SPA لا يمكن مسحها ضوئيًا باستخدام Nmap بشكل طبيعي. يدعم مشروع fwknop أربعة جدران نارية مختلفة: iptables و firewalld و PF و ipfw عبر Linux و OpenBSD و FreeBSD و Mac OS X. يوجد أيضًا دعم للبرامج النصية المخصصة بحيث يمكن جعل fwknop يدعم بنى تحتية أخرى مثل ipset أو nftables.

SPA هو في الأساس الجيل التالي من طرق طرق الباب (Port Knocking - PK)، ولكنه يحل العديد من القيود التي يظهرها PK مع الاحتفاظ بفوائده الأساسية. تشمل قيود PK صعوبة عامة في الحماية من هجمات إعادة التشغيل، وعادةً لا يمكن دعم الشفرات غير المتماثلة ومخططات HMAC بشكل موثوق، ومن السهل جدًا شن هجوم حجب الخدمة (DoS) ضد خادم PK فقط عن طريق تزييف حزمة إضافية في تسلسل PK أثناء عبورها للشبكة (مما يقنع خادم PK بأن العميل لا يعرف التسلسل الصحيح). يتم حل كل هذه العيوب بواسطة SPA. في نفس الوقت، يخفي SPA الخدمات خلف سياسة جدار ناري افتراضية للإسقاط، ويحصل على بيانات SPA بشكل سلبي (عادةً عبر libpcap أو وسائل أخرى)، وينفذ عمليات تشفير قياسية لمصادقة حزم SPA وتشفيرها/فك تشفيرها.

تستخدم حزم SPA التي يولدها fwknop HMAC للتشفير الموثق في نموذج التشفير ثم التوثيق. على الرغم من أن استخدام HMAC اختياري حاليًا (يتم تفعيله عبر خيار سطر الأوامر --use-hmac)، إلا أنه يوصى بشدة لثلاثة أسباب:

  1. بدون HMAC، لا يمكن تحقيق مصادقة قوية تشفيريًا باستخدام fwknop ما لم يتم استخدام GnuPG، ولكن حتى في هذه الحالة يجب تطبيق HMAC.
  2. تطبيق HMAC بعد التشفير يحمي من هجمات إضافة التوسيد في وضع CBC (CBC-mode padding oracle attacks) مثل هجوم Vaudenay والخداع المرتبط (مثل هجوم "Lucky 13" الأحدث ضد SSL).
  3. الكود المطلوب من جانب الخفي fwknopd للتحقق من HMAC أبسط بكثير من الكود المطلوب لفك تشفير حزمة SPA، لذا فإن حزمة SPA بدون HMAC صحيح لا تُرسل حتى إلى إجراءات فك التشفير.

السبب الأخير أعلاه هو السبب في أنه يجب استخدام HMAC حتى عندما يتم تشفير حزم SPA باستخدام GnuPG نظرًا لأن بيانات SPA لا تُرسل عبر وظائف libgpgme ما لم يتم التحقق من HMAC أولاً. GnuPG و libgpgme هما قطعتان برمجيتان معقدتان نسبيًا، وبالتالي فإن تقييد قدرة المهاجم المحتمل على التفاعل مع هذا الكود من خلال عملية HMAC يساعد في الحفاظ على موقف أمني أقوى. يتطلب توليد HMAC لاتصالات SPA مفتاحًا مخصصًا بالإضافة إلى مفتاح التشفير العادي، ويمكن توليدهما معًا باستخدام خيار --key-gen.

يقوم fwknop بتشفير حزم SPA إما باستخدام تشفير الكتلة Rijndael أو عبر GnuPaG والتشفير غير المتماثل المرتبط به. إذا تم اختيار طريقة التشفير المتماثل، فكما هو معتاد يتم مشاركة مفتاح التشفير بين العميل والخادم (انظر ملف /etc/fwknop/access.conf للتفاصيل). يتم توليد مفتاح التشفير الفعلي المستخدم لتشفير Rijndael عبر خوارزمية اشتقاق المفاتيح القياسية PBKDF1، ويتم تعيين وضع CBC. إذا تم اختيار طريقة GnuPG، فتُشتق مفاتيح التشفير من حلقات مفاتيح GnuPG.

حالات الاستخدام

عادةً ما يصل الأشخاص الذين يستخدمون تفويض الحزمة الواحدة (SPA) أو ابن عمه الأقل أمانًا وهو طرق الباب (PK) إلى خدمة SSHD التي تعمل على نفس النظام الذي يتم فيه نشر برنامج SPA/PK. أي أن جدارًا ناريًا يعمل على مضيف لديه سياسة رفض افتراضية ضد جميع اتصالات SSH الواردة بحيث لا يمكن مسح SSHD ضوئيًا، لكن خفي SPA يعيد تكوين الجدار الناري لمنح الوصول مؤقتًا إلى عميل SPA موثوق بشكل سلبي:

SPA-basic-access-SSHD "استخدام SPA الأساسي للوصول إلى SSHD"

يدعم fwknop ما سبق، ولكنه يذهب أيضًا إلى أبعد من ذلك ويستخدم NAT بشكل قوي (لجدران iptables/firewalld). بعد كل شيء، الجدران النارية المهمة عادةً ما تكون بوابات بين الشبكات بدلاً من نشرها فقط على المضيفات المستقلة. يُستخدم NAT بشكل شائع على هذه الجدران النارية (على الأقل لاتصالات IPv4) لتوفير الوصول إلى الإنترنت للشبكات الداخلية الموجودة على مساحة عناوين RFC 1918، وكذلك للسماح للمضيفات الخارجية بالوصول إلى الخدمات المستضافة على الأنظمة الداخلية.

نظرًا لأن fwknop يتكامل مع NAT، يمكن استغلال SPA للوصول إلى الخدمات الداخلية عبر الجدار الناري من قبل المستخدمين على الإنترنت الخارجي. على الرغم من أن هذا له تطبيقات عديدة على الشبكات التقليدية الحديثة، إلا أنه يسمح أيضًا لـ fwknop بدعم بيئات الحوسبة السحابية مثل Amazon AWS:

SPA-Amazon-AWS-cloud "استخدام SPA على بيئات سحابية من Amazon AWS"

واجهة المستخدم

واجهة المستخدم الرسمية لعميل fwknop عبر المنصات fwknop-gui (تنزيل، github) تم تطويرها بواسطة Jonathan Bennett. يتم دعم معظم أوضاع SPA الرئيسية للعميل بما في ذلك طلبات NAT ومفاتيح HMAC وRijndael (GnuPG غير مدعوم بعد) وحفظ مقطع fwknoprc والمزيد. يعمل fwknop-gui حاليًا على Linux و Mac OS X و Windows - وإليك لقطة شاشة من OS X: fwknop-gui-OS-X-screenshot "fwknop-gui على Mac OS X" وبالمثل، يتوفر عميل Android مُحدّث أيضًا.

البرنامج التعليمي

يمكن العثور على برنامج تعليمي شامل حول fwknop هنا:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

الميزات

فيما يلي قائمة كاملة بالميزات التي يدعمها مشروع fwknop:

  • تنفيذ تفويض الحزمة الواحدة حول جدران iptables و firewalld على Linux، وجدران ipfw على *BSD و Mac OS X، و PF على OpenBSD.
  • يعمل عميل fwknop على Linux و Mac OS X و *BSD و Windows تحت Cygwin. بالإضافة إلى ذلك، يوجد تطبيق Android لتوليد حزم SPA.
  • يدعم كلًا من طرق Rijndael و GnuPG لتشفير/فك تشفير حزم SPA.
  • يدعم التشفير الموثق بـ HMAC لكل من Rijndael و GnuPG. ترتيب العملية هو التشفير ثم التوثيق لتجنب مشاكل تحليلية تشفيرية مختلفة.
  • يتم كشف هجمات إعادة التشغيل وإحباطها من خلال مقارنة تجزئة SHA-256 لحزم SPA الواردة الصالحة. كما يتم دعم خوارزميات تجزئة أخرى، لكن SHA-256 هو الافتراضي.
  • يتم التقاط حزم SPA بشكل سلبي من السلك عبر libpcap. يمكن لخادم fwknopd أيضًا الحصول على بيانات الحزمة من ملف يتم الكتابة إليه بواسطة متشمم Ethernet منفصل (مثل باستخدام tcpdump -w <file>) أو من كاتب pcap لـ iptables ULOG أو مباشرة عبر مقبس UDP في وضع --udp-server.
  • بالنسبة لجدران iptables، يتم إضافة قواعد ACCEPT التي يضيفها fwknop وحذفها (بعد مهلة قابلة للتكوين) من سلاسل iptables مخصصة بحيث لا يتداخل fwknop مع أي سياسة iptables موجودة قد تكون محملة على النظام.
  • يدعم اتصالات NAT الواردة لاتصالات SPA الموثقة (جدران iptables فقط في الوقت الحالي). هذا يعني أنه يمكن تكوين fwknop لإنشاء قواعد DNAT بحيث يمكنك الوصول إلى خدمة (مثل SSH) تعمل على نظام داخلي على عنوان IP RFC 1918 من الإنترنت المفتوح. كما يتم دعم قواعد SNAT التي تحول fwknopd بشكل أساسي إلى بوابة مصادقة SPA للوصول إلى الإنترنت من شبكة داخلية.
  • يتم دعم مستخدمين متعددين بواسطة خادم fwknop، ويمكن تعيين مفتاح تشفير متماثل أو غير متماثل خاص لكل مستخدم عبر ملف /etc/fwknop/access.conf.
  • حل تلقائي لعنوان IP الخارجي عبر https://www.cipherdyne.org/cgi-bin/myip (هذا مفيد عندما يتم تشغيل عميل fwknop من خلف جهاز NAT). نظرًا لأن عنوان IP الخارجي مشفر داخل كل حزمة SPA في هذا الوضع، يتم إحباط هجمات الوسيط (MITM) حيث يعترض جهاز مضمن حزمة SPA ويعيد توجيهها فقط من عنوان IP مختلف في محاولة للحصول على الوصول.
  • عشوائية المنفذ مدعومة لمنفذ الوجهة لحزم SPA وكذلك المنفذ الذي يتم من خلاله الاتصال التالي عبر قدرات NAT الخاصة بـ iptables. ينطبق الأخير على الاتصالات المُعاد توجيهها إلى الخدمات الداخلية والوصول الممنوح للمآخذ المحلية على النظام الذي يعمل عليه fwknopd.

الترخيص

تم إصدار مشروع fwknop كبرنامج مفتوح المصدر بموجب شروط رخصة جنو العمومية العامة (GPL v2) أو (حسب اختيارك) أي إصدار لاحق. يمكن العثور على أحدث إصدار في http://www.cipherdyne.org/fwknop/

الحالة الحالية

يصف ملف README هذا الحالة الحالية لمشروع fwknop اعتبارًا من الإصدار 2.5 الذي صدر في يوليو 2013. في الوقت الحالي، لدينا تنفيذ لمكتبة مشغل طرق الباب للجدار الناري؛ libfko، بالإضافة إلى تطبيقات عميل fwknop وخادمه. توفر المكتبة API ووظائف الخلفية لإدارة بيانات تفويض الحزمة الواحدة (SPA) التي تستخدمها مكونات fwknop الأخرى. يمكن أيضًا استخدامها بواسطة برامج أخرى تحتاج وظائف SPA (انظر دليل perl لوحدة FKO perl كمثال، وهناك روابط بايثون أيضًا في دليل python).

الترقية

إذا كنت تقوم بالترقية من إصدار أقدم من fwknop (وهذا يشمل تنفيذ perl الأصلي أيضًا)، فستحتاج إلى قراءة الرابط التالي لضمان انتقال سلس إلى fwknop-2.5 أو أحدث:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html#backwards-compatibility

متنوع

  • سيتم استقبال الأسئلة أو التعليقات حول fwknop على القائمة البريدية لـ fwknop.
  • للتحليل الثابت، يستخدم fwknop محلل CLANG الثابت وأيضًا أداة Coverity Scan القوية:

بناء fwknop

يستخدم هذا التوزيع GNU autoconf لإعداد البناء. يُرجى مراجعة ملف INSTALL للأساسيات العامة حول استخدام autoconf.

هناك بعض خيارات "configure" الخاصة بـ fwknop. وهي (مستخرجة من ./configure --help):

root@kitploit:~
  --disable-client        لا تقم ببناء مكون عميل fwknop. الافتراضي هو بناء العميل.
  --disable-server        لا تقم ببناء مكون خادم fwknop. الافتراضي هو بناء الخادم.
  --with-gpgme            دعم تشفير gpg باستخدام libgpgme [default=check]
  --with-gpgme-prefix=PFX بادئة حيث تم تثبيت GPGME (اختياري)
  --with-gpg=/path/to/gpg حدد المسار إلى ملف gpg القابل للتنفيذ الذي ستستخدمه gpgme [default=check path]
  --with-firewalld=/path/to/firewalld
                          حدد المسار إلى ملف firewalld القابل للتنفيذ [default=check path]
  --with-iptables=/path/to/iptables
                          حدد المسار إلى ملف iptables القابل للتنفيذ [default=check path]
  --with-ipfw=/path/to/ipfw
                          حدد المسار إلى ملف ipfw القابل للتنفيذ [default=check path]
  --with-pf=/path/to/pfctl
                          حدد المسار إلى ملف pf القابل للتنفيذ [default=check path]
  --with-ipf=/path/to/ipf حدد المسار إلى ملف ipf القابل للتنفيذ [default=check path]

أمثلة:

./configure --disable-client --with-firewalld=/bin/firewall-cmd
./configure --disable-client --with-iptables=/sbin/iptables --with-firewalld=no

ملاحظات

الترحيل من إصدار Perl من fwknop

لأولئك منكم الذين يستخدمون حاليًا إصدار Perl ويخططون للترحيل إلى هذا الإصدار، هناك بعض الأشياء التي يجب أن تكونوا على دراية بها:

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

  • هناك بعض الاختلافات في توجيهات وقيم ملفات التكوين والوصول لـ fwknop. بعضها دقيق إلى حد ما. يجب عليك الانتباه جيدًا إلى التوثيق والتعليقات في تلك الملفات.

لمطوري fwknop

إذا كنت تسحب هذا التوزيع من git، فيجب عليك تشغيل البرنامج النصي autogen.sh لتوليد ملفات autoconf. إذا حصلت على أخطاء حول أدلة أو ملفات مفقودة، حاول تشغيل autogen.sh مرة أخرى. بعد ذلك يمكنك تشغيل autoreconf -i عندما تريد إعادة توليد التكوين. إذا، لسبب ما، لم يعمل autoreconf لك، فإن البرنامج النصي autogen.sh يجب أن يكون كافيًا.

يتم تضمين مصادر nroff لصفحات الدليل الخاصة بـ fwknop و fwknopd في أدلتها الخاصة (العميل والخادم). هذه الملفات nroff مشتقة من مصادر asciidoc في دليل 'docs'. راجع README في docs للحصول على التفاصيل.

تنزيل الأداة
  • التكامل مع Tor (كما هو موصوف في هذا العرض التقديمي لـ DefCon 14). لاحظ أنه نظرًا لأن Tor يستخدم TCP للنقل، فإن إرسال حزم SPA عبر شبكة Tor يتطلب أن يتم إرسال كل حزمة SPA عبر اتصال TCP قائم، لذلك من الناحية الفنية هذا يكسر جانب "الحزمة الواحدة" من "تفويض الحزمة الواحدة". ومع ذلك، يوفر Tor فوائد إخفاء الهوية التي قد تفوق هذا الاعتبار في بعض عمليات النشر.
  • ينفذ بروتوكولًا مُرقّمًا لاتصالات SPA، لذا من السهل توسيع البروتوكول لتقديم أنواع رسائل SPA جديدة والحفاظ على التوافق مع الإصدارات الأقدم من عملاء fwknop في نفس الوقت.
  • يدعم تنفيذ أوامر shell نيابة عن حزم SPA الصالحة.
  • يمكن تكوين خادم fwknop لفرض قيود متعددة على حزم SPA الواردة تتجاوز تلك التي تُفرض بواسطة مفاتيح التشفير وكشف هجمات إعادة التشغيل. تحديدًا: عمر الحزمة، عنوان IP المصدر، المستخدم البعيد، الوصول إلى المنافذ المطلوبة، والمزيد.
  • مرفق مع fwknop مجموعة اختبار شاملة تصدر سلسلة من الاختبارات المصممة للتحقق من أن كلاً من قطعتي العميل والخادم من fwknop تعمل بشكل صحيح. تتضمن هذه الاختبارات التقاط حزم SPA عبر واجهة الاسترجاع المحلية، وبناء قواعد جدار ناري مؤقتة يتم فحصها للوصول المناسب بناءً على تكوين الاختبار، وتحليل المخرجات من كل من عميل fwknop وخادم fwknopd للعلامات المتوقعة لكل اختبار. يمكن بسهولة إخفاء هوية مخرجات مجموعة الاختبار للتواصل مع أطراف ثالثة للتحليل.
  • كان fwknop أول برنامج يدمج طرق الباب مع بصمة نظام التشغيل السلبي. ومع ذلك، يوفر تفويض الحزمة الواحدة العديد من الفوائد الأمنية تتجاوز طرق الباب، لذا فإن وضع تشغيل طرق الباب يعتبر مهملاً بشكل عام.