"Esta zona del blog no será actualizada. Visita el nuevo Blog del Laboratorio Hispasec"

14
febrero
2007

¿Deben ser detectados los packers?

a vueltas con UPX & company
Acabo de leer un interesante post en el blog de Panda Research que casa con lo que comentaba el otro día sobre las heurísticas primitivas de algunos antivirus que están basándose en la detección de packers para dar positivos.


Mi comentario entonces era que en el perímetro si tienen sentido este tipo de heurísticas, ya que los falsos positivos no son importantes ni se perciben por el usuario. Mi post también venía a cuento para dejar claras las diferencias entre resultados de porcentaje de detección entre antivirus orientados a la estación de trabajo o al perímetro, por lo que no se deben mezclar como se está haciendo últimamente en comparativas con los resultados de VirusTotal.


En el post del blog de Panda Research van un poco más lejos, y se preguntan hasta que punto sería interesante o no hacer este tipo de detección de packers a nivel de host.


Si me preguntan a bote pronto, sospecho que puede haber problema con software legítimo. ¿Puede ser manejable con listas blancas? Sí, y probablemente lleve mucho menos esfuerzo identificar el software legal que utilice packers que el aluvión constante de malware que también lo utiliza. Pero seguiría siendo un enfoque reactivo de cara al software legal.


¿Quién me compensa a mí, desarrollador legítimo, los problemas de que mi software sea erróneamente bloqueado por un antivirus? (aunque sea corregido a posteriori al meterlo en una lista blanca o goodware). ¿Me voy a ver en la obligación de enviar mi software a los antivirus antes de publicarlo?. ¿O me van a "obligar" a no poder utilizar packers?


Otra vertiente son las empresas que se dedican a vender legítimamente este tipo de herramientas, el hecho de que sean comerciales no les impide utilizarlas asiduamente a los creadores de malware. Supongo que ahí si habría problemas legales si se opta por una política agresiva de detección de packers.


Todo lo anterior no dejan de ser prejuicios, más o menos argumentados y justificados, pero realmente no tengo datos fiables al respecto. En VirusTotal si sabemos a ciencia cierta que un porcentaje elevado del malware utiliza packers, en eso está todo el mundo de acuerdo, la cuestión es si el software legítimo lo utiliza o no.


En vez de seguir elucubrando... voy a hacer una pequeña prueba de concepto en mi portátil Windows. No tiene mucho software instalado de forma que no es muy representativo, pero a estas horas de la madrugada en las que me he puesto a escribir no puedo hacer nada más serio (prometo echarle un ojo tanto en entornos corporativos como en PCs domésticos).


En el directorio de Windows, efectivamente no encuentro packers (menos mal), tan sólo algunos archivos de Microsoft comprimidos con CAB, que podríamos considerar entre los formatos confiables.


En el directorio de Archivos de Programas si nos encontramos con cosas. Por ejemplo, AdobeUpdateManager.exe (del Adobe Acrobat Reader) está empaquetado con PeCompact, NeVideoFX.dll (de Nero) con ASProtect, msa.dll (plugin de Ahead) con ASPack, fldrview.ocx (de Hewlett-Packard) también con ASPack, etc. Son programas legítimos que si utilizan packers también ampliamente utilizados por el malware.


Para confirmar que mis prejuicios no van mal encaminados, paso por VirusTotal los que más nombre tienen y deben estar muy difundidos (los archivos empaquetados de Adobe Acrobat Reader y Hewlett-Packard).






No comments.


Me voy a un directorio donde tengo muestras de malware para análisis, y aquí la cosa si se dispara como era de esperar. El más utilizado es UPX, y después le sigue una larga lista, como Themida, yoda, SVKP, Petite, ASPack, PE Pack, FSG, EXE Shield, PEncrypt, tElock, PC-Guard, Morphine, PELock, nSPack, UltraProtect,...


Algunos claramente si podrían ser candidatos a detecciones más genéricas, después también tenemos un grupo importante que se vende como software comercial, como por ejemplo ASPack o Themida, y que son habitualmente utilizados por el malware. Ahí seguro que habría guerra legal.


