关于psobf
psobf是一款针对PowerShell的代码混淆处理工具,广大安全研究人员可以轻松使用该工具完成对PowerShell代码的安全加固和混淆处理。
psobf基于Go语言开发,是一款PowerShell脚本工具。该工具的主要目的是混淆 PowerShell 代码,增强代码的安全性。该脚本提供 5 个级别的混淆,从基本混淆到脚本碎片化。这允许用户根据自己的特定需求定制混淆级别。
功能介绍
1、混淆级别:四个混淆级别,每个级别都比前一个更复杂。
2、通过将脚本拆分成单个字符来进行 1 级混淆。
3、脚本的 2 级为 Base64 编码。
4、级别 3 使用不同的 PowerShell 解码方法替代 Base64 编码。
5、脚本的 4 级压缩和 Base64 编码将在运行时解码和解压缩。
5、级别 5 将脚本分割成多个部分并在运行时重建。
6、压缩和编码:级别 4 包括在以 base64 编码之前对脚本进行压缩。
7、变量混淆:添加了一个函数来混淆 PowerShell 脚本中的变量名称。
8、随机字符串生成:生成随机字符串以混淆变量名。
工具要求
Go
工具安装
由于该工具基于Go开发,因此我们首先需要在本地设备上安装并配置好最新版本的Go环境。
源码获取
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/TaurusOmar/psobf.git
Go安装
go install github.com/TaurusOmar/psobf@latest
工具使用
混淆级别示例
混淆级别分为5个选项,首先你需要有一个需要混淆的PowerShell文件,假设你有一个文件,文件名称script.ps1如下:
Write-Host "Hello, World!"
级别 1:基本混淆
使用 1 级混淆运行脚本:
./obfuscator -i script.ps1 -o obfuscated_level1.ps1 -level 1
这将生成一个obfuscated_level1.ps1以模糊化内容命名的文件。结果将是你的脚本的一个版本,其中每个字符都用逗号分隔并在运行时组合。
结果(级别 1):
$obfuscated = $([char[]]("`W`,`r`,`i`,`t`,`e`,`-`,`H`,`o`,`s`,`t`,` `,`"`,`H`,`e`,`l`,`l`,`o`,`,` `,`W`,`o`,`r`,`l`,`d`,`!`,`"`") -join ''); Invoke-Expression $obfuscated
第 2 级:Base64 编码
使用 2 级混淆运行脚本:
./obfuscator -i script.ps1 -o obfuscated_level2.ps1 -level 2
这将生成一个obfuscated_level2.ps1以 base64 编码的内容命名的文件。执行此脚本时,它将在运行时解码并运行。
结果(级别 2):
$obfuscated = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('V3JpdGUtSG9zdCAiSGVsbG8sIFdvcmxkISI=')); Invoke-Expression $obfuscated
第 3 级:替代 Base64 编码
使用 3 级混淆执行脚本:
./obfuscator -i script.ps1 -o obfuscated_level3.ps1 -level 3
此级别使用 PowerShell 中略有不同的 base64 编码和解码形式,添加了额外的混淆层。
结果(级别 3):
$e = [System.Convert]::FromBase64String('V3JpdGUtSG9zdCAiSGVsbG8sIFdvcmxkISI='); $obfuscated = [System.Text.Encoding]::UTF8.GetString($e); Invoke-Expression $obfuscated
级别 4:压缩和 Base64 编码
使用4级混淆执行脚本:
./obfuscator -i script.ps1 -o obfuscated_level4.ps1 -level 4
此级别在对脚本进行 base64 编码之前对其进行压缩,使分析更加复杂。结果将在运行时解码和解压。
结果(级别 4):
$compressed = 'H4sIAAAAAAAAC+NIzcnJVyjPL8pJUQQAlRmFGwwAAAA='; $bytes = [System.Convert]::FromBase64String($compressed); $stream = New-Object IO.MemoryStream(, $bytes); $decompressed = New-Object IO.Compression.GzipStream($stream, [IO.Compression.CompressionMode]::Decompress); $reader = New-Object IO.StreamReader($decompressed); $obfuscated = $reader.ReadToEnd(); Invoke-Expression $obfuscated
第五级:脚本碎片化
使用 5 级混淆运行脚本:
./obfuscator -i script.ps1 -o obfuscated_level5.ps1 -level 5
此级别将脚本分割成多个部分,并在运行时重新构建。
结果(级别 5):
$fragments = @( 'Write-', 'Output "', 'Hello,', ' Wo', 'rld!', '"' ); $script = $fragments -join ''; Invoke-Expression $script
工具使用演示
项目地址
psobf:【GitHub传送门】
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)