Evasión de firmas antivirus condicionales (Último post por falta de acogida)
Resultados 1 al 1 de 1

Tema: Evasión de firmas antivirus condicionales (Último post por falta de acogida)

  1. #1
    Usuario


    Avatar de Unforgiven570
    Fecha de ingreso
    08 May, 18
    Ubicación
    Valparaíso, CL
    Mensajes
    202

    Lightbulb Evasión de firmas antivirus condicionales (Último post por falta de acogida)

    En lo que va del mes de Enero, me he dedicado a afinar mi herramienta ParameterFuzz, dentro de poco tendrán disponible como descarga junto a nuevas mejoras añadidas, como es una herramienta Spider y un Encoder para facilitar este tipo de auditorías. No obstante, tenía que encargarme antes de un tema, el cual corrobora que las compañías antivirus, se tiran al barro con detección de firmas “condicionales”. Y es tan solo agregar un módulo BAS, con algún tipo de algoritmo de cifrado, junto con CSocketMaster para la realización de conexiones y… ¡Toma firma antivirus!


    Ciertamente, que utilice Avira Antivirus y no otra solución, no viene a ser más que por la propia experiencia en evasión de firmas y es que este antivirus configurado con heurística en nivel alto, si de algo peca es de falsos positivos… pero “no se escapa ni uno”, que ya decidiré yo mismo que hacer con el “supuesto malware”. Os preguntareis a que me refiero con eso de las firmas condicionales, no es ni más ni menos que una alerta antivirus, por cada ejecutable que cumpla ciertas condiciones. En mi caso, para realizar el bypass a la firma genérica de TR/Spy.Gen, me ha tocado realizar diferentes pruebas del funcionamiento de su rutina.


    Según la descripción de Avira, TR/Spy.Gen es:



    “Una rutina de detección genérica, creada para detectar las características comunes de ciertas familias, presentadas en varias versiones.

    Esta rutina de detección especial ha sido desarrollada para detectar las versiones aún no descubiertas, y será mejorada constantemente.”



    Al ser una firma basada en características comunes de una familia y no en una firma creada para un malware en cuestión, no bastará con romper la firma, sino el funcionamiento del ejecutable para llevar a cabo una buena manipulación.
    En primer lugar quise ver con AVfucker, cuáles eran los Offsets desde los cuales la firma necesitaba tener presente que ParameterFuzz era un malware.





    Llenando espacios de 1.000 Bytes con ceros, podría generar 2047 ejecutables, los cuales alguno dejaría de ser detectado, con el fin de acorralar la firma. Aunque pensándolo mejor, lo hice con 10.000 Bytes, y es que ParameterFuzz empieza a engordar…


    Como muestra la siguiente imagen, de los 128 archivos que fueron analizados, 105 habían sido detectados como malware, los restantes me darían juego para encontrar la firma.





    Tras varios procesos, del grupo de aquellos que no contenían firma, decidí utilizar el Offset más bajo del ejecutable, del 15.200 al 15.300, ahora sí, tan solo 1 Byte… igual a 100 nuevos archivos para analizar en busca de firmas.





    Otra pasada con el antivirus de nuevo… y el resultado fueron 5 archivos indetectables, de Offsets consecutivos y casi idénticos al original, salvo en un 1 byte que rompía la firma de cada uno de ellos. Ninguna de las 5 muestras eran funcionales, con lo que nada mejor que pasarlas a Ollydbg, con el objetivo de ver la parte del código afectada.


    Decidí seleccionar el Offset 15.264 para empezar, ya que era una cadena consecutiva la detectada. Así que pasando el decimal 15.264 a hexadecimal me quedaría con 3BA0.





    Sorpresa la mía, fue encontrarme con que justo el Entry Point de la aplicación, era el detectado y desde 3BA0 hasta 3BA4, era el espacio ocupado por la firma y por las dos primeras instrucciones hasta 3BA5.





    Si leyeron mi anterior entrada moviendo el Entry Point, no tuve más remedio que realizar la migración del Entry Point a otra dirección de memoria. Pero aquí no termina todo, sino que después de realizar el cambio, Avira Antivirus me premiaba con otra firma, TR/Crypt.XPACK. Pensé entonces en introducir código basura o simplemente unos NOP entre ambas instrucciones, con el objetivo de partir la firma y habiendo movido con antelación el Entry Point… ¡pero nada! Una nueva firma llamadaHEUR/Malware, aparecía gracias a mi paranoica configuración.


    Un silencio y cara de otro, me conmovió enelpc¡nada es coña!. Se me ocurrió que posiblemente, el hecho de que el Entry Point siempre recibiese como primera instrucción un PUSH, junto a todas las demás condiciones que hacían pensar que ParameterFuzz fuese un malware, podía hacer persistir la firma independientemente de la zona de memoria en donde empezase la aplicación.
    Así que copié ambas instrucciones, y las incluí en un hueco dentro de la sección ejecutable.





    Evitando la modificación de la dirección de memoria del Entry Point, llené de NOP el hueco de ambas instrucciones y agregué en su lugar, un simple salto JMP hasta el PUSHde inicio.





    De esta manera, la condición de que la primera instrucción fuese un JMP, evitaría la rutina de detección del antivirus.





    Y ya podría lucir mi ParameterFuzz v1.4, sin tener que agregarlo a las excepciones de Avira Antivir.





    No obstante, me pondré en contacto con Avira para tratar de evitar la molestia, ya que no es la primera vez que me pasa algo como esto con un software “inofensivo” y tengo que comunicarlo… ¡al menos que le pongan un nombre bonito en plan Para-Meter-HackTool!


    /*Este material es de uso educativo exclusivamente y no me hago responsable por su mal uso*/
    Última edición por Unforgiven570; Hace 1 semana a las 14:46

    Cita Iniciado por fuckencio Ver mensaje
    la mahindra tenia la Reversa mala no se pudo devolver y se fue

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
*