Разработка методики идентификации авторства бинарных и дизассемблированных кодов программы на основе ансамбля современных методов обработки естественного языка

DOI: 10.21293/1818-0442-2023-26-4-53-60

Скачать текст статьи в формате PDF

Скачать JATS xml

Аннотация: Данная статья является частью цикла исследований, направленных на решение проблем идентификации авторства программного кода. Анализ бинарного или дизассемблированного кода является важнейшей задачей информационной безопасности, разработки программного обеспечения и компьютерной криминалистики ввиду необходимости защиты результатов интеллектуальной деятельности и авторского права, а также определения авторов вредоносных программ. Любая программа представляет собой машинный код, который может быть дизассемблирован (преобразован в текст на языке ассемблера) при помощи специализированных инструментов и проанализирован на предмет авторства по аналогии с текстом на естественном языке. Для решения обозначенной проблемы в статье предлагается методика на основе ансамбля fastText, метода опорных векторов (SVM) и авторской гибридной нейронной сети. Предложенная методика оценивалась на исходных кодах на языках C и C++, собранных с платформ GitHub и Google Code Jam, скомпилированных в исполняемые файлы и дизассемблированных инструментами реверс-инжиниринга. Средняя точность идентификации автора дизассемблированного кода предложенной методикой составила более 0,9. Методика также была апробирована на исходных кодах, в результате чего средняя точность составила 0,96 для простых случаев и более 0,85 для сложных (обфускация, стандарты кодирования и др.).

Ключевые слова: исходный код, машинное обучение, автор, нейронные сети, ансамбль, дизассемблер

Сведения о финансировании: Данная работа выполнена при финансовой поддержке Министерства науки и высшего образования РФ в рамках базовой части государственного задания ТУСУРа на 2023–2025 гг. (проект № FEWM-2023-0015).

Библиография статьи:
Куртукова А. В. Разработка методики идентификации авторства бинарных и дизассемблированных кодов программы на основе ансамбля современных методов обработки естественного языка / А. В. Куртукова, А. С. Романов, А. А. Шелупанов // Доклады Томского государственного университета систем управления и радиоэлектроники. – 2023. – Т. 26, № 4. – С. 53–60. DOI: 10.21293/1818-0442-2023-26-4-53-60

Авторы и правообладатели:

  • Куртукова А. В. , Томский государственный университет систем управления и радиоэлектроники (Томск, Россия)
  • Романов А. С. , Томский государственный университет систем управления и радиоэлектроники (Томск, Россия)
  • Шелупанов А. А. , Томский государственный университет систем управления и радиоэлектроники (Томск, Россия)

  • 1. A Forensic Traceability Index in Digital Forensic Investigation / S. Rahayu, S. Shahrin, N. Hafeizah, R. Yusof, M.F. Abdollah // Journal of Information Security. – 2013. – Vol. 4, No. 1. – P. 19–32.
  • 2. Schleimer S. Winnowing: local algorithms for document fingerprinting / S. Schleimer, D.S. Wilkerson, A. Aiken // Proceedings of the 2003 ACM SIGMOD international conference on Management of data (SIGMOD '03). – Association for Computing Machinery, NewYork, NY, USA, 2003. – P. 76–85.
  • 3. Large-Scale and Language-Oblivious Code Authorship Identification / M. Abuhamad, T. AbuHmed, A. Mohaisen, D. Nyang // Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. – Toronto, ON, Canada, 2018. – P. 101–114.
  • 4. RoPGen: Towards Robust Code Authorship Attribution via Automatic Coding Style Transformation / L. Zhen, G. Chen, C. Chen, Y. Zou, S. Xu // Proceedings of the 2022 IEEE 44th International Conference on Software Engineering (ICSE). – Pittsburgh, PA, USA, 2022. – P. 1906–1918.
  • 5. Holland C. Code authorship identification via deep graph CNNs / C. Holland, N. Khoshavi, G. Jaimes // Proceedings of the 2022 ACM Southeast Conference (ACM SE ‘22). – 2022. – P. 144–150.
  • 6. Bogomolov E. Authorship attribution of source code: A language-agnostic approach and applicability in software engineering / E. Bogomolov, V. Kovalenko, Y. Rebryk, A. Bacchelli, T. Bryksin // Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. – Athens, Greece, 2021. – P. 932–944.
  • 7. Ullah F. Source code authorship attribution using hybrid approach of program dependence graph and deep learning model / F. Ullah, J. Wang, S. Jabbar, F. Al-Turjman, M. Alazab // IEEEAccess. – 2019. – Vol. 7. – P. 141987–141999.
  • 8. Binary Authorship Verification with Flow-aware Mixture-of-Shared Language Model. – URL: https://arxiv.org/pdf/2203.04472, свободный (дата обращения: 18.11.2023).
  • 9. Rosenblum N. Who Wrote This Code? Identifying the Authors of Program Binaries / N. Rosenblum, X. Zhu, B.P. Miller. – URL: https://pages.cs.wisc.edu/~jerryzhu/pub/Rosenblum11Authorship.pdf, свободный (дата обращения: 18.11.2023).
  • 10. Alrabaee S. BinGold: Towards robust binary analysis by extracting the semantics of binary code as semantic flow graphs (SFGs) / S. Alrabaee, L. Wang, M. Debbabi // Dig. Investig. – 2016. – Vol. 18. – P. 11–22.
  • 11. Caliskan-Islam A. When Coding Style Survives Compilation: De-anonymizing Programmers from Executable Binaries. – arXiv preprint. – arXiv:1512.08546. – 2017. – URL: https://arxiv.org/abs/1512.08546, свободный (дата обращения: 21.10.2023).
  • 12. Alrabaee S. OBA2: An Onion Approach to Binary code Authorship Attribution / S. Alrabaee, N. Saleem, S. Preda, L. Wang, M. Debbabi // Dig. Investig. – 2014. – Vol. 11. – P. 94–103.
  • 13. Caliskan-Islam A. Deanonymizing programmers via code stylometry // Proceedings of the 24th USENIX Security Symposium, Washington. – 2015. – P. 255–270. – URL: https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-caliskanislam.pdf, свободный (дата обращения: 18.11.2023).
  • 14. Alrabaee S. On the Feasibility of Malware Authorship Attribution / S. Alrabaee, P. Shirani, M. Debbabi, L. Wang // Dig. Investig. – 2016. – Vol. 28. – P. 3–11.
  • 15. Zia T. Source Code Author Attribution Using Author’s Programming Style and Code Smells / T. Zia, M.I.J. Ilyas // Intell. Syst. Appl. – 2017. – Vol. 5. – P. 27–33.
  • 16. Google Code Jam. – URL: https://codingcompetitions.withgoogle.com/codejam, свободный (дата обращения: 18.11.2023).
  • 17. Codeforces. – URL: https://codeforces.com, свободный (дата обращения: 18.11.2023).
  • 18. GCC, the GNU Compiler Collection. – URL: https://gcc.gnu.org, свободный (дата обращения: 21.10.2023).
  • 19. IDA Pro. – URL: https://hex-rays.com/ida-pro, свободный (дата обращения: 18.11.2023).
  • 20. Куртукова А.В. Идентификация автора исходного кода методами машинного обучения / А.В. Куртукова, А.С. Романов // Труды СПИИРАН. – 2019. – № 18. – С. 741–765.
  • 21. Kurtukova A. Source Code Authorship Identification Using Deep Neural Networks / A. Kurtukova, A. Romanov, A. Shelupanov // Symmetry. – 2020. – Vol. 12. – 2044. DOI:10.3390/sym12122044
  • 22. Kurtukova A. Complex Cases of Source Code Authorship Identification Using a Hybrid Deep Neural Network / A. Kurtukova, A. Romanov, A. Shelupanov, A. Fedotova // Future Internet. – 2022. – Vol. 14. – Р. 287. DOI: /10.3390/fi14100287
  • 23. AnalyzeC. – URL: https://github.com/ryarnyah/AnalyseC, свободный (дата обращения: 18.11.2023).
  • 24. Linux Kernel Coding Style. – URL: https://www.kernel.org/doc/html/v4.10/process/coding-style.html (дата обращения: 18.11.2023).
Адрес редакции

  634050, г. Томск, пр. Ленина, 40, МК, каб. 310/2

  (3822) 701-582, внутр.: 1456

  journal@tusur.ru