2006 г.
Распределенные атаки на распределенные системы
А.А. Грушо (Доктор физико-математических наук)
Е.Е. Тимонина (кандидат физико-математических наук)
Информационный бюллетень JET INFO
Назад Оглавление Вперёд
В стандарте FIPA [[30]] агент определяется как сущность, способная вести себя автономно, выполнять план и распознавать другие сущности в протоколах, в которых они участвуют. Есть по крайней мере два протокола, в которых каждый агент ВМАС является участником. Первый — протокол взаимодействия агентов противника. Второй — это легальный протокол, содержащий агента в виде встроенного в некоторую область кода и процесса, использующего ресурсы компьютера.
Пусть компьютерная система разделена на два уровня — High и Low. Если субъект на уровне High может выполнять все свои действия и способен "видеть" действия субъекта на уровне Low, но любой субъект на уровне Low не может "видеть" никаких действий или их результатов на уровне High, то тогда система удовлетворяет условию невлияния. Если враждебный агент находится на уровне High, а механизмы защиты находятся на уровне Low, и выполняются условия невлияния, то агент не может быть "увиден" средствами защиты.
Мы должны ответить на вопрос, каким образом агент, будучи участником легального протокола, остается "невидимым" для механизмов защиты. Рассмотрим следующую примитивную схему, моделирующую механизмы "невидимости".
На Рис. 1 приведена нормальная схема работы компьютера. Отметим, что процессор только выполняет команды, и ему все равно, кто их передает.
На Рис. 2 агент "видит", что "хотят" сделать программы, куда обратиться, что и как обработать. Тогда программный агент может использовать процессор до работы легальных программ. То есть агент может "подправить" все так, как нужно ему, затем обработать реальный запрос и передать легальным программам ту информацию, которую ему нужно.
Эта модель описывает теоретическую возможность работы "невидимого" агента. На практике можно разместить агента в ядре операционной системы таким образом, что он будет контролировать и модифицировать всю деятельность системы безопасности. Данная конструкция реализует метод "men-in-the-middle" [[3]], она была выполнена в некоторых практических разработках. Программы такого типа можно найти в Интернете. Они называются руткиты.
Большинство реализаций современных руткитов могут прятать от пользователя файлы, папки и ключи реестра, скрывать запущенные программы, системные службы, драйверы и сетевые соединения. То есть злоумышленник имеет возможность создавать файлы и ключи реестра, запускать программы, работать с сетью, и эта активность не будет обнаружена пользователями, в том числе и администратором системы.
В настоящее время известно около двух десятков подобных проектов, в рамках которых разрабатываются способы маскировки файлов, работающих процессов, сеансов межсетевого взаимодействия и т.п. Приведем несколько примеров.
Hacker Defender является программным агентом, функционирующим на платформах Windows NT 4.0/2000/XP, а также на более поздних версиях систем на базе Windows NT. Основная идея данной программы состоит в перезаписи некоторых сегментов памяти во всех запущенных процессах. При этом описанные действия не должны оказывать влияния на стабильность работы системы или работающих процессов. Программа может быть абсолютно "невидима" для всех остальных процессов, в том числе и для средств защиты [[28], [29]]. Тем самым противник имеет возможность скрывать файлы, процессы, системные службы и драйверы, ключи реестра и их значения, открытые порты. Программа также осуществляет маскировку своих действий в памяти и прячет идентификаторы скрываемых процессов. Кроме того, этот агент инсталлирует скрытый "blackdoor", регистрируется как скрытый системный сервис и инсталлирует скрытый системный драйвер. Технология "blackdoor" позволяет внедрять редиректор (сетевое программное обеспечение, эмулирующее доступ прикладных программ к удаленной файловой системе как к локальной).
После запуска программы Hacker Defender перечисляет все доступные для нее процессы в системе, а затем пытается перехватить определенные вызовы API [[12]]. Перехват заключается в замене первых байт кода функции на безусловный переход к новому коду функции, предварительно сохраненному в адресном пространстве программы. Для этого выясняется адрес необходимой функции, затем в памяти программы отводится место под код нового варианта функции и ее первоначального кода, который сохраняется для дальнейшего использования. Таким образом, когда пользовательская программа вызывает функцию API, например, NtQuerySystemInformation, вызов передается функции предобработки данных. Затем может быть вызвана исходная функция, которая, в свою очередь, вернет результаты функции постобработки. Функция постобработки модифицирует данные, которые вернула исходная функция, например, удаляя некоторые записи.
Процесс перехвата вызовов API изображен на Рис. 3.
Получается, что программы, которые будут использовать перехваченные вызовы API, получат информацию не о реальном положении дел в системе, а уже обработанные агентом данные. Hacker Defender перехватывает функции запуска новых процессов, что позволяет агенту передавать нужный код через новые программы, запускаемые пользователем.
FU также является известным программным агентом, исходный код которого опубликован 03.09.2004. FU состоит из двух компонент: драйвера Windows 2000/XP (msdirectx.sys) и собственно исполняемого файла (fu.exe). Если драйвер успешно установлен, то противнику необходимо просто запустить файл fu.exe на исполнение. Заметим, что при этом противнику вовсе не нужно обладать какими-либо особыми правами, в том числе и правом запуска приложений. Данная программа непосредственно манипулирует объектами ядра операционной системы. FU модифицирует список PsActiveProcessList, содержащий список активных процессов, информацию из которого получает ZwQuerySystemInformation. При этом процесс остается существовать в качестве "свободного" потока и будет нормально функционировать, поскольку распределение процессорного времени Windows основано на потоках, а не на процессах. FU позволяет нарушителю скрывать файлы, каталоги и процессы, а также изменять привилегии процесса, поднимая его до уровня администратора.
AFX Rootkit представляет собой программного агента, который функционирует на платформах Windows NT/2000/XP/2003. Текущая версия данной программы позволяет нарушителю скрывать процессы и их идентификаторы, файлы и директории, значения системного реестра, сервисы, сетевые соединения TCP/UDP, иконки в панели задач. При установке этого агента создается директория с уникальным именем, в которой противник сможет размещать необходимые ему данные, в том числе исполняемый файл (root.exe). Заметим, что данная директория абсолютно "невидима" другими процессами, файлами, библиотеками и т.д., однако все программы внутри директории не являются скрытыми друг от друга.
"Невидимый" агент может сделать другие файлы или процессы "невидимыми". Более того, "невидимый" процесс может решить проблему построения "невидимых" коммуникаций между агентами противника в рамках одного компьютера.
В работе [[1]] мы доказали, что если есть сеть автоматов, каждый из которых удовлетворяет условию невлияния, и коммуникации на уровне High "невидимы" для механизмов безопасности, тогда сеть автоматов также удовлетворяет условию невлияния.
Назад Оглавление Вперёд