Как стать автором
Обновить

Комментарии 28

Выпускники, наверное, не в курсе тенденций развития современного «защитного» софта. Тот же Outpost перехватывает на себя целую кучу системных функций. DrWeb тоже свой драйвер внедряет в систему, за счет чего подавляющее большинство руткитов от него не могут спрятаться…
Я бы даже сказал иначе — кроме как на уровне внедрения драйвера в систему, часть базовых функций перехватить не получится.
т.е. как раз — часть базовых ф-й можно только так и перехватить…
вот.
эээ… а модификация ядра?
«Выпускники Массачусетского Технологического Института (MTI)»
Только он MIT :)
или МТИ ;-)
Представляю, если в аббревиатуре моего вуза буквы попереставлять, что получится :)
Ооо, да, спасибо. Поправил. Стыдно…
Они находят способ залезть ниже, их декомпилируют, узнают этот способ, обходят.
У ребят появляется интерес узнать как залезть еще глубже.
Далее цикл повторяется еще много раз.

Хочется, знаете, отсутствия таких несанкционированных возможностей, но такое придумать гораздо проще, реализовать сложнее, а денег с этого нет.
Так и дойдет до переписывания ОС. Ставил венду — одно, поставил антивирь — все совсем по-другому. =) Этакий мелкософт аля линух в пределе выйдет.
SiteTrust fake — отличный способ. спасибо. ;-)
Хороший полицейский, Плохой полицейский? )
Хм, странно… Разве подобного рода задачи не должны находятся в компетенции Операционной Системы?
Если только в MS Vista, которая по умолчанию — почти на каждое действия пользователя, что выходит за какие то ее рамки поведения для типичного пользователя, спрашивает — Если это вы… нажмите ок
«… и сможет удерживать защищенный канал связи, даже когда компьютер уже безнадежно заражен.»

Вот интересный момент! Чувствуется какая-то самостоятельность и уверенность! Почему этого нет в ядрах систем?
It depends… Например у меня под линухом стоит патч ядра GrSecurity (который блокирует некоторые способы внедрения в ядро, например через /dev/kmem, etc.) и отключена поддержка подгружаемых модулей (на серверах, дома без этой фичи сложнее). В такой ОС все руткиты идут лесом. Есть ли что-то подобное для винды — я не знаю.

На самом деле ещё остаются перехват функций API через LD_PRELOAD и совсем тупая подмена бинарников типа /bin/ls, /bin/ps, etc. Подмена бинарников ловится без проблем (тулзами типа chkrootkit и rkhunter, ну и любой утилитой с тупой проверкой по базе MD5). А вот насчёт LD_PRELOAD я озадачился пока это писал — интересно, можно ли сделать абсолютно невидимый перехват через LD_PRELOAD (типа перехватывать попытки прочитать/изменить эту переменную окружения и вызовы exec с попытками её сбросить)? Но в любом случае, руткит на базе LD_PRELOAD жить не будет, т.к. он не сможет установить LD_PRELOAD процессам типа *getty или sshd, которые запускаются при старте системы, а значит его жизнь будет ограничена одной сессией, той где юзер запустил эту малварь — а это руткитом назвать очень и очень сложно.
Видете, Powerman, как все просто?!!! Но хочется еще проще:}
Откровенно говоря, описываемые вами способы — это прошлый век руткитостроения.
/dev/kmem, LD_PRELOAD — это уже ни один серьезный руткит не использует, ибо палится это все немедленно.

Отключение модулей да, решение, да тоже не всегда ;)

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

По статье: давно уже понятно, что это должен быть гипервизор виртуальных машин, а не руткит нового n-го поколения, уязвимый ко всем ветрам, дующим в ОС =)
> да тоже не всегда ;)

Иными словами Вы утвержаете, что существуют способы внедрения руткитов, которые более продвинутые чем /dev/kmem и LKM, и которые работают на ядре с GrSecurity и выключенной поддержкой LKM? Пруфлинк есть, или Вы это сказали просто так, чтобы народ не расслаблялся? :)

> гипервизор виртуальных машин

Гипервизор непобедим, ага. В теории. Это во-первых. А во-вторых, гипервизор находится всё-таки на слишком высоком уровне абстракции, чтобы адекватно отделять нормальную активность ОС от действий малвари. При таком подходе можно не размениваться на гипервизоры, а сразу продавать «жёсткий диск, который не позволит вирусам модифицировать ваши файлы» и «модули памяти, которые заблокируют попытки сохранить в памяти вредоносный код». :)
Нет, пруфлинк я вам дать, к сожалению, не могу. Я сказал просто так, чтобы народ не расслаблялся.

