Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Revoke-Obfuscation — إطار كشف التعتيم في PowerShell | Kitploit
أدوات/GitHubGitHub/danielbohannon/revoke-obfuscation
أدوات دفاعيةالتحليل الثابتتحليل الكودتحليل البرمجيات الخبيثةاستخبارات التهديداتالأوراق والأبحاثالتعلم والتعليم
GitHubdanielbohannon/revoke-obfuscation

Revoke-Obfuscation

إطار كشف التعتيم في PowerShell

عرض المستودع
752122منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Revoke-Obfuscation v1.0

عرض توضيحي لـ Revoke-Obfuscation

لقطة شاشة لـ Revoke-Obfuscation

مقدمة

Revoke-Obfuscation هو إطار عمل لاكتشاف التعتيم في PowerShell متوافق مع PowerShell v3.0+.

المؤلفون

دانيال بوهانون (@danielhbohannon) لي هولمز (@Lee_Homes)

البحث

منشور المدونة: https://www.fireeye.com/blog/threat-research/2017/07/revoke-obfuscation-powershell.html

الورقة البيضاء: https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/revoke-obfuscation-report.pdf

الخلفية

في خريف 2016 وربيع 2017، أصدر دانيال بوهانون (@danielhbohannon) إطارين مفتوحي المصدر لتعتيم PowerShell: Invoke-Obfuscation و Invoke-CradleCrafter. كان الهدف من هذا البحث وهذه الأطر هو إبراز حدود النهج القائم على التوقيعات فقط في اكتشاف استخدام المهاجمين لـ PowerShell. كانت الرسالة الأساسية للمدافعين هي التركيز على اكتشاف مؤشرات التعتيم بالإضافة إلى الصيغ المشبوهة المعروفة.

ومع ذلك، فإن المستويات القصوى من العشوائية في Invoke-Obfuscation و Invoke-CradleCrafter إلى جانب خيارات التعتيم على مستوى الرموز (token-layer) التي لا يتم إزالة تعتيمها في تسجيل كتلة البرنامج النصي لـ PowerShell، دفعت المدافعين إلى البحث عن وسيلة جديدة وقابلة للتطوير للكشف العام عن تقنيات التعتيم المعروفة وغير المعروفة.

بعد بضعة أسابيع من إصدار Invoke-Obfuscation، كتب لي هولمز (@Lee_Homes) منشورًا في مدونته بعنوان المزيد عن اكتشاف PowerShell المعتم سلط فيه الضوء على تقنيات التحليل الإحصائي لاكتشاف السمات الشاذة في البرامج النصية المعتمة بشكل كبير، خاصة تلك المنتجة بواسطة Invoke-Obfuscation.

منذ هذا التبادل، أصبح دانيال ولي صديقين حميمين وشاركا العديد من الاهتمامات/الهواجس المشتركة - ألا وهي حب القهوة الفاخرة والسعي لإنشاء طرق جديدة لاكتشاف PowerShell المعتم بشكل شامل.

كمية الوقت الذي قضاه كلا فريقَي الدفاع (Blue Teamers) في الغوص في البحث ورمز الإثبات (POC) ستعادل عدة آلاف من أكواب القهوة المصنوعة في Chemex بافتراض وقت تخمير مستهدف قدره 4 دقائق (على افتراض أن عشاق قهوة آخرين على الأقل قد أدركوا هذه التورية حول "السكب").

Revoke-Obfuscation هو المنتج النهائي المصنوع يدويًا لهذه الجهود.

الغرض

