Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 5 Mayo 2012, 11:46 am



Título: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 5 Mayo 2012, 11:46 am
Aquí pueden comentar todo lo que quieran, sus dudas, avances o soluciones acerca del siguiente reto:

Reto iniciado por $Edu$

Reto Nº 4

Nombre:           Melt ($Edu$)
Dificultad:        3/10
Objetivo:         "Crear un bat que al ejecutarse, se autocopie a system32, se ejecute la copia y se borre el original (el que se ejecuto por primera vez). Pero el original tendra que ser borrado en el acto, mientras esta corriendo la copia con su mensaje que sera "Hola, estoy en %0" y una pausa, asi al probarlo dira "Hola, estoy en C:\Windows\System32\copia.bat" si todo funciono bien. Nada de que se borre el original luego de que se cerro la copia, ya que piensen que el mensaje que mostrara tendra una pausa y hasta que no se presione una tecla no se borraria el original, y eso no tiene que suceder.

La primera vez que se ejecute hara lo anterior dicho, pero las siguientes veces que se ejecute la copia en system32, solamente mostrara el mensaje. Cuidado con los posibles bugs, no tiene que haber fallos nunca."
Indicaciones:   El usuario solamente vera que cuando ejecuto el bat, este desaparecio de donde estaba pero sigue ejecutandose, mostrando un mensaje que diga: "Estoy en %0" asi se sabe si funciono el melt o no.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Puntoinfinito en 5 Mayo 2012, 22:36 pm
¿Y no se puede hacer que se ejecute todo en la primera ejecución, y que lo de borrar el original se deje para el final ahorrándose la ejecución de la copia en System32?


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 5 Mayo 2012, 22:47 pm
Es que la gracia es esa.. que se ejecute la copia, y cada vez que la copia se ejecute luego, correra el programa sin problemas.

Muchos troyanos hacen eso, el usuario da doble click al server.exe y este desaparece y no saben que paso, pero lo que paso es que se autocopio a system32 por ejemplo y se ejecuto desde alli. Lo unico que en este caso se vera el bat.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: juan196518 en 6 Mayo 2012, 05:16 am
Código
  1. @Echo off
  2. Set "Destino=C:\Windows\System32"
  3. Copy "%~0" "%Destino%"
  4. start C:\Windows\System32\ABC.bat
  5. del C:\Users\Gustavo\Desktop\Abc.bat


Listo,pero todavía no lo probe y no me acuerdo bien si el comando para abrir era start o open


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: ELVJop en 6 Mayo 2012, 11:11 am
Es start pero el tuyo tiene 3 errores que bien visto el mio tenia 1 de los tuyos...
Código:
start C:\Windows\System32\ABC.bat
del C:\Users\Gustavo\Desktop\Abc.bat
1-Como sabes que el archivo ejecutado se llama ABC? Si yo le cambio de nombre no sera asi.
2- C:\Windows? y si esta en D:\Windwos? mejor %Windir%
3-C:\useres\gustavo.... esto es para ti para los demas seria %userprofile%\dektop pero incluso asi no seria mejor del %0?


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 6 Mayo 2012, 11:26 am
Código
  1. Set "Destino=C:\Windows\System32"
  2. Copy "%~0" "%Destino%"
  3.  

Si no le añades un slash "\" al final de la ruta, Lo que estarás haciendo es copiar tu archivo bat dandole el nombre de "System32"...
Nunca os fijais en eso, he!? xD

Código
  1. del C:\Users\Gustavo\Desktop\Abc.bat
  2.  
Batch es secuencial, Esto es procesamiento por lotes, Una vez hayas borrado el bat que estás ejecutando con "DEL", NINGUNA linea de abajo se procesará.

En este caso no importa, porque solo es un "exit", Pero se debe hacer concatenando los comandos en una sola linea:
Código
  1. del C:\Users\Gustavo\Desktop\Abc.bat & pause
Salu2


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: juan196518 en 6 Mayo 2012, 21:43 pm
Suponiendo que el archovo se llame ABC.bat y lo ejecutamos como administrador
funcionaria en cualquier maquina.
Una parte del code
Código
  1. @Echo off
  2. Set "Destino=C:\Windows\System32\"
  3. ...
  4. del C:\Users\%userprofile%\Desktop\Abc.bat pause
  5.  


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: -- KiLiaN -- en 6 Mayo 2012, 23:46 pm
A mi no me deja copiarlo en system32 ni ejecutando como admin :S ya mañana me pondre a ello..


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 6 Mayo 2012, 23:54 pm
Se supone que antes de poner un codigo hay que verificarlo... y no es cuestion de poner codigos asi nomas.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: juan196518 en 7 Mayo 2012, 00:40 am
Se supone que antes de poner un codigo hay que verificarlo... y no es cuestion de poner codigos asi nomas.
Mi codigo anda ya lo probe y anda en cuanquier maquina


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 7 Mayo 2012, 05:46 am
Mi codigo anda ya lo probe y anda en cuanquier maquina
Estás equivocado.