Es un tema interesante para seguir dándole vueltas, a ver de que forma correlacionándolo con otros indicadores se puede minimizar el número de falsos positivos que están provocando hoy día algunos antivirus. Está claro que de momento el malware gana la batalla por fuerza bruta, así que hay que buscar caminos alternativos, ideas son bienvenidas :)

Enviado por bquintero a las 03:03 | Enlace permanente | Comentarios (13) | Trackbacks (0)
Comentarios
Re: ¿Deben ser detectados los packers?

Me recuerda a un caso curioso que ocurrió en una presentación. Un cliente de troyano cuyo estado "natural" era la compresión UPX fue enviado a VT y detectado por una mayoría. Lo descomprimí (pasó de 300k a casi 2 megas) y volví a lanzarlo contra VT.

Muchos dejaron de detectarlo, pero curiosamente, uno de los "despistados" ante el estado natural del cliente (comprimido), sí que fue capaz de reconocerlo cuando pesaba bastante más.

Da una idea del caótico mundo de las firmas y los packers, las heurísticas paranoicas y del juego que pueden llegar a dar. Realmente, no existe solución sencilla.

Posted by: De Los Santos at febrero 14,2007 09:39
Re: ¿Deben ser detectados los packers?

Si nos basamos en detectar malware en base a si utiliza un packer o no, la solución para los creadores de malware es muy sencilla, dejar de utilizarlo y usar ofuscación dentro de su propio programa para evitar ser fácilmente analizado. Realmente cada día les entiendo menos, puesto que no tiene sentido utilizar todo tipo de técnicas más o menos avanzadas dentro del binario para luego usar un simple UPX sin modificar. Yo para eso no lo usaría.

Aunque creo que la respuesta a tu pregunta no tiene nada que ver con packers o no, sino si el ciclo de los antivirus ya ha acabado o no (Kasperski ya comenta algo parecido), y tenemos que empezar a pensar/usar otro tipo de soluciones: firmado de procesos, análisis del comportamiento, autorización de ejecución o cualquier otro tipo que no utilice una detección en base a firmas/heurísticas.

PD: enhorabuena por el blog, siempre es interesante leerlo.

Posted by: David Barroso at febrero 14,2007 09:41
Re: ¿Deben ser detectados los packers?

David: gracias por el comentario, siempre alegra saber que gente de nivel se da de vez en cuando una vueltecita por aquí :)

Tienes razón en que la filosofía del antivirus tradicional está totalmente en crisis, el tema de las firmas no puede dar a basto con la producción actual, llevan bastante tiempo desbordados. El malware muta y se adapta mucho más rápido que las soluciones antivirus, que se empeñan en mantener la misma estrategia (también tienen más complicado cambiar de tecnología cada 2x3).

En lo que respecta a antivirus, parece que hay una apuesta por el tema que comentas de análisis de comportamiento (TruPrevent de Panda, la última versión de Kaspersky, F-Secure 2007 también incluye lo que ellos llaman "DeepGuard" o algo similar, etc.)

Por su parte MS también ha puesto su granito de arena con Windows Vista... aunque al final, como siempre, todo se reduce a que el usuario haga doble click y termine instalando el software con regalito sorpresa.

Posted by: bquintero at febrero 14,2007 10:39
Re: ¿Deben ser detectados los packers?

Lo prometido es deuda... he echado un vistazo a una estación de trabajo corporativa, y la cosa se complica un poco.

En Windows se pueden encontrar los packers más usuales (UPX, ASPack, PECompact) formando parte de software legítimo.

Si nos vamos a los programas, además de los anteriores, se puede encontrar PEtite, Armadillo, incluso yoda. Por nombrar algún software muy popular, Macromedia/FlashPlayer tiene archivos con ASPack, o WinRAR con UPX.

En el software propietario también hay bastante que tiende a meter packers más o menos conocidos, supongo que como método para evitar cosas muy obvias como editores hexadecimales y cosas por el estilo.


Posted by: bquintero at febrero 14,2007 12:35
Re: ¿Deben ser detectados los packers?

