Защита от хакеров корпоративных сетей
Шрифт:
Если из результатов исследования и доступной информации непонятно, что это за чип, то вскройте его! Вскрыть чип? Именно так. Исследователям защитного корпуса таких устройств, как смарт-карты (smart card – кредитная карточка с микропроцессором), известно много способов их изучения, включая выжигание корпуса чипа кислотой и исследование его структуры под микроскопом. Подробнее эти вопросы освещены в главе 14.
Итак, если исследователь с помощью метода «черного ящика» не может разобраться с устройством чипа, то он должен вскрыть его. Опыт посещения автором копий обсидиана (вулканического стекла) в Аризоне наглядно демонстрирует это. Если держать обсидиан на расстоянии вытянутой руки, то он выглядит как черный камень.
Резюме
Методологии поиска уязвимости часто используют принципы аудита безопасности систем. Изучение исходного текста программ начинается с выявления потенциально небезопасных функций, например strcpy и sprintf. Другой способ заключается в тщательной построчной экспертизе исходного текста программы в соответствии с логикой ее работы. Анализ различий – еще один способ поиска уязвимостей, при котором широко применяется утилита diff. Утилита diff, сравнивая две версии программы, позволяет найти внесенные в программу исправления. При исследовании выполнимого кода программы применяются различные средства: программы трассировки, отладчики, анализаторы, а также аудит документации.
Аудит исходного текста программы предполагает поиск потенциально опасных функций и применение методологии построчного аудита. В этой главе были рассмотрены примеры, демонстрирующие переполнение буфера при использовании функций strcpy, sprintf, strcat и gets. Были рассмотрены такие ошибки проверки входных данных, как уязвимость форматирующей строки функции printf и функции open в программе, написанной на языке Perl. Также был рассмотрен пример конкуренции программ за ресурсы и сопутствующая ей ошибка условия гонок на примере функции mktemp.
Реинжиниринг – один из наиболее часто используемых методов поиска уязвимостей в программе, исходный текст которой недоступен. Этот тип исследования проводится по методике «сверху вниз». Средства аудита в Windows можно найти на сайте sysinternals.com, а список Rosetta Stone поможет выбрать средства трассировки на различных платформах. В этой главе был рассмотрен пример трассировки команды cat сначала в среде Red Hat Linux и в Solaris 7.
Дизассемблер и отладчики позволяют исследовать выполнимый код. Дизассемблер (также известный как декомпилятор) – это программа, которая преобразует двоичный код в исходный текст программы на языке высокого уровня, но чаще всего на языке ассемблера. Отладчик – программа, которая может управлять выполнением другой программы. В этой главе был приведен пример дизассемблирования программы на платформе Windows с использованием отладчика IDA Pro, а также пример сессии отладки под управлением отладчика GDB в Linux. Также были обсуждены возможности программ objdump и nm. Программа objdump позволяет управлять объектными файлами программ, а nm — отображает содержащуюся в них символьную информацию.
«Черный ящик» – концептуальный компонент, чьи внутренние функции скрыты от пользователя. Тестирование «черного ящика» похоже на бинарный аудит. На практике к методам тестирования «черного
Конспект
Суть методологии исследования уязвимости
· Анализ и экспертиза исходного текста программы – идеальная методология поиска ее уязвимостей.
· Исследование исходного текста программ предполагает поиск подверженных ошибкам директив, построчную экспертизу исходного текста программы и изучение различий в нем.
· Изучение выполнимого кода программы осуществляется при помощи программ трассировки, отладчиков, модулей проверки текущего состояния программы (анализаторов) и аудита документации проектирования программы.
Значение экспертизы исходного текста программы
· Экспертиза исходного текста программы – необходимая часть обеспечения ее безопасности.
· Поиск подверженных ошибкам конструкций языка программирования в исходном тексте программ позволяет найти ошибки переполнения буфера, проверки входных данных и ошибки, сопутствующие конкуренции программ за ресурсы.
· Утилита grep может использоваться для повышения эффективности поиска подверженным ошибкам директив.
Технологии реинжиниринга
· На сайте www.sysinternals.com можно найти свободно распространяемые инструментальные средства аудита для Windows.
· Список Rosetta Stone (по адресу позволяет найти программы трассировки для заданной платформы.
· Отладчики используются для управления выполнением исследуемой программы и поиска ошибок в ней или исследования логики ее работы.
Тестирование методом «черного ящика»
· Тестирование методом «черного ящика» позволяет обнаружить внутренние компоненты, скрытые от невооруженного взгляда исследователя.
· Вскрытие корпуса «черногоящика» – самый легкий способ для определения его внутреннего строения.
· Абсолютно «черныхящиков» нет. Одни из них – более «черные», а другие – менее.
Часто задаваемые вопросы
Приведенные вопросы и ответы авторов позволяют оценить степень уяснения читателем изложенного в главе материала и получить представление о возможности применения полученных знаний на практике. Если читатель захочет задать автору вопрос, то ему следует посетить сайт www.syngress.com/solutions, заполнить и отослать форму «Вопрос автору» («Ask the author»).
Вопрос: Какой наилучший метод исследования уязвимостей? Ответ: На этот вопрос можно дать только субъективный ответ. Наилучший метод исследования уязвимостей – это тот, который исследователю наиболее знаком, наиболее удобен и позволит быстрее провести исследование. Рекомендуется поэкспериментировать с различными методами и схемами их применения.
Вопрос: Законны ли с юридической точки зрения декомпиляция и другие методы реинжиниринга? Ответ: В Соединенных Штатах реинжиниринг скоро может стать противозаконным. В Акте авторского права цифрового тысячелетия (Dig^l Millennium Copyright Act) содержатся меры по предотвращению обхода обманным путем технологических мер управления доступом к работам, защищенным авторским правом. Исходный текст программы может быть защищен авторским правом, поэтому в этом случае реинжиниринг текста, защищенного авторским правом, противозаконен.