SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Бинарный анализ с декомпиляцией и LLVM
Ленар Сафин, Ярослав Александров
к.ф.-м.н. Катерина Трошина, к.ф.-м.н. Александр Чернов
PHDays V, 26 мая 2015
Откуда мы пришли? Кто мы?
Куда мы идем?
● Анализ программ
● Декомпиляция
– IA32/AMD64
– ARM/AArch64
– Custom (VMs, less-known archs...)
● Деобфускация
● Статический анализ
– Поиск по шаблонам
– Taint analysis (dflow)
● Расширяемая база знаний
● Python API
Анализ программ: идеи
Анализ программ: архитектура
Анализ программ: архитектура
● Большое количество качественных фронтендов
● Отлично подходит для представления C-family
программ
● Реализация часто используемых алгоритмов из
коробки + куча сторонних библиотек
– Dominators, loops etc...
– Dataflow
– AA, TBAA
● Либеральная лицензия (University of
Illinois/NCSA – MIT/3-BSD based)
LLVM aka Low Level Virtual Machine
Анализ программ: архитектура
● Больше информации об исходной программе
● Программные компоненты без исходного кода
– Библиотеки
– Исполняемые файлы
● Legacy компоненты без исходного кода
● Другое
● Потому что мы можем
А зачем декомпиляция?
Анализ программ: архитектура
● Утеряно большое количество информации
– Подпрограммы
– Переменные
– Классы и типы данных
● ABI больше, чем пальцев на руках
● Файл может быть упакован
Декомпиляция: проблемы
● Полностью автоматический
● Качественный вывод
● Восстановление высокоуровневой семантики программы
– Подпрограммы, CFG
– Переменные и типы данных
● Поддержка высокоуровневых конструкций C++
– vftables, RTTI
– EH
● Расширяемая база знаний
● Встроенный распаковщик
Декомпиляция: идеи
● Восстановление CFG программы
– Анализ по прологам
– Сигнатурный поиск (like FLIRT)
– vftables, SEH handlers...
● Анализ потоков данных
Декомпиляция: how it works
●
Восстановление переменных
– Временные (стек, регистры)
– Локальные (стек, регистры)
– Глобальные
●
Восстановление типов данных
– Базовые типы (int, float, ptrs...)
– Структурные типы (массивы, структуры)
Декомпиляция: how it works
● Генерация LLVM
● Упрощение IR
– DCE, memprop
● Распознавание встраиваемых функций
● Распознавание регионов CFG (циклы, условия...)
Декомпиляция: how it works
Пример: strbuf
Пример: strbuf
Пример: strbuf
Пример: strbuf
● Поддерживаемые архитектуры
– IA32 (AMD64 in work)
● Поддерживаемые образы программ
– PE/COFF
– ELF
– Mach-O
● База знаний
– LibC
– Stdlib
– Win32 API
– POSIX API
– Linux API
Introducing posx86
● Статический анализ и интерпретация
● Бинарная и не только трансляция
– Бэкэнды: ARM, MIPS, JavaScript
– Платформы: Win, UNIX
– Just for fun
● Классическая декомпиляция в псевдокод
● Графическое отображение CFG программы
Возможные применения
● Частичная трансляция исходного образа
● Частичный анализ программы
● База сигнатур уязвимых программных компонент
● Интерактивное взаимодействие
Разделяй и властвуй
Спасибо за внимание!
smartdec.ru
decompilation.info
github.com/smartdec/smartdec

Mais conteúdo relacionado

Destaque

Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...
Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...
Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...Positive Hack Days
 
защита от перехЗащита от перехвата GSM сигналавата Gsm сигнала
защита от перехЗащита от перехвата GSM сигналавата Gsm сигналазащита от перехЗащита от перехвата GSM сигналавата Gsm сигнала
защита от перехЗащита от перехвата GSM сигналавата Gsm сигналаPositive Hack Days
 
Как выбрать Web Application Firewall
Как выбрать Web Application FirewallКак выбрать Web Application Firewall
Как выбрать Web Application FirewallPositive Hack Days
 
Light And Dark Side Of Code Instrumentation
Light And Dark Side Of Code InstrumentationLight And Dark Side Of Code Instrumentation
Light And Dark Side Of Code InstrumentationPositive Hack Days
 
Вирусы есть? А если найду?
Вирусы есть? А если найду?Вирусы есть? А если найду?
Вирусы есть? А если найду?Positive Hack Days
 
Использование KASan для автономного гипервизора
Использование KASan для автономного гипервизораИспользование KASan для автономного гипервизора
Использование KASan для автономного гипервизораPositive Hack Days
 
