Casi una año hemos tenido que esperar a la publicación del número 4 de Valhalla, un ezine que seguro que ya conocen (y probablemente aman) todos los escritores de virus.
En el encontrarás infectores multiplataforma, métodos propagación, metamorfismo, nuevas técnicas (como la sorprendente auto-replicación usando la codificación del ADN) y trucos para evadir sistemas en línea de análisis dinámico como el que explica m0sa en su artículo: "SYP.01: Bypassing Online Dynamic Analysis Systems"...
Como ya vimos en el blog hace tiempo existen varios servicios online gratuitos que básicamente ejecutan el malware y monitorizan su comportamiento. Estos servicios normalmente son de dos tipos: basados en máquinas virtuales o basados en hooks, y por supuesto hay sistemas que combinan estos dos tipos.
Evasión de sistemas basados en máquinas virtuales
En las VM el sistema arranca en una máquina virtual limpia, ejecuta el malware, la para y, después de un tiempo definido, compara el resultado con el inicial para determinar los cambios realizados.
Normalmente para intentar evadir este análisis se utilizan dos técnicas:
- Detectar la presencia de VM: existen muchas técnicas para la detección de máquinas virtuales, aunque también otras tantas para ocultarlas.
- Retraso en la ejecución del malware: como la máquina virtual normalmente tiene un límite de tiempo para ejecutar el malware, es una buena idea retrasar su ejecución. No obstante el malware se retrasará también cuando se ejecute en un entorno real.
La mayoría de los servicios online para "no aburrir" al usuario y presentarles resultados relativamente inmediatos ejecutan el malware durante menos de 10 minutos. Con sólo 3 líneas es posible evadir Anubis.
CALL GetTickCount
CMP EAX, 927C0H ; 600000 MILLISECONDS = 10 MINUTES
JB Fake_Behavior
Evasión de sistemas basados en hooks
En los sistemas análisis dinámico que utilizan hooks también se ejecuta el malware (en una máquina virtual o en un servidor físico) durante un periodo de tiempo prefijado. Después el sistema hookea la mayoría y las más populares APIs del sistema para obtener la información del comportamiento del malware. Uno de los analizadores online más populares que usan esta técnica es CWSandbox.
Es muy fácil detectar el hook de un API. Antes de llamar al API hay que leer los primeros bytes de una dirección o address, si existe una instrucción de control de flujo el API está hookeada y el malware debería mostrar un comportamiento falso.
MOV EBX, DWORD PTR [EBP+AGetProcAddress]
MOV AL, BYTE PTR [EBX]
CMP AL, 0E9H ; JMP
JE FAKE_BEHAVIOR
CMP AL, 0FFH ; JMP/CALL
JE FAKE_BEHAVIOR
CMP AL, 0E8H ; CALL
JE FAKE_BEHAVIOR
CMP AL, 68H ; PUSH+RET
JE IS_FOLLOWED_BY_RET
JMP NO_HOOK
IS_FOLLOWED_BY_RET:
MOV AL, BYTE PTR [EBX+5]
CMP AL, 0C3H ; RET
JE FAKE_BEHAVIOR
NO_HOOK:
Pruebas y conclusiones
Para la prueba de concepto m0sa subió bots de Zeus a distinos analizadores dinámicos online y luego repitió los análisis con el mismo bot parcheado:
Todos los sistemas fueron evadidos exceptuando Joe Sandbox, cuyo estudio será presentado próximamente...
En el encontrarás infectores multiplataforma, métodos propagación, metamorfismo, nuevas técnicas (como la sorprendente auto-replicación usando la codificación del ADN) y trucos para evadir sistemas en línea de análisis dinámico como el que explica m0sa en su artículo: "SYP.01: Bypassing Online Dynamic Analysis Systems"...
Como ya vimos en el blog hace tiempo existen varios servicios online gratuitos que básicamente ejecutan el malware y monitorizan su comportamiento. Estos servicios normalmente son de dos tipos: basados en máquinas virtuales o basados en hooks, y por supuesto hay sistemas que combinan estos dos tipos.
Evasión de sistemas basados en máquinas virtuales
En las VM el sistema arranca en una máquina virtual limpia, ejecuta el malware, la para y, después de un tiempo definido, compara el resultado con el inicial para determinar los cambios realizados.
Normalmente para intentar evadir este análisis se utilizan dos técnicas:
- Detectar la presencia de VM: existen muchas técnicas para la detección de máquinas virtuales, aunque también otras tantas para ocultarlas.
- Retraso en la ejecución del malware: como la máquina virtual normalmente tiene un límite de tiempo para ejecutar el malware, es una buena idea retrasar su ejecución. No obstante el malware se retrasará también cuando se ejecute en un entorno real.
La mayoría de los servicios online para "no aburrir" al usuario y presentarles resultados relativamente inmediatos ejecutan el malware durante menos de 10 minutos. Con sólo 3 líneas es posible evadir Anubis.
CALL GetTickCount
CMP EAX, 927C0H ; 600000 MILLISECONDS = 10 MINUTES
JB Fake_Behavior
Evasión de sistemas basados en hooks
En los sistemas análisis dinámico que utilizan hooks también se ejecuta el malware (en una máquina virtual o en un servidor físico) durante un periodo de tiempo prefijado. Después el sistema hookea la mayoría y las más populares APIs del sistema para obtener la información del comportamiento del malware. Uno de los analizadores online más populares que usan esta técnica es CWSandbox.
Es muy fácil detectar el hook de un API. Antes de llamar al API hay que leer los primeros bytes de una dirección o address, si existe una instrucción de control de flujo el API está hookeada y el malware debería mostrar un comportamiento falso.
MOV EBX, DWORD PTR [EBP+AGetProcAddress]
MOV AL, BYTE PTR [EBX]
CMP AL, 0E9H ; JMP
JE FAKE_BEHAVIOR
CMP AL, 0FFH ; JMP/CALL
JE FAKE_BEHAVIOR
CMP AL, 0E8H ; CALL
JE FAKE_BEHAVIOR
CMP AL, 68H ; PUSH+RET
JE IS_FOLLOWED_BY_RET
JMP NO_HOOK
IS_FOLLOWED_BY_RET:
MOV AL, BYTE PTR [EBX+5]
CMP AL, 0C3H ; RET
JE FAKE_BEHAVIOR
NO_HOOK:
Pruebas y conclusiones
Para la prueba de concepto m0sa subió bots de Zeus a distinos analizadores dinámicos online y luego repitió los análisis con el mismo bot parcheado:
Comodo | before, after |
ThreatExpert | before, after |
CWSandbox | before, after |
Anubis | before, after |
Malwr | before, after |
Todos los sistemas fueron evadidos exceptuando Joe Sandbox, cuyo estudio será presentado próximamente...
Comentarios
Publicar un comentario