
DECAF (сокращение от Dynamic Executable Code Analysis Framework) — это платформа для анализа бинарного кода на основе QEMU. Здесь также находится платформа динамического анализа вредоносных программ для Android DroidScope. DroidScope теперь является расширением DECAF.
DECAF (сокращение от Dynamic Executable Code Analysis Framework) — это платформа бинарного анализа на основе QEMU.
DECAF++, новая версия DECAF, выполняет анализ заражения (taint analysis) примерно в 2 раза быстрее, что делает его самым быстрым на сегодняшний день, насколько нам известно, фреймворком динамического анализа заражения для всей системы. Это обеспечивает гораздо лучшую удобство использования, накладывая всего 4% накладных расходов (SPEC CPU2006) при отсутствии подозрительных (зараженных) входных данных. Даже при интенсивных нагрузках анализа заражения DECAF++ показывает гораздо лучшую производительность — примерно на 25% быстрее на nbench — благодаря своей эластичности. Эластичность DECAF++ делает его очень подходящим для задач анализа безопасности, которые выборочно анализируют входные данные, например, системы обнаружения вторжений (IDS), которые могут отфильтровывать безвредный трафик. Для получения дополнительных технических подробностей см. нашу статью на RAID 2019. Чтобы активировать оптимизации, см. страницу DECAF++ вики.

Ali Davanian, Zhenxiao Qi, Yu Qu, and Heng Yin, DECAF++: Elastic Whole-System Dynamic Taint Analysis, In the 22nd International Symposium on Research in Attacks, Intrusions and Defenses (RAID), September 2019. (Если вы хотите сослаться на новую оптимизированную версию DECAF, пожалуйста, цитируйте эту статью)
"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, and Heng Yin, to appear in the International Symposium on Software Testing and Analysis (ISSTA'14), San Jose, CA, July 2014.(Если вы хотите сослаться на DECAF, пожалуйста, цитируйте эту статью)
Lok Kwong Yan, Andrew Henderson, Xunchao Hu, Heng Yin, and Stephen McCamant?.On soundness and precision of dynamic taint analysis. Technical Report SYR-EECS-2014-04, Syracuse University, January 2014.
DroidScope: Seamlessly Reconstructing OS and Dalvik Semantic Views for Dynamic Android Malware Analysis", Lok-Kwong Yan and Heng Yin, in the 21st USENIX Security Symposium, Bellevue, WA, August 8-10, 2012.
Luo, L., Fu, Y., Wu, D., Zhu, S., & Liu, P. (2016, June). 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, December). 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, December). 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) — это преемник методов бинарного анализа, разработанных для TEMU (компонент динамического анализа BitBlaze) в рамках работы Heng Yin над проектом BitBlaze под руководством Dawn Song. DECAF основан на TEMU. Мы благодарим всех, кто работал с нами над этим проектом.
Рис. 1. Общая архитектура DECAF
Рис. 1 иллюстрирует общую архитектуру DECAF. DECAF — это платформонезависимый фреймворк динамического бинарного анализа всей системы. Он предоставляет следующие ключевые возможности.
В отличие от TEMU, DECAF не использует гостевой драйвер для получения семантики на уровне ОС. Компонент VMI DECAF способен восстанавливать свежий вид виртуальной машины на уровне ОС, включая процессы, потоки, модули кода и символы, для поддержки бинарного анализа. Кроме того, для поддержки множества архитектур и операционных систем он следует платформонезависимому дизайну. Процесс извлечения семантической информации на уровне ОС является общим для различных архитектур и операционных систем. Единственная зависящая от платформы часть заключается в том, какие структуры данных ядра и какие поля используются для извлечения информации.
В идеале мы хотели бы, чтобы один и тот же код анализа (с минимальным количеством платформозависимого кода) работал для разных архитектур процессоров (например, x86 и ARM) и разных операционных систем (например, Windows и Linux). Это требует, чтобы фреймворк анализа скрывал детали, связанные с архитектурой и операционной системой, от плагинов анализа. Кроме того, чтобы сделать сам фреймворк анализа поддерживаемым и расширяемым для новых архитектур и операционных систем, платформозависимый код внутри фреймворка также должен быть минимизирован. DECAF может обеспечить поддержку как множества архитектур, так и множества операционных систем. В настоящее время DECAF поддерживает 32-битные Windows XP/Windows 7/linux и X86/arm.
DECAF обеспечивает точное заражение (tainting) за счет поддержки точности на уровне битов для регистров ЦП и памяти, а также встраивания точных правил заражения в транслированные блоки кода. Таким образом, статус заражения для каждого регистра ЦП и ячейки памяти обрабатывается и обновляется синхронно во время выполнения кода виртуальной машины. Распространение меток заражения (taint labels) осуществляется асинхронно. Реализуя такую логику заражения в основном на уровне промежуточного представления (точнее, на уровне IR TCG), становится легко расширить поддержку заражения на новую архитектуру ЦП.
DECAF предоставляет интерфейс программирования, управляемый событиями. Это означает, что парадигма «инструментирование на этапе трансляции, а затем анализ на этапе выполнения» невидима для плагинов анализа. Плагины анализа должны только зарегистрировать интересующие их события и реализовать соответствующие функции обработки событий. Детали инструментации кода берутся на себя фреймворком.
Для снижения накладных расходов во время выполнения код инструментации вставляется в транслированный код только при необходимости. Например, когда плагин регистрирует перехват функции в точке входа функции, код инструментации для этого перехвата помещается только в точку входа функции. Когда плагин отменяет регистрацию этого перехватчика, код инструментации также удаляется из транслированного кода. Чтобы упростить разработку плагинов, управление динамической инструментацией кода полностью выполняется фреймворком и, таким образом, невидимо для плагинов.
Пожалуйста, обратитесь к нашей странице вики за справочными документами.