El tema de mas heuritiscas o sistema de firmas es un autentico cachondeo.
Por mi parte no se deberian poner en la lista negra los packers, seria limitarnos a nosotros mismos, al igual con el tema de ciertas heuristicas, ya que nombrais a Panda, a mediados de verano del 2006 me cree un programita muy sencillo en vb6.0, su cometido era autocopiarse en system32 y crear una key en Run, cada funcion en un boton distinto y cuando pulse el 2º, tachan!!! panda me dijo que era un virus muy malo y que comprometia la seguridad de mi equipo... yo WTF!!!
El sistema de deteccion de panda de malware no me costo mas de par de semanas saltarmelo y sin usar packers ni nada raro. Ejecutas el exe, este cumple su cometido y el antivirus tan contento.

El extremo del kaspersky es algo que me termina mareando, permitir o denegar, ahi la cuestion, realizas una instalacion de algo y terminas al final dando a todo Permitir, como requiera un driver, un servicio, alguna key en el registro, terminas mareado... en un usuario amateur puede ser, aplicar politica, deja de darme el coñazo y haz lo que tengas que hacer...
Un saludo!

Posted by: XpyXt at febrero 14,2007 18:20
Re: ¿Deben ser detectados los packers?

No, no deben de ser detectados.

Yo soy un desarroyador de software que vende a pequeño nivel y me gusta protejer las aplicaciones con Themida para evitar que editen mis programas. En mi opinión deberian ser detectados los packers sin derechos, que no pagan derechos de autor y que normalmente los crea la gente para distribuir malware, pero marcas como Oreans (propietarios de themida) pagan los derechos de sus programas y estos no pueden ser detectados como virus ni bloqueados por antivirus.

Algunos packers son analizables y se pueden desempaquetar los archivos interiores, esto ya soluciona el problema. Lo malo son el malware protegido con packers que no se pueden desempaquetar.
La unica solución que veo es que los antivirus van a tener que reconocer mas firmas para un mismo virus protegido con diferentes packers. Por ejemplo, para un troyano tienen que tener una firma del troyano tal como es, otra firma empaquetado con Themida, otra empaquetado con ASPack por ejemplo, y así con todos los packers con derechos registrados. Lo que tienen que tener cuidado es que las firmas reconzcan al troyano y no a la utilidad, por ejemplo, de un troyano protegido con Themida tendrían que sacar la firma que reconociese al troyano protegido, fueran cuales fueran las opciones que seleccionaste en el Themida, y que estas firmas no sean comunes a todos los programas protegidos con Themida (sino detectaría una infección en cualquier archivo protegido con esa aplicacion aunque no fuera un malware)

Esto claro, da mucho trabajo a los antivirus, pero es la unica solución que veo en este momento.

Esta es mi opinión. Un saludo

Posted by: Pepe at febrero 15,2007 01:40
Re: ¿Deben ser detectados los packers?

Quiza en vez de determinar directamente si es malware o no en función de un factor podrían fijarse en varios factores y entonces estudiar la probabilidad de que sea un virus. Seria como en los filtros de spam. Un email con la palabra "viagra" no es spam, pero si viene de direccion falsa + "viagra" + otros factores las probabilidad de ser spam aumenta.

Si un software utiliza UPX o algun sistema de compresión pero no tiene ningún otro factor sospechoso, pasaría el filtro.

Posted by: emili at febrero 15,2007 12:14
Re: ¿Deben ser detectados los packers?

Yo opino que no deberían ser detectados por varias razones,la primera es obvia, un packer no hace daño al sistema, es solo una herramienta para reducir el tamaño de los ejecutables. Es algo independiente del malware.Simplemente es algo contingente que el malware esté comprimido.

La segunda razón es que los compresores no son fábulas,es decir, que se usan habitualmente,no es algo ocasional,no es que exista un loco al que le dió por comprimir sus programas.Mucha gente lo hace y es una costumbre extendida.

La tercera es que un usuario "normal" no sabe lo que es un packer,ni quiere saberlo,así que no distinguirá cuando su AV le advierte de un peligro real o cuando es todo pura paranoia.