Псевдобезопасность NFC-сервисов
Псевдобезопасность NFC-сервисовПсевдобезопасность NFC-сервисов
Псевдобезопасность NFC-сервисовPositive Hack Days
 
john-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Later
john-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Laterjohn-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Later
john-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types LaterPositive Hack Days
 
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Positive Hack Days
 
Строим ханипот и выявляем DDoS-атаки
Строим ханипот и выявляем DDoS-атакиСтроим ханипот и выявляем DDoS-атаки
Строим ханипот и выявляем DDoS-атакиPositive Hack Days
 
Метод машинного обучения для распознавания сгенерированных доменных имен
Метод машинного обучения для распознавания сгенерированных доменных именМетод машинного обучения для распознавания сгенерированных доменных имен
Метод машинного обучения для распознавания сгенерированных доменных именPositive Hack Days
 
Статический анализ кода в контексте SSDL
Статический анализ кода в контексте SSDLСтатический анализ кода в контексте SSDL
Статический анализ кода в контексте SSDLPositive Hack Days
 
Город никогда не спит / The City Never Sleeps
Город никогда не спит / The City Never SleepsГород никогда не спит / The City Never Sleeps
Город никогда не спит / The City Never SleepsPositive Hack Days
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первымPositive Hack Days
 
Угадываем пароль за минуту
Угадываем пароль за минутуУгадываем пароль за минуту
Угадываем пароль за минутуPositive Hack Days
 
Как начать бизнес в ИБ
Как начать бизнес в ИБКак начать бизнес в ИБ
Как начать бизнес в ИБPositive Hack Days
 
Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!Positive Hack Days
 
Масштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google ChromeМасштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google ChromePositive Hack Days
 

Destaque (19)

Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...
Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...
Positive Hack Days. Gurzov. VOIP - Reduce Your Expenses, Increase Your Income...
 
защита от перехЗащита от перехвата GSM сигналавата Gsm сигнала
защита от перехЗащита от перехвата GSM сигналавата Gsm сигналазащита от перехЗащита от перехвата GSM сигналавата Gsm сигнала
защита от перехЗащита от перехвата GSM сигналавата Gsm сигнала
 
Как выбрать Web Application Firewall
Как выбрать Web Application FirewallКак выбрать Web Application Firewall
Как выбрать Web Application Firewall
 
Light And Dark Side Of Code Instrumentation
Light And Dark Side Of Code InstrumentationLight And Dark Side Of Code Instrumentation
Light And Dark Side Of Code Instrumentation
 
Вирусы есть? А если найду?
Вирусы есть? А если найду?Вирусы есть? А если найду?
Вирусы есть? А если найду?
 
Использование KASan для автономного гипервизора
Использование KASan для автономного гипервизораИспользование KASan для автономного гипервизора
Использование KASan для автономного гипервизора
 
Псевдобезопасность NFC-сервисов
Псевдобезопасность NFC-сервисовПсевдобезопасность NFC-сервисов
Псевдобезопасность NFC-сервисов
 
john-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Later
john-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Laterjohn-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Later
john-devkit: 100 типов хешей спустя / john-devkit: 100 Hash Types Later
 
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
 
Строим ханипот и выявляем DDoS-атаки
Строим ханипот и выявляем DDoS-атакиСтроим ханипот и выявляем DDoS-атаки
Строим ханипот и выявляем DDoS-атаки
 
Метод машинного обучения для распознавания сгенерированных доменных имен
Метод машинного обучения для распознавания сгенерированных доменных именМетод машинного обучения для распознавания сгенерированных доменных имен
Метод машинного обучения для распознавания сгенерированных доменных имен
 
Статический анализ кода в контексте SSDL
Статический анализ кода в контексте SSDLСтатический анализ кода в контексте SSDL
Статический анализ кода в контексте SSDL
 
Город никогда не спит / The City Never Sleeps
Город никогда не спит / The City Never SleepsГород никогда не спит / The City Never Sleeps
Город никогда не спит / The City Never Sleeps
 
Целевые атаки: прицелься первым
Целевые атаки: прицелься первымЦелевые атаки: прицелься первым
Целевые атаки: прицелься первым
 
Угадываем пароль за минуту
Угадываем пароль за минутуУгадываем пароль за минуту
Угадываем пароль за минуту
 
Как начать бизнес в ИБ
Как начать бизнес в ИБКак начать бизнес в ИБ
Как начать бизнес в ИБ
 
Выживший
ВыжившийВыживший
Выживший
 
Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!
 
Масштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google ChromeМасштабируемый и эффективный фаззинг Google Chrome
Масштабируемый и эффективный фаззинг Google Chrome
 

