Вторник, 10.02.2026, 08:53
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · RSS ]
  • Страница 1 из 1
  • 1
ЧЕМ НЕ ЯВЛЯЕТСЯ РУТКИТ
ASHKENSOДата: Воскресенье, 27.02.2011, 18:08 | Сообщение # 1
Полковник
Группа: Администраторы
Сообщений: 331
Репутация: 10000
Статус: Offline
ЧЕМ НЕ ЯВЛЯЕТСЯ РУТКИТ

Перед тем, как приступить к разговору о том, что такое руткит, нужно уяснить
себе, чем он не является. Поговорим о сходствах руткитов с известными
видами вредоносных программ и отличиях от них.
Во-первых, РУТКИТ - ЭТО НЕ ШПИОН. Шпионской программой
(spyware) называется такая, которая записывает все, что делает за компьютером
пользователь: что он вводит с клавиатуры (в том числе и пароли),
какие приложения запускает и т. п. Примером программы такого класса может
послужить hookdump.
В последнее время угроза шпионских программ стала очень актуальна. Эти
программы без ведома пользователя собирают информацию о посещаемых
пользователем Web-страницах, об установленных на его компьютере приложениях,
о его личных данных (например, ключи электронных платежных
систем) и отправляют все это третьей стороне.
Шпионы могут также изменять тексты почтовых сообщений, файлы на жестком
диске и даже корректировать страницы, выводимые браузером. Кроме
того, разносторонняя деятельность spyware отнимает много системных ресурсов,
что снижает производительность компьютера. Обычно шпионские
программы интегрируются с Web-браузерами или программами-оболочками
(вроде Проводника Windows), что делает сложным их удаление из системы.
Больше всего spyware написано для браузера Internet Explorer, поэтому я
советую вам сменить браузер на Opera или Mozilla.
Разработчики руткитов воспользовались находками авторов шпионских
программ, и современные руткиты умеют в том числе и протоколировать
действия пользователя. Но их основное назначение - не в этом, а в сокрытии
такого протоколирования и других враждебных действий.
Во-вторых, РУТКИТ - ЭТО НЕ ВИРУС, хотя он и умеет прятаться от
средств обнаружения (антивирусов), используя классические методы вирусов:
модификацию системных таблиц, памяти и программной логики.

