【实验原理】RDP协议是一个多通道的协议让用户连上提供微软终端机服务的电脑。windows在处理某些对象时存在错误可通过特制的RDP报文访问未初始化或已经删除的对象导致任意代码执行然后控制系统。攻击者向受影响的系统发送一系列特制RDP数据包则这个漏洞可能造成拒绝服务攻击或允许远程执行代码。默认情况下任何Windows操作系统都未启用远程桌面协议(RDP默认端口3389)。没有启用RDP的系统不受威胁。此实验对目标系统造成了DOS攻击。1. 基础概念RDP远程桌面协议Windows 远程桌面服务默认端口3389用来远程连接、操控 Windows 主机。MS12-020微软 2012 年发布的高危 RDP 漏洞存在于 Windows XP / Win7 / Server 2003/2008 等系统。 成因系统解析特制 RDP 数据包时内存对象处理逻辑缺陷可触发两类攻击DoS拒绝服务攻击目标主机蓝屏、卡死、远程桌面彻底瘫痪无法正常使用远程代码执行高危提权 / 远控部分场景可直接拿下主机权限。重要前提目标主机必须开启 3389 远程桌面服务未开启 RDP 则该漏洞无法利用。【软件工具】操作系统Kali2020、Windows7其他metasploit 2、前置配置必须做否则攻击失败Win7 靶机开启远程桌面 右键「计算机」→ 属性 → 远程设置 → 勾选允许运行任意版本远程桌面的计算机连接。关闭 Windows 防火墙或放行 3389 端口。记录靶机 IP 地址记为靶机IP后续全程使用。攻击机 Kali 与 Win7 处于同一网段能互相 ping 通。【实验拓扑】【实验目标】使用ms12-020攻击脚本攻击目标靶机。【实验步骤】进入kali操作系统点击菜单栏中的终端图标打开终端。输入nmap-A192.168.1.4可以看到目标服务器上开启了3389服务。1.nmap -A 192.168.1.4这一步目的确认目标是否开启了 RDP3389 端口原理Nmap 扫描目标端口当看到3389/tcp open ms-wbt-server时说明远程桌面服务是开启的才有可能受 MS12-020 影响。意义这是攻击的前提条件没开 3389漏洞根本触发不了。输入msfconsole启动msf输入search ms12-020查找该漏洞攻击脚本。2.search ms12-020搜索脚本目的在 Metasploit 的模块库中找到和 MS12-020 漏洞相关的所有工具包括检测和攻击模块。一共搜索出两个关于ms12-020的脚本一个是检测脚本一个是利用脚本。使用ms12-020检测脚本输入useauxiliary/scanner/rdp/ms12_020_check输入showoptions查看设置。你搜到的两个模块分工完全不一样序号模块路径类型作用实验里什么时候用0auxiliary/dos/windows/rdp/ms12_020_maxchannelids攻击模块DoS 利用发送特制数据包直接让目标蓝屏 / 宕机拒绝服务验证漏洞是否能被利用、做 DoS 攻击时用1auxiliary/scanner/rdp/ms12_020_check检测模块漏洞扫描探测目标主机是否存在 MS12-020 漏洞不会对目标造成破坏攻击前先确认目标是否 “可被攻击” 时用手册里让你先使用的是检测脚本ms12_020_check就是为了先确认目标是否有这个漏洞再决定要不要用攻击模块避免白忙活。3.use auxiliary/scanner/rdp/ms12_020_check使用检测脚本目的加载漏洞扫描模块准备探测目标是否存在 MS12-020 漏洞。4.show options查看设置目的查看这个模块需要配置哪些参数最核心的就是RHOSTS目标 IP。典型输出里你会看到必填的RHOSTS选项值为空需要你手动设置。已经成功加载了ms12_020_check漏洞检测模块show options命令用来查看这个模块需要哪些配置表格里的每一列是什么意思列名含义Name参数的名字Current Setting当前已经设置的值Required是否必须配置yes/noDescription参数的作用说明三个关键参数解读①RHOSTSRequired: yes必须配置含义目标主机的 IP 地址 / 网段也就是你要检测哪台机器。当前状态Current Setting是空的说明还没设置目标这是你接下来必须做的事。②RPORTRequired: yes当前值3389含义目标主机的 RDP 服务端口默认就是 3389和你之前 Nmap 扫描的结果对应一般不用改。③THREADSRequired: yes当前值1含义扫描时的并发线程数1 就足够不用调整。这张图表明了什么✅模块加载成功没有报错说明 Metasploit 里的这个检测脚本是正常可用的⚠️还没配置目标RHOSTS是空的现在直接run会报错✅其他参数默认正确RPORT和THREADS都已经是合理的默认值不用修改。5.输入setrhosts192.168.1.4设置目标输入run运行可以看到存在这个漏洞。漏洞检测结果这一行[]绿色提示是实验里最关键的确认信息含义目标主机192.168.1.4的 3389 端口RDP 服务确实存在 MS12-020 漏洞。说明目标 Win7 没有打补丁RDP 服务版本匹配完全可以被后面的攻击脚本利用。后面两行[*]只是执行状态Scanned 1 of 1 hosts扫描完成1 台主机检测完毕Auxiliary module execution completed检测脚本正常退出6.输入use auxiliary/dos/windows/rdp/ms12_020_maxchannelids使用利用脚本然后输入showoptions查看设置切换到 DoS 攻击模块这一步是切换到真正的攻击脚本模块类型dos/windows/rdp/ms12_020_maxchannelids专门用来对 RDP 服务进行拒绝服务攻击show options结果里只有两个必填参数RHOSTS目标 IP需要你手动设置成192.168.1.4RPORT目标端口默认 3389不用改输入setrhosts192.168.1.4设置目标输入run运行可以看到攻击成功切换到另一台机器可以看到目标机重启了机器蓝屏会自动重启的进入Windows错误恢复界面。