freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

psobf:一款针对PowerShell的代码混淆处理工具
2024-10-07 18:32:10
所属地 广西

关于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传送门

# powershell # 混淆技术 # 代码混淆 # 混淆代码 # PowerShell脚本混淆
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录