Código
  1. del C:\Users\%userprofile%\Desktop\Abc.bat pause
  2.  
Te sugiero que leas un manual BÁSICO.

salu2


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: juan196518 en 7 Mayo 2012, 15:53 pm
lo copie mal =(

hay lo arreglo


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: 79137913 en 7 Mayo 2012, 15:55 pm
HOLA!!!

Código
  1. @ECHO OFF
  2. IF EXIST "%SystemRoot%\system32\Malo.bat" GOTO ENDBAT
  3. COPY /Y %0 "%SystemRoot%\system32\Malo.bat"
  4. CALL "%SystemRoot%\system32\Malo.bat"
  5. DEL /S /Q %0
  6. :ENDBAT
  7. ECHO "ME ESTOY EJECUTANDO EN"
  8. ECHO %0

Para que la ejecucion sea paralela cambiamos el CALL por un START.

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 7 Mayo 2012, 17:30 pm
No se ve que se ejecuta la copia porque le falta un pause, pero se lo puse y se ve que se ejecuta la copia.. pero no se borra el original..


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: 79137913 en 7 Mayo 2012, 19:47 pm
HOLA!!!

Tenes razon, ahora si funciona, el ultimo exit estaba de mas :P

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 7 Mayo 2012, 19:59 pm
Te falto el pause otra vez al final, pero ta, se entiende. Y fijate que se borra si, pero la idea es que se borre mientras se esta ejecutando la copia, tu bat lo que hace es borrarse cuando se cierra la copia, y no es asi, tiene que borrarse enseguida que se ejecuta.

Por eso mismo es el pause al final, para simular que esta corriendo codigo ahi dentro, como si fuera un malware que hace algo, pero vos no pusiste el pause entonces parece como si anda pero al ponerle el pause te daras cuenta que se borra una vez que se cierra la copia y tiene que ser enseguida que se ejecuta.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 8 Mayo 2012, 16:47 pm
HOLA!!!

Código
  1. @ECHO OFF
  2. IF EXIST "%SystemRoot%\system32\Malo.bat" GOTO ENDBAT
  3. COPY /Y %0 "%SystemRoot%\system32\Malo.bat"
  4. CALL "%SystemRoot%\system32\Malo.bat"
  5. DEL /S /Q %0
  6. :ENDBAT
  7. ECHO "ME ESTOY EJECUTANDO EN"
  8. ECHO %0

Para que la ejecucion sea paralela cambiamos el CALL por un START.

GRACIAS POR LEER!!!

No, no funciona bien, larga una ventana sin el texto.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: 79137913 en 8 Mayo 2012, 19:13 pm
HOLA!!!

Otra alternativa entonces:
Código:
@ECHO OFF
IF %0=="%SystemRoot%\system32\Malo.bat" GOTO ENDBAT
COPY /Y %0 "%SystemRoot%\system32\Malo.bat"
SET A=DEL /S /Q
SET A=%A%%0
ECHO %A%>>"%SystemRoot%\system32\Malo.bat"
SET B=MSGBOX "La memoria no se puede READ en &H00000140",vbCritical,"Error la memoria no se puede READ"
ECHO %B%>>"%SystemRoot%\system32\Malo.VBS"
CALL "%SystemRoot%\system32\Malo.VBS"
DEL /S /Q "%SystemRoot%\system32\Malo.VBS"
CALL "%SystemRoot%\system32\Malo.bat"
PAUSE
:ENDBAT
ECHO "ME ESTOY EJECUTANDO EN"
ECHO %0
cls
CALL

P.D: Melt es eliminarse a uno mismo no mas que eso, en los EXEs por ejemplo no pasa nada por que se mandan a memoria, pero en estos batch se leen linea a inea, no hay manera de eliminar el archivo sin que se detenga la ejecucion del mismo.

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 9 Mayo 2012, 12:47 pm
pero en estos batch se leen linea a inea, no hay manera de eliminar el archivo sin que se detenga la ejecucion del mismo.

Estás algo equivocado, Se puede hacer precisamente porque es un bat!

Código
  1. @ECHO OFF
  2. Del /Q %0 & Echo sigo vivo! & Pause & Echo Lo ves? & Pause & Echo Muahahaha nadie me puede matar!! & Pause & Exit

Un saludo


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: 79137913 en 9 Mayo 2012, 13:13 pm
HOLA!!!

[/quote]
En estos batch se leen Linea a Linea, no hay manera de eliminar el archivo sin que se detenga la ejecucion del mismo.

Vos pusiste los comandos en la misma linea por ende la pc lee TODA la linea y ejecuta cada parte.

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 9 Mayo 2012, 13:30 pm
Vos pusiste los comandos en la misma linea por ende la pc lee TODA la linea y ejecuta cada parte.

Es a lo que me refería, Pensé que tú no, Entonces no hay problema!

Salu2


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 9 Mayo 2012, 14:59 pm
Código
  1. @ECHO OFF
  2. Del /Q %0&(
  3. echo Sigo vivo jeje!
  4. echo Muahaha
  5.  

Distintas lineas.. problem? xDD

De todos modos no necesitas eso, sino que se borre desde la copia una vez que ya se cerro el original, pero la cosa es como sabe la copia donde estaba el original.. talvez al ejecutar la copia se le paso esa direccion como argumento? jeje.

Yu codigo anda menos que el anterior, no se porque esos mensajes en vbs. De ultima si nadie puede hacerlo bien subo la solucion para el que la quiera mirar y el que la mejore se gana el punto si asi lo quiere Elektro


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 9 Mayo 2012, 15:31 pm
De ultima si nadie puede hacerlo bien subo la solucion para el que la quiera mirar y el que la mejore se gana el punto si asi lo quiere Elektro

Ok es tu reto, Como quieras, Pero súbela a pastebin porfavor xD (Ya sabes q hay mucho copión)

Salu2


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: 79137913 en 9 Mayo 2012, 15:42 pm
HOLA!!!

ya encontre mi error, mi primer codigo era correcto, por que si cambiaba el call por start funciona como veran en el siguiente codigo 100% funcional.

Aca tienen el codigo que funciona igual que la solucion.

Código
  1. @ECHO OFF
  2. IF %0==a.bat GOTO ENDBAT
  3. COPY /Y %0 "%SystemRoot%\system32\a.bat"
  4. cls
  5. START "%SystemRoot%\system32\" "a.bat"
  6. DEL /S /Q %0
  7. :ENDBAT
  8. ECHO "ME ESTOY EJECUTANDO EN"
  9. ECHO %0

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 9 Mayo 2012, 17:38 pm
No xD, fijate bien el comando START en la cmd, con start/? y fijate que dice creo algo de que lo primero que pones entre comillas es el titulo de la ventana, pero si no pones comillas si te toma como archivo a ejecutar. Aunque te tendria que ejecutar el "a.bat" que este al lado y no hay nada pero ejecuta algo, que no es la copia porque dice:

Código:
"Me estoy ejecutando en"
a.bat


Y si sale bien tendria que decir en C:\...\system32\a.bat

Despues el cls ese lo habras puesto para que no largue mensaje de que se copio, eso podes hacerlo haciendo que el comando no largue informacion asi:

copy /y %0 "%windir%\System32\a.bat">nul

Date por vencido maldito xDD


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: 79137913 en 9 Mayo 2012, 18:44 pm
HOLA!!!

No seas ladron, vos y yo sabemos que se ejecuta en ese sitio!

Citar
El usuario solamente vera que cuando ejecuto el bat, este desaparecio de donde estaba pero sigue ejecutandose, mostrando un mensaje que diga: "Estoy en %0" asi se sabe si funciono el melt o no.

Con todos mis codigos hubiese ejecutado codigo malicioso!

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 9 Mayo 2012, 19:06 pm
Jejeje tal vez no me has entendido del todo bien por eso, fijate el codigo mio que anda por ahi y miralo como es.

El que quiera resolver el reto por si solo no entre aca: http://foro.elhacker.net/scripting/retos_batch-t359857.0.html;msg1742604#msg1742604

Miralo y ejecutalo, no lo mires solamente, ejecutalo y veras que simple y sin bugs.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 10 Mayo 2012, 10:59 am
entonces alguna de las soluciones de 79137913 es válida o no? xD

salu2

EDITO: El objetivo del reto se ha modificado a petición de $Edu$



Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 10 Mayo 2012, 17:00 pm
Todavia no lo ha hecho nadie


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Binary_Death en 13 Mayo 2012, 22:17 pm
Eso de que si se borra el fichero actual ninguna línea más se ejecutará sólo es cierto en parte.
¿Conocéis el verdadero motivo de la expansión retardada de variables en batch?
Cuando la cmd lee un bloque entre paréntesis de código, primero lo carga en memoria para luego ejecutarlo. Eso significa que todas las variables contendrán el valor que contenían en el momento en el que el bloque fue cargado, y aunque se modifiquen dentro de éste, a no ser que expandas las variables como es debido, no mostrarán su valor correcto.

Tomando esto, mirad:

Código:
@Echo Off
(
del /f /q "%~0"
Echo.Y me sigo ejecutando.
Echo.Hola mundo
pause
Echo.Y otro hola mundo más
pause
Echo.Ahora sí que me cierro
Echo. Bye bye.
exit
)

xDD


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 13 Mayo 2012, 22:27 pm
Código
  1. @ECHO OFF
  2. Del /Q %0&(
  3. echo Sigo vivo jeje!
  4. echo Muahaha
  5.  

Distintas lineas.. problem? xDD


Ya lo habia dicho a eso..


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Binary_Death en 13 Mayo 2012, 22:59 pm
Sorry por repetirlo, había leído los posts por encima y no me había fijado  :P

De todas formas, seguro a alguien le sirve la explicación.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: BatchianoISpyxolo en 14 Mayo 2012, 16:49 pm
He aquí:

Código:
@echo off
set DIR=%windir%\system32
if not exist "%DIR%\%~n0.bat" (
copy /Y "%0" "%DIR%\%~n0.bat" 1>nul
del /f %0
call "%DIR%\%~n0.bat"
) else (
echo Hola! Estoy en %~0
pause>nul
)


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Puntoinfinito en 15 Julio 2012, 23:17 pm
Aquí el mío;

http://pastebin.com/VeUuhNZP


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Meine programmen en 22 Diciembre 2012, 21:23 pm
Bueno, en el objetivo decian que no pudiese haber ningun error, asi que hago la comprobacion de los permisos que tiene el archivo y si da "Acceso denegado." cambio la contraseña del Administrador y uso el comando runas.
Código:
@ECHO OFF
FOR /F %%A IN ('echo H^>C:\Windows\System32\H.n') DO IF "%%A"=="Acceso denegado." (GOTO :NO) else DEL "C:\Windows\System32\H.n"
echo @ECHO OFF>C:\Windows\System32\copia.bat
echo DEL %~f0>>C:\Windows\System32\copia.bat
echo echo Hola estoy en %%~f0>>C:\Windows\System32\copia.bat
echo pause>>C:\Windows\System32\copia.bat
echo exit>>C:\Windows\System32\copia.bat
cmd /k "C:\Windows\System32\copia.bat"
exit

:NO
(echo HOLA&echo HOLA)|net user Administrador *&(echo HOLA)|runas /netonly /user:Administrador@%USERDOMAIN% %0
exit
A ver que tal  ;D


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 22 Diciembre 2012, 22:32 pm
Cuando hagas direccionamiento hacelo entre parentesis, como un todo. Es decir en vez de:

Código
  1. (
  2. echo @ECHO OFF
  3. echo DEL %~f0
  4. echo echo Hola estoy en %%~f0
  5. echo exit)>>C:\Windows\System32\copia.bat
  6.  
  7.  

Pero de todas formas te complicaste mucho, no pido nada de si tiene permisos o no, tiene que andar en un usuario Administrador simplemente, sin complicaciones.
Ademas de que no pido un redireccionamiento (crear otro archivo bat) sino hacer la copia con Copy.

fijate que deje un link como lo hice yo.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Meine programmen en 23 Diciembre 2012, 11:06 am
Menuda cagada entonces. Ahora luego intentare volverlo a hacer
Pero de todas formas te complicaste mucho, no pido nada de si tiene permisos o no, tiene que andar en un usuario Administrador simplemente, sin complicaciones.
Es que fue leer el "cuidado con los posibles bugs" y me vinieron a la cabeza todos esos Accesos denegados al copiar a System32 o modificar claves del registro :xD


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: $Edu$ en 23 Diciembre 2012, 16:11 pm
Los bugs vendrian luego, ya que una vez que se hace la copia a System32, luego el usuario si ejecuta esa copia, no puede haber ningun error, solo tiene que mostrar el mensaje y no se va a copiar ya que ya esta en System32.
Es que esto es lo que hacen la mayoria de virus y era para aprender eso, hacer un melt clasico.


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Eleкtro en 23 Diciembre 2012, 18:05 pm
@$Edu$
Meine programmen, ¿Aprobado? xD

PD: Meine programmen, ya llevas MUUUCHO tiempo tocando Batch como para acostumbrarte a agrupar el redireccionamiento, ahí Edu tiene toda la razóin.

saludos


Título: Re: [Reto Batch] Melt ($Edu$)
Publicado por: Segadorfelix en 23 Diciembre 2012, 18:19 pm
Mi versión ;D
Código:
@echo off
set "abc=wormss"
IF "%0"=="%WINDIR%\System32\%abc%.bat" GOTO:PAZ
copy /Y "%0" "%WINDIR%\System32\%abc%.bat" 1>NUL
( DEL %0
start /B "" "%WINDIR%\System32\%abc%.bat"
) & exit /B
:PAZ
title
cls
ECHO Hola estoy en %0
pause
exit