На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Методы для восстановления исходного кода

Как уже говорилось выше, иногда исходный код доступен для исследователя, а иногда — нет. Чтобы разобраться в принципах действия программного обеспечения, используются методы тестирования и анализа т.н. "черного ящика" и "белого ящи­ка". Эти методы определяются степенью доступности исходного кода.
Какой бы метод ни использовался, чтобы найти уязвимые места в программном обеспечении, хакер всегда должен исследовать несколько базовых вопросов:
• функции, в которых выполняются некорректные (или вообще не выполняют­ся) проверки размера входных данных;
• функции, которые могут пропускать или принимать введенные пользовате­лями данные в строках форматирования;
• функции, предназначенные для проверки границ в строках форматирования (например %20s);
• процедуры, которые получают введенные пользователем данные с помощью цикла;

• низкоуровневые операции копирования;
• программы, в которых используются арифметические операции с адресом буфера, переданным в качестве параметра;
• системные вызовы, которым оказывается безоговорочное "доверие" и кото­рые принимают входные данные в динамическом режиме.
Этот список первоочередных целей необходим при исследовании двоичного кода.
Исследование по методу "белого ящика"
При исследовании по методу "белого ящика" выполняется анализ прежде всего исходного кода. Иногда доступен только двоичный код, но можно провести его де-компиляцию, получить из двоичного исходный код и провести его исследование, что также является анализом по методу "белого ящика". Этот метод тестирования очень эффективен для выявления ошибок программирования и реализации в программ­ном обеспечении. В некоторых случаях исследование доходит до поиска соответст­вий с заданными шаблонами и может даже выполняться автоматически с помощью статического анализатора2. Но для метода "белого ящика" характерен один недоста­ток. Дело в том, что при использовании этого метода часто выявляются якобы по­тенциальные уязвимые места, которых в действительности не существует (false positive). Тем не менее, методы статического анализа исходного кода позволяют ус­пешно взламывать некоторые программы.
Средства для проведения исследований по методу "белого ящика" можно разде­лить на две категории: те, которым требуется исходный код, и те, которые автомати­чески декомпилируют двоичный код и продолжают работу с этого момента. Мощная платформа для анализа по методу "белого ящика" под названием IDA-Pro не требует наличия исходного кода. То же-самое касается и программы SourceScope, которая поставляется с мощной базой данных по ошибкам в исходном коде и программах на Java, С и C++. Предоставляемые этими средствами сведения чрезвычайно полезны при анализе вопроса о безопасности программного обеспечения (и, конечно, при взломе программ).
Исследование по методу "черного ящика"
При исследовании по методу "черного ящика"" на вход выполняемой программы подаются различные тестовые данные. При таком тестировании требуется только запуск программы и не проводится никакого анализа исходного кода. С точки зре­ния безопасности на вход программы могут подаваться вредоносные данные с целью вызвать сбой в работе программы. Если программа дает сбой при выполнении како­го-то теста, то считается, что выявлена проблема безопасности.
Обратите внимание, что анализ по методу "черного ящика" возможен даже без доступа к двоичному коду. Таким образом, программа может быть проанализирова­на по сети. Все, что требуется, — это наличие запущенной программы, которая спо­собна принимать входные данные, т.е. если исследователь способен отправлять входные данные, которые принимает программа, и способен получить результат обработки этих данных, значит, возможно тестирование по методу "черного ящика". Вот почему многие хакеры выбирают для взлома именно методы "черного ящика".
Анализ программы по методу "черного ящика" не так эффективен, как при исполь­зовании метода "белого ящика", но этот метод намного проще для реализации и не требует высокого уровня квалификации. В ходе тестирования по методу черного ящи­ка, специалист, воздействуя на программу, по выдаваемым результатам пытается мак­симально точно определить пути исполнения кода в программе. При этом невозможно проверить действительное место ввода пользовательских данных в коде программы, но тестирование по методу черного ящика больше напоминает реальную атаку в реальной среде исполнения по сравнению с использованием метода "белого ящика".
Поскольку исследование по методу "черного ящика" происходит на работающей системе, то оно часто применяется в качестве эффективного средства для понимания и проверки проблем отказа в обслуживании. А поскольку это тестирование способно оценивать работу приложения в его среде исполнения (по возможности), то оно мо­жет использоваться для выявления уязвимых мест в реально работающей производ­ственной системе3. Иногда ошибки, выявленные при анализе по методу "черного ящика", не могут быть использованы хакерами при реальных атаках на конкретную систему в конкретной сети. Например, атаку может заблокировать брандмауэр.
Коммерческая платформа Hailstrorm от компании Cenzic позволяет провести тестирование по методу "черного ящика" тех программ, которые запущены на под­ключенных к сети системах. Она может использоваться для поиска уязвимых мест в работающих системах. Существуют специальные устройства, например SmartBits и DOA, для проверки маршрутизаторов и коммутаторов. Для проверки целостности стека TCP/IP можно воспользоваться бесплатной программой ISICS. Проверку протоколов по методу "черного ящика" весьма удобно провести с помощью средств
RROTOS и Spike.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика