混淆PowerShell脚本

ojsjcaue  于 2023-05-07  发布在  Shell
关注(0)|答案(3)|浏览(184)

我已经写了一个PowerShell脚本在许多小时和天,并想混淆它,但这样的代码不再可读或反编译,但脚本仍然可以执行。有类似的东西吗?

k10s72fa

k10s72fa1#

至于实际上混淆整个powershell脚本,这个site似乎就是这样做的。
一年多前,我测试了一个脚本,以下是我的一些发现:
1.Windows10:混淆的脚本在Windows 10上工作。我不记得我当时的Powershell版本。
1.macOS:确认它也适用于Mac(如果你安装了powershell),但我记得有一些错误。
几分钟前,我刚刚在Windows Server 2016(PSVersion:5.1./Desktop)系统上测试了另一个脚本。到目前为止没有问题。
现在,正如前面的海报已经提到的,重要的是要注意 * 任何 * 混淆都可以被黑客入侵。这只是黑客的动机问题。
我之所以说“任何”,是因为你不能控制你的powershell脚本将被使用的主机。因此,如果愿意的话,那些这样做的人可以改变powershell程序的二进制文件,让它吐出它所做的一切。这有多容易,我不知道。但谷歌搜索一下,你会发现有一些设置,只要打开,就可以记录你的powershell脚本的整个执行过程,不管是否经过模糊处理。
以下是一些有关PowerShell日志记录的链接:

  1. PowerShell Logging: Recording and Auditing all Things
  2. About Logging Windows - PowerShell - Microsoft Docs
nr7wwzry

nr7wwzry2#

有一种东西叫做Powershell Constrained Language。
引用自这里:https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/
约束语言模式是PowerShell的一种语言模式,旨在支持日常管理任务,但限制对可用于调用任意Windows API的敏感语言元素的访问。
在“约束”模式下,不支持以下内容:

  • COM对象
  • 未经批准的.NET类型
  • 基于XAML的工作流
  • PowerShell类

它最适合运行管理任务,但不适合日常使用。要启动它,请用途:

$ExecutionContext.SessionState.LanguageMode = 'ConstrainedLanguage'

阅读更多:https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/
丹尼尔Bohmann写的Invoke Obsufcation更适合这个目的。友情链接:https://github.com/danielbohannon/Invoke-Obfuscation
使用指南:https://blog.vonhewitt.com/2017/08/obfuscating-powershell-commands-using/

t5zmwmid

t5zmwmid3#

如果你想混淆你的powershell代码,使其不可读,但保持它的工作,你应该检查一个名为Invoke-Obfuscation的项目由丹尼尔Bohannan完成。你应该检查他的talk关于powershell混淆的地方,他介绍了工具。

相关问题