Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Empire — Empire 是一个基于 PowerShell 和 Python 的后渗透代理。 | Kitploit
工具/GitHubGitHub/empireproject/empire
权限提升Payload生成持久化机制漏洞利用横向移动后渗透利用渗透测试命令与控制红队Archived
GitHubempireproject/empire

Empire

Empire 是一个基于 PowerShell 和 Python 的后渗透代理。

7.9k2.9k46年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库网站

Invoke-Obfuscation v1.8

Invoke-Obfuscation Screenshot

介绍

Invoke-Obfuscation 是一个兼容 PowerShell v2.0+ 的 PowerShell 命令和脚本混淆器。

背景

2015 年秋季,我决定开始研究 PowerShell 语言的灵活性,并开始系统性地整理攻击者日常常用的几种技术所对应的各种实现方式。

最初专注于编码命令和远程下载负载语法,我发现一些不阻碍命令执行的转义字符会保留在命令行参数中,无论是运行中的进程还是安全事件日志 (Security EID 4688) 和 Sysmon EID 1 事件日志中记录的内容。这促使我系统地探索了混淆任何 PowerShell 命令或脚本中每种“标记(token)”的方法。

随后我研究了更晦涩的字符串级混淆技术、多种编码/加密技术(如 ASCII/十六进制/八进制/二进制甚至 SecureString),以及最后用于抽象 powershell.exe 命令行参数并将其推回父进程甚至祖父进程的 PowerShell 启动技术。

目的

攻击者和商品恶意软件已开始使用极其基础的混淆技术来隐藏 powershell.exe 命令行参数中的大部分命令。我开发此工具旨在帮助蓝队模拟我已知在 PowerShell 2.0-5.0 中语法上可行的混淆命令,以便他们测试对这些技术的检测能力。

该工具的唯一目的是打破我们作为防御者关于 PowerShell 命令在命令行中可能出现方式的任何假设。我希望它能鼓励蓝队不仅在命令行上寻找混淆指标,还要更新 PowerShell 日志记录以包括模块、脚本块和转录日志,因为这些源简化了此工具生成的大多数混淆技术的检测。

用法

虽然所有混淆层都已构建为单独的脚本,但大多数用户会发现 Invoke-Obfuscation 函数是探索和可视化此框架当前支持的混淆技术的最简单方式。

安装

