
DECAF (abreviação de Dynamic Executable Code Analysis Framework) é uma plataforma de análise binária baseada em QEMU. Este é também o lar da plataforma dinâmica de análise de malware Android DroidScope. DroidScope agora é uma extensão do DECAF.
DECAF (abreviação de Dynamic Executable Code Analysis Framework) é uma plataforma de análise binária baseada no QEMU.
DECAF++, a nova versão do DECAF, a análise de taint é cerca de 2 vezes mais rápida, tornando-a a estrutura de análise dinâmica de taint de sistema completo mais rápida, até onde sabemos. Isso resulta em uma usabilidade muito melhor, impondo apenas 4% de sobrecarga (SPEC CPU2006) quando não há entrada suspeita (tainted). Mesmo sob cargas pesadas de análise de taint, o DECAF++ tem um desempenho muito melhor, cerca de 25% mais rápido no nbench, devido à sua elasticidade. A elasticidade do DECAF++ o torna um caso muito adequado para tarefas de análise de segurança que analisariam seletivamente a entrada, por exemplo, Sistemas de Detecção de Intrusão (IDS) que podem filtrar tráfego benigno. Para mais detalhes técnicos, consulte nosso artigo do RAID 2019. Para ativar as otimizações, veja nossa página wiki do DECAF++.

Ali Davanian, Zhenxiao Qi, Yu Qu e Heng Yin, DECAF++: Elastic Whole-System Dynamic Taint Analysis, No 22º Simpósio Internacional sobre Pesquisa em Ataques, Intrusões e Defesas (RAID), Setembro de 2019. (Se deseja citar a nova versão otimizada do DECAF, por favor cite este artigo)
"Make it work, make it right, make it fast: building a platform-neutral whole-system dynamic binary analysis platform", Andrew Henderson, Aravind Prakash, Lok Kwong Yan, Xunchao Hu, Xujiewen Wang, Rundong Zhou e Heng Yin, a ser publicado no Simpósio Internacional sobre Testes e Análise de Software (ISSTA'14), San Jose, CA, Julho de 2014. (Se deseja citar o DECAF, por favor cite este artigo)
Lok Kwong Yan, Andrew Henderson, Xunchao Hu, Heng Yin e Stephen McCamant?. On soundness and precision of dynamic taint analysis. Relatório Técnico SYR-EECS-2014-04, Syracuse University, Janeiro de 2014.
DroidScope: Seamlessly Reconstructing OS and Dalvik Semantic Views for Dynamic Android Malware Analysis", Lok-Kwong Yan e Heng Yin, no 21º Simpósio de Segurança USENIX, Bellevue, WA, 8-10 de Agosto de 2012.
Luo, L., Fu, Y., Wu, D., Zhu, S., & Liu, P. (2016, Junho). Repackage-proofing android apps. In 2016 46th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN) (pp. 550-561). IEEE.
Wei, J., Yan, L. K., & Hakim, M. A. (2015, Dezembro). Mose: Live migration based on-the-fly software emulation. In Proceedings of the 31st Annual Computer Security Applications Conference (ACSAC) (pp. 221-230).
Carmony, C., Hu, X., Yin, H., Bhaskar, A.V., & Zhang, M. (2016). Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. In Proceedings of 2016 Network and Distributed System Security Symposium (NDSS).
Feng, Q., Prakash, A., Yin, H., & Lin, Z. (2014, Dezembro). Mace: High-coverage and robust memory analysis for commodity operating systems. In Proceedings of the 30th annual computer security applications conference (pp. 196-205)
Alwabel, A., Shi, H., Bartlett, G., & Mirkovic, J. (2014). Safe and automated live malware experimentation on public testbeds. In 7th Workshop on Cyber Security Experimentation and Test (CSET'14).
DECAF (Dynamic Executable Code Analysis Framework) é o sucessor das técnicas de análise binária desenvolvidas para o TEMU (componente de análise dinâmica do BitBlaze) como parte do trabalho de Heng Yin no projeto BitBlaze liderado por Dawn Song. O DECAF baseia-se no TEMU. Agradecemos a todos que trabalharam conosco nesse projeto.
Fig 1 a arquitetura geral do DECAF
A Fig 1 ilustra a arquitetura geral do DECAF. O DECAF é uma estrutura de análise binária dinâmica de sistema completo e independente de plataforma. Ele fornece os seguintes recursos principais.
Diferente do TEMU, o DECAF não usa driver convidado para recuperar semânticas de nível de sistema operacional. O componente VMI do DECAF é capaz de reconstruir uma visão atualizada do sistema operacional da máquina virtual, incluindo processos, threads, módulos de código e símbolos para dar suporte à análise binária. Além disso, para suportar múltiplas arquiteturas e sistemas operacionais, ele segue um design independente de plataforma. O fluxo de trabalho para extrair informações semânticas de nível de SO é comum em várias arquiteturas e sistemas operacionais. O único tratamento específico de plataforma reside em quais estruturas de dados do kernel e quais campos extrair informações.
Idealmente, gostaríamos que o mesmo código de análise (com código específico de plataforma mínimo) funcionasse para diferentes arquiteturas de CPU (por exemplo, x86 e ARM) e diferentes sistemas operacionais (por exemplo, Windows e Linux). Isso requer que o framework de análise oculte os detalhes específicos da arquitetura e do sistema operacional dos plugins de análise. Além disso, para tornar o próprio framework de análise sustentável e extensível a novas arquiteturas e sistemas operacionais, o código específico de plataforma dentro do framework também deve ser minimizado. O DECAF pode oferecer suporte tanto para múltiplas arquiteturas quanto para múltiplos sistemas operacionais. Atualmente, o DECAF suporta Windows 32 bits xp/Windows 7/linux e X86/arm.
O DECAF garante um taint preciso mantendo a precisão em nível de bit para registradores de CPU e memória, e incorporando regras precisas de taint nos blocos de código traduzidos. Assim, o status de taint para cada registrador de CPU e localização de memória é processado e atualizado de forma síncrona durante a execução do código da máquina virtual. A propagação dos rótulos de taint é feita de forma assíncrona. Ao implementar essa lógica de taint principalmente no nível de representação intermediária (mais concretamente, no nível TCG IR), torna-se fácil estender o suporte a taint para uma nova arquitetura de CPU.
O DECAF fornece uma interface de programação orientada a eventos. Isso significa que o paradigma de "instrumentar" na fase de tradução e depois analisar na fase de execução é invisível para os plugins de análise. Os plugins de análise precisam apenas se registrar para os eventos de interesse e implementar as funções correspondentes de tratamento de eventos. Os detalhes da instrumentação de código são tratados pelo framework.