В отличие от вирусов руткиты не размножаются. Другое отличие состоит
в том, что вирус полностью автономен, руткит же подчиняется человеку,
установившему его. Вирусы обычно повреждают данные, руткит же
просто помогает взломщику остаться незамеченным. Удалить данные может
человек, под контролем которого находится руткит, сам же руткит
никогда этого не сделает.
ОС Windows считалась рассадником вирусов, но с появлением в 1996 году
версии Windows NT 4.0 все изменилось. По сравнению с Windows 95, в этой
операционной системе изменилась модель памяти: обычные пользовательские
программы больше не могли модифицировать системные таблицы. Па
то время не было вирусов, способных запускаться в Windows NT, да и сейчас,
благодаря улучшенной системе безопасности, вирусов под Windows NT
заметно меньше, чем под Windows 9x, где они просто кишат.
Решения, использованные в NT4, усовершенствовались и перекочевали в
Windows XP, но, парадоксальным образом, количество вирусов, написанных
под ХР, увеличилось. Дело в том, что Windows XP рассчитана не на
профессионалов, а на домашних пользователей. Большинство их постоянно
работают под учетной записью администратора, пренебрегая требованиями
безопасности, согласно которым от имени администратора можно выполнять
только такие действия, для которых не хватает полномочий рядового
пользователя: изменение конфигурации системы (например, установка
устройств), установка программ, настройка сети и т. п.
Обычная работа должна выполняться под обычной учетной записью, чтобы
вредоносный код, проникающий в систему, не получил администраторских
привилегий. Каюсь, сам я не выполняю своих же рекомендаций: пишу эти
строки под учетной записью администратора. В свое оправдание могу сказать
только то, что у меня запущены Outpost Firewall, Касперский, и я периодически
прогоняю систему через AVZ и AntiSpyware. Конечно, это не
предел безопасности, но все же лучше, чем вообще ничего.
Далее, РУТКИТ - ЭТО НЕ ЭКСПЛОЙТ И НЕ ЧЕРВЬ Поговорим немного
об этих разновидностях орудий взломщика.
В Интернете в то время царствовала ОС UNIX, считавшаяся одной из самых
безопасных операционных систем. Источником ее надежности является
ограничение прав пользователей на доступ к чужим, в том числе системным,
файлам. Вредоносный код подчиняется тем же ограничениям, что пользователь,
от чьего имени он запущен, поэтому при правильном администрировании
UNIX-системы вирус не сможет причинить существенного вреда.
Одно время даже считалось, что вирусы под UNIX невозможны.
Однако полностью неуязвимых операционных систем не бывает: UNIX
удалось взломать, используя уязвимости установленного в системе программного
обеспечения. Принцип заключается в следующем: программы-серверы
(почтовый, WWW, FTP, telnet, ssh и другие) запускаются, как правило, с
максимальными полномочиями, то есть с привилегиями пользователя root.
Если такая программа уязвима - например, ошибочно обрабатывает переполнение
буфера, - то крекер может использовать ее для запуска своего кода
на удаленном компьютере. Для этого достаточно передать серверу строку
длины большей, чем допустимая. Этот код будет выполняться с привилегиями
запустившего его процесса,—значит, крекер получит полный контроль
над системой.
Инструкции, которые взломщик записывает в буфер, называются
shell-кодом. Например, следующий код вызывает оболочку, прослушивающую
TCP-соединения по порту 80:
\x31\xdb\xf7\xe3\xb0\x66\x53\x4 3\x53\x43\x53\x8 9\xel\x4b\xcd\x80 \
\x8 9\xc7\x52\x66\x68\x00\x50\x4 3\x6 6\x53\x8 9\xel\xb0\xl0\x50\x51 \
\x57\x89\xel\xb0\x66\xcd\x80\xb0\x66\xb3\x04\xcd\x80\x50\x50\x57 \
\x8 9\xel\x4 3\xb0\x66\xcd\x80\x8 9\xd9\x8 9\xc3\xb0\x3f\x4 9\xcd\x80 \
\x41\xe2\xf8\x51\x68\x6e\x2f\x7 3\x68\x68\x2f\x2f\x62\x6 9\x8 9\xe3 \
\x51\x53\x8 9\xel\xb0\x0b\xcd\x80
В то время многие UNIX-сервисы не были защищены от переполнения
буфера, а это означало, что знающий человек мог взломать практически
любую UNIX-систему, поскольку у всех была одна и та же дыра в безопасности.
Программы, эксплуатирующие уязвимости такого рода, так и называются
— эксплойты. Они служат средством доставки постороннего кода на
машину, имеющую определенную уязвимость, и запуска его на этой машине.
С появлением эксплойтов взлом UNIX-системы стал под силу любому, даже
не очень квалифицированному, пользователю. Все, что нужно для взлома,
- это нацелить сканер портов на поиск системы, уязвимой определенным
образом, после чего запустить подходящий эксплойт.
Ради справедливости нужно отметить, что уязвимости в UNIX исправляются
довольно оперативно, однако не все системные администраторы спешат
обновлять свои системы. Кроме того, в последнее время появилась тенденция
использовать для проникновения в систему уязвимости, о которых
еще «не знают» программы, обнаруживающие вторжение, - так называемые
уязвимости нулевого дня: сегодня обнаружилась дыра, и сегодня же, пока
разработчики не успели выпустить соответствующую заплатку, взломана
система.
Другая разновидность программ, использующих известные уязвимости
серверов, - это черви (worms). Они более автономны, чем эксплойты: червь
оснащен сканером сети и сам проверяет компьютеры сети на наличие определенной
уязвимости. Обнаружив дыру, он копирует свои файлы на компьютер-
жертву и запускает сам себя на этом компьютере. Затем цикл повторяется
- червь опять сканирует сеть и ищет компьютеры с уязвимостью.
При этом он помечает каждый зараженный компьютер, чтобы избежать
повторного инфицирования.
Червь, находящийся на зараженном компьютере, может выполнять команды
запустившего его взломщика. Например, заразив сотни компьютеров из
разных сетей и даже из разных географических регионов, можно устроить
распределенную DOS-атаку (Distributed Denial of Service) какого-нибудь
сервера, когда по команде крекера все эти компьютеры начинают засыпать
сервер запросами, парализуя его работу. Выяснить источник атаки при этом
невозможно.
Автором первого червя был Роберт Моррис. В 1988 году он написал червь,
который распространялся по сети, используя уязвимости в программах
sendmail и fingerd. Этот червь быстро распространился по всему Интернету,
который в 1988 году состоял в основном из узлов университетов и правительственных/
военных институтов. Работал червь так: он подключался к
компьютеру, на котором была запущена программа sendmail, затем он вызывал
командный режим программы (это и была уязвимость sendmail того
времени), что позволяло выполнять любые команды.
Эти команды вызывали небольшую программу, которая переносила на компьютер-
жертву все необходимые файлы. Если же с sendmail «подружиться»
не удавалось, то червь вызывал переполнение буфера в демоне fingerd с целью
достижения того же самого результата: червь должен быть запущен на
машине-жертве.
Достигнув цели, червь Морриса повторял цикл, начиная с попыток
регистрации на других компьютерах с помощью rsh (Remote Shell) и rexec
(Remote Execute). Пароли он подбирал по словарю / u s r / d o c t / w o r d s.
Червь распространялся по Интернету с такой скоростью, что некоторые
машины были инфицированы по несколько раз, потому что Моррис не предусмотрел
возможность для червя помечать зараженные компьютеры.
Руткит похож на червя тем, что, попав на компьютер-жертву, ожидает команд
хозяина и выполняет их; однако в отличие от червя он не заражает
другие компьютеры по своей инициативе. Эксплойт же при этом служит
просто инструментом несанкционированной установки руткита на удаленную
машину. Крекер не может знать заранее, какие прорехи в намеченной к
взлому системе еще не закрыл ее администратор, поэтому у него под рукой
должны быть десятки различных эксплойтов, нацеленных на разные уязвимости.
И весь этот арсенал служит ему для установки одного-единственного
руткита.
Повторяю, что руткит - это программа или набор программ, основным назначением
которых является организация backdoor-входа в систему и сокрытие
этого входа и активности на нем от средств обнаружения нежелательного
кода (антивирусов и др.). Для реализации этих целей в руткитах
присутствуют решения, заимствованные из вирусов и шпионов, но не эксплойтов:
руткит может использовать недокументированные функции операционной
системы, но никак не уязвимости в программном обеспечении
(например, руткит никогда не вызовет переполнение буфера).
Для того, чтобы предоставить крекеру полный контроль над системой,
руткит должен получить доступ к ядру. Компонент руткита, работающий на
уровне ядра, подсовывает ядру ложные данные (модифицирует системные
таблицы), чтобы скрыть ваши процессы и файлы. Этот компонент можно
загрузить при помощи эксплойта, вызывающего переполнение буфера во
время загрузки системы и запускающего загрузчик руткита. Другой способ
получения доступа к ядру - это установка kernel-компонента руткита как
драйвера устройства. Если драйвер работает на нулевом кольце процессора,
обнаружить руткит будет очень сложно.
Подробнее о кольцах процессора мы поговорим в следующих главах, а сейчас
будет достаточно сказать, что у процессора 80386 (и более поздних версий,
вплоть до последних Pentium) есть четыре уровня защиты, называемых
кольцами защиты: от 0 до 3. На нулевом уровне работает операционная
система, это уровень с максимальными правами доступа. Операционная
система может распоряжаться уровнями доступа по своему усмотрению, но
обычно ядро выполняется на 0 кольце, а прикладные программы - на кольце
с номером 3.

 
  • Страница 1 из 1
  • 1
Поиск: