Dynamic Binary Instrumentation в ИБ
Сложность программного обеспечения растет – программы становятся более динамическими, и их поведение возможно оценить только в процессе выполнения. Производить оценку безопасности (поиск уязвимостей, недокументированных возможностей и т.д.) таких приложений значительно сложнее. Использовать только статические подходы анализа становится невозможным, так как из-за динамически генерируемого кода мы даже не можем гарантировать полное покрытие кода при анализе. На помощь приходят динамические методы анализа.
Есть такая замечательная технология, как динамическая бинарная инструментация (Dynamic Binary Instrumentation, DBI), которая заключается во вставке в бинарный исполняющийся код анализирующих (в общем случае) процедур. Основная прелесть данного подхода заключается в том, что нет необходимости в исходном коде анализируемого приложения – работа происходит непосредственно с бинарным файлом.
Инструментацией называют процесс модификации исследуемой программы с целью ее анализа. За вставку дополнительного кода обычно отвечают инструментирующие процедуры, которые вызываются только раз при возникновении необходимого события и модифицируют целевую программу. Добавленный код представляет собой анализирующие процедуры. Эти процедуры отвечают за проведение необходимого анализа, модификации и мониторинга исследуемой (целевой) программы и вызываются каждый раз при достижении определенного участка кода или возникновения в программе определенного события (создание процесса, возникновения исключения и т.д.). Инструментация бинарного приложения может быть выполнена на разных уровнях гранулярности программы:
Урок №42. Что такое децибел?
• инструкции;
• базового блока;
• трассы;
• процедуры;
• секции бинарного файла;
• бинарного образа.
В итоге для создания таких инструментов, работающих во время выполнения программы, были разработаны специальные фреймворки для динамической бинарной инструментации. Инструменты же, которые можно создать с их помощью, называют динамическими бинарными анализаторами (DBA, Dynamic Binary Analysis).
Можно выделить четыре самых популярных фреймворка: PIN, DynamoRIO, DynInst и Valgrind. Подробнее о каждой библиотеке можно узнать из моей презентации “DBI:Intro” с конференции ZeroNights.
В данной статье хотелось бы остановиться на библиотеке PIN от Intel, которую мы активно используем в рамках проектов нашего исследовательского центра DSecRG, и рассмотреть, как ее можно использовать в целях решения задач, возникающих при работе с бинарными приложениями без исходных кодов.
Данная библиотека активно развивается и поддерживается. Вокруг нее сложилось достаточно большое сообщество – pinheads, где можно получить ответ на любой интересующий вас вопрос по поводу PIN.
Активно DBI используют такие крутые исследовательские центры по безопасности, как Immunity, Zynamics, Rapid7, SourceFire VRT, Coseinc и т.д. Знание DBI уже сейчас встречается как одно из требований к специалистам по оценке безопасности ПО и разработке эксплойтов. Вот пример требований из вакансии на должность Exploit Engineer в команду разработчиков Metasploit:
Теория о Антеннах, понятие dbi и db, как обманывают продавцы. 2 серия
В качестве примера работы с PIN рассмотрим реализацию Shadow Stack, суть которого заключается в создании собственного стека адресов возвратов программы. Благодаря этому можно идентифицировать переполнения буфера в стеке, когда адрес возврата перезаписывается. Алгоритм такого инструмента очень прост: перед вызовом каждой функции запоминаем адрес возврата в Shadow Stack, а перед выходом из функции сравниваем адрес возврата со значением, сохраненным в Shadow Stack.
#include #include «pin.H» #include typedef struct < ADDRINT address; ADDRINT value; >pAddr; // Shadow Stack stack protect; FILE * logfile; //————————————————————————————— VOID Fini(INT32 code, VOID *v) < fclose(logfile); >//————————————————————————————— VOID RtnEntry(ADDRINT esp, ADDRINT addr) < pAddr tmp; tmp.address = esp; tmp.value = *((ADDRINT *)esp); // Заносим адрес возврата наверх Shadow Stack protect.push(tmp); >//————————————————————————————— VOID RtnExit(ADDRINT esp, ADDRINT addr) < // Обработка пустого списка Shadow Stack if (protect.empty()) < fprintf(logfile, «WARNING! protection list emptyn»); return; >pAddr orig = protect.top(); ADDRINT cur_val = (*((ADDRINT *)orig.address)); // Сравниваем адрес возврата из стека и Shadow Stack if (orig.value != cur_val) < fprintf(logfile, «Overwrite at: %x old value: %x, new value: %xn», orig.address, orig.value, cur_val ); >// Выносим адрес возврата с вершины Shadow Stack protect.pop(); > //————————————————————————————— // Вызывается для каждой процедуры VOID Routine(RTN rtn, VOID *v) < RTN_Open(rtn); SEC sec = RTN_Sec(rtn); IMG img = SEC_Img(sec); if ( IMG_IsMainExecutable(img) (SEC_Name(sec) == «.text») ) < // Функция, выполняющаяся до вызова процедуры (RtnEntry) RTN_InsertCall(rtn, IPOINT_BEFORE,(AFUNPTR)RtnEntry, IARG_REG_VALUE, REG_ESP, IARG_INST_PTR, IARG_END); // Функция, выполняющаяся после вызова процедуры (RtnExit) RTN_InsertCall(rtn, IPOINT_AFTER ,(AFUNPTR)RtnExit, IARG_REG_VALUE, REG_ESP, IARG_INST_PTR, IARG_END); >RTN_Close(rtn); > //————————————————————————————— INT32 Usage() < PIN_ERROR( «This Pintool logs function return addresses in main module and reports modificationsn» + KNOB_BASE::StringKnobSummary() + «n»); return -1; >//————————————————————————————— int main(int argc, char *argv[]) < // Инициализация обработки символов PIN_InitSymbols(); // Инициализация библиотеки PIN if (PIN_Init(argc, argv)) < return Usage(); >// Открываем лог-файл logfile = fopen(«protection.out», «w»); // Регистрируем функцию, которая вызывается для инструментации процедур RTN_AddInstrumentFunction(Routine, 0); // Регистрируем завершающую функцию, которая вызывается при завершении работы приложения PIN_AddFiniFunction(Fini, 0); // Запуск PIN_StartProgram(); return 0; >
Графически работу данного инструмента можно представить так:
Справедливо можно заметить, что данный инструмент сработает только при перезаписи адреса возврата и ничего не заметит при разрушении данных, находящихся перед адресом возврата. Чтобы заметить разрушение данных внутри функции, необходимо скомпилировать программу с флагом из семейства /RTC, но тут, во-первых, надо иметь исходный код исследуемого приложения, и во-вторых, как правило, программы выходят в релиз без него, так как он сильно сказывается на производительности программы.
Также можно сказать, что похожую задачу выполняет флаг /GS, добавляющий специальное значение cookie перед адресом возврата и проверяющий это значение перед выходом из функции. Но данный флаг применяется не во всех программах и порой просто не способен защитить от простейшей эксплуатации переполнения буфера в стеке.
Например, в функции func_bof() вызывается небезопасная функция strcpy(), входные параметры которой никак не фильтруются, что приводит к переполнению буфера в стеке. Как следствие, перезаписываются параметры функции (переменная b), cookie (если они есть), адрес возврата. Но проверка cookie сразу не сработает, так как программа еще не дошла до конца функции func_bof(), в результате чего перезаписанная переменная b попадает в функцию critical_func(), где может привести, например, к integer overflow или негативно повлиять на другие данные, которые пойдут дальше, в результате чего программа упадет далеко от реального места проблемы. С помощью простейшей модификации вышеприведенного кода можно проверять адрес возврата функции и при вызове дочерних функций (оставим это как домашнее задание), что позволит идентифицировать данную проблему уже перед вызовом critical_func().
И напоследок приведу список интересных публичных проектов по безопасности, реализованных с помощью PIN:
— Shellcode dumper – дампер стандартных шеллкодов, принцип работы которых основывается на передаче управления на stack или heap.
— Moflow-mitigations – прототип, идентифицирующий ROP-шеллкоды и JIT-шеллкоды.
— Code-coverage-analysis-tools – анализатор покрытия кода.
— RunTracer – набор инструментов для отслеживания потока управления программы.
— Kerckhoffs – инструмент для полуавтоматического детектирования криптографических примитивов в программах.
— VERA – инструмент для визуализации работы программы.
— Tripoux – анализатор упаковщиков зловредов.
— Privacy Scope – инструмент для обнаружения утечек критичной информации.
— Tartetatintools – набор инструментов для анализа вредоносного кода.
Также есть очень интересные реализации интеграции результатов работы PIN-инструментов с дизассемблером IDA Pro, который играет роль визуализатора:
— DiffCov – набор инструментов для записи выполнившихся базовых блоков программы.
— runtime-tracer – создает трейс выполнения программы со значениями регистров и обрабатываемыми участками памяти.
Это далеко не полный список проектов по безопасности, реализованных с помощью PIN, но, мне кажется, этого будет достаточно, чтобы начать делать свои pintool-инструменты.
Также всем заинтересовавшимся DBI/PIN в целях информационной безопасности настоятельно советую обратить внимание на workshop “Binary instrumentation for security professionals” (slides, examples) от моего хорошего знакомого Gal Diskin из компании Intel. К данному курсу посчастливилось приложить руку и мне. Он читался на таких хакерских конференциях, как BlackHat, DEFCON и HackLu.
Источник: habr.com
Moolex
Программа DBI облегчает работу с базами данных 1С, когда их много. Позволяет запускать 1С без постоянного ввода логина и пароля.
Программа DBI не требует предварительной установки, не хранит информацию в реестре. Каталог с программой можно носить с собой на флешке, и работать с программой на любом компьютере с Windows. Все данные пользователя находятся в папке Data (и только в ней) в каталоге с программой. Программа DBI позволяет хранить заметки к базам в удобном для Вас представлении.
Вы сами выстраиваете структуру ваших данных. Это может быть и дерево и список с колонками, и просто текст. Можно поставить пароль с таймаутом на любой объект в хранилище, или на все хранилище сразу.
Выгрузка/загрузка
Программа DBI позволяет быстро выгрузить/загрузить базы 1С.
Изменение заголовка запущенных 1С
Программа DBI меняет заголовок запущенных 1С, в начало заголовка ставится имя базы данных, что облегчает одновременную работу с несколькими базами.
Для включения данной возможности, активируйте скрипт ‘Подмена заголовка 1С’.
Отслеживание завершения обработки в 1С
Программа DBI с помощью скрипта ‘Отслеживание завершения обработки в 1С’ помогает пользователю узнать о завершении той или иной обработки в запущенных 1С.
Загрузка списка баз из StartPlus
Программа DBI позволяет загрузить список баз из StartPlus.
Состав программы
DBI.exe — выполняемый файл самой программы DBI;
zlib1.dll — библиотека для работы с файлами в формате Compound Document;
Resources7za.exe — консольная программа для работы с zip-архивами;
Resources7-zip.chm — файл помощи для программы 7za.exe;
ResourcesFTG.ini и DBI.ini — файлы настроек при первом запуске программы DBI;
ResourcesDefy-m.exe — вспомогательная программа (как отдельный процесс) для работы в фоне, а так же для обновления самой программы DBI.
ResourcesFTT.dat — файл ресурсов для программы DBI;
ResourcesHelper.ftd — файл помощи по языку Defy;
ResourcesModules.ini и Modules-DBI.ini — файлы с модулями при первом запуске программы DBI;
ResourcesSciLexer.dll — библиотека для работы с разноцветным текстом;
ResourcesScripts-DBI.ini — файл с предопределенными скриптами на языке Defy при первом запуске программы DBI;
ResourcesServiceModules.ini и ServiceModules-DBI.ini — файлы со служебными модулями при первом запуске программы DBI.
Источник: www.moolex.ru
DBI-Builder
DBI-Builder При выборе приложений корпоративной сферы, гибкость является одним из решающих факторов в пользу того или иного приложения. Возникла необходимость в эффективном средстве разработки приложений, которое не ограничивало бы возможности конечных пользователей по модификации приложений и позволяло вносить изменения в приложения без участия разработчика и перекомпиляции программы.
Конечный пользователь, получает в одном комплекте и исходный код и средство его модификации. Особенности системы: Возможность внесения изменения в логику конфигурации без перекомпиляции. Интерфейс среды выполнен в стиле Delphi 7. Функциональность дизайнера аналогична функциональности Delphi.
Дизайнер построен на собственных компонентах VTDesigner, в нем поддерживается работа с формами и модулями данных, с визуальными и не визуальными компонентами. Имеется дизайнер форм, инспектор объектов, редактор кода с подсветкой синтаксиса и помощником набора кода. Встроенные объектно — ориентированные языки Object pascal и Суржи. Конфигурация сохраняется в файл в формате XML.
Версии
Если у вас есть информация о доступных версиях программы, вы можете отправить ее нам.
Источник: freesoft.ru
Платформа 2MCA DBI – независимость от баз данных и среды исполнения
Компания ЦФТ переходит к заключительному этапу проекта по переходу дистрибутива ЦФТ-Банк на новую Платформу 2MCA DBI, которая обеспечит банкам возможность выбора СУБД.
Предпосылки для создания Платформы 2MCA DBI
1. Требование регулятора в части импортозамещения используемого банками ПО на российские аналоги
Банки, как субъекты критической информационной инфраструктуры (КИИ), должны использовать ПО, зарегистрированное в реестре отечественного ПО, или open-source software (ПО с открытым кодом)
2. Вопрос снижения для банков стоимости владения ПО, экономия на лицензионных платежах
Поиск СУБД, альтернативных Oracle
ЦФТ – одна из немногих российских компаний в сегменте разработчиков банковских систем, которая уже несколько лет ведёт работы по тестированию и миграции своих прикладных систем на OpenSource-платформах, в том числе внесенных в реестр Отечественного ПО. Одна из таких платформ – СУБД PostgresSQL.
Почему Postgre?
Ситуация с ПО в банках
Для автоматизации Банка, зачастую, используется полнофункциональный, как правило монолитный, развиваемый много лет дистрибутив АБС. На примере ЦФТ-Банк на текущий мемент – это:
- 8 тыс. таблиц
- 50 тыс. методов
- 13 тыс. представлений
- 12 млн строк кода
- тысячи строк локального кода
Миграция большой системы из одной СУБД в другую СУБД – очень сложная задача. Трудозатраты на выполнение такой миграции соизмеримы с созданием её с нуля. Что практически невозможно без потери функциональности на первоначальных этапах.
Преимущество архитектуры информационных систем ЦФТ
- СУБД
- Технологическое ядро (ЦФТ-Платформа развития)
- Прикладной код
1. Доработки Технологического ядра (ТЯ) таким образом, чтобы ТЯ позволило проигрывать один и тот же прикладной код в разных СУБД – обогатить его свойствами DBI (Database Independent).
Архитектура DBI
- определение перечня ограничений и выработка рекомендаций
- адаптация дистрибутивов кода
- адаптация локального кода в банках
- ЦФТ-Банк на СУБД Oracle и ЦФТ-Платформа развития
- ЦФТ-Банк на СУБД Oracle и Платформе 2MCA DBI
- ЦФТ-Банк на СУБД PostgreSql и Платформе 2MCA DBI
- быть готовым соответствовать требованиям регуляторов
- сделать процесс миграции бизнес-кода и миграцию данных с Oracle на PostgreSQL постепенным и бесшовным
- минимизировать затраты на модификацию локальных объектов с учетом требований архитектуры DBI
Источник: www.cft.ru
Расширение файла DBI
Полное имя формата файлов, которые используют расширение DBI: FIFA World Cup Game Data Comin Fe. Спецификация FIFA World Cup Game Data Comin Fe была создана Electronic Arts, Inc.. Формат файла DBI совместим с программным обеспечением, которое может быть установлено на системной платформе Windows. Файлы с расширением DBI классифицируются как Файлы игр файлы.
Подмножество Файлы игр содержит #NUMEXTENSIONS # различных форматов файлов. Самым популярным программным обеспечением, поддерживающим DBI файлы, является FIFA World Cup. Программное обеспечение FIFA World Cup было разработано Electronic Arts, Inc., и на его официальном веб-сайте вы можете найти дополнительную информацию о файлах DBI или программном обеспечении FIFA World Cup.
Программы, которые поддерживают DBI расширение файла
Следующий список функций DBI -совместимых программ. Файлы с расширением DBI, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл DBI
Windows
Как открыть файл DBI?
Причин, по которым у вас возникают проблемы с открытием файлов DBI в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением DBI, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Установите FIFA World Cup программное обеспечение
Наиболее распространенной причиной таких проблем является отсутствие соответствующих приложений, поддерживающих файлы DBI, установленные в системе. Решение этой проблемы очень простое. Загрузите FIFA World Cup и установите его на свое устройство. Полный список программ, сгруппированных по операционным системам, можно найти выше. Самый безопасный способ загрузки FIFA World Cup установлен — для этого зайдите на сайт разработчика (Electronic Arts, Inc.) и загрузите программное обеспечение, используя предоставленные ссылки.
Шаг 2. Проверьте версию FIFA World Cup и обновите при необходимости
Вы по-прежнему не можете получить доступ к файлам DBI, хотя FIFA World Cup установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Это может быть одной из причин, по которой DBI файлы не совместимы с FIFA World Cup. Последняя версия FIFA World Cup должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Свяжите файлы FIFA World Cup Game Data Comin Fe с FIFA World Cup
Если у вас установлена последняя версия FIFA World Cup и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления DBI на вашем устройстве. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Процедура изменения программы по умолчанию в Windows
- Нажатие правой кнопки мыши на DBI откроет меню, из которого вы должны выбрать опцию Открыть с помощью
- Нажмите Выбрать другое приложение и затем выберите опцию Еще приложения
- Чтобы завершить процесс, выберите Найти другое приложение на этом. и с помощью проводника выберите папку FIFA World Cup. Подтвердите, Всегда использовать это приложение для открытия DBI файлы и нажав кнопку OK .
Процедура изменения программы по умолчанию в Mac OS
- В раскрывающемся меню, нажав на файл с расширением DBI, выберите Информация
- Откройте раздел Открыть с помощью, щелкнув его название
- Выберите подходящее программное обеспечение и сохраните настройки, нажав Изменить все
- Должно появиться окно с сообщением, что это изменение будет применено ко всем файлам с расширением DBI. Нажимая Вперед , вы подтверждаете свой выбор.
Шаг 4. Убедитесь, что файл DBI заполнен и не содержит ошибок
Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным DBI файлом. Отсутствие доступа к файлу может быть связано с различными проблемами.
1. DBI может быть заражен вредоносным ПО — обязательно проверьте его антивирусом.
Если DBI действительно заражен, возможно, вредоносное ПО блокирует его открытие. Сканируйте файл DBI и ваш компьютер на наличие вредоносных программ или вирусов. DBI файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Убедитесь, что структура файла DBI не повреждена
Если файл DBI был отправлен вам кем-то другим, попросите этого человека отправить вам файл. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. Это может произойти, если процесс загрузки файла с расширением DBI был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Иногда для доступа к файлам пользователю необходимы права администратора. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл FIFA World Cup Game Data Comin Fe.
4. Проверьте, может ли ваша система обрабатывать FIFA World Cup
Если система перегружена, она может не справиться с программой, которую вы используете для открытия файлов с расширением DBI. В этом случае закройте другие приложения.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами FIFA World Cup Game Data Comin Fe. Возможно, файлы DBI работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла DBI мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле DBI.
Источник: www.file-extension.info