Защита компьютерной сети от переполнения буфер памяти


Поскольку атаки переполнения буфера настолько популярны и дают поразительные результаты, атакующие хотят применять их, но оставаться незамеченными. Совсем недавно в компьютерном андеграунде велась активная разработка методов изменения вида программы взлома, чтобы IDS не смогла найти соответствие сигнатур и атаки переполнения буфера.

Разработчик софта под именем К2 создал очень мощный инструмент ADMutate, в котором были реализованы несколько отличных способов трансформации атаки переполнения буфера сети с целью обмана IDS.

Входными данными для ADMutate является код взлома. Затем этот инструмент изменяет код при помощи метода, заимствованного из мира компьютерных вирусов и называемого полиморфизмом (polymorphism). Он модифицирует код взлома так, что новая сигнатура не соответствует сигнатуре старого кода, однако функциональность кода не нарушается. Как же создается новый код? Вспомните, код взлома по переполнению буфера состоит из трех частей: команд NOP, машинного кода с командами атакующего и указателя возврата.

Он изменяет каждую часть и создает новый набор команд, которые преследуют те же цели. Команды NOP ADMutate заменяет функционально идентичными выражениями. Например, вместо непосредственного использования команды NOP для данного процессора включается команда, которая возвращает регистр в то же состояние. По существу, ничего не происходит, но команда не соответствует команде NOP, которую ищет IDS. ADMutate содержит несколько заменителей, которые выбираются случайным образом, чтобы данная атака не соответствовала ни одной сигнатуре.

Для модификации кода в программе взлома ADMutate применяет простую функцию - XOR (Исключающее ИЛИ), комбинируя код с произвольным ключом. В итоге образуется некая тарабарщина как для IDS, который выискивает атаки, так и для процессора. Получившаяся информация полностью зависит от того, какой ключ выбран. Конечно, для того чтобы в системе был выполнен код атакующего, необходимо убрать кодирование XOR.

С этой целью ADMutate включает в программу дополнительные раскодирующие команды . Вы, вероятно, скажете: «Так IDS может просто искать команды дешифратора, чтобы определить атаку». Однако программист К2 подумал и об этом. Дешифратор сам по себе полиморфичен. Он создается случайным образом: выбираются функциональные эквиваленты команд. Следовательно, дешифратор всегда разный, поэтому он способен обмануть IDS.

И наконец, ADMutate модифицирует указатель возврата, просто изменив последние биты адреса. Если указатель станет адресовать область памяти, где содержатся команды NOP, атака все-таки будет эффективна, поэтому ADMutate изменяет последний значащий байт адреса возврата, присваивая ему произвольное значение.

Итак, ADMutate соединяет все четыре полиморфических элемента: функциональный эквивалент NOP, созданный случайным образом ключ к XOR-дешифратору, XOR-код взлома и измененный указатель возврата. Теперь для того, чтобы все это работало, ADMutate должен убедиться, что не включил какую-либо последовательность битов, которая может остановить выполнение кода.

В частности, нулевой байт будет рассматриваться как нуль-символ, и работа функции приостановится. Поэтому ADMutate создает действительный машинный код, который не содержит нуль-символов или любых других символов, мешающих эффективной атаке.

Таким образом, атакующий может написать программу взлома и пропустить ее через него. Софт способен создать сотни и тысячи функционально-эквивалентных программ взлома, у каждой из которых будет своя сигнатура, позволяющая обмануть систему обнаружения вторжений.

Атакующий в силах заставить уязвимую программу запустить командную оболочку, а затем ввести одну-две команды в эту оболочку и выполнить их. И оболочка, и команды будут загружаться под управлением уязвимого процесса.

Если процессу предоставлены привилегии супервизора (например, администратора), то для реализации команд у атакующего будут аналогичные привилегии. Если же процесс работает в соответствии с правами пользователя, то и атакующий получит лишь эти права. Очевидно, что атакующие просто обожают находить уязвимые программы, работающие с привилегиями супервизора. Иногда атакующие могут взломать программу без привилегий супервизора для того, чтобы получить доступ лишь к какой-то учетной записи, а затем расширить свои права, взломав еще одну уязвимую программу.


Способы компьютерной безопасности



Что могут сделать системные администраторы и сотрудники службы безопасности, чтобы предотвратить атаки переполнения стековой памяти и связанные с ними? Как уже было отмечено, необходимо своевременно применять патчи к своей системе. Профессионалы в области безопасности, в том числе и те, которые причисляют себя к компьютерному андеграунду, постоянно находят все новые и новые уязвимые места. Производители стараются разрабатывать исправления для этих слабых мест.

Следует постоянно просматривать различные рассылки, такие как BugTraq, CERT и SANS. У многих производителей программного обеспечения есть собственные рассылки, где вниманию пользователей представлена информация о найденных в последнее время недостатках и их исправлениях. Обязательно подпишитесь на рассылки тех производителей, продуктами которых вы пользуетесь.

Однако нужно не только отслеживать в рассылках новые уязвимые места, но и тестировать и отлаживать системы, к которым были применены патчи. Нельзя просто исправить какой-то элемент в вашей системе, не протестировав ее в лаборатории. Как только вы убедитесь, что внесенные исправления отлично подходят к экспериментальной системе, срочно внесите их в реальную. Своевременное применение исправлений достаточно важно, поскольку какой-нибудь незадачливый «сценарист» может атаковать вашу систему с помощью программы взлома, которая совсем недавно стала всеобщим достоянием.

В дополнение к своевременному применению патчей безопасности убедитесь, что ваши доступные всем системы (почтовые, Web и FTP-серверы, а также брандмауэры) не предоставляют ненужные сервисы и не содержат дополнительного программного обеспечения. При построении и поддержке важных систем необходимо удалить их памяти неиспользуемые программы, в частности бесполезные TFTP-клиенты, FTP-клиенты и элементы.

Еще советуем:
  • Переполнение буфера памяти
  • Как защитить компьютер от взлома
  • Безопасность компьютера: обман IDS
  • Что такое переполнение буфера памяти
  • Защита от переполнения буфера памяти