Invoke-Obfuscation 的源代码托管在 GitHub,您可以从此仓库 (https://github.com/danielbohannon/Invoke-Obfuscation) 下载、复刻和审查。请通过与此项目关联的 GitHub 问题跟踪器报告问题或功能请求。

要安装:

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

许可证

Invoke-Obfuscation 在 Apache 2.0 许可证下发布。

发布说明

v1.0 - 2016-09-25 DerbyCon 6.0 (美国肯塔基州路易斯维尔): Invoke-Obfuscation 公开发布。

v1.1 - 2016-10-09 SANS DFIR 峰会 (捷克共和国布拉格): 为所有适用的 TOKEN 混淆函数添加了 -f 格式运算符重新排序功能。还增加了设置变量值的额外语法选项。

v1.2 - 2016-10-20 CODE BLUE (日本东京): 添加了类型 TOKEN 混淆 (直接类型转换,带有类型名称的字符串混淆选项)。

v1.3 - 2016-10-22 Hacktivity (匈牙利布达佩斯): 添加了两个新的 LAUNCHER: CLIP+ 和 CLIP++。还为所有 ENCODING 函数添加了额外的 (且更简单的) 数组字符转换语法,无需 For-EachObject/% 即可实现。

v1.4 - 2016-10-28 BruCON (比利时根特): 添加了新的 BXOR ENCODING 函数。增强了所有 ENCODING 函数中所有组件以及所有 LAUNCHER 中 PowerShell 执行标志的随机大小写。最后,为所有 LAUNCHER 添加了 -EP 缩写选项 (替代 -ExecutionPolicy),以及可选的整数表示 -WindowStyle PowerShell 执行标志: Normal (0), Hidden (1), Minimized (2), Maximized (3)。

v1.5 - 2016-11-04 Blue Hat (美国华盛顿州雷德蒙德): 添加了 WMIC LAUNCHER,带有 WMIC 命令行参数的一些随机化。

v1.6 - 2017-01-24 Blue Hat IL (以色列特拉维夫):

  • 添加了 CLI 功能: 例如: Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1, Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • 添加了 UNDO 功能,用于一次移除一层混淆。
  • 从 Token\All\1 中移除了空格混淆,以加速大型脚本混淆。
  • 为所有启动器添加了进程参数树输出,以帮助防御者。
  • 添加了基础菜单自动检测功能,避免需要使用 BACK 或 HOME: 例如: 如果您运行了 TOKEN 然后是 ALL 后是 1,那么只需输入 LAUNCHER 即可进入 LAUNCHER 菜单,无需输入 HOME 或 BACK 返回主页菜单。
  • 添加了多命令语法,供 CLI 和交互模式使用: 例如: Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • 为所有菜单和混淆命令添加了正则表达式支持: 例如: Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • 添加了 OUT FILEPATH 单命令功能。
  • 添加了如果 powershell -enc 语法作为 SCRIPTBLOCK 值输入时的解码功能。
  • 在所有 ENCODING 函数中为 ForEach-Object/% 的随机化语法选项添加了别名 ForEach。
  • 在 Out-SecureStringCommand.ps1 中添加了 -Key -Ke -K KEY 子字符串语法选项。
  • 为所有 \Home\String 混淆函数添加了更彻底的大小写随机化。
  • 为 CLIP+ 和 CLIP++ 启动器函数添加了 -ST/-STA (单线程单元) 标志,因为在 PowerShell 2.0 上运行时需要它们。
  • 在所有使用 Get-ChildItem 获取变量值的地方添加了 Get-Item/GI/Item 语法。
  • 在 TYPE 混淆函数中添加了 Set-Item 变量实例化语法。
  • 在 Out-ObfuscatedStringCommand.ps1 的 Out-EncapsulatedInvokeExpression 函数中添加了额外的 Invoke-Expression/IEX 语法,使用 PowerShell 自动变量和环境变量值拼接,并复制到所有启动器、STRING 和 ENCODING 函数中,为 IEX 添加了多种命令行语法。
  • 为 String\Reverse 和所有 ENCODING 混淆选项添加了两种新的 JOIN 语法:
  1. 添加了 [String]::Join('',$string) JOIN 语法
  2. 添加了 OFS 变量 JOIN 语法 (输出字段分隔符自动变量)
  • 为 Encoding\5 添加了两种额外的 SecureString 语法:
  1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
  2. PtrToStringBSTR / SecureStringToBSTR
  • 为几个 SecureString 成员添加了六种 GetMember 替代语法:
  1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke
  2. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
  3. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
  4. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
  5. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
  6. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • 更新了 Out-ObfuscatedTokenCommand.ps1 以使 VARIABLE 混淆在变量已封装在 ${} 中时不再将其封装 (因此不会发生 ${${var}},因为这会导致错误)。
  • 用 Invoke-Obfuscation.psd1 替换了 Invoke-Obfuscation.psm1 (感谢 @Carlos_Perez)。
  • 修复了 @cobbr_io 和 @IISResetMe 报告的多个 TOKEN 级别混淆错误。

v1.7 - 2017-03-03 nullcon (印度果阿):

  • 添加了 3 个新的 LAUNCHER: RUNDLL、RUNDLL++ 和 MSHTA++
  • 添加了额外的 ExecutionContext 通配符变量字符串

v1.8 - 2017-07-27 Black Hat (美国内华达州拉斯维加斯):

  • 添加了 2 个新的 ENCODING 选项: 特殊字符和空格
下载工具