Yo acabo de pasar el notepad.exe comprimido con UPX por VT y eSafe,Fortinet e Ikarus lo detectan como sospechoso,incluso Ikarus le pone nombre y variante:
Trojan-Dropper.Win32.Microjoin.R

Quería comentar tambien que los problemas legales que implican la detección de compresores son bastante grandes,no se si ya alguna empresa (oreans) ha movido ficha,quizás ni les importe. Lo que si quería era comentar al respecto de lo dicho por Pepe:

No puede fundamentarse la detección o no detección en que la empresa pague patentes,marcas y demás porque se perjudicaría a los desarrolladores que tienen escasos recursos económicos. Si yo me escribo mi propio packer ¿a quien le pago los derechos de autor?,y realmente tengo el mismo derecho que Oreans a que mi programa no sea reconocido como malware,aunque yo sea pobre o mi programa poco conocido.

Saludos.

Posted by: _Q_ at febrero 15,2007 17:26
Re: ¿Deben ser detectados los packers?

Coincido con _Q_, los antivirus lo único que deberían hacer al respecto es descomprimir el ejecutable y analizarle entonces.

Esto lo hacen para unos cuantos packers pero el Themida parece que se les resiste, ¿que pasa con este?





Posted by: Roht at febrero 17,2007 00:05
Re: ¿Deben ser detectados los packers?

Los antivirus si un virus esta empaquetado lo intentan desempaquetar, como por ejemplo, un archivo SFX (archivo comprimido autoejecutable) es descomprimido y analizado internamente en el analisis. Entonces cual es el problema, que hay que distinguir entre "SFX", "joiner" y "crypters".

Un archivo SFX es un paquete de varios archivos comprimidos que se autoextraen y ejecutan, el antivirus sabe descomprimir estos archivos y analizarlos (los formatos mas usuales como ZIP, RAR, CAB, etc...) aunque hay algunos como el formato UHARC que aun no los sabe analizar, pero esto no supone ningun problema ya que los SFX lo que hacen es descomprimir los archivos y despues ejecutarlos, asi que aunke el antivirus no detecte el archivo SFX en el momento que descomprima los archivos que contiene y los ejecute, si se tiene el modo residente activado el antivirus analizará los archivos ya descomprimidos, por lo que no hay problema. Los archivos SFX son "legales" por decirlo de alguna manera, es decir, que se generan con programas comerciales como WinRAR y los antivirus no los pueden reconocer como malware, por lo que tienen que aprender a analizarlos internamente.

Un joiner es una utilidad que une varios archivos, puede comprimirlos o no dependiendo del programa para usarlos, pero en cualquier caso el archivo creado es nuevo y no será reconocido por los antivirus. Los antivirus podrían aprender (en algunos casos) a desempaquetar los archivos, pero existen miles de joiners (millones), y sería mucho esfuerzo aprender a desempaquetarlos, ademas esto no siempre es posible. Como la mayoría de los joiners (99,99% diria yo) no son comerciales ni pertenecen a ninguna marca, les es mas facil reconocerlos como malware, y asi cualquier archivo creado con ese joiner será reconocido como malware, independientemente de que realmente lo sea.

Los crypters son programas que encriptan y protegen a una aplicación. El analisis de los ficheros interiores es imposible. Los crypters no comerciales, creados por una persona cualquiera, son reconocidos como malware, y cualquier archivo encriptado con el tambien.

Pues bien, esto se resume en que los archivos SFX no suponen problema ya que son facilmente analizables en la mayoría de los casos. Los joiners tambien no mucho problema, pues como la mayoría no pertenecen a ninguna marca pueden ser detectados como malware sin que les suponga mas problema. Con los crypters lo mismo.
El problema viene cuando aparece algun producto comercial. Si son programas que crean archivos SFX no hay problema pues los antivirus lo aprenden facilmente a desempaquetar, ya que solo son arcivos comprimidos con programas normales. Lo malo es cuando aparecen crypters o joiners comerciales, como el Themida de Oreans. El Themida es un crypter (tambien tiene función de joiner de manera opcional), imposible de desempaquetar, por eso está suponiendo problemas para las casas de antivirus. Es un programa Anti-cracking y que permite proteger aplicaciones de modificaciones posteriores, pues protege el codigo fuente. Al ser una marca comercial no debería ser detectado como malware en caso de que la aplicacion protegida no lo fuera, por eso las marcas mas conocidas como NOD32 o Karspersky no reconocen a Themida como malware, sin embargo algunos menos usuales como Fortinet si que detectan cualquier aplicacion de Themida como malware o sospechoso de serlo.

