前言

微软的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

如何在Kali Linux下编译Windows Exploit的更多相关文章

  1. 教你如何在Kali Linux 环境下设置蜜罐?

    导读 Pentbox是一个包含了许多可以使渗透测试工作变得简单流程化的工具的安全套件.它是用Ruby编写并且面向GNU/Linux,同时也支持Windows.MacOS和其它任何安装有Ruby的系统. ...

  2. Libevent windows/linux下编译

    1.windows下: 编译环境: windows xp sp3 + vs2010 (1)    解压libevent-2.0.21-stable.tar.gz到D:\libevent-2.0.21- ...

  3. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  4. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  5. <iostream> 和 <iostream.h>的区别 及 Linux下编译iostream.h的方法

    0.序言 其实2者主要的区别就是iostream是C++标准的输入输出流头文件,而iostream.h是非标准的头文件. 标准头文件iostream中的函数属于标准命令空间,而iostream.h中的 ...

  6. Linux 下编译、安装、配置 QT

    转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...

  7. linux下编译eXosip、osip,以及UAC和UAS的例子

    从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...

  8. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  9. Linux下编译GDAL

    一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...

随机推荐

  1. js中几种实用的跨域方法原理详解(转)

    今天研究js跨域问题的时候发现一篇好博,非常详细地讲解了js几种跨域方法的原理,特分享一下. 原博地址:http://www.cnblogs.com/2050/p/3191744.html 下面正文开 ...

  2. JMeter中HTTP Cookie 管理器使用

    案例: 在一次做公司OA系统的时候,发现录制脚本无法回放成功,通过定位,是因为登录的过程中存在重定向,导致登录接口的状态没有自动带入重定向页面 解决方法: 加入HTTP Cookie 管理器使用 现象 ...

  3. 微信录音接口的调用以及amr文件转码MP3文件的实现

    最近实现录音功能,主要涉及到录音的上传和下载,以及转码问题.微信,QQ默认的的音频文件是amr格式的,而播放器却不识别amr格式的音频,必须尽行转码.amr文件分为两种,一种是通用的amr格式,这种文 ...

  4. OpenLDAP安装

    参考: http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%85 ...

  5. TCP3次握手和4次挥手

    为什么握手是3次,挥手是4次? 因为握手的时候,ACK+SYN可以一起发送,而4次挥手是Server端发送对Client的FIN的ACK后不一定会立即断开连接,需要将ACK和FIN分开发送 为什么TI ...

  6. jQuery 事件

    什么是事件 页面对不同访问者的响应叫做事件. 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法. 常见 DOM 事件: 鼠标事件 键盘事件 表单事件 文档/窗口事件 click keypr ...

  7. iis 不能访问json文件

    我从网上查的资料,解决方案都是设置MIME 映射和“处理脚本映射”. 我按照网上的解决方案执行之后还没有解决我的这个问题,所以我想会不会是其他的原因. 在那么一瞬间,灵光一闪,我把json文件放到新建 ...

  8. <button>属性,居然才发现

    今天学习了一个表单验证的程序,发现点了一个<botton>之后,表单里面的所有输入框的内容,统统都消失了,后来一查看源代码,我发现居然是<botton>里面的属性如下: < ...

  9. python 常用内置函数

    编译,执行 repr(me)                          # 返回对象的字符串表达 compile("print('Hello')",'test.py','e ...

  10. poj2796 维护区间栈//单调栈

    http://poj.org/problem?id=2796 题意:给你一段区间,需要你求出(在这段区间之类的最小值*这段区间所有元素之和)的最大值...... 例如: 6 3 1 6 4 5 2 以 ...