Friday, 11 September 2015

Metodologías de ofuscación de código de malware para evasión de antivirus

Acuerdo con profesionales de seguridad informática, las dos razones principales de la utilización de la ofuscación del código en malware son:
1. Para disuadir la ingeniería inversa estática de malware. Se hace más difícil a enfocar las secciones de código más importante.
2. Para que las firmas estáticas utilizadas por los vendedores de AV no puedan detectar malware, ya que las firmas se basan en secuencias de bytes específicas en el binario.
Vamos a entender con ayuda de expertos de formación y servicios de hacking ético de IICS las metodologías que usan programadores de malware. Abajo hay diferente metodologías usadas por los programadores de malware para hacer ofuscación de control de flujo en malware.
Ofuscación por funciones de callback definida por la aplicación
Hay ciertas APIs proporcionadas por Microsoft, lo que nos permite registrar una función de callback. Estos pueden ser utilizados por malware para ocultar la lógica principal de su código. Pueden pasar un puntero a la subrutina malicioso como el parámetro de callback para la API. Cuando se crea window usando CreateWindowA (), el procedimiento de window se invoca con ciertos mensajes por defecto como WM_CREATE, WM_NCCREATE y así sucesivamente. Sin embargo, se ejecutará el código del virus principal solamente cuando se recibe un mensaje de window en particular explico Bill Smith experto de seguridad en la nube que maneja equipo de análisis de malware de la nube.

Ejecución a través de manejo de excepciones
Malware también podría redirigir la ejecución de la subrutina malicioso mediante la activación de una excepción. Para ello, primero se registran un manejador de excepciones utilizando RtlAddVectoredExceptionHandler () o mediante el registro de un nuevo manejador de excepciones estructurado.
Expertos de empresa de seguridad informática explican que la excepción se puede invocar utilizando cualquiera de los siguientes:
1. Activación de una violación de acceso a memoria, tratando de escribir en una dirección de memoria a la que no hay acceso de escritura o intentando llamar a una dirección de memoria no válida.
2. Ejecución de una instrucción privilegiada como STI o CLI, que daría lugar a una excepción privilegiada en modo protegido.
3. Realización de una división por cero para activar la excepción.
Controlar debugger
Según expertos de hacking ético, hay ciertas instrucciones especiales o secuencia de instrucciones que cuando se ejecuta en el debugger cambian el comportamiento predeterminado del debugger. Eso ayuda en ofuscación de control de flujo del código en debugger y hace más difícil entender el código.
NT 2D tiene un comportamiento especial en Olly debugger. Olly se saltará el siguiente byte en la ejecución como resultado de los cuales se ofusca el flujo de control. Esta técnica se refiere a menudo como byte scission. También tiene un comportamiento dinámico en diferentes entornos.
Overwrite RETN: Este es un comportamiento especial observado en Olly debugger. Si sobre escribimos la instrucción RETN con el código de operación, 0xC3 (que es el código de operación de RETN) justo antes de ejecutar RETN, debugger no se detiene en la dirección RETN sino que se ejecuta el código dentro del debugger.
Instrucciones chatarras
Hay varios motores polimórficos que son utilizados por los autores de malware para generar versiones modificadas de su binario que realizan las mismas actividades en la máquina, sin embargo se modifica su código explica Bill Smith experto de servicios de seguridad en la nube. Esto se utiliza a menudo para evitar firmas estáticas escritas por detectar malware por proveedores de seguridad. Una de las características importantes de un motor polimórfico es el generador de instrucciones chatarras. Instrucciones chatarras son secuencia de instrucciones que no afectan a la lógica general del código de ninguna manera, pero se colocan para disuadir la ingeniería inversa. Entre cada instrucción útil, se colocan varios bytes chatarras. Las principales razones para la inyección de instrucciones chatarras en la sección de código son:
1. Estos bytes chatarras podrían corresponder las instrucciones que no alteran la lógica general del código. Aumentan el tamaño de la sección de código y disuadir la ingeniería inversa, ya pesar de que estas instrucciones parecen ser legítimas y no tienen ningún impacto en el comportamiento principal del virus.
2. Instrucciones chatarras inyectados en el área de instrucciones corresponden a las instrucciones parciales. Esto se hace para confundir a los desensambladores que se basan en algoritmos como Linear Sweep y Recursive Traversals.
3. El código puede ser ofuscado aún más mediante el uso de predicados opacos que se pueden combinar con las API de Windows que siempre va a devolver un valor fijo.

Hay algunas tecinas más de ofuscación de código usado por los hackers menciona Bill Smith y alguien con experiencia en seguridad informática o seguridad en la nube puede entender fácilmente y vamos a cubrir eso en próximo artículo.

0 comments:

Post a Comment