Semelhante a Бинарный анализ с декомпиляцией и LLVM

Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутриHappyDev-lite
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)Sergey Skvortsov
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияAndrew Babiy
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Yandex
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковSergey Platonov
 
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019corehard_by
 
BlackBox testing
BlackBox testingBlackBox testing
BlackBox testingbeched
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Перспективные исследования и технологии
Перспективные исследования и технологииПерспективные исследования и технологии
Перспективные исследования и технологииAncud Ltd.
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Denis Efremov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...Roman Oliynykov
 

Semelhante a Бинарный анализ с декомпиляцией и LLVM (20)

Tarantool_qs
 Tarantool_qs Tarantool_qs
Tarantool_qs
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
2017-03-26 01 Анна Тарасенко. Как устроен Web изнутри
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора Вячеслав Бирюков - Linux инструменты системного администратора
Вячеслав Бирюков - Linux инструменты системного администратора
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
 
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
Раскручиваем стек. Иван Пономарев. CoreHard Spring 2019
 
BlackBox testing
BlackBox testingBlackBox testing
BlackBox testing
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Перспективные исследования и технологии
Перспективные исследования и технологииПерспективные исследования и технологии
Перспективные исследования и технологии
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...Buffer overflow and other software vulnerabilities: theory and practice of pr...
Buffer overflow and other software vulnerabilities: theory and practice of pr...
 

Mais de Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CorePositive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опытPositive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterPositive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиPositive Hack Days
 

Mais de Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Бинарный анализ с декомпиляцией и LLVM

  • 1. Бинарный анализ с декомпиляцией и LLVM Ленар Сафин, Ярослав Александров к.ф.-м.н. Катерина Трошина, к.ф.-м.н. Александр Чернов PHDays V, 26 мая 2015
  • 2. Откуда мы пришли? Кто мы? Куда мы идем? ● Анализ программ ● Декомпиляция – IA32/AMD64 – ARM/AArch64 – Custom (VMs, less-known archs...) ● Деобфускация
  • 3. ● Статический анализ – Поиск по шаблонам – Taint analysis (dflow) ● Расширяемая база знаний ● Python API Анализ программ: идеи
  • 6. ● Большое количество качественных фронтендов ● Отлично подходит для представления C-family программ ● Реализация часто используемых алгоритмов из коробки + куча сторонних библиотек – Dominators, loops etc... – Dataflow – AA, TBAA ● Либеральная лицензия (University of Illinois/NCSA – MIT/3-BSD based) LLVM aka Low Level Virtual Machine
  • 8. ● Больше информации об исходной программе ● Программные компоненты без исходного кода – Библиотеки – Исполняемые файлы ● Legacy компоненты без исходного кода ● Другое ● Потому что мы можем А зачем декомпиляция?
  • 10. ● Утеряно большое количество информации – Подпрограммы – Переменные – Классы и типы данных ● ABI больше, чем пальцев на руках ● Файл может быть упакован Декомпиляция: проблемы
  • 11. ● Полностью автоматический ● Качественный вывод ● Восстановление высокоуровневой семантики программы – Подпрограммы, CFG – Переменные и типы данных ● Поддержка высокоуровневых конструкций C++ – vftables, RTTI – EH ● Расширяемая база знаний ● Встроенный распаковщик Декомпиляция: идеи
  • 12. ● Восстановление CFG программы – Анализ по прологам – Сигнатурный поиск (like FLIRT) – vftables, SEH handlers... ● Анализ потоков данных Декомпиляция: how it works
  • 13. ● Восстановление переменных – Временные (стек, регистры) – Локальные (стек, регистры) – Глобальные ● Восстановление типов данных – Базовые типы (int, float, ptrs...) – Структурные типы (массивы, структуры) Декомпиляция: how it works
  • 14. ● Генерация LLVM ● Упрощение IR – DCE, memprop ● Распознавание встраиваемых функций ● Распознавание регионов CFG (циклы, условия...) Декомпиляция: how it works
  • 19. ● Поддерживаемые архитектуры – IA32 (AMD64 in work) ● Поддерживаемые образы программ – PE/COFF – ELF – Mach-O ● База знаний – LibC – Stdlib – Win32 API – POSIX API – Linux API Introducing posx86
  • 20. ● Статический анализ и интерпретация ● Бинарная и не только трансляция – Бэкэнды: ARM, MIPS, JavaScript – Платформы: Win, UNIX – Just for fun ● Классическая декомпиляция в псевдокод ● Графическое отображение CFG программы Возможные применения
  • 21. ● Частичная трансляция исходного образа ● Частичный анализ программы ● База сигнатур уязвимых программных компонент ● Интерактивное взаимодействие Разделяй и властвуй