psobf:一款针对PowerShell的代码混淆处理工具

admin 2024年10月14日22:06:13评论41 views字数 2472阅读8分14秒阅读模式

psobf:一款针对PowerShell的代码混淆处理工具

关于psobf

psobf是一款针对PowerShell的代码混淆处理工具,广大安全研究人员可以轻松使用该工具完成对PowerShell代码的安全加固和混淆处理。

psobf:一款针对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:一款针对PowerShell的代码混淆处理工具

psobf:一款针对PowerShell的代码混淆处理工具

项目地址

psobf

https://github.com/TaurusOmar/psobf

原文始发于微信公众号(FreeBuf):psobf:一款针对PowerShell的代码混淆处理工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月14日22:06:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   psobf:一款针对PowerShell的代码混淆处理工具https://cn-sec.com/archives/3268095.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息