Вот вы говорите — LKM. Ну а что такое LKM? Для руткита LKM — всего лишь возможность свободно подгрузиться в ядро, не прерывая функционирование системы. Если в ядре нет LKM, это не значит, что я не могу запуститься в системе, это значит, что это будет сложнее сделать, или нельзя будет сделать без ее рестарта, к примеру. К тому же, если в системе рут, то LKM он вставил, или записал в загрузчик десять байт и перезагрузил машину — это вообще уже не имеет никакого значения. Механизмы RBAC или application policies, предлагаемые разными поставщиками, весьма нетривиальны в настройке и требуют реальных усилий по внедрению в продакшн.

По поводу grsecurity, это хорошо что он до сих пор есть, а не закрыли его со слезами и соплями о собственной ущербности, когда нашли в нем однажды уязвимость, потому что была у товарищей такая идея. А вообще их там было прилично, уязвимостей этих. Техники, которые он применяет, тоже только усложняют задачу, но они не делают ее невозможной. Но, согласен, это наверное лучшее из решений на сегодняшний день по соотношению защита/сложность инсталляции. Но вот интересно, каков процент использующих его серверных систем? А уж тем более клиентских компьютеров.

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

Было в свое время исследование по поведенческому анализу малвари, так вот сейчас очередной Абдурахман Шмабахадиран (ну или как там его) пишет там рядом в MIT докторскую по приложению результатов этого исследования к системам защиты на основе гипервизоров.
А эти пусть пишут свою ось, к чему они плавно и идут.
Насчет подмены бинарников — нельзя ли хранить /bin, /usr/bin, /etc/rc* на незаписываемой файловой системе (хотя бы смонтированной в ридонли)? LD_PRELOAD наверно можно отключить, пропатчив динамический загрузчик (это так, мысли вслух)
А вообще отключать неиспользуемые функции — хорошая идея)) На сервере наверное самое то.
Глупости это всё — с руткитами бороться. Нужен просто тонкий клиент с минимум функциональности на аппаратно защищённом от записи устройстве. Включил, вошёл в банк, выключил. Всё, взлома нет. Например www.opennet.ru/opennews/art.shtml? num=18050 — тонкий клиент, 180 грамм, можно даже залочить на определённый банк с его системой шифровки. Выходя на мышь, клавиатуру — которые пассивно гонят в устройство информацию в простом формате, и монитор, тоже устройство через которое не влезешь. При некоторой массовости стоимость может сравняться со стоимостью годового обслуживания кредитной карточки.

Любая защита держится до того момента, пока защитные функции выполняются внутри чёрного ящика.
Кстати, разрешите поинтересоваться у вас? А что в этом отношении имеет внутри себя Inferno?
Сложно сказать, я настолько глубоко Inferno ещё не понимаю, чтобы сходу отвечать на такие вопросы. К сожалению… Хотя, если подумать:
  1. . В Inferno нет понятия «подгружаемый модуль для ядра». Если нужен, например, драйвер для нового устройства — он пишется на C и ядро Inferno пересобирается с поддержкой этого драйвера.
  2. . Все процессы в Inferno равноправны и хорошо изолированы друг от друга. Фактически это даже не процессы, а нити одного процесса. Защита памяти реализуется через сильную типизацию — если у процесса (нити) A нет переменной-ссылки на объект X из процесса (нити) B, то он до него добраться не сможет в принципе.
Таким образом, даже если и возможно как-то устроить перехват системных функций, то этот перехват будет ограничен текущим процессом и процессами которые этот будет запускать. Т.е. это ближе к функциональности LD_PRELOAD в линухе, нежели к руткитам. Впрочем я сходу не могу придумать способ перехвата системных функций в Inferno.
Извините, я у Powerman' а спросил.
Подход изначально ущербен как по мне, разработчиков таких вещей законодательно запрещать надо.
Мне достаточно кривых защит игровых дисков(Starforce, Securom), агресивных проактивных антивирусных движков Kaspersky, Norton, а ещё фаерволы, ещё софт с защитой от нелегального использования с разными FlexLM и другими. В результате компютер делает что-то что ты не можеш ни контролировать, ни ограничить.
Я не склонен к параное, но когда в очередноё раз ловиш BSOD и теряешь данные изза того что разработчик посчитал себя достаточно умным и влез в недокументированные вызовы ядра и при этом я не смогу выбирать пользоватся этим софтом или нет(например банк не позволит связыватся с ним другим способом) то я за то чтобы законодательно иметь возможность такого разработчика прижать к стенке.
НЛО прилетело и опубликовало эту надпись здесь
Суть метода заключается в применении собственного пакета утилит, который «заползет» в систему глубже, чем любая злонамеренная программа...

Этот самый метод уже давно используется антируткитами. Что принципиально нового предлагают выпускники?

Про гонку и кто копнет глубже — это они правильно говорят. Только не «будет», а есть уже. Сейчас.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории