Sunteți pe pagina 1din 29

Introduccin a los 'crypters'

En la pasada edicin de la NcN tuve la oportunidad de poder exponer sobre 'crypters', tema sobre el
que no es sencillo, en mi opinin, encontrar informacin de cierta calidad. Este artculo es el primero
de una serie en la que pretendo explicar, con cierto nivel de detalle, el funcionamiento y uso de los
'crypters', as como las tcnicas que se utilizan para lograr dejar indetectable un 'crypter' ya
'quemado'.

Para evadir la deteccin de malware por parte de los programas Antivirus, en adelante AVs, se
utilizan diferentes tcnicas, una de ellas es el uso de 'crypters'. stos permiten cifrar cualquier
archivo binario para hacerlo 'invisible' a los AVs.

Es cierto, como mencionaba Yago Jess recientemente en su post que los 'crypters' tienen mala
fama, pero tambin la tenan los exploits hace unos aos y hoy en da estn integrados en todo tipo
de aplicativos de seguridad, como Metasploit por ejemplo. Obviamente los 'crypters' son usados por
los delincuentes para evitar la deteccin de los AVs e infectar los ordenadores, llevando a cabo todo
tipo de tropelas, pero tambin pueden ser utilizados, entre otros casos, en el contexto de una
auditora de seguridad.

Quin no se ha encontrado con detecciones de AVs en el transcurso de una auditora usando


Metasploit u otras herramientas? Especialmente en aquellos casos en los que se 'dropean' (vuelcan)
binarios al disco. De hecho, metasploit cuenta con una gran variedad de tcnicas de ofuscacin cuyo
objetivo es hacer indetectable el binario a los programas AV. Las tcnicas o herramientas que
ofrece Metasploit Community para llevar a cabo las tareas de indecteccin son bsicamente:
Utilizar plantillas de programas ejecutables conocidos (Calculadora de Windows, Notepad,
etc.)
Codificar mediante mltiples 'pasadas' del algoritmo que ms nos guste el cdigo del archivo
ejecutable, todo ello a travs la herramienta msfencode.

Estas tcnicas son muy efectivas con algunos AVs pero sobre otros no tienen ningn efecto. Por lo
tanto, pueden servir en ciertos escenarios pero desde luego no sirven para evitar la deteccin de
todos, o la mayor parte de los AVs. En la versin Metasploit Pro se proporcionan adems binarios
firmados que aumentan el nivel de 'indeteccin'.

En la imagen puede verse un ejemplo de uso de msfencode combinado con msfpayload para tratar
de evadir la deteccin por parte de los AVs del payload shell_reverse_tcp, en el que se utilizan 10
pases de la codificacin shikata_ga_nai, la plantilla del ejecutable calc.exe y como resultado se
genera el archivo outputfile.exe.

En definitiva, si queremos asegurarnos de volver 'indetectable' un determinado binario que es


detectado por multiples AVs, necesitamos un 'crypter' indetectado o FUD (Full UnDetectable).

Cryters vs. Packers

Hay que puntualizar que en algunos entornos se habla indistintamente de 'crypters' y 'packers', pero
en realidad son cosas distintas. El objetivo de un packer es 'empaquetar' o 'comprimir' el archivo
ejecutable. Sera como usar un ZIP pero sin perder la estructura de un archivo ejecutable PE (Portable
Executable). El objetivo del 'crypter' es 'cifrar' el ejecutable. Sera como usar PGP o TrueCrypt, pero
sin perder la estructura PE.

Programas AntiVirus

En lo que sigue vamos a centrarnos en el explicar qu son y cmo funcionan los 'crypters', pero antes
debemos entender de forma bsica cmo funcionan los AVs. stos, son cada vez ms sofisticados y
utilizan todo tipo de tcnicas para identificar el malware, entre estas tcnicas destacan dos: las
firmas binarias y las firmas heursticas.

Las primeras buscan secuencias de bits caractersticas del malware previamente identificado. Es
decir, buscan secuencias de bits, a modo de patrn, de aquel malware que haya pasado por el
laboratorio de la empresa de AVs. Es decir, que en algn momento del tiempo, en la empresa de AV
han recibido una muestra del malware para analizarlo y una vez identificado como malicioso han
fijado o definido un patrn caracterstico que constituye la firma binaria del mismo. En definitiva, un
malware totalmente nuevo, recin 'codeado', difcilmente ser detectado por este tipo de firmas.
Para poder anticiparse y detectar malware que no haya sido analizado previamente, existen las
denominadas firmas heursticas. Bsicamente lo que hacen es detectar elementos que tpicamente
forman parte de los programas maliciosos, como el uso de determinadas funciones, algoritmos de
cifrado, etc. Mediante ests tcnicas, es posible detectar de forma anticipada malware 'nuevo', pero,
adems de ser ms compleja su implementacin y consumir ms recursos del sistema que las firmas
convencionales, tambin implican un mayor nivel de riesgo debido a la deteccin de falsos positivos.

Anlisis o escaneo en disco

Las tareas de anlisis o escaneo de los archivos binarios son realizadas por los AVs a nivel de disco, no
en la memoria RAM. Cuando un AV nos indica que est escaneando la memoria, lo que est haciendo
realmente es buscar el binario en disco que arranc un determinado proceso que en ese momento
est ejecutndose en la memoria RAM y una vez ha localizado el mismo, escanea dicho binario (en el
disco) en busca de firmas de malware. As es como funcionan los AVs, escanean los archivos en el
disco y los 'crypters' basan su existencia en este principio bsico.

En prximas entregas veremos cmo funcionan y cmo se crean los 'crypters' indetectables (FUD).
Funcionamiento de los 'crypters'
Autor: Contribuciones 29 julio 2013 [ 7:07 ] 18 comentarios

Tal y como avanzamos en el anterior post de esta serie sobre 'crypters', los Antivirus, en adelante
AVs, escanean los archivos en el disco del ordenador y no en la memoria RAM y este
comportamiento es el que aprovechan los 'crypters' para evadir la deteccin de los AVs. Veamos
como lo hacen.

Cifrado
Los 'crypters' utilizan tcnicas de 'cifrado' para ocultar los archivos maliciosos. Repasemos
rpidamente en qu consiste un cifrado. Un cifrado es un procedimiento que utiliza un algoritmo y
una clave para transformar un mensaje legible en otro indescifrable.

Vemoslo con un ejemplo: vamos a 'cifrar' el mensaje "HOLA" con el algoritmo de cifrado
ROT (tambin conocido como cifrado Csar) y la clave de cifrado ser "1". Este algoritmo lo que hace
es, para cada carcter del alfabeto, avanza tantas posiciones como el valor de la clave de cifrado
establecida, en este caso "1". As pues, tras aplicar el algoritmo, la letra "A" se transforma en la "B",
la "B" en la "C" y as sucesivamente. Por tanto el mensaje "HOLA" se transforma en "IPMB". De este
modo hemos ocultado nuestro mensaje y para que alguien pueda descifrarlo, necesitar conocer
tanto el algoritmo empleado (ROT) como la clave de cifrado (1). Obviamente este es un algoritmo
muy sencillo y una clave igualmente sencilla, lo cual permitira llevar a cabo ataques con el propsito
de deducir el algoritmo y la clave, sin embargo, existen infinidad de algoritmos de cifrado
enormemente complejos que pueden utilizarse y son utilizados para cifrar 'malware'.

Cifrando malware
La idea bsica que subyace en el concepto de 'crypter' es la siguiente: si se cifra un archivo malicioso,
ste ser transformado en un archivo 'ininteligible' para el AV y por tanto no ser detectado. Lo cual
es cierto, pero claro, existe un pequeo problema, y es que el archivo malicioso cifrado no funciona,
no puede ejecutarse, as que es necesario encontrar una solucin, una tcnica que se encargue de
descifrar y ejecutar el archivo malicioso. Esta pieza de software se denomina 'stub'.

'Crypter' y 'stub'
Por regla general un 'crypter' consiste en dos elementos: el 'crypter' y el 'stub'. Esta ltima es la pieza
ms importante del conjunto.
El 'crypter' consiste generalmente en un programa que permite buscar y seleccionar en el sistema de
archivos del ordenador el ejecutable a cifrar (generalmente un archivo malicioso, pero es posible
cifrar cualquier archivo que se desee). Algunos, permiten adicionalmente introducir la contrasea de
cifrado de forma manual o generarla aleatoriamente. Y en ocasiones, algunos permiten activar
ciertas medidas anti-forenses, pero esto es otra historia que trataremos ms adelante.

Una vez seleccionado el archivo a cifrar y pulsado el botn de 'cifrar' (Build en el ejemplo de la
imagen) nos generar un 'nuevo ejecutable', el cual en realidad consiste en una composicin del
'stub' y un 'payload', que no es ms que el malware cifrado.

Crypter (malware) = Stub + [malware cifrado]


Como puede observarse, 'crypter' y 'stub' estn relacionados, ya que el 'crypter' se encarga de
ejecutar el algoritmo de 'cifrado' y el 'stub' se encarga de ejecutar el algoritmo de 'descifrado'. Para
que el 'stub' pueda descifrar el malware necesita conocer la clave utilizada en el proceso de cifrado.
En algunos casos, el programador del 'crypter' no da opcin al usuario a elegir una clave, sino que la
ha definido de antemano en su cdigo, y en otras s permite elegirla o generarla aleatoriamente, en
cualquier caso, al generar el 'nuevo ejecutable' el 'crypter' ha de almacenar la clave en el algn lugar
para que el 'stub' pueda encontrarla y descifrar el malware.

Si se observa en detalle este 'nuevo ejecutable', lo que vemos es una configuracin bastante
habitual, en la que tras el archivo ejecutable que constituye el 'stub', se aaden unos separadores
que delimitan el lugar en el que se encuentra almacenada la clave y a continuacin se aade el
malware cifrado. Obviamente cada programador puede organizar esta distribucin como ms le
guste y en ocasiones, en lugar de aadir directamente el malware cifrado tras el stub, lo introducen
en un recurso del ejecutable PE.

Cuando este 'nuevo ejecutable', valga la redundancia, es ejecutado, el 'stub' se


encarga de copiar a la 'memoria RAM' el malware cifrado, descifrarlo all
mismo, y a continuacin ejecutar dicho 'malware' ya descifrado. Trataremos
este punto en detalle en el siguiente artculo de la serie.
El 'Stub': la pieza clave del 'crypter'
Autor: Contribuciones 06 agosto 2013 [ 10:00 ] 20 comentarios

Hasta ahora hemos visto que un 'crypter' es un conjunto compuesto por un elemento habitualmente
denominado tambin 'crypter', pero que como ya se ha puntualizado en los comentarios de posts
anteriores sera ms correcto designar como 'builder' y otro elemento conocido como 'stub'. El
'builder' es una parte del cdigo relativamente sencilla, pues se encarga de conformar un ejecutable
compuesto por el 'stub' y el 'malware cifrado'. El 'stub' es algo ms complejo, pues se encarga de
descifrar el 'malware cifrado' y, sin tocar el disco, arrancar el 'malware descifrado' directamente en
memoria.

Cmo consigue el 'stub' arrancar el 'malware cifrado' directamente en memoria sin que este
toque el disco?. Para ello, el 'stub' utiliza una tcnica o procedimiento llamada 'Dynamic
Forking' o 'RunPE'. Est tcnica es muy antigua, pero sigue siendo totalmente vlida y
funcional al da de hoy.

Uno de los objetivos que me marqu al comenzar a escribir los artculos de esta serie sobre 'crypters'
era que fuesen sencillos de entender por todos los lectores y no solo por aquellos que tienen
conocimientos avanzados de malware y reversing. Por ello, voy a explicar los aspectos ms
importantes de la tcnica 'Dynamic Forking' o 'RunPE' de forma sencilla, sin abusar de tecnicismos. Si
alguno quiere profundizar en ella solo tiene googlear un poco y encontrar mltiples descripciones
tcnicas de la misma. En la imagen que he preparado con los pasos del proceso puede verse un
mayor nivel de detalle.

Dynamic Forking o RunPE


Una vez el 'stub' se ha ejecutado, lo primero que suele hacer es localizar dentro del binario el
'malware cifrado', a continuacin localiza la clave de 'cifrado/descifrado' e inicia el proceso de
descifrado del 'malware' en memoria. Acto seguido, el stub arranca un segundo proceso, de s mismo
o de un ejecutable cualquiera del sistema, es indiferente. Pero lo hace invocndolo con una
propiedad denominada CREATE_SUSPENDED. Con ello lo que se consigue es cargar en memoria
dicho ejecutable y los datos de contexto necesarios para su ejecucin, pero no llega a arrancarlo,
est 'suspendido'. A continuacin, a partir de la direccin de memoria donde se encuentra la
cabecera y secciones del proceso suspendido, sobrescribe stas con las del ejecutable malicioso ya
descifrado que tiene en memoria. A partir de ah, obtiene los datos de contexto del archivo
suspendido y los sustituye por los datos del nuevo ejecutable, el malware. Estos datos son
bsicamente la direccin base y el punto de entrada del nuevo ejecutable (EP: Entry Point). Por
ltimo, relanza el proceso suspendido, consiguiendo que se ejecute el archivo malicioso en lugar del
ejecutable suspendido invocado inicialmente. As de simple y as de elegante.

Deteccin del 'stub'


Hay que entender que aunque el 'builder' sea detectado por un Antivirus, en adelante AV, esto no
supone problema alguno, dado que el 'builder' funciona como una herramienta para componer el
'nuevo ejecutable malicioso', pero no forma parte del mismo. Al 'stub' le toca la parte ms difcil,
dado que l s viaja (junto al malware cifrado) por el mundo y debe parecer un 'buen chico' para no
ser detectado por los AVs.

Como se ha visto, un 'stub' debe realizar unas cuantas acciones concretas para conseguir descifrar y
ejecutar el 'malware' en memoria. Est claro que los AVs conocen perfectamente dichas acciones y
las funciones y APIs involucradas. Por tanto, no es sencillo para un 'stub' pasar inadvertido.

Recordemos que hay un tipo de firmas denominadas 'estticas', 'genricas' o 'binarias', que
simplemente son cadenas de bytes del cdigo que el AV ha marcado como maliciosas, siendo algunas
de ellas instrucciones de cdigo y otras simples cadenas de texto. Las firmas heursticas son un poco
ms complejas, ya que se basan en detectar en el cdigo, entre otras cosas, el uso de los
'procedimientos', 'funciones' y 'API's caractersticas de los 'stubs'.

Las firmas de AVs llevan muchos aos perfeccionando sus tcnicas de deteccin y por tanto conocen
infinidad de variantes y mtodos que han utilizado los desarrolladores para lograr que los 'stubs'
consigan llevar a cabo su misin: descifrar y ejecutar el malware en memoria. Es por tanto
complicado evadir la deteccin de los AVs, especialmente de las firmas heursticas. Pero no es
imposible.

Objetivo : Stub FUD (Full Undetectable)


Imaginemos un programador ante lo que podra ser su primer 'stub'. Tiene claro lo que debe hacer,
as que se pone a codear la primera versin de la forma ms simple, directa y sencilla que se le
ocurre. Ya lo tiene, su 'stub' funciona y hace exactamente lo que debe hacer un stub, descifrar el
malware y arrancarlo en memoria. La pregunta es, ser detectado este 'stub' pos los AVs? Pues s,
en principio lo ser. Bsicamente porque aunque no haya reutilizado ni una sola lnea de cdigo de
'stubs' anteriores, estar utilizando las mismas funciones, strings y API's que otros programadores ya
han utilizado miles de veces con anterioridad, as que muchos AVs, no todos, seguro que han
reconocido en dicho cdigo intenciones poco loables.

Nuestro programador puede empezar a tocar el cdigo 'reescribiendo' rutinas de la forma ms


rocambolesca posible, pero le va a costar sangre sudor y lgrimas evadir a todos los AVs que le han
pillado. Al menos, hacindolo desde el cdigo.

Para empezar, nuestro programador ha cometido un error de principiante. Se ha concentrado en


programar y reprogramar su cdigo y no se ha molestado en 'ocultar' su binario a las firmas de AVs.
En su afn por verlo 'indetectado' lo ha enviado a 'Virustotal' u otras pginas similares que lo han
escaneado con mltiples AVs. Al haber sido detectado por varios AVs y ser un 'stub' nuevo, no visto
con anterioridad, como indicar su HASH nico, las firmas de AVs dispondrn de la muestra para
estudiarlo a fondo, as que en poco tiempo, lo que eran unas cuantas detecciones se convertirn en
muchas ms.

Entonces, cmo es posible conseguir un 'stub' indetectable? Generalmente al proceso de 'retoque'


de un 'stub' para volverlo 'indetectable' se le conoce con el nombre de 'modding', y el ste tiene
dos modalidades, el 'modding' desde 'cdigo fuente' (o 'source') o desde el 'binario'. En general, lo
ms ptimo es combinar ambas, ya que hay firmas sencillas de sacar desde el cdigo fuente, pero
para sacar las ms complejas, generalmente, hay que recurrir a retocar el 'binario'. Adems, el
'modding' se aplica muchas veces para sanear un 'stub' detectado, pero no se cuenta con el cdigo
fuente del mismo, y es por esta razn por la que se utiliza muy habitualmente y de forma exclusiva
el 'modding' desde binario.
Por tanto, a modo de recapitulacin, el objetivo de todo 'modder' es dejar el 'stub limpio',
'indetectado', es decir 'FUD' y para ello, ha de 'retocarlo', a travs de un proceso conocido como
'modding' que se sirve de mltiples tcnicas para conseguir, por una parte, localizar la firma del AV,
es decir, descubrir dnde, en qu bytes, el AV ha 'marcado' el ejecutable, y por otra parte, ser capaz
de alterar esa secuencia de bytes de manera que el AV ya no detecte ms el 'stub' y ste contine
siendo funcional.

En el prximo post introduciremos algunas tcnicas cuyo objetivo consiste en la localizacin de las
firmas de los AVs en los stubs.
Modding 'Crypters': el arte de la evasin
Autor: Contribuciones 19 agosto 2013 [ 7:19 ] 7 comentarios
En el primer post de esta serie vimos en qu consisten los 'crypters'. En el segundo
post profundizamos en su funcionamiento y en el tercer post analizamos un elemento
esencial, el 'stub'. En este cuarto post vamos a comenzar a estudiar las tcnicas empleadas en
la localizacin de firmas y evasin de Antivirus, en adelante AVs.

Luis se levant y se sent frente a su computadora. Se puso los auriculares, y arranc su


playlist favorita de 'reggaeton'. Cheque su consola de 'Cybergate', un RAT (Remote
Administration Tool) o 'troyano' muy popular, y comprob el log. La cosa haba ido bien, 7
nuevas vctimas, sonri. Ni siquiera saba cuntas vctimas tena ya, calculaba que unas 150
aproximadamente. La ltima campaa de pesca, como l llamaba a sus operaciones de
obtencin de vctimas, haba sido un xito. Haba 'bindeado' (unido, juntado) el server de su
troyano con un instalador de Office 2010, pero en el nombre puso 'Office-2012-all-languages-
INSTALLER.exe'. Tambin lo 'binde' con un video del ltimo xito de Shakira y un video
porno. Cre unos archivos torrent y los subi a 'The Pirate Bay', despus se pas por youtube,
busc algunos vdeos recientes sobre la instalacin de Office y Shakira y poste algunos
comentarios en los que incluy los enlaces a sus ejecutables. Un par de das despus ya tena
casi sus 150 vctimas.

Luis no era un chico muy popular en las escuela, ms bien lo consideraban un bicho raro y
obviamente las chicas no le hacan mucho caso, la mayora de ellas solo tenan ojos para Juan,
un cachitas que apuntaba a estrella de ftbol. Le constaba que a l le gustaba Mara y que ella
le corresponda, ponindole ojitos y contornendose cuando pasaba por delante suyo. Pero por
lo que se comentaba en la escuela, no haban ido ms all.
Luis busc entre sus vctimas y localiz la computadora que andaba buscando, busco la
opcin de 'Remote Tools' y puls 'Webcam Capture', al cabo de unos segundos, la imagen
apareci y all estaba ella, Mara, sobre su cama escuchando msica. Apuesto a que escucha
'Juanes', pens. Conect el audio remoto y efectivamente, comenz a escuchar a 'Juanes',
sonri. Ese 'cachitas' de Juan va detrs de ella todo el da, pens, pero aqu el nico que ha
visto a Mara como a l le gustara he sido yo, y sonri de nuevo. A continuacin, busc en su
escritorio la carpeta con los archivos utilizados en su ltima campaa de pesca. Localiz el
server y lo subi a su web de 'scanner on-line' favorita. Al cabo de unos instantes, apareci el
resultado. Maldicin, espet. El informe indicaba que su server era detectado por cinco AVs.

La cosa se pona 'chunga', se le haba quemado ms rpido de lo previsto y eso que no se lo


haba pasado a nadie ni lo haba publicado en los foros, lo haba usado de forma privada. Es lo
malo de las campaas de pesca de 'arrastre', pens, se consiguen muchas vctimas pero
siempre hay algn capullo que sospecha y enva alguna muestra a alguna empresa de AVs o a
Virustotal y a partir de ah, empiezan las detecciones.

- Necesito una solucin urgentemente o perder un buen montn de vctimas, coment.


Cheque el Messenger y vio que 'DiabloNet' estaba on-line.

- Estassss??, escribi
- ke pasa brother!
- necesito ayuda urgente
- ke necesitas?
- me detectaron el crypter, barias detecciones, me dejas uno FUD?
- hermano siempre igual, pero luego me los quemas
- te prometo que solo lo usar para reemplazar mis servers, no para enviarlo de pesca
- OK, pero me debes uno y rapidito que ultimamente te estas columpiando
- vale colega lo prometo, me pongo ahora mismo con ello

'DiabloNet' le envi el enlace a un crypter FUD por email, lo descarg, lo descomprimi con
la contrasea que siempre utilizaban y FUDeo su server de 'Cybergate' con el nuevo 'crypter'.
Verific que estaba indetectado y rpidamente se puso a reemplazar el server de sus vctimas
online para no perderlas. Cuando termin, busco la carpeta 'Modding' en su escritorio y
empez a trabajar en el crypter que le haba prometido a 'DiabloNet'

Preparando el Modding
Para 'modear' un 'stub' determinado lo que se suele hacer en primer lugar es aplicar el
'crypter' a un ejecutable ligero para poder comprobar de forma rpida si ste funciona a
medida que se van alterando los offsets. Puede hacerse con el 'notepad' o la 'calculadora de
Windows', pero es ms prctico utilizar unos ejecutables especiales denominados 'anotadores
de offsets' o 'bolita' (ya que muchos de estos anotadores tienen forma circular). Estos
archivos simplemente muestran o anotan en un archivo de texto el nombre del propio
ejecutable. Esto resulta muy til en el proceso que a continuacin se explicar, dado que
permite localizar, entre muchas variantes, cul es el ejecutable funcional.

Antes comenzar el proceso de 'modding', es necesario escanear el ejecutable cifrado o el 'stub'


mediante un scanner on-line para saber cuantas detecciones tiene. Lo ideal es empezar con un
'stub original', es decir, que no haya sido 'modeado' con anterioridad. Seguramente, tendr
ms detecciones que un 'stub' retocado y reciente, pero es mucho mejor modear desde cero,
desde el original, ya que es un ejecutable mucho ms estndar y ms fcil de 'modear'. Uno
retocado puede contener un montn de 'retoques' del anterior 'modder' que pueden hacerlo
realmente complicado de manejar. Una vez se obtiene el informe del scanner on-line, hay que
comenzar el proceso por algn AVs en particular, generalmente por uno que tengamos a
mano, o con el que se tenga mucha experiencia o que consideremos relativamente sencillo.
Obviamente algunos AV son muy sencillos de 'modear', sus firmas no son complejas y salen
con cierta facilidad con las tcnicas bsicas, como 'DSPLIT/AVFUCKER', que
explicaremos prximamente.

Instalacin de Antivirus
Para cada AV que detecte el 'stub' habr que aplicar el proceso de 'modding' y eso implica que
tendremos que disponer de mltiples AVs en nuestro ordenador. Una cosa es segura, la
mayor parte de los AV no va a permitir que haya otro AVs instalado en la mquina y por tanto
nos obligar a desinstalarlos. Una opcin es instalar y desinstalar cada AVs para cada proceso
de 'modding' que se desee abordar, lo cual es un poco pesado ya que implica, adems del
tiempo de instalacin y desinstalacin, reiniciar el ordenador en varias ocasiones. Otra opcin
es utilizar, siempre que existan, las versiones 'portables' y/o versiones 'command line' de los
diferentes AVs. Adems de estas opciones, si disponemos de software de virtualizacin (y
suficiente potencia en el ordenador para moverlo con soltura) podemos utilizar los 'snapshots'
para tener diferentes antivirus instalados en cada 'snapshot', pero en cualquier caso tendremos
que instalar y desinstalar cada AVs al menos una vez.
Por ltimo, una opcin muy interesante es utilizar un programa que nos permita gestionar
copias de seguridad del registro, como por ejemplo 'Registry Workshop'. Mediante este
programa podemos 'engaar' a los AV y que piensen que estn ellos 'solitos'. El procedimiento
es sencillo. Se instala el programa, y se hace un 'backup' del estado del registro del ordenador
sin ningn AV instalado, podramos llamarlo 'backup-sin-AV'. Se instala un AV y se hace un
backup que podramos llamar 'backup-AV-1'. A continuacin, se restaura el 'backup-sin-AV'.
Al instalar el siguiente AV, ste no localizar ningn AV instalado puesto que hemos
restaurado un backup anterior a la instalacin del AV-1. Instalado el AV-2, haremos un
backup, al que llamaremos 'backup-AV-2' y as sucesivamente. La cuestin es que todos los
AV estarn instalados juntos, y cada vez que queramos utilizar uno de ellos tendremos que
restaurar el backup correspondiente.
necesario disponer de dichos AVs en el ordenador.

A partir de este punto tenemos todo listo para comenzar a localizar firmas mediante la tcnica
'DSPLIT/AVFUCKER', que comenzaremos a explicar en el prximo post.

Artculo cortesa de Abraham Pasamar


'Crypters': Localizando firmas de los Antivirus
Autor: Contribuciones 02 septiembre 2013 [ 7:18 ] 12 comentarios

En el ltimo post de esta serie sobre 'Crypters' introdujimos el concepto de 'modding', que es una
tcnica cuyo objetivo consiste en modificar un 'stub' para hacerlo 'indetectable' a los 'AVs' y de este
modo poder cifrar cualquier 'malware' de manera que ste pueda ejecutarse sin temor a la deteccin
de los AVs.

Recordemos que un 'crypter' est formado por dos elementos, el 'builder' y el 'stub', aunque en
muchas ocasiones al 'builder' se le denomina simplemente 'crypter', y recordemos tambin que lo
que se 'modea' es el 'stub', no el 'builder' ni el 'malware'. Del 'malware' no nos hemos de preocupar,
dado que ste ser cifrado por el 'builder' y nunca estar descifrado en el disco duro, solo en
memoria. Y tampoco hemos de preocuparnos por el 'builder', ya que es simplemente una
herramienta para 'crear' el nuevo ejecutable formado por el 'stub' y el 'malware cifrado'. En
definitiva, lo que se 'modea' es el 'stub' y el primer paso para llevar a cabo el 'modding' es localizar
las firmas de los AVs.

Para 'modear' un 'stub' lo que se suele hacer es utilizar el 'builder' y crear un ejecutable de prueba
para 'modear', de forma que en realidad se 'modea' el conjunto del 'stub' y el 'anotador' cifrado.
Recordemos que el 'anotador' es un simple ejecutable cuya misin es verificar su correcta ejecucin
(como una simple ventana de alerta). Mediante este archivo de prueba para 'modear' es posible
verificar de forma cmoda si los archivos resultantes de las diferentes pruebas de modificacin del
ejecutable son funcionales. En definitiva, es mucho ms prctico 'modear' este archivo de prueba, y
que adems el 'stub' no se puede ejecutar de forma aislada, ya que genera un error en ejecucin al
no localizar el 'ejecutable' cifrado.

Tcnica DSPLIT/AVFUCKER
sta es una tcnica muy extendida para la localizacin y modificacin de firmas de los AV's. En
realidad son dos tcnicas, una es 'dsplit' y otra 'AVfucker', pero suelen utilizarse siempre de forma
combinada.

Existen diferentes herramientas que permiten llevar a cabo la aplicacin de estas tcnicas, pero en
este post voy a tratar de explicar el proceso a nivel conceptual en lugar de basarme en la
herramienta. As que debis armaos de paciencia, pues este post va a ser duro. En el prximo post,
explicar un caso prctico de la aplicacin de la tcnica 'dsplit/AVfucker' mediante el uso de
herramientas.

Tcnica DSPLIT
Partiendo de un archivo ejecutable, la tcnica 'dsplit' consiste en generar N archivos intermedios de
forma incremental, es decir, cada uno de esos archivos es igual al anterior ms unos cuantos bytes.
Para poner un ejemplo visual, pensemos en un pan de molde. El primer archivo sera la primera
rebana, el segundo archivo sera el conjunto de la primera y segunda rebanadas, el tercero tres
rebanadas y as sucesivamente hasta completar el pan completo.

Los 'stubs' suelen tener un tamao de unos cuantos miles de bytes, as que la tcnica 'dsplit' suele
comenzar por 'rebanadas' de 1.000 bytes. Una vez se dispone de estos N archivos de 1.000 bytes, se
escanean con el AV con el que hayamos decido comenzar. Es decir con el AV cuya firma queramos
localizar. La idea es que a partir de un determinado archivo aparecern detecciones del AVs. Ahora
hay que afinar y ver a partir de qu 'byte' exactamente hay deteccin. Por ejemplo, si en el archivo
con 6.000 bytes no hay deteccin y en el de 7.000 bytes y siguientes ya hay deteccin, tendremos
que ir buscando en esa frontera entre 6.000 y 7.000 hasta localizar el punto exacto en el que se
produce la deteccin. Lo que se hace es reducir el rango inicial 1.000 bytes a incrementos de 100
bytes, y se aplican entre los offsets 6.000 y el 7.000 y se vuelve a escanear. De nuevo, hay que
localizar el archivo a partir del cual se produce la deteccin y se contina con la iteracin, pasando
por rangos de 10 bytes y de 1 byte, hasta localizar el offset exacto, el byte exacto, en el que se
produce la primera deteccin. Una vez localizado, estaremos ante el fragmento ms pequeo del
archivo ejecutable en el que el AV es capaz de identificar cdigo malicioso. Todava no sabemos
donde est la firma, sino que estamos ante una zona, en la que sabemos que seguro que hay una
firma, o mejor dicho, estamos ante un fragmento de cdigo en el que hay uno o varios elementos
que hacen que el AV identifique ese cdigo como malicioso.
Tcnica AVFUCKER

A partir de este momento, se aplica la tcnica 'AVfucker' sobre el archivo obtenido mediante la
tcnica 'dsplit'. El objetivo de la tcnica AVfucker es generar N archivos de igual tamao, cada uno
de ellos con un bloque de bytes 'tapado'. Donde 'tapado' quiere decir que los bytes originales son
sobrescritos por un valor escogido (un byte del valor que queramos: '00h', '20h', '90h', etc.). Si
pensamos en el pan de molde en el proceso 'AVfucker' tendremos N archivos de igual nmero de
rebanadas (el pan completo), y a cada uno de ellos le faltar una rebanada. Al primero le faltar la
primera, al segundo la segunda, etc. Lo que se busca con esta tcnica es encontrar una o varias zonas
del archivo de forma que al 'taparlas' la deteccin del AVs desaparezca.

Una vez escaneados los archivos resultantes con el AV, eliminaremos aquellos que estn
detectados y observaremos los offsets que quedan 'indetectados'. Del mismo modo que el proceso
'dsplit', para cada zona de offsets 'indetectados', iremos reduciendo el tamao de los bloques
'tapados' hasta llegar a bloques de un solo 'byte'. Una vez escaneados los archivos, y eliminados los
archivos detectados, tendremos una serie de archivos que nos indicarn que si se tapa dicho 'byte'
se est 'alterando' la firma y por tanto se evita la deteccin del AV.

Para llevar el control de los ficheros generados con estas tcnicas, lo que se suele hacer es nombrar a
los ficheros resultantes con el offset correspondiente al corte, en el caso de 'dsplit', o a la seccin de
'tapados' en el caso de 'AVfuker'. Las herramientas realizan este proceso de forma automtica.
Por ejemplo, si tras el proceso 'AVfucker' nos quedan 4 archivos 'indetectados' llamados 7124_1.exe,
7125_1.exe, 7129_1.exe y 7130_1.exe quiere decir que hay 4 bytes, cuyos offsets, en este caso no
consecutivos, son 7124, 7125, 7129 y 7130.

Es esa la firma? Depende. Ahora toca analizar qu hay en esos bytes. En muchos casos, puede
tratarse de unos bytes que corresponden a una o varias instrucciones del ejecutable o a un string
(cadena de texto). En cuyo caso la respuesta es s, esa es la firma. En otras ocasiones, puede tratarse
de referencias o saltos a direcciones de memoria de funciones o directamente recaer en la tabla de
importaciones. En estos casos, en realidad estamos ante un tipo de firma 'compleja', normalmente
una firma 'heurstica'. Y el resultado de 'AVfucker' debera interpretarse con cierta cautela, siendo la
experiencia y conocimiento del 'modder' la que lo llevar a buscar una u otra solucin para evadir la
firma.