La solución a este problema es muy dificil, pues ya que es imposible analizar el verdadero contenido de la aplicacion y no lo pueden detectar como malware. Por eso algunos antivirus optaron por detectar cualquier archivo protegido como malware, incrementando el numero de falsos positivos, lo que perjudica a la compañía del antivirus y a la del programa que creo el archivo.

Los antivirus tiene que aprender a analizar estas aplicaciones, pero como si son imposibles de analizar por el momento?. Este es el gran problema. Pero no por eso los que utilizamos por ejemplo el Themida para proteger aplicaciones normales nos tenemos que perjudicar cuando nuestras aplicaciones son detectadas como malware, cuando realmente no lo son.

Un saludo

Posted by: Pepe at febrero 17,2007 15:54
Re: ¿Deben ser detectados los packers?

Creo que está más que claro que los packers no deben ser detectados. De todas maneras, y desde la más profunda ignorancia sobre el funcionamiento de los antivirus, se me ocurre lo siguiente. Es una idea, aunque no sé si es buena o factible.

Que yo sepa (y si no es así, por favor, corregidme), una aplicación empaquetada, al ser ejecutada se descomprime, y queda residente en memoria. ¿No solucionaría parte del problema analizar ese archivo cuando está en memoria? Creo que existirían formas de hacerlo de forma segura, como por ejemplo, utlizando algún tipo de máquina virtual que protegiera al sistema operativo, ejecutar el archivo sobre ese "s.o. virtual" (supongo que habría que dar un acceso de solo lectura al s.o. original por tema de dll's y compañía), detectar dónde se ha ubicado en el área de memoria y escanearlo (no sé si haría falta copiarlo a disco o se podría hacer al vuelo). De esta manera no haría falta conocer el empaquetador usado. Por supuesto esto no sería excluyente, sino complementario a otros métodos porque tiene pinta de ser bastante costoso en lo que a recursos se refiere.

Es una idea. ¿Os parece una burrada o sería factible?

Un saludo

Posted by: zoom_one at marzo 21,2007 10:42
Re: ¿Deben ser detectados los packers?

efectivamente si lo analizas en memoria entonces estará desempaketado, pero como estamos hablando de virus, la máquina ya estará infectada... demasiado tarde!

Creo que la idea es bloquear la ejecución de un fichero en base a si se detecta que tiene un entry point típico de paker/cryptor. Mientras avisen de que se trata de eso y no te den el suste de que es un bicho (y te den la opción de ejecutarlo de todas formas) a mi no me parece mal del todo. al final es una balanza... protección vs. usabilidad.

otra opción es pasarte a macosx o nix y asunto resuelto !

Posted by: rodríguez at abril 04,2007 20:09
Re: ¿Deben ser detectados los packers?

La mayoria del malware mas "peligroso" tienden a instalarse automaticamente en carpetas del sistema operativo (por ejemplo C:\windows\system32\) o en el raiz del disco duro, ademas de encontrarse empaquetado. Puesto que esto no es una practica tan habitual en software legítimo (habría que ver si realmente existe software que se autoinstale en esas carpetas), la deteccion solo de packers ubicados en estas carpetas por parte de los antivirus me parecería mas correcta. que opinais?

Posted by: Francisco at abril 12,2007 19:54
Trackbacks
Por favor envía los trackbacks a: http://blog.hispasec.nospam/laboratorio/196/tbZ3ping
Reemplazando "nospam" por "com"
No hay trackbacks.
Enviar un comentario

Está deshabilitado la publicación de comentarios