HideMyPS

HideMyPS 是一个我几年前写的工具,至今它仍然广受好评。它一直都只是个 POC 工具,但即使经过这么多年它仍然有效。我遇到的问题是,现在任何 PowerShell 脚本都会被杀毒软件检测。例如,如果我们在带有 Windows Defender 的 Windows 系统上丢下了原生的 Invoke-Mimikatz.ps1,微软杀毒软件将立即启用查杀功能捕获 PowerShell 脚本并发送警告。这是传统杀毒软件的主要缺陷之一,事实是它们通常在恶意软件中寻找非常特定的字符串。因此,我整理了一个小的 Python 脚本,该脚本采用 PowerShell 脚本并对所有字符串进行混淆处理(仅使用少量脚本对其进行测试,因此它远不及生产代码)。

HideMyPS 将找到所有函数并使用 ROT 对它们进行混淆处理,从 PowerShell 脚本中删除所有注释,并切分字符串以躲避杀毒软件的静态签名分析检测。对于下一个例子,让我们使用 Invoke_Mimikatz.ps1 并对其进行混淆:

  • cd /opt/HideMyPS
  • python hidemyps.py invoke_mimikatz.ps1 [filename.ps1]

HideMyPS - 图1

现在,看看原始文件和你创建的新文件之间的区别。首先,你可以看到函数名称全部混淆,变量已经被改,字符串被分解为两半,并且所有注释都移除了。

HideMyPS - 图2

你必须记住的一件事是我们更改了 PowerShell 脚本中的所有函数名称。因此,为了调用函数,我们将不得不回顾我们的混淆文件,看看我们做了什么来替换 Invoke-Mimikatz 函数。在这个例子中,Invoke-Mimikatz 改名为 Vaibxr-Zvzvxngm。以下示例是在完全修补的 Windows 10 上运行的,其中 Windows Defender 已经更新到最新版本。

HideMyPS - 图3