Preview

Труды Института системного программирования РАН

Расширенный поиск

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

https://doi.org/10.15514/ISPRAS-2017-29(3)-3

Полный текст:

Аннотация

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

Об авторе

В. А. Падарян
Институт системного программирования РАН; Московский государственный университет имени М.В. Ломоносова; Lomonosov Moscow State University
Россия


Список литературы

1. 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.

2. 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.

3. Brumley D., Jager I., Avgerinos T. et al. BAP: A binary analysis platform. International Conference on Computer Aided Verification, 2011, pp. 463-469.

4. 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.

5. 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.

6. Defense Advanced Research Projects Agency Program Information: Cyber Grand Challenge (CGC). Доступно по ссылке: http://www.darpa.mil/program/cyber-grand-challenge, 01.06.2017.

7. В.А. Падарян, А.И. Гетьман, М.А. Соловьев, М.Г. Бакулин, А.И. Борзилов, В.В. Каушан, И.Н. Ледовских, Ю.В. Маркин, С.С. Панасенко. Методы и программные средства, поддерживающие комбинированный анализ бинарного кода. Труды ИСП РАН, том 26, вып. 1, 2014, стр. 251-276. DOI: 10.15514/ISPRAS-2014-26(1)-8.

8. Nethercote N., Seward J. Valgrind: a framework for heavyweight dynamic binary instrumentation. ACM SIGPLAN notices, 42(6), 2007, pp. 89-100.

9. 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.

10. Bellard F. QEMU, a fast and portable dynamic translator. USENIX Annual Technical Conference, FREENIX Track, 2005, pp. 41-46.

11. 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.

12. В.А. Падарян, М.А. Соловьев, А.И. Кононов. Моделирование операционной семантики машинных инструкций. Программирование, № 3, 2011, стр. 50-64.

13. Dullien T., Porst S. REIL: A platform-independent intermediate representation of disassembled code for static code analysis. CanSecWest, 2009, 7 pp.

14. А.Н. Федотов, В.А. Падарян, В.В. Каушан, Ш.Ф. Курмангалеев, А.В. Вишняков, А.Р. Нурмухаметов. Оценка критичности программных дефектов в условиях работы современных защитных механизмо. Труды ИСП РАН, том 28, вып. 5, 2016, стр. 73-92. DOI: 10.15514/ISPRAS-2016-28(5)-4.

15. 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


Для цитирования:


Падарян В.А. О представлении результатов обратной инженерии бинарного кода. Труды Института системного программирования РАН. 2017;29(3):31-42. https://doi.org/10.15514/ISPRAS-2017-29(3)-3

For citation:


Padaryan V.A. On representation used in the binary code reverse engineering. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2017;29(3):31-42. (In Russ.) https://doi.org/10.15514/ISPRAS-2017-29(3)-3

Просмотров: 70


Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)