En el caso de que la firma sea una cadena de texto, es probable que solo alterando la cadena se
consiga eliminar totalmente la firma. Este sera el caso ms sencillo, pero es real, dichas firmas
existen. No voy a sealar a ningn AVs en particular, pero obviamente un AVs que pone una firma en
un string es, cuando menos, muy ingenuo.

Supongamos que estamos ante un caso de una firma en un 'string' que contiene por ejemplo el texto
"MyStub". Si alterando esa cadena la firma queda 'rota' y por tanto el archivo indetectado,
deberemos comprobar adems si el archivo es funcional. Recordemos que 'AVfucker' ha sido
aplicado sobre un fichero que haba sido obtenido previamente con el proceso 'dsplit' y que, por
tanto, no es funcional, es una seccin del ejecutable original. La cuestin es que debemos modificar
el byte que hemos observado que 'rompe' la firma en el archivo funcional previo al 'dsplit', es decir,
en el archivo ejecutable de prueba. Esta tarea se lleva a cabo normalmente mediante cualquier
editor hexadecimal. Si una vez hemos alterado dicho byte, el archivo es funcional, perfecto, hemos
sacado la firma. Hay que tener en cuenta que la modificacin la hacemos sobre el archivo de
funcional de prueba, formado por el 'stub' y el 'anotador' cifrado. Cada vez que se haga una
modificacin sobre este archivo de prueba, deberemos hacerla en paralelo sobre una copia del 'stub'
o bien, una vez realizadas todas las modificaciones al ejecutable del prueba, tendremos que extraerle
el 'stub'.

Una vez hecho esto, deberemos volver a escanear el archivo con el mismo AV que hemos hecho todo
el proceso y puede que siga detectando el archivo. Por qu razn? porque existe una segunda
firma en otra seccin del archivo. Es necesario volver a aplicar 'dsplit' y otra vez 'AVfucker' para
localizar esa segunda firma.

En principio, cuando se localiza la firma mediante 'dsplit/AVfucker', lo lgico, como he comentado, es


estudiar la seccin de dicha firma y proceder en consecuencia mediante diferentes tcnicas, que
tiene por objetivo 'partir' la firma alterando las secciones sobre las que recae la misma sin 'romper' el
ejecutable. Un adecuado entendimiento formato ejecutable 'PE (Portable Executable)' es
fundamental para lograr dicho objetivo. Sin embargo, sin demasiado conocimiento del formato PE, es
posible igualmente, en ciertos casos y empleando la tcnica 'AVfucker', eliminar algunas firmas del
ejecutable. Una vez que el proceso 'dsplit/AVfucker' ha finalizado, puede aplicarse 'AVfucker' sobre
el ejecutable de prueba en los offsets que 'indetectaban' al hacer 'AVfucker' sobre el archivo
procedente del proceso 'dsplit'. Una vez se dispone de dichos archivos se va probando la ejecucin
de todos y cada uno de ellos para ver si alguno de ellos es funcional. Esto es un proceso tipo 'brute
force' pero funciona en muchos casos. Hay que tener en cuenta que quiz no quede ningn archivo
funcional, pero recordemos que en 'AVfucker' hay que elegir un valor para generar los 'tapados'.
Supongamos que hemos elegido el valor '00' para tapar los bytes originales y no ha quedado ningn
ejecutable funcional. Siempre podemos optar por probar las 255 combinaciones posibles para cada
uno de los offsets que indetectan y ver si alguno es funcional. Son 255, y no 256, porque obviamente
hay una combinacin, la del valor de 'byte' original, que seguro que es funcional, pero esa es
detectada por el AV.

Y hasta aqu esta maratoniana sesin de la tcnica 'dsplit/AVfucker'. La prxima entrega ser ms
prctica.
'CRYPTERS': practicando la tcnica dsplit/Avfucker
Tal y como ya adelant, en este artculo vamos a poner en prctica lo que hemos aprendido hasta el
momento sobre la evasin de Antivirus, en adelante AVs. En el ltimo post de esta serie sobre
'Crypters', vimos los fundamentos tericos de la tcnica 'dsplit/AVfucker'. En este post voy a tratar de
ilustrar esta tcnica con un ejemplo prctico, valindome de un caso muy sencillo de aplicacin de
esta tcnica.

Herramientas
Existen diversas herramientas que permiten aplicar la tcnica 'dsplit/AVfucker', concretamente voy a
utilizar una que es bastante cmoda, tiene muchas funcionalidades y es bastante rpida, pero si
buscis encontraris otras por los foros relacionados con el tema. En concreto voy a utilizar 'UdTools
Offset Locator 2.0'. Tambin necesitaremos un anotador, as que voy a utilizar 'Antrax-Labs Offset
Anotator' (by The Swash). Adicionalmente, utilizar un 'Hex Workshop 6.7' como editor hexadecimal
y 'OllyDbg' como disassembler (desensamblador).

Crypter
Para 'modear' un 'stub' hay que disponder del 'crypter' (tanto el 'builder' como el 'stub'). Es
importante conseguir uno que sea 'original', es decir, que no haya sido 'retocado'. Trabajar un
ejecutable previamente 'modeado' es siempre ms complicado. Para este ejemplo voy a utilizar
'Simple Crypter 2010' (by DuNeD@i).

AV
Voy a utilizar para este ejemplo una 'firma' bastante sencilla del AV de origen Checo Avast (avast!).
Ese, con esa voz tan sexy que siempre nos recuerda: "La base de datos de virus, ha sido actualizada".
Lo primero que haremos, ser configurar adecuadamente el AV para el proceso de 'modding'. Para
ello, desactivaremos todos los 'escudos' en tiempo real y desactivaremos la opcin de envo de
muestras (En el caso de Avast hay que desactivar la opcin 'Participa en la comunidad avast!')

Entorno de trabajo

Lo primero de todo es mantener una buena organizacin del entorno de trabajo. Para ello, vamos a
trabajar en una carpeta en la crearemos varias 'sub-carpetas'. Una se llamar 'original' y en ella
guardaremos el 'Crypter Original'. En otra carpeta guardaremos nuestro 'Anotador' y por ltimo las
dos ms importantes, a las que se llamaremos 'offsets1' y 'offsets2', que funcionarn como carpetas
de resultados en las que se almacenarn los diferentes archivos generados mediante la aplicacin de
la tcnica 'dsplit' y 'AVfucker'. En breve veremos el propsito de cada una de estas carpetas. Para
comenzar a 'modear' necesitamos aplicar el 'crypter' a nuestro ejecutable de prueba, el 'anotador'.
Para ello abriremos el 'builder' (llamado crypterx.exe en este crypter), y seleccionaremos el
'anotador'. Pulsaremos el botn 'Crypt' y se abrir una ventana del explorador de archivos para
indicar el nombre y ubicacin del ejecutable. En este ejemplo lo llamar 'modme.exe'.
Hey Ho Let's Go!

