前言
微软的Windows在企业或是个人应用领域占据着最大的市场份额,在渗透测试过程中你会经常遇到很多Windows的工作站和服务器。另一方面,大多数渗透测试人员主要使用基于Linux的发行版渗透测试系统,比如Kali Linux或者Pentoo和Backbox。因此你可能就需要有在Linux机器上快速编译Windows Exploit的能力。一款叫做“Mingw-w64”的软件可以解决这个问题。
Mingw-w64 是一款用于创建Windows应用程序的开源开发环境。Mingw-w64源码Mingw32,因为它起初并不支持 64位的操作系统。在本教程中,我将演示如何在Kali Linux下编译Windows Exploit。下面让我们先在Kali Linux上安装 Mingw-w64。
Kali Linux安装Mingw-w64
Kali Linux 2.0并未集成Mingw-w64,需要我们手动安装。命令如下:
输入“Y”继续安装。安装需要等待一段时间。
找不到MinGW-W64安装包
在安装过程中可能会提示你无法找到MinGW-W64安装包:
要解决这个问题得确保在sources.list文件有可用的存储库。使用nano来编辑该文件:
/etc/apt/sources.list
检查存储库是否正确可用,不同版本Kali Linux的存储库可以在以下页面找到:
http://docs.kali.org/general-use/kali-linux-sources-list-repositories
正确配置好sources.list文件的存储库之后使用apt-get update来更新源,然后重新安装Mingw-w64即可。
使用MinGW-W64编译Windows Exploit
成功安装Mingw-w64之后,我将以CVE-2011-1249(MS11-046)漏洞为例,它是一个用C语言编写的Windows 7 SP0 x86上的一个Exploit。这个版本的Windows系统在辅助功能驱动程序(AFD)中包含一个特权提升漏洞。Mingw-w64虽然是为64位的系统定制的,但它依然可以编译32位的Windows Exploit。
我们先从Exploit-db上下载需要编译的Exploit:
使用以下命令编译Windows 32位的afd.sys Exploit:
编译Windows 7 afd.sys提权Exploit的命令如下:
编译完成后将编译好的exe文件拷贝到Apache web服务根目录下测试利用,使用cmd.exe打开可以看到如下信息:
可以看到编译好的Exploit在windows 7上被成功执行后将我们的权限从test提升为了system。这个Exploit是在当前shell中生成了一个新的shell,而不是在新窗口中创建新shell 。这意味着我们可以从命令行shell运行此利用程序。比如在Meterpreter中。
Meterpreter shell下利用
我们可以使用Msfvenom来快速生成一个Meterpreter的TCP反弹shell,并在目标主机上执行。同时我们使用 Metasploit下的Multi handler来处理反弹会话。使用以下命令生成 Payload:
IP和Port根据自身情况填写然后启动msfconsole配置Multi handler exploit:
下载Exploit并执行,我们就会得到目标主机Meterpreter会话shell :
然后我们就可以通过shell进入命令行console运行Exploit来实现权限的提升操作:
如图我们成功将普通权限提升为了系统权限。由于在执行它的shell中生成了一个新的系统shell,我们权限将会受到一定限制,导致我们无法在原来的shell中看到Exploit的输出信息。Exit退出到普通shell中就可以看到Exploit的输出信息:
MottoIN小编注
Kali 下编译 Exploit
gcc -m32 -o output32 hello.c (32 位)
gcc -m64 -o output hello.c (64 位)
Kali 下编译 Windows Exploit
wget -O mingw-get-setup.exe http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
wine mingw-get-setup.exe
select mingw32-base
cd /root/.wine/drive_c/windows
wget http://gojhonny.com/misc/mingw_bin.zip && unzip mingw_bin.zip
cd /root/.wine/drive_c/MinGW/bin
wine gcc -o ability.exe /tmp/exploit.c -lwsock32
wine ability.exe