Revoke-Obfuscation هو إطار عمل مفتوح المصدر متوافق مع PowerShell v3.0+ لاكتشاف أوامر وبرامج PowerShell النصية المعتمة على نطاق واسع. يعتمد على AST (شجرة النحو المجردة) لـ PowerShell لاستخراج آلاف الميزات بسرعة من أي برنامج PowerShell نصي مدخل، ومقارنة متجه الميزات هذا بأحد عدة متجهات ميزات مرجحة محددة مسبقًا والتي تم حسابها من خلال عملية تعلم آلي ضد مجموعة من أكثر من 408 ألف برنامج PowerShell نصي. يمكن تنزيل هذه المجموعة الكاملة من (https://aka.ms/PowerShellCorpus). يمكنك العثور على تفاصيل حول جوانب علم البيانات لهذا العمل في الدليل الفرعي 'DataScience' للمستودع.

نظرًا لأن Revoke-Obfuscation يعتمد على استخراج الميزات والمقارنة بدلاً من مؤشرات الاختراق (IOCs) البحتة أو مطابقة التعبيرات المنتظمة (RegEx)، فهو أكثر قوة في قدرته على تحديد تقنيات التعتيم غير المعروفة حتى عندما يحاول المهاجمون تهدئة تعتيمهم عن طريق حشوها بمحتويات برنامج نصي غير معتم لقلب الفحوصات الأساسية مثل تحليل تردد الأحرف.

يمكن لـ Revoke-Obfuscation قياس معظم برامج PowerShell النصية المدخلة بسهولة في غضون 100-300 مللي ثانية. يسمح هذا المستوى من الأداء للمؤسسة بقياس تعتيم (في أسوأ الأحوال) أكثر من 12 ألف برنامج PowerShell نصي في الساعة دون الحاجة إلى فهرسة سجلات كتلة البرنامج النصي لـ PowerShell في SIEM.

أخيرًا، يدعم Revoke-Obfuscation وظيفة القائمة البيضاء (whitelisting) بسهولة بالإضافة إلى القدرة على استيعاب سجلات الأحداث التشغيلية لـ PowerShell وإعادة تجميع كتل البرامج النصية المسجلة عبر العديد من سجلات كتلة البرنامج النصي EID 4104. يمكن أن يصبح بسهولة متجرًا شاملاً لاستيعاب سجلات أحداث PowerShell التشغيلية للبيئة، وإعادة تجميع جميع البرامج النصية في تلك السجلات وجعلها فريدة، ثم تحديد برامج PowerShell النصية المعتمة التي تستحق الفحص اليدوي.

التثبيت

الكود المصدري لـ Revoke-Obfuscation مستضاف على Github، ويمكنك تنزيله واستنساخه ومراجعته من هذا المستودع (https://github.com/danielbohannon/Revoke-Obfuscation). يرجى الإبلاغ عن المشكلات أو طلبات الميزات من خلال متتبع الأخطاء الخاص بـ Github المرتبط بهذا المشروع.

للتثبيت (من Github):

root@kitploit:~
Import-Module .\Revoke-Obfuscation.psd1

يمكن أيضًا تثبيت الكود المصدري مباشرةً من معرض PowerShell عبر الأوامر التالية:

للتثبيت (من معرض PowerShell):

root@kitploit:~
Install-Module Revoke-Obfuscation
Import-Module Revoke-Obfuscation

الاستخدام

سيوفر Revoke-Obfuscation برنامجًا تعليميًا مفصلاً بالإضافة إلى بعض المفاجآت الممتعة الأخرى. ولكن إذا لم تكن مهتمًا بالتسلية، فيمكنك ببساطة تشغيل Get-Help Measure-RvoObfuscation لرؤية صيغة الاستخدام أو متابعة القراءة.

هناك وظيفتان رئيسيتان مستخدمتان في هذا الإطار:

  • Get-RvoScriptBlock - يعيد تجميع البرامج النصية من سجلات كتلة البرنامج النصي EID 4104
  • Measure-RvoObfuscation - يقيس البرنامج(البرامج) النصية المدخلة ويعيد درجة التعتيم

إذا كنت بحاجة إلى إعادة تجميع واستخراج سجلات كتلة البرنامج النصي من سجلات PowerShell التشغيلية، فإن Get-RvoScriptBlock هي الوظيفة المفضلة لديك. تقوم تلقائيًا بإرجاع كتل البرامج النصية الفريدة فقط وتستبعد قيم كتلة البرنامج النصي الافتراضية التي لا تعتبر ضارة. يمكن تجاوز ذلك باستخدام المفتاح -Deep.

  • Get-RvoScriptBlock -Path 'C:\Windows\System32\Winevt\Logs\Microsoft-Windows-PowerShell%4Operational.evtx' -Verbose
  • Get-ChildItem .\Demo\demo.evtx | Get-RvoScriptBlock -Verbose
  • Get-WinEvent -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock -Verbose

يدعم Get-RvoScriptBlock أيضًا نتائج تدقيق MIR/HX بالإضافة إلى سجلات PowerShell التشغيلية المستردة عبر مشروع Matt Graeber's (@mattifestation) CimSweep (https://github.com/PowerShellMafia/CimSweep). بالنسبة لـ CimSweep، هناك تعديل طفيف في السجل مطلوب لخداع WMI للاستعلام عن سجل أحداث غير كلاسيكي. يمكن العثور على التفاصيل في قسم NOTES الخاص بـ Get-RvoScriptBlock.

  • Get-ChildItem C:\MirOrHxAuditFiles\*_w32eventlogs.xml | Get-RvoScriptBlock -Verbose
  • Get-CSEventLogEntry -LogName Microsoft-Windows-PowerShell/Operational | Get-RvoScriptBlock

يمكن العثور على مثال كامل مقابل بيانات الاختبار المسجلة في demo.evtx أدناه:

root@kitploit:~
$obfResults = Get-WinEvent -Path .\Demo\demo.evtx | Get-RvoScriptBlock | Measure-RvoObfuscation -OutputToDisk -Verbose

يمكن العثور على مثال كامل مقابل البرامج النصية الاختبارية المستضافة محليًا وعن بُعد أدناه:

  • Measure-RvoObfuscation -Url 'http://bit.ly/DBOdemo1' -Verbose -OutputToDisk
  • Get-Content .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk
  • Get-ChildItem .\Demo\DBOdemo*.ps1 | Measure-RvoObfuscation -Verbose -OutputToDisk

يقوم المفتاح -OutputToDisk تلقائيًا بإخراج جميع البرامج النصية المعتمة إلى .\Results\Obfuscated. بغض النظر، سيتم إرجاع جميع النتائج ككائنات PSCustomObject تحتوي على محتوى البرنامج النصي بالإضافة إلى بيانات وصفية مثل درجة التعتيم، وقت القياس، نتيجة القائمة البيضاء، جميع ميزات البرنامج النصي المستخرجة، إلخ.

ثلاثة خيارات للقائمة البيضاء موجودة في موقعين في Revoke-Obfuscation:

  1. على القرص (يتم تطبيقه تلقائيًا إذا كان موجودًا):
    1. .\Whitelist\Scripts_To_Whitelist\ - سيتم تجزئة جميع البرامج النصية الموضوعة في هذا الدليل وسيتم وضع أي برامج نصية متطابقة في القائمة البيضاء. طريقة القائمة البيضاء هذه مفضلة على الخيارين التاليين.
    2. .\Whitelist\Strings_To_Whitelist.txt - سيتم وضع البرنامج النصي الذي يحتوي على أي من السلاسل في هذا الملف في القائمة البيضاء. الصيغة: Rule_Name,s tring_to_whitelist (ملاحظة: قد تكون هناك مسافة بعد الفاصلة في الأصل العربي)
    3. .\Whitelist\Regex_To_Whitelist.txt - سيتم وضع البرنامج النصي الذي يحتوي على أي من التعبيرات المنتظمة في هذا الملف في القائمة البيضاء. الصيغة: Rule_Name,regex_to_whitelist
  2. وسيطات لـ Measure-RvoObfuscation (تُطبق بالإضافة إلى خيارات القائمة البيضاء أعلاه):
    1. -WhitelistFile - -WhitelistFile .\files\*.ps1,.\more_files\*.ps1,.\one_more_file.ps1
    2. -WhitelistContent - -WhitelistContent 'string 1 to whitelist','string 2 to whitelist'
    3. -WhitelistRegex - -WhitelistRegex 'regex 1 to whitelist','regex 2 to whitelist'

إذا كنت مهتمًا بإنشاء مجموعة بيانات تدريب خاصة بك وإنشاء متجه مرجح لوظيفة Measure-Vector، فيمكن تشغيل ModelTrainer.cs/ModelTrainer.exe مقابل مجموعة بيانات موسومة. سيقوم الأمر التالي باستخراج متجهات الميزات من جميع البرامج النصية المدخلة وتجميعها في ملف CSV واحد يُستخدم في مرحلة التدريب هذه:

root@kitploit:~
Get-ChildItem .\*.ps1 | ForEach-Object { [PSCustomObject](Get-RvoFeatureVector -Path $_.FullName) | Export-Csv .\all_features.csv -Append }

أخيرًا، إذا كنت تبحث عن منصة لإنشاء مؤشرات (IOCs) تستغل قوة AST لـ PowerShell (شجرة النحو المجردة) - والتي نوصي بها بشدة لتحديد نشاط PowerShell الضار غير المعتم - فإن PS Script Analyzer هو إطار ممتاز مصمم للتعامل مع مثل هذه المهام.

الترخيص

تم إصدار Revoke-Obfuscation بموجب ترخيص Apache 2.0.

ملاحظات الإصدار

v1.0 - 2017-07-27 Black Hat USA & 2017-07-30 DEF CON: الإصدار العام لـ Revoke-Obfuscation.

تنزيل الأداة