АППАРАТНО-ПРОГРАММНЫЕ РУТКИТЫ - ТЯЖЕЛАЯ АРТИЛЛЕРИЯ Представьте себе следующую ситуацию. Вы проникли в кабинет своего коллеги,
пароль которого вы хотите узнать. Или даже не проникли, а просто заглянули
спросить, как дела: ведь вы не «чужой», а «свой». А в кабинете никого
не оказалось... Словом, вы получили физический доступ к компьютеру
жертвы. А если вы системный администратор, то вы получите этот доступ
и без всяких уловок - например, под предлогом установки новой версии
программы или настройки компьютера.
Вы перезагружаете компьютер и загружаетесь со своего загрузочного
компакт-диска. После этого вы записываете руткит в BIOS компьютера, а
также в BIOS сетевой платы. Вся операция занимает не более двух минут,
после чего вы можете перезагрузить компьютер снова, чтобы пользователь
смог продолжить работать.
Что делает этот руткит? Да все, «чему вы его научите» (поскольку писать
этот руткит будете именно вы). Он может перехватывать все сетевые пакеты
и отправлять их на ват компьютер. А может и перехватывать все нажатия
клавиш и также по сети отправлять их на ваш компьютер - выполнять функции
сниффера (шпиона). При этом ваш руткит будет работать даже после
переустановки Windows. Это и есть аппаратно-программный руткит: не
отдельное устройство, а низкоуровневая программа, записанная в святая
святых - BIOS. Обычно аппаратно-программным способом реализуются
снифферы - снифферы сети или клавиатуры.
Существуют и чисто аппаратные снифферы (именно снифферы, а не руткиты
как таковые): физические устройства, подключаемые к компьютеру или
сети жертвы. Они очень просты в использовании: это готовые устройства,
для которых вам не нужно ни писать код, ни особо настраивать. Другое преимущество
аппаратных снифферов заключается в том, что их невозможно
обнаружить программно. Правда, дополнительное устройство может оказаться
заметно невооруженным глазом. Конечно, производители таких устройств
делают все возможное, чтобы замаскировать их, но сами понимаете:
как ни маскируй, а переходник между гнездом клавиатуры и штекером клавиатуры
будет виден.
Как и чисто аппаратные снифферы, аппаратно-программные руткиты трудно
поддаются обнаружению. Если вы установили обычный программный
руткит, то администратор может снять винчестер, подключить к другому
компьютеру и запустить специальное антируткитное средство или навороченный
антивирус, располагающий в том числе антируткитными функциями.
При этом с очень большой вероятностью ваш руткит будет обнаружен
и обезврежен.
А вот аппаратно-программный руткит переживет даже переформатирование
винчестера и переустановку Windows. Чтобы его удалить, нужно
«перепрошнть» BIOS, а пользователь, даже квалифицированный, этим
заниматься не будет. Конечно, существуют средства и для сканирования
BIOS, но до этого еще нужно додуматься. Значит, такой руткит проживет
в системе гораздо дольше, чем чисто программный, даже если это не входит
в намерения системного администратора.
Основной недостаток аппаратно-программных снифферов - это сложность
реализации. Не думайте, что модифицировать BIOS очень просто. К тому
же BIOS везде разный. Вы можете написать руткит (сниффер) для BIOS
от AWARD, но на компьютерах с BIOS от AMI он уже работать не будет. К
тому же BIOS может быть и одного производителя, но устанавливаться на
материнские платы разных производителей и, следовательно, функционировать
немного иначе. Это тоже нужно учитывать. Кстати, именно поэтому
в данной книге мы даже не будем пытаться что-то записать в BIOS.
Точно такая же ситуация и с сетевой платой. Сниффер пакетов, реализованный
чисто программно, с использованием средств операционной системы,
будет работать с любыми сетевыми платами, для которых установлен драйвер.
А вот аппаратный сниффер, написанный для сетевой платы Intel, не будет
работать на сетевой плате 3Com.
Кроме разницы в архитектуре, необходимо учитывать и разницу версий
BIOS. В общем, суть понятна: аппаратно-программные руткиты очень сильно
зависят от самого аппаратного обеспечения.
Другой недостаток состоит в необходимости физического доступа к компьютеру
или сети жертвы. Если аппаратно-программный сниффер еще возможно
установить удаленно, то в случае чисто аппаратного сниффера не
обойтись без работы руками. Правда, этот недостаток не очень существенен,
ведь обычно аппаратные снифферы устанавливаются «против своих»,
то есть физический доступ к сети у вас есть или вы можете его свободно
получить.
Идеально, если именно вы, крекер, администрируете эту сеть: вы сможете
правдоподобно объяснить наличие дополнительного сетевого устройства,
если оно будет обнаружено.