[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
На этом вебинаре вы научитесь:
- работать в графическом редакторе iRidium Studio;
- создавать драйверы для одностороннего управления оборудованием по ИК, RS232, IP;
- настраивать управление аудио/видео оборудованием, используя преобразователи Global Caché;
- выбирать лицензию.
Подробнее об iRidium 3.0 здесь http://www.iridiummobile.ru/?utm_source=AV%20webinar%20presentation%20in%20SlideShare&utm_medium=AV%20webinar%20presentation%20in%20SlideShare&utm_campaign=AV%20webinar%20presentation%20in%20SlideShare
by Dmytro Tarasenko
Agenda:
1. JavaScript speed
2. Simple interpreter creation
3. Command Line and File System
4. Password bruteforcing (md5, 7zip)5. Cross Domain Requests
6. 3D in JavaScript
7. Hiding of JavaScript code
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
Антивирусная система Яндекса ежедневно обнаруживает тысячи взломанных сайтов. Периодически среди них встречаются крупные и известные интернет-ресурсы.
Администраторы сайтов часто оказываются не готовы к тому, что злоумышленник может пробраться через внешний периметр и исполнить произвольный код на стороне сервера. В результате перед ними встаёт нелегкая задача: обнаружить последствия и предотвратить дальнейшие проблемы.
Доклад посвящён практикам и инструментам, которые могут существенно повысить эффективность противодействия вредоносной активности, и профилактике её возникновения.
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
На этом вебинаре вы научитесь:
- работать в графическом редакторе iRidium Studio;
- создавать драйверы для одностороннего управления оборудованием по ИК, RS232, IP;
- настраивать управление аудио/видео оборудованием, используя преобразователи Global Caché;
- выбирать лицензию.
Подробнее об iRidium 3.0 здесь http://www.iridiummobile.ru/?utm_source=AV%20webinar%20presentation%20in%20SlideShare&utm_medium=AV%20webinar%20presentation%20in%20SlideShare&utm_campaign=AV%20webinar%20presentation%20in%20SlideShare
by Dmytro Tarasenko
Agenda:
1. JavaScript speed
2. Simple interpreter creation
3. Command Line and File System
4. Password bruteforcing (md5, 7zip)5. Cross Domain Requests
6. 3D in JavaScript
7. Hiding of JavaScript code
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
Антивирусная система Яндекса ежедневно обнаруживает тысячи взломанных сайтов. Периодически среди них встречаются крупные и известные интернет-ресурсы.
Администраторы сайтов часто оказываются не готовы к тому, что злоумышленник может пробраться через внешний периметр и исполнить произвольный код на стороне сервера. В результате перед ними встаёт нелегкая задача: обнаружить последствия и предотвратить дальнейшие проблемы.
Доклад посвящён практикам и инструментам, которые могут существенно повысить эффективность противодействия вредоносной активности, и профилактике её возникновения.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
«Отладка приложений с помощью dtrace» — Станислав Краснояров, Redsteep e-Legion
Доклад о том, как можно использовать утилиту dtrace для отладки iOS приложений. Эта утилита может быть полезна при отладке сложных случаев, когда необходимо задать какие-либо правила для фильтрации вызываемых функций.
Обратная разработка бинарных форматов с помощью Kaitai StructPositive Hack Days
Ведущий: Михаил Якшин
В докладе будут рассмотрены современные подходы к обратной разработке бинарных файлов: с чего начинают, что хотят получить на выходе, какими инструментами традиционно пользуются. Будет продемонстрирован новый проект— Kaitai Struct, представляющий собой инструментарий для декларативного описания бинарных структур данных с выводом результата в виде готовых библиотек на языках C++, Java, JavaScript, Python и Ruby. Несколько практических примеров использования обратной разработки помогут участникам лучше ознакомиться с проблематикой.
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
Вы разрабатываете веб-приложения и используете хранимые процедуры? Вы пишите SELECT … WITH(NOLOCK)? Вы считаете, что ORMы снижают быстродействие приложений? Тогда этот доклад для вас!
В докладе будут развенчаны популярные мифы о применении библиотек Object-Relational Mapping (ORM) в ASP.NET при работе с Microsoft SQL Server. Также будут рассмотрены конкретные методики увеличения быстродействия работы с данными в веб-приложениях.
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2975.html
Все мы слышали про изменение кода ядра Linux на лету (kernel live patching). Но кто-нибудь проводит подобные фокусы в user space? Оказалось, что да. Мы тоже попробовали.
И получилось.
Длинная дорога технологии Userspace Live Patching в жизнь:
Что такое Live Patching
1) Изменение части логики процесса.
2) Сохранение состояния процесса.
3) Делать 1+2 БЕЗОПАСНО.
...
Valentin Simonov “Who cracks our games and how that is done”DevGAMM Conference
The lecture concerns spiteful hackers and the millions of those monkeys we have to resist every day. Are there any ways to protect ourselves of them and how. What should we pay prior attention to in online and offline games. The stories from real life and the real examples of cracking a few famous games.
Универсальный сигнатурный анализ кода на C#, Java, PHPИван Кочуркин
В данном докладе затронуты такие темы, как теория и проблемы парсинга, построение и обход абстрактных синтаксических деревьев (AST) и разработка предметно-ориентированного языка (DSL).
Рассматриваются такие проблемы парсинга, как разбор контекстно-зависимых языков, обработка ошибок и др. В качестве примера применения теории приведена грамматика PHP, разработанная для генератора парсеров ANTLR.
Далее рассматриваются структура унифицированного AST, методы его обхода и сопоставления с паттернами.
Завершающей частью презентации является описание DSL, разработанного с целью записи существующих и будущих паттернов. Также приведены примеры некоторых паттернов для лучшей усвояемости материала.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
Поиск уязвимостей с использованием статического анализа кодаcorehard_by
Поиск уязвимостей с использованием статического анализа кода, Андрей Карпов и Евгений Рыжков
В последнее время мы все слышим о новых и новых уязвимостях, обнаруженных в программном обеспечении. Уже стало очевидно, что писать код без уязвимостей человечество не может. Но могут ли современные инструменты разработки помочь обнаружить хотя бы некоторые ошибки? В докладе НЕ будет фраз типа «купите такой-то инструмент, чтобы не допускать уязвимостей в своем и чужом коде». На реальных примерах мы попробуем показать какие типы уязвимостей или по-другому программных дефектов могут быть найдены с помощью технологий анализа кода, а какие – пока нет. Ну и конечно как писать код так, чтобы снизить вероятность появления уязвимостей в своем коде.
Поиск уязвимостей с использованием статического анализа кодаAndrey Karpov
Уязвимости - это те же самые обыкновенные ошибки. Зачем их выделять? Делайте это, если хотите заработать больше денег. CWE - Common Weakness Enumeration. CVE - Common Vulnerabilities and Exposures. Теперь с помощью Valgrind вы ищете не утечку памяти, а отказ в обслуживании!
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
«Отладка приложений с помощью dtrace» — Станислав Краснояров, Redsteep e-Legion
Доклад о том, как можно использовать утилиту dtrace для отладки iOS приложений. Эта утилита может быть полезна при отладке сложных случаев, когда необходимо задать какие-либо правила для фильтрации вызываемых функций.
Обратная разработка бинарных форматов с помощью Kaitai StructPositive Hack Days
Ведущий: Михаил Якшин
В докладе будут рассмотрены современные подходы к обратной разработке бинарных файлов: с чего начинают, что хотят получить на выходе, какими инструментами традиционно пользуются. Будет продемонстрирован новый проект— Kaitai Struct, представляющий собой инструментарий для декларативного описания бинарных структур данных с выводом результата в виде готовых библиотек на языках C++, Java, JavaScript, Python и Ruby. Несколько практических примеров использования обратной разработки помогут участникам лучше ознакомиться с проблематикой.
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
Вы разрабатываете веб-приложения и используете хранимые процедуры? Вы пишите SELECT … WITH(NOLOCK)? Вы считаете, что ORMы снижают быстродействие приложений? Тогда этот доклад для вас!
В докладе будут развенчаны популярные мифы о применении библиотек Object-Relational Mapping (ORM) в ASP.NET при работе с Microsoft SQL Server. Также будут рассмотрены конкретные методики увеличения быстродействия работы с данными в веб-приложениях.
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
HighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2975.html
Все мы слышали про изменение кода ядра Linux на лету (kernel live patching). Но кто-нибудь проводит подобные фокусы в user space? Оказалось, что да. Мы тоже попробовали.
И получилось.
Длинная дорога технологии Userspace Live Patching в жизнь:
Что такое Live Patching
1) Изменение части логики процесса.
2) Сохранение состояния процесса.
3) Делать 1+2 БЕЗОПАСНО.
...
Valentin Simonov “Who cracks our games and how that is done”DevGAMM Conference
The lecture concerns spiteful hackers and the millions of those monkeys we have to resist every day. Are there any ways to protect ourselves of them and how. What should we pay prior attention to in online and offline games. The stories from real life and the real examples of cracking a few famous games.
Универсальный сигнатурный анализ кода на C#, Java, PHPИван Кочуркин
В данном докладе затронуты такие темы, как теория и проблемы парсинга, построение и обход абстрактных синтаксических деревьев (AST) и разработка предметно-ориентированного языка (DSL).
Рассматриваются такие проблемы парсинга, как разбор контекстно-зависимых языков, обработка ошибок и др. В качестве примера применения теории приведена грамматика PHP, разработанная для генератора парсеров ANTLR.
Далее рассматриваются структура унифицированного AST, методы его обхода и сопоставления с паттернами.
Завершающей частью презентации является описание DSL, разработанного с целью записи существующих и будущих паттернов. Также приведены примеры некоторых паттернов для лучшей усвояемости материала.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
Поиск уязвимостей с использованием статического анализа кодаcorehard_by
Поиск уязвимостей с использованием статического анализа кода, Андрей Карпов и Евгений Рыжков
В последнее время мы все слышим о новых и новых уязвимостях, обнаруженных в программном обеспечении. Уже стало очевидно, что писать код без уязвимостей человечество не может. Но могут ли современные инструменты разработки помочь обнаружить хотя бы некоторые ошибки? В докладе НЕ будет фраз типа «купите такой-то инструмент, чтобы не допускать уязвимостей в своем и чужом коде». На реальных примерах мы попробуем показать какие типы уязвимостей или по-другому программных дефектов могут быть найдены с помощью технологий анализа кода, а какие – пока нет. Ну и конечно как писать код так, чтобы снизить вероятность появления уязвимостей в своем коде.
Поиск уязвимостей с использованием статического анализа кодаAndrey Karpov
Уязвимости - это те же самые обыкновенные ошибки. Зачем их выделять? Делайте это, если хотите заработать больше денег. CWE - Common Weakness Enumeration. CVE - Common Vulnerabilities and Exposures. Теперь с помощью Valgrind вы ищете не утечку памяти, а отказ в обслуживании!
Многие разработчики не представляют, как дорого обходятся ошибки в программах. Причем я имею в виду не падения ракет и прочие катастрофы, а обыкновенное прикладное программное обеспечение. Хочется показать всю важность нахождения ошибок на самых ранних этапах. Одним из способов выявить ошибку как можно раньше является статический анализ кода. Поговорим мы не только об этом, но и о различных приемах при написании кода, которые позволят избежать множество типовых ошибок.
SAST и Application Security: как бороться с уязвимостями в кодеAndrey Karpov
Проблематика: Объёмы кода растут; Плотность ошибок растёт нелинейно; Все хотят качественный и БЕЗОПАСНЫЙ код; Старых методов контроля качества уже недостаточно.
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...Yandex
Рассказ об основных принципах, которых придерживается Viber в длительной разработке приложения с большой кодовой базой — если разработкой занимается распределённая команда. Мы обсудим используемые технологии, библиотеки, работу с кодом и многое другое.
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Yandex
Научно-технический семинар «DTrace: Проверочная работа для вашего кода» в петербургском офисе Яндекса, 29 ноября 2012 г.
Филипп Торчинский, эксперт по облачным технологиям, Семоникс.
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
1. Что такое BI. Зачем он нужен.
2. Что такое Qlik View / Sense
3. Способ интеграции. Как это работает.
4. Метрики, KPI, планирование ресурсов команд, ретроспектива релиза продукта, тренды.
5. Подключение внешних источников данных (Excel, БД СКУД, переговорные комнаты).
Approof — статический анализатор кода для проверки веб-приложений на наличие уязвимых компонентов. В своей работе анализатор основывается на правилах, хранящих сигнатуры искомых компонентов. В докладе рассматривается базовая структура правила для Approof и процесс автоматизации его создания.
Задумывались ли вы когда-нибудь о том, как устроены современные механизмы защиты приложений? Какая теория стоит за реализацией WAF и SAST? Каковы пределы их возможностей? Насколько их можно подвинуть за счет более широкого взгляда на проблематику безопасности приложений?
На мастер-классе будут рассмотрены основные методы и алгоритмы двух основополагающих технологий защиты приложений — межсетевого экранирования уровня приложения и статического анализа кода. На примерах конкретных инструментов с открытым исходным кодом, разработанных специально для этого мастер-класса, будут рассмотрены проблемы, возникающие на пути у разработчиков средств защиты приложений, и возможные пути их решения, а также даны ответы на все упомянутые вопросы.
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
Разработка наукоемкого программного обеспечения отличается тем, что нет ни четкой постановки задачи, ни понимания, что получится в результате. Однако даже этом надо программировать то, что надо, и как надо. Докладчик расскажет о том, как ее команда успешно разработала и вывела в промышленную эксплуатацию несколько наукоемких продуктов, пройдя непростой путь от эксперимента, результатом которого был прототип, до промышленных версий, которые успешно продаются как на российском, так и на зарубежном рынках. Этот путь был насыщен сложностями и качественными управленческими решениями, которыми поделится докладчик
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
Немногие разработчики закладывают безопасность в архитектуру приложения на этапе проектирования. Часто для этого нет ни денег, ни времени. Еще меньше — понимания моделей нарушителя и моделей угроз. Защита приложения выходит на передний план, когда уязвимости начинают стоить денег. К этому времени приложение уже работает и внесение существенных изменений в код становится нелегкой задачей.
К счастью, разработчики тоже люди, и в коде разных приложений можно встретить однотипные недостатки. В докладе речь пойдет об опасных ошибках, которые чаще всего допускают разработчики Android-приложений. Затрагиваются особенности ОС Android, приводятся примеры реальных приложений и уязвимостей в них, описываются способы устранения.
Разработка любого софта так или иначе базируется на требованиях. Полный перечень составляют бизнес-цели приложения, различные ограничения и ожидания по качеству (их еще называют NFR). Требования к безопасности ПО относятся к последнему пункту. В ходе доклада будут рассматриваться появление этих требований, управление ими и выбор наиболее важных.
Отдельно будут освещены принципы построения архитектуры приложения, при наличии таких требований и без, и продемонстрировано, как современные (и хорошо известные) подходы к проектированию приложения помогают лучше строить архитектуру приложения для минимизации ландшафта угроз.
Доклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
1. Ловим шеллкоды под ARM
Докладчики :
Гайворонская Светлана @SadieSv
Петров Иван Сергеевич @_IvanPetrov_
2. Актуальность
• Значительный рост устройств на базе процессоров ARM:
количество устройств на базе ARM превышает
количество PC в несколько раз.
• Большая установочная база уязвимых программ и
преемственность кода
• Ошибки работы с памятью все еще актуальны
• Уязвимости в программном обеспечении этих устройств
могут принести огромный ущерб, как пользователям, так
и производителям
@SadieSv @_IvanPetrov_
3. Решаема ли эта задача?
Activator
• NOP
• GetPC
Decryptor
Payload
Return address zone
• Ограничения по структуре
• Ограничения по размеру
@SadieSv @_IvanPetrov_
4. Может все не так плохо?
• Stack canaries: вычисление псевдо-радномного
значения и сохранения его на стек;
• SafeSEH: вместо защиты стека, используются
техники защиты обработчиков исключений;
• DEP: стек или часть стека становятся
неисполнимыми;
• ASLR: рандомизация начала кода, стека, кучи в
адресном пространстве исполнимого
процесса.
BYPASSED
@SadieSv @_IvanPetrov_
5. Так что же с ARM-ом?
• Шеллкоды уже есть
• Методов обнаружения
«поумнее» сигнатур…
6. Анализ применимости
существующих методов
обнаружения шеллкодов
Для анализа применимости
существующих методов
детектирования шеллкодов х86
к платформе ARM нужно выделить
основные отличия этих архитектур.
@SadieSv @_IvanPetrov_
7. Основные отличия архитектур
ARM от x86:
• Фиксированный размер команд;
• Наличие 2-х режимов работы процессора (32bit и 16bit) и
возможность динамического переключения между ними;
• Возможность условного выполнения инструкций
(в зависимости от значения регистра флагов);
• Возможность прямого обращения к счетчику инструкций;
• load-store архитектура (мы не можем из арифметических
инструкций обращаться напрямую в память);
• При вызове функций аргументы помещаются в регистры.
@SadieSv @_IvanPetrov_
8. i f ( e r r != 0)
p r i n t f ( " Er r o r c o d e = %i n " , e r r ) ;
e l s e
p r i n t f ( "OK! n " ) ;
CMP r1 , #0
BEQ . L4
LDR r0 , < string_1_address >
BL printf
B . L8
. L4 :
LDR r0 , < string_2_address >
BL printf
. L8 :
CMP r1 , #0
LDRNE r0 , < string_1_address >
LDREQ r0 , < string_2_address >
BL printf
Без условного
выполнения
С условным
выполнением
Условное выполнение
@SadieSv @_IvanPetrov_
11. Причины затруднения анализа
Появление в платформе ARM новых
возможностей обфускации
программ благодаря:
1. Условному выполнению инструкций;
2. Дополнительному режиму
процессора.
@SadieSv @_IvanPetrov_
12. Статические признаки
• Корректное дизассемблирование данных в цепочку, содержащую
не менее K инструкций;
• Наличие команды смены режима процессора (BX Rm) на пересечении
цепочек команд из разных режимов процессора;
• Наличие Get-UsePC кода;
• Число паттернов ( инициализация аргументов, вызов функции )
превышает предопределенное пороговое значение;
• Системному вызову предшествует инициализация аргументов вызова;
• Наличие цикла записи/загрузки из памяти;
• Адрес возврата находится в определенном диапазоне значений;
• Последняя инструкция в цепочке заканчивается командой перехода
(BL, BLX), либо системным вызовом(svc);
• Операнды самомодифицирующегося кода и кода с косвенными
переходами должны быть инициализированы.
13. Корректное дизассемблирование данных в цепочку,
содержащую не менее K инструкций
Не шеллкод
Не шеллкод
Не шеллкод
Не шеллкод
Шеллкод!
@SadieSv @_IvanPetrov_
14. Наличие команды смены режима процессора (BX Rm) на
пересечении цепочек команд из разных режимов
процессора
Переключение режима
Шеллкод в режиме
Thumb
Данные для шеллкода
Регистр PCПереход с переключением Код режима
Thumb
@SadieSv @_IvanPetrov_
15. Наличие Get-UsePC кода
Регистр PC
Зашифрованный шеллкод
Получение PC
Использование PC
Получение PC в регистр LR (r14)
Использование PC
@SadieSv @_IvanPetrov_
16. Инициализация аргументов вызовов функций и
системных вызовов
Аргументы вызова
Номер вызова
Системный вызов
_socket #281
_connect #283
@SadieSv @_IvanPetrov_
17. Наличие цикла записи/загрузки из памяти
Зашифрованный шеллкод
Чтение из памяти
Загрузка в память
Счетчик цикла
Адрес зашифрованной
полезной нагрузки
Основной цикл
@SadieSv @_IvanPetrov_
18. Адрес возврата находится в определенном диапазоне
значений
Адрес
возврата
Уязвимый
буфер
Стек
Полезная
нагрузка
Шеллкод
0xbeffedbc
0xbeffedbc
0xbeffedbc
0xbeffedbc
0xbeffedbc
0xbeffedbc
Зона адресов
возврата
@SadieSv @_IvanPetrov_
19. Динамические признаки
• Количество чтений полезной нагрузки превышает
определенный порог;
• Количество уникальных записей в память
превышает определенный порог;
• Поток управления хотя бы один раз передается из
адресного пространства входного буфера на адрес,
по которому ранее осуществлялась запись;
• Количество исполненных wx-инструкций
превышает определенный порог;
• В зависимости от определенных значений флагов
выполняется набор инструкций, удовлетворяющих
вредоносной сигнатуре.
@SadieSv @_IvanPetrov_
20. Запись и чтение из памяти
Декриптор Зашифрованная полезная нагрузка
N Уникальных чтений и записей
@SadieSv @_IvanPetrov_
22. Зависимость сигнатуры от флагов
Z = 0 & C = 0 Z = 1 & C = 0
ADDNES r0, r1 ADDNES r0, r1
Блок AL
(любой флаг)
Блок AL
(любой флаг)
Блок CS
( С == 1)
Z = 0
С = 1
Блок CS
( С == 1)
Блок EQ
( Z == 0)
Блок EQ
( Z == 0)
ADDCCS r3, r4 ADDCCS r3, r4
Z = 1
С = 0
Если был
выполнен блок
EQ, то Z = 1,
иначе Z = 0
Блок EQ
( Z == 0)
Блок EQ
( Z == 0)
@SadieSv @_IvanPetrov_
26. Апробация
• Шеллкодов;
• Легитимных исполняемых файлов;
• Произвольных данных;
• Мультимедиа данных.
Апробация детекторов проводится на тестовой
выборке, состоящей из:
@SadieSv @_IvanPetrov_
27. Результат исследований
• Выделены признаки шеллкодов для
платформы ARM
• Реализованы детекторы, использующие
признаки шеллкодов ARM
• Детекторы объединены в гибридный
классификатор
• Классификатор реализован как расширение
к библиотеке Demorpheus
@SadieSv @_IvanPetrov_