前言

微软的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上编译Windows EXP

    使用vc6.0去编译的时候,难免会出现点问题 这里找到MS11-046的exp来编译 poc地址:https://www.exploit-db.com/exploits/40564/ 首先需要安装mi ...

  2. Compile for Windows on Linux(交叉编译,在Linux下编译Windows程序),以OpenSSL为例

    OpenSSL for Windows In earlier articles, we have looked at how to create a gcc build environment on ...

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

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

  4. Libevent windows/linux下编译

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

  5. 在虚拟机linux环境下编译windows版adb fastboot

    原文出自:http://blog.chinaunix.net/uid-20546441-id-1746200.html 我根据虚拟机编译遇到的问题进行一些添加 [前提条件] Linux Android ...

  6. Linux下编译并使用miracl密码库

    参考:http://blog.sina.com.cn/s/blog_53fdf1590102y9ox.html MIRACL(Multiprecision Integer and RationalAr ...

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

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

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

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

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

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

随机推荐

  1. SharePoint 2013 日历重叠功能简介

    之前做了一个“SharePoint 2013 日历根据Category显示不同颜色”,然后大家留言说为什么不用SharePoint自带的日历重叠功能,所以自己尝试一下这个功能,和之前的博客进行一下对比 ...

  2. CALayer 易混淆的两个属性 - position和anchorPoint

    1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position;                           ...

  3. 为什么relativelayout.layoutParams的width为-1

    源码里看下就知道了.. -1不代表宽度,代表MATCH_PARENT常量的值public static final int FILL_PARENT = -1; public static final ...

  4. XListView

    第一步:到官网下载第三方包,拷贝到自己的项目中 https://github.com/Maxwin-z/XListView-Android 第二步:xml文件 <me.maxwin.view.X ...

  5. iOS runtime的理解和应用

    项目中经常会有一些的功能模块用到runtime,最近也在学习它.对于要不要阅读runtime的源码,我觉得仅仅是处理正常的开发,那真的没有必要,只要把常用的一些函数看下和原理理解下就可以了. 但是如果 ...

  6. iOS开发之多线程技术

    本篇争取一篇讲清讲透,依然将通过四大方面清晰的对iOS开发中多线程的用法进行详尽的讲解: 一.什么是多线程 1)多线程执行原理 2)线程与进程 3)多线程的优缺点 二.我们为什么要用多线程编程技术 三 ...

  7. Github上十大C#开源项目排行榜

    1.SignalR ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.当WebSockets可用时(即浏览器支持Ht ...

  8. asp.net开发中常见公共捕获异常方式总结(附源码)

    本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...

  9. Extjs4.1中图片数据源

    var jdPicStore = Ext.create('Ext.data.Store',{             fields: ['icon','evalValue'],             ...

  10. 数据库模型设计——历史与版本设计

    在企业数据库设计中,经常会遇到一个需求,就是希望把操作之前的数据保留下来,能够看到操作之前是什么数据,操作之后是什么数据.对于这种需求,我们可以使用保留历史数据或者使用版本来实现. 为了能够保留历史数 ...