Dsplit

Ya tenemos todo lo necesario para aplicar 'dsplit' as que vamos all. Abrimos 'UDTools Offset
Locator 2.0' y arrastramos (o seleccionamos) el ejecutable 'modme.exe' al primer campo del
formulario 'Archivo & Directorio'. En el segundo campo, arrastraremos el directorio 'offsets1'. A
continuacin, en la seccin 'Mtodo' seleccionamos 'DSplit'. En la seccin 'offsets' veremos que los
valores que se aparecen corresponden al offset inicial: 1.000 (comienzo del ejecutable sin la cabecera
PE) y el offset final del archivo (ltimo byte del ejecutable), en ese caso 45.062. En la seccin 'bytes',
aparece por defecto el valor 1.000, que es el bloque de 'bytes' que vamos a usar en la primera
iteracin del proceso 'dsplit'. Si por algn motivo, nuestro archivo a 'modear' fuese mucho mayor,
podramos comenzar por bloques de '10.000' bytes, pero lo habitual es comenzar por 1.000 para que
el nmero de archivos a generar y sobre todo a 'escanear' por el AV sea manejable. En general suele
ser una buena idea seleccionar la opcin 'Borrar todos los archivos del directorio seleccionado', de
este modo, en cada ejecucin lo primero que se llevar a cabo es el borrado del directorio
seleccionado, por ahora 'offsets1'. Bien, pues ya solo queda pulsar el botn 'Iniciar' y se generarn en
el directorio 'offset1' los archivos de tamao incremental (1.000 bytes adicionales cada uno) desde el
offset 1.000 hasta el offset '46.000'.

El nombre de cada archivo, se corresponde con el offset en el que nmero de bytes aadidos al
archivo, y del tamao del bloque utilizado. As pues tendremos: 1000_1000.exe, 2000_1000.exe, ...,
46000_1000.exe.
A continuacin, 'escanearemos' con el AV Avast la carpeta 'offsets1'. Pulsaremos botn derecho
sobre la carpeta y seleccionaremos 'Analizar offsets1'. A continuacin, nos aparecer una ventana
emergente de resumen del scan que indicar 'AMENAZA DETECTADA' y pulsaremos sobre el botn
'MOSTRAR RESULTADOS'. Nos aparecer el detalle del anlisis para cada fichero del directorio
'offsets1'. La firma que detecta es la misma en todos los archivos, en concreto: 'Win32:Malware-
gen'. Si nos fijamos, veremos que no aparece ninguna deteccin de la firma hasta un offset concreto,
en este caso el offset 11.000. A partir de ah todos los dems offsets son detectados. Por tanto,
sabemos que en el entorno del offset 10.000 el AV reconoce cdigo malicioso y salta la deteccin de
la firma.

Vamos a precisar el offset concreto. Para ello, continuaremos con el proceso 'dsplit' en el entorno del
offset 10.000. Volvemos a la aplicacin 'UDTools Offset Locator 2.0' e introducimos el offset inicial
9.000 y el offset final 11.000. Esto lo hacemos para evitar problemas con las zonas fronteras. A
continuacin seleccionamos el valor de 'bytes' a 100, reduciendo un orden de magnitud respecto del
valor anterior que era 1.000. De este modo, vamos precisando en cada iteracin un poco ms.
Pulsamos el botn 'Iniciar' y se generan los archivos en 'offsets1'. Todos los archivos del proceso
anterior se habrn borrado si la opcin 'Borrar todos los archivos del directorio seleccionado' estaba
marcada.

Repetiremos el proceso de 'escaneo' mediante la opcin 'Analizar offsets1' que nos aparecer al
pulsar el botn derecho sobre la carpeta. Una vez 'escaneada' la carpeta y desplegado el cuadro de
'MOSTRAR RESULTADOS' veremos que el primer offset detectado es 10.600. Una vez ms volveremos
a la aplicacin 'UDTools Offset Locator 2.0' y seleccionaremos el rango 1.500 a 1.700 como offsets
inicial y final y reduciremos los 'bytes' de incremento a 10. Volveremos a 'escanear' y esta vez
veremos que el primer offset detectado es 10.560.

Una ltima iteracin entre 10.550 y 10.570 con un incremento de 1 byte, nos indicar que el offset
exacto en el que se detecta cdigo malicioso es 10.552. Es decir, hasta el byte anterior el AV no ha
sido capaz de detectar la firma, sin embargo, a partir del byte 10.552 ya la detecta. Parece lgico
pensar que los bytes que definen la firma han de estar exactamente en el entorno de 10.552 pero no
es as. La tcnica 'dsplit' nos indica que en ese 'pedazo' de archivo seleccionado de 10.552 bytes el AV
es capaz de detectar la firma. Mediante la tcnica 'AVfucker' vamos tratar de localizar los bytes que
conforman la firma. Para poder aplicar la tcnica 'AVfucker' lo primero que haremos es copiar el
archivo 10552_1.exe de la carpeta 'offsets1' a la carpeta de trabajo.

AVfucker

