专栏名称: FreeBuf
国内关注度最高的全球互联网安全新媒体
目录
相关文章推荐
指尖新闻沈阳晚报  ·  热搜第一!微信又上新功能 ·  2 天前  
指尖新闻沈阳晚报  ·  热搜第一!微信又上新功能 ·  2 天前  
人工智能产业链union  ·  “人工智能产业链联盟投融圈”仅限靠谱投资人& ... ·  3 天前  
环球网  ·  具有重要战略意义!中国在太空成功验证 ·  3 天前  
环球网  ·  具有重要战略意义!中国在太空成功验证 ·  3 天前  
贵州药监  ·  服务业继续发挥我国经济增长主动力作用 ·  3 天前  
贵州药监  ·  服务业继续发挥我国经济增长主动力作用 ·  3 天前  
苏州园区公安微警务  ·  守护 · 万家灯火 ·  4 天前  
苏州园区公安微警务  ·  守护 · 万家灯火 ·  4 天前  
51好读  ›  专栏  ›  FreeBuf

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

FreeBuf  · 公众号  · 互联网安全  · 2024-10-14 19:07

主要观点总结

介绍了一款名为psobf的PowerShell代码混淆处理工具,该工具基于Go语言开发,旨在增强PowerShell代码的安全性。文章详细描述了该工具的功能特点、混淆级别、工具要求和源码获取方式。

关键观点总结

关键观点1: psobf是一款PowerShell代码混淆处理工具,基于Go语言开发。

该工具的主要目的是混淆PowerShell代码,增强代码的安全性。

关键观点2: psobf提供不同级别的混淆,从基本混淆到脚本碎片化,允许用户根据需求定制混淆级别。

文章详细描述了每个混淆级别的具体实现和效果。

关键观点3: 使用psobf需要先在本地设备上安装并配置最新版本的Go环境。

源码可以通过git clone命令克隆到本地。

关键观点4: 文章提供了工具使用的演示,包括混淆级别的选择和相应的结果。

还提供了项目地址和粉丝交流群的招新信息。


正文


关于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

https://github.com/TaurusOmar/psobf


FreeBuf粉丝交流群招新啦!
在这里,拓宽网安边界
甲方安全建设干货;
乙方最新技术理念;
全球最新的网络安全资讯;
群内不定期开启各种抽奖活动;
FreeBuf盲盒、大象公仔......






请到「今天看啥」查看全文


推荐文章
指尖新闻沈阳晚报  ·  热搜第一!微信又上新功能
2 天前
指尖新闻沈阳晚报  ·  热搜第一!微信又上新功能
2 天前
苏州园区公安微警务  ·  守护 · 万家灯火
4 天前
苏州园区公安微警务  ·  守护 · 万家灯火
4 天前
新京报传媒研究  ·  柴犬:流量担当和中产阶级的审慎魅力
7 年前