О представлении результатов обратной инженерии бинарного кода

Бесплатный доступ

В статье рассматривается вопрос представления кода алгоритмов, извлекаемых из бинарного кода в рамках задачи обратной инженерии: как промежуточные представления для автоматического анализа, так и конечные представления, передаваемые пользователю. Разбираются две ключевых подзадачи в области обратной инженерии: автоматический поиск эксплуатируемых дефектов и выявление НДВ. Описана общая схема системы, реализующей автоматический поиск эксплуатируемых дефектов, указаны ключевые свойства промежуточного представления, позволяющего решать такую задачу с точки зрения эффективной генерации системы уравнений для SMT-решателя. Представлен тракт работы системы по выявлению НДВ, состоящий из трех этапов: локализация алгоритма, его представление в удобной для анализа форме и исследование его свойств. Для автоматизации первого этапа применяется построение статико-динамического представления, выделяются события уровня ОС и вызовы библиотечных функций, являющиеся «якорями», от которых отталкивается аналитик при локализации алгоритма. Дальнейшая поддержка локализации осуществляется за счет построения срезов и средств навигации. После того, как локализация алгоритма выполнена, дальнейшая работа разделяется на два направления: диалоговое построение компактного аннотированного представления алгоритма в виде блок-схемы и автоматизированное изучение свойств алгоритма в части определения декларированных и недекларированных потоков данных. Представление алгоритма в виде блок-схемы базируется на построении упрощенных моделей функций, учитывающих входные и выходные буферы, и автоматически выявляемыми связями по данным между буферами различных вызовов функций. Описан общий сценарий работы аналитика с подобной блок-схемой в контексте задачи выявления НДВ, основанный на аннотировании декларированных потоков данных и автоматическом выявлении недекларированных потоков. В завершение статьи приводится пример получаемого представления и перечисляются направления дальнейшей работы.

Еще

Бинарный код, комбинированный анализ, промежуточное представление

Короткий адрес: https://sciup.org/14916439

IDR: 14916439   |   DOI: 10.15514/ISPRAS-2016-29(3)-3

Список литературы О представлении результатов обратной инженерии бинарного кода

  • Wang X., Zeldovich N., Kaashoek M. F., Solar-Lezama A. A Differntial Approach to Undefined Behavior Detection. ACM Transactions on Computer Systems, 33(1), article 1, 2015. 29 p DOI: 10.1145/2699678
  • Song D., Brumley D., Yin H. et al. BitBlaze: A new approach to computer security via binary analysis. Information systems security, 2008, pp. 1-25.
  • Brumley D., Jager I., Avgerinos T. et al. BAP: A binary analysis platform. International Conference on Computer Aided Verification, 2011, pp. 463-469.
  • Shoshitaishvili Y., Wang R., Salls C. et al. Sok: (state of) the art of war: Offensive techniques in binary analysis. Security and Privacy (SP), 2016 IEEE Symposium on, 2016, pp. 138-157.
  • Cha S. K., Avgerinos T., Rebert A. et al. Unleashing mayhem on binary code. Security and Privacy (SP), 2012 IEEE Symposium on, 2012, pp. 380-394.
  • Defense Advanced Research Projects Agency Program Information: Cyber Grand Challenge (CGC). Available at: http://www.darpa.mil/program/cyber-grand-challenge, accessed 01.06.2017.
  • V.A. Padaryan, A.I. Getman, M.A. Solovyev, M.G. Bakulin, A.I. Borzilov, V.V. Kaushan, I.N. Ledovskich, U.V. Markin, S.S. Panasenko. Methods and software tools for combined binary code analysis. Trudy ISP RAN/Proc. ISP RAS, vol. 26, issue 1, 2014, pp. 251-276 DOI: 10.15514/ISPRAS-2014-26(1)-8
  • Nethercote N., Seward J. Valgrind: a framework for heavyweight dynamic binary instrumentation. ACM SIGPLAN notices, 42(6), 2007, pp. 89-100.
  • Luk C. K., Cohn R., Muth R. et al. Pin: building customized program analysis tools with dynamic instrumentation. ACM SIGPLAN notices, 40(6), 2005, pp. 190-200.
  • Bellard F. QEMU, a fast and portable dynamic translator. USENIX Annual Technical Conference, FREENIX Track, 2005, pp. 41-46.
  • De Moura L., Bjørner N. Z3: An efficient SMT solver. Tools and Algorithms for the Construction and Analysis of Systems, 2008, pp. 337-340.
  • V.A. Padaryan, M.A. Solov’ev, A.I. Kononov. Simulation of Operational Semantics of Machine Instructions. Programming and Computer Software, 37(3), 2011, pp. 161-170 DOI: 10.1134/S0361768811030030
  • Dullien T., Porst S. REIL: A platform-independent intermediate representation of disassembled code for static code analysis. CanSecWest, 2009, 7 pp.
  • A.N. Fedotov, V.A. Padaryan, V.V. Kaushan, Sh.F. Kurmangaleev, A.V. Vishnyakov, A.R. Nurmukhametov. Software defect severity estimation in presence of modern defense mechanisms. Trudy ISP RAN/Proc. ISP RAS, vol. 28, issue 5, 2016, pp. 73-92 DOI: 10.15514/ISPRAS-2016-28(5)-4
  • Caselden D., Bazhanyuk A., Payer M., McCamant S., Song D. HI-CFG: Construction by Binary Analysis and Application to Attack Polymorphism. In Computer Security -ESORICS 2013. Lecture Notes in Computer Science, vol 8134. Springer pp. 164-181
Еще
Статья научная