En la campo 'archivo' del formulario de la aplicacin 'UDTools Offset Locator 2.0' tenamos nuestro
archivo 'modme.exe', que es con el que hemos estado trabajando hasta el momento. Ahora
arrastraremos el archivo 10552_1.exe a dicho formulario, ya que es sobre este archivo sobre el que
vamos a aplicar la tcnica 'AVfucker'. En el formulario 'directorio' no vamos a hacer cambios y
mantendremos la carpeta 'offsets1'. En la seccin 'Mtodo' seleccionaremos 'Av-Fuck'. Veremos que
ahora el offset inicial es 1000 y el offset final 10552, mientras que el rango de 'bytes' vuelve a ser
1000. La diferencia fundamental entre 'dsplit' y 'AVfucker' es que con 'dsplit' solo recortamos el
ejecutable en secciones, mientras que con 'AVfucker' lo que hacemos es 'tapar' o 'rellenar' secciones
del ejecutable con un valor determinado. Por tanto, en la aplicacin 'UDTools Offset Locator 2.0'
debemos indicar con que valor queremos 'rellenar'. podemos escribir el valor hexadecimal que
queramos, siendo los valores '00' '90' los ms usados generalmente. Tambin podemos usar el
botn 'A' para rellenar el campo con un valor aleatorio. El valor a escoger puede depender de varios
factores, en general, '90' (instruccin NOP en ensamblador) es un buen valor de 'relleno' para
comenzar. Pulsamos 'Iniciar' y se generan en 'offsets1' 10 archivos con sus respectivas zonas de 1000
bytes rellenos del byte '90'.
Ahora vamos a escanear 'offsets1' mediante el AV. Nos indicar 'AMENAZA DETECTADA' y si
pulsamos 'MOSTRAR RESULTADOS' veremos que hay 9 offsets detectados. Ahora, lo que haremos, a
diferencia del mtodo 'dsplit' es eliminar los archivos cuyos offsets han sido detectados. Podemos
indicar 'Aplicar esta accin a todos: Eliminar' y pulsar 'Aplicar'. Esto dejar en el directorio los
archivos cuyos offsets 'indetectan' la firma. En este caso, solo queda uno, el archivo con offset
10.000. A continuacin, desde 'UDTools Offset Locator 2.0' pulsaremos el botn 'Mostrar Offsets' y
se mostrarn los diferentes offsets 'indetectados'. Si hacemos doble-clic sobre un rango concreto
ste se agregar a la herramienta, y automticamente se reducir el rango de bytes para la siguiente
interaccin. En este caso, hay un nico rango de 'indeteccin' por el momento, offset inicial 10.000,
offset final 11.000 y bytes se reduce a 100. Si pulsamos de nuevo iniciar, aparece un aviso de que el
offset 11.000 es mayor que el tamao del archivo, si pulsamos aceptar se rellenar como offset final
el valor correcto (10.552) y nos permite continuar. Pulsamos de nuevo 'Iniciar' y se generan los
archivos en 'offsets1' que pasamos a escanear. Curiosamente, no nos detecta amenaza en ninguno
de los archivos. Esto es no es habitual, pero en ocasiones ocurre que hay un rango muy grande de
offsets que 'indetectan' la firma. Lo que podemos hacer ahora, es elegir uno de los archivos, por el
ejemplo el primero de los offsets 'indetectados' y continuar reduciendo el rango de bytes hasta llegar
a 1 byte. En realidad podemos trabajar con todo el rango, pero al ser tan grande vamos a generar
muchos ficheros, especialmente al llegar a valores de un byte. Es preferible hacerlo por bloques. Por
tanto, rellenamos con el valor 10.000 el offset inicial y 10.100 el offset final y reducimos a 10 el rango
de bytes. Analizamos con el AV el resultado y nos detecta los offsets iniciales, pero deja
'indetectados' desde el 10.040 al 10.100. Reducimos a un byte y repetimos. Escaneamos y
observamos que los 60 offsets 'indetectan' la firma.

Si miramos la zona con detenimiento y la ayuda de un editor hexadecimal, Hex Workshop en este
caso, parece que se corresponde con algunas cadenas de texto. Para asegurarnos, examinamos
tambin la zona con OllyDbg. Podemos probar a ir cambiando algunos de estos valores a ver si
encontramos algn offset que mantenga funcional el ejecutable. Hay que tener en cuenta que hemos
trabajado con un archivo recortado obtenido del proceso 'dsplit', por tanto, no es posible hacer
pruebas sobre dicho archivo. Tendremos que hacer las pruebas de dichas modificaciones sobre el
archivo ejecutable original al que habamos llamado 'modme.exe'. Si hacemos una copia del mismo
podemos probar a alterar manualmente algunos de los offsets para ver si nos deja 'funcional' el
archivo, aunque tambin podemos continuar con el proceso 'avfuck' para localizar algn archivo
funcional.
Si estuvisemos ante una zona de cdigo con instrucciones, lo ms prctico sera aplicar tcnicas
como RIT o XOR para alterar las instrucciones de forma que se partiese la firma pero no se viese
alterado el resultado del ejecutable. En este caso, como se trata de cadenas de bytes, es ms prctico
buscar alguna alteracin de las mismas que no dae el ejecutable.

Lo que vamos a hacer es aplicar la tcnica 'avfucker' sobre el archivo 'modme.exe' en lugar de
trabajar sobre el archivo obtenido mediante 'dsplit' (10552_1.exe) y dejar los archivos resultantes en
la carpeta 'offsets2'. Para ello arrastraremos el archivo 'modme.exe' y la carpeta 'offsets2' a los
correspondientes campos de la herramienta y seleccionaremos el rango de offsets previo: 10.040-
10.100. Pondremos el rango de bytes a 1 y seleccionaremos el relleno con '90'. Una vez tengamos los
archivos en la carpeta 'offsets2' deberamos eliminar de la misma aquellos cuyos offsets no
'indetectan' la firma. Hasta ahora, este proceso de eliminacin lo hemos hecho mediante el 'escaneo'
con el AV, pero hay que tener en cuenta que si hubiese alguna segunda firma en el archivo, el AV la
detectara y nos eliminara todos los ficheros. Por lo tanto, lo que tenemos que hacer es eliminar de
'offsets2' los archivos que previamente hemos eliminado mediante la deteccin del AV de la carpeta
'offsets1'. En este caso concreto, todos los archivos del rango comprendidos entre el offset 10.040 y
10.100 estn 'indetectados', y por ende la comparacin de 'offsets1' y 'offsets2' quedar igual y no se
eliminar ningn archivo, pero por regla general, est proceso eliminar archivos de 'offsets2'. La
herramienta 'UDTools Offset Locator 2.0' dispone de un botn en el men superior que permite
hacer est eliminacin. Como en este caso no hay eliminacin, probaremos a ejecutar cada uno de
los archivos que se han generado en la carpeta 'offsets2'. Si alguno de ellos es funcional habremos
roto la firma.

En nuestro ejemplo hay numerosos offsets en dicho rango que al ser rellenados con el byte '90' dejan
funcional el ejecutable y por tanto 'indetectan' la firma.

Adems no existe una segunda firma del AV para este archivo, sin embargo, en muchos casos, al
conseguir tapar la primera firma, hay que continuar con el proceso 'dsplit' para localizar un segundo
bloque de deteccin y volver aplicar AVfucker para localizar los offsets de las firmas adicionales.
Aplicar modificacin al stub
Hay que tener en cuenta que hemos trabajado con el archivo 'modme.exe' para poder verificar su
funcionamiento, pero en realidad lo que necesitamos es aplicar los cambios realizados al 'stub'. Para
ello podemos hacer una copia del 'strub.exe' original y repetir los cambios realizados sobre
'modme.exe' tambin sobre el 'stub', o bien podemos extraer el 'stub' del archivo 'modme.exe'.
Mediante un editor hexadecimal podemos llevar a cabo fcilmente esta operacin. Simplemente es
necesario conocer el tamao del 'stub' original y seleccionar desde el primer byte hasta el tamao
final del 'stub' y guardar los bytes seleccionados a un nuevo archivo.

Como ya coment al inicio, ste es un caso bsico de eliminacin de una firma de AV que sirve para
ilustrar la tcnica 'dsplit/avfucker' de una manera sencilla. Evidentemente hay multitud de firmas
muchsimo ms complejas que sta, pero este ejemplo confirma la debilidad de algunas de las firmas
que establecen los AVs.

S-ar putea să vă placă și