Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Автоматизация построения правил для Approof

Автоматизация построения правил для Approof

Доклад Дениса Ефремова (ИСП РАН), посвященный написанию правил для утилиты Approof, на PHDays VII.

695d44581c32d62f5393163739a66846?s=128

Positive Development User Group

September 25, 2017
Tweet

More Decks by Positive Development User Group

Other Decks in Programming

Transcript

  1. Заголовок ptsecurity.com Автоматизация построения правил для Approof м.н.с. Ефремов Д.В.

    ИСП РАН efremov@ispras.ru
  2. Заголовок • Статический анализатор • Младший брат Application Inspector •

    Свободно доступен для использования «Без регистрации и смс» • https://approof.ptsecurity.ru/ • Движок FingerPrint – поиск известных версий библиотек с уязвимостями
  3. Заголовок • Метаинформация • Имя, версия, описание угрозы, уровень угрозы

    … • Паттерны • Строки, регулярные выражения • Условия сопоставления паттернов • Логическое условие на основе существующих паттернов и правил • http://yara.readthedocs.io/en/v3.6.0/ • Правила добавляются через меню "Add Yara rules” • Либо "%LOCALAPPDATA%\Approof\YaraRules\" Правила Yara для Approof (1)
  4. Заголовок Правила Yara для Approof (2)

  5. Заголовок Правила Yara для Approof (2)

  6. Заголовок Правила Yara для Approof (2)

  7. Заголовок Правила Yara для Approof (2)

  8. Заголовок Правила Yara для Approof (3)

  9. Заголовок Правила Yara для Approof (4)

  10. Заголовок Правила Yara для Approof (5)

  11. Заголовок Правила Yara для Approof (5)

  12. Заголовок Правила Yara для Approof (5)

  13. Заголовок •Описание уязвимости •http://cve.mitre.org/, http://vuldb.com, https://vulners.com/, … •Исходный код разных

    версий пакетов •https://api.metacpan.org/source •https://registry.npmjs.org/ •https://pypi.python.org/pypi/ •… Автоматизация (1) (Метаинформация)
  14. Заголовок •Имя пакета •package HTML::Scrubber; •"name": "dns-sync" •__title__ = ”requests"

    •Версия пакета •our $VERSION = '0.10'; •"version": "0.1.0" •__version__ = "1.0.0" Автоматизация (2) (Паттерны в исходных кодах)
  15. Заголовок Автоматизация (3) (Синтез) Определение версий пакетов Загрузка и обрабока

    Поиск идентификаторов Преобразование в шаблон
  16. Заголовок • Perl • Нет проблем, всё шикарно • Python

    • setup.py не устанавливается • __init.py__ может ничего не содержать • __version__, __title__, __build__, __author__ ещё надо найти • Модуль может не содержать идентификаторов версий • Модуль может не содержать имя модуля в явном виде в файлах • Pyc, Pyo файлы • JavaScript • Когда есть package.json всё шикарно • … Проблемы при автоматизации
  17. Заголовок yargen --module HTML::Scrubber --cve CVE-2015-5667 (1)

  18. Заголовок yargen --module HTML::Scrubber --cve CVE-2015-5667 (2)

  19. Заголовок yargen --module HTML::Scrubber --cve CVE-2015-5667 (3)

  20. Заголовок yargen --module HTML::Scrubber --cve CVE-2015-5667 (3)

  21. Заголовок yargen --module HTML::Scrubber --cve CVE-2015-5667 (3)

  22. Заголовок •Сопоставление по пути файла • Python (__init__.py и остальные

    файлы) • setup.py не устанавливается • Файлы пакета могут не содержать идентификатора имени пакета • JavaScript (package.json) •Сопоставления по нескольким файлам • Идентификаторы пакета и версий находятся в разных файлах Каких возможностей недостаёт?
  23. Заголовок •Публичный репозиторий правил •https://github.com/PositiveTechnologies/FP- community-rules •Репозиторий программы генерации правил

    •https://github.com/evdenis/yargen Дополнительная информация
  24. Заголовок ptsecurity.com Спасибо! Спасибо!