Ботнеты атакуют

3. Эволюция бота

Разобраться с тем, как появляются боты (единичные компьютеры, на которых установлено программное обеспечение, делающее их роботами, послушными воле удаленного злого гения) и каким образом они превращаются в ботнеты (армии, состоящие из тысяч подобных компьютеров, не имеющие общего географического положения, но, как правило, одного хозяина и аналогичную версию вредоносного кода), нам поможет пример атаки, произведенной на университет Аубурна. Этот инцидент был очень типичным для Анчеты. Для атаки использовались программы, основанные на стандартном коде Rbot/Rxbot, и уязвимость конкретного сервиса ОС Windows — LSASS. Первый вредоносный код был беспечно загружен с веб-сайта resili3nt.superihost.com. Среди псевдонимов, под которыми Анчета скрывался (а точнее, представлялся) в сети Интернет, был и Resili3nt, а также его варианты: resjames, resilient24, Resilient, ResilienT, ir Resilient. Исходным материалом, или сырьем, из которого Анчета создавал конечный вредоносный продукт, служили различные варианты исходников известных компьютерных вирусов: Rxbot, Lca3.exe, Winun.exe и Wininst.exe, которые легко найти в Интернете. Команды ботнетам поступают через каналы Internet Relay Chat (IRC) — всемирной сети, созданной для общения и обмена текстовыми сообщениями в реальном режиме времени. IRC — это не только предок современных сервисов мгновенного обмена сообщениями — этот дедушка очень хорошо себя чувствует сегодня и обеспечивает поддержку частных онлайновых бесед и общение миллионов пользователей на тысячах виртуальных каналов. Любой желающий, подключившись к любому IRC-серверу, может создать свой собственный канал — что-то вроде виртуального кабинета для общения — и пригласить для беседы других пользователей. Это удобное и быстрое транспортное средство не только для передачи текстовых сообщений, но и любых файлов из одной точки в другую по всему миру. Некоторые IRC-каналы используются для организации и управления хакерскими атаками. Всего через несколько секунд после того, как первая часть вредоносной программы проникла в университетскую сеть и обосновалась на одном из компьютеров, она установила связь с IRC-каналом, контролируемым хакером, и загрузила вторую — серверную — часть вируса, способную загружать ПО из Интернета по протоколу FTP (File Transfer Protocol). Затем на пораженный компьютер был загружен сканер — специальная программа для поиска других уязвимых компьютеров внутри локальной сети университета. По команде, полученной через IRC, зараженный компьютер начал процесс сканирования локальной сети университета Аубурна. Он выбирал те, у которых была доступна дыра в службе LSASS ОС Microsoft, и отправлял пакеты с данными по локальной сети, запросы на подключение через 445 порт, который Windows использует для организации общего доступа компьютеров локальной сети к таким ресурсам, как общие файлы и каталоги, принтеры и проч. Администратор университетской сети Уилсон наблюдал за происходящим. По его словам, это было похоже на то, как некто идет вдоль по улице и просто стучится во все двери подряд. Доступ к 445 порту был предусмотрительно закрыт на файрволле, но он предотвращал только обращения извне. Остановить атаку, которая происходила изнутри локальной сети, он был бессилен. Через несколько минут были инфицированы уже 47 компьютеров.

На сервере университета была установлена программа для обнаружения сетевых атак Snort — именно она заметила резкое повышение трафика обращений к 445 порту внутри университетской сети и предупредила об этом администратора по электронной почте. Обследовав зараженный компьютер, админ увидел все признаки заражения и типичный набор вредоносных файлов, которые впоследствии появились на каждой пораженной машине (FTP-сервер, программа удаленного управления, сканер и чат-клиент). Незамедлительно были предприняты меры по определению IP-адресов всех зараженных компьютеров и мест расположения сетевых маршрутизаторов, к которым они были подключены. Бригада техников начала обесточивать маршрутизаторы, пытаясь ограничить дальнейшее распространение вирусов по университетской сети, но инфекция расходилась быстрее, чем руки нажимали на выключатели. Затем Уилсон заметил, что в атаке наступил поворот. Он увидел, как чат-клиент вируса открыл адресную книгу студента на инфицированной машине и разослал свое сообщение по всему списку адресов, которые там были. Это было приглашение всем друзьям посетить уже знакомый нам сайт. Как только опасный код попадал на новую машину, цикл повторялся. Просматривая лог-файлы программы Snort, в которых были представлены все этапы развития атаки, Уилсон чувствовал, как мурашки бегут по коже. Это был не обычный червь или вирус, с которыми ему приходилось сталкиваться ранее — создавалось впечатление, что в локальной сети университета поселился некий злой разум. Он некоторое время жил, развивался и общался со своими хозяевами и сообщниками независимо от воли и желания настоящих владельцев локальной сети. Каждый инфицированный компьютер немедленно по каналам IRC отправлял свой IP-адрес и информацию о себе своему ботмастеру, чтобы тот знал, сколько и какие машины находятся в его власти. Со стороны все очень походило на старую компьютерную игру "Жизнь" (или Life), в которой живет, растет в объеме и развивается некая вирусная колония. Уилсон наблюдал, как когда-то послушные ему университетские компьютеры самостоятельно вступали в общение с IRC-каналами на серверах, разбросанных по всему миру — от Бразилии до Греции и США. Через несколько часов — после отправки около 7000 сообщений по каналам IRC — атака закончилась так же внезапно, как и началась, когда хакер ввел последнюю команду — "#Exit." Вторжение прекратилось, сетевой трафик пришел в обычную норму, но на руках администратора Уилсона оставалась целая армия компьютеров, превращенных в инфицированных зомби.

Боты сами по себе не всегда бывают плохими. При помощи языков низкоуровневого программирования — например, C++ или Ассемблера — можно создать небольшую программу для выполнения некоторых действий в онлайне, можно проверять уровень курсов акций на бирже, сравнивать цены товаров на различных коммерческих сайтах. Поисковая компания Google использует свой Googlebot, например, для того, чтобы индексировать и собирать в своей базе данных информацию с различных веб-сайтов. Термин "бот" появился задолго до того, как стал синонимом компьютерного вируса и инструментом атаки на компьютеры и сети. В IRC-сетях он до сих пор обозначает специальную программу, которая замещает собой живого человека и может поддерживать активность на IRC-канале даже в то время, когда к нему никто из пользователей не подключен. С ботом даже можно общаться, адресовать ему простые вопросы и получать ответы. Бот может контролировать и модерировать содержание бесед на канале, удалять с канала (kick) несдержанных на язык посетителей и даже блокировать (ban) возможность их дальнейшего появления. Вот такой вариант искусственного разума. Но если к его созданию приложит свою руку хакер, бот может доставить серьезные проблемы. При создании ботов используется стандартная модульная система, хорошо знакомая программистам всего мира — наборы команд и инструкций для выполнения отдельных задач могут быть легко добавлены или удалены в зависимости от потребностей автора (или редактора). К своей версии Rxbot Анчета добавил функцию поиска в сетевом окружении компьютеров с определенным набором уязвимостей включая уже известный нам LSASS. Служба LSASS сама предназначена для защиты общих сетевых ресурсов от несанкционированного доступа тех пользователей, которым неизвестен пароль доступа. Но в апреле 2004 г. Microsoft объявила о том, что на компьютерах под управлением ОС Windows XP или Windows 2000 существует уязвимость, обусловленная опасностью переполнения буфера (buffer overflow) этой службы. Хакер может получить полный доступ к системе включая право на установку программ, просмотр, редактирование и удаление файлов и данных или даже создание новых учетных записей пользователей с полнейшим набором прав и привилегий.

Буфер — это определенный участок оперативной памяти, зарезервированный для выполнения определенной задачи. Компьютерная программа сама создает буферы для хранения данных, которые могут ей понадобиться в дальнейшем. Если обмануть программу и переполнить эту область, появляется возможность разместить в памяти компьютера любой вредоносный набор команд. Хакер, атакующий службу LSASS, может просто утопить ее буфер в сотнях строк бессмысленной информации, смешанной с вполне реальными командами, которые компьютер должен выполнить. Если это произойдет, то хакер успешно авторизуется как зарегистрированный пользователь компьютера и может им управлять. Поток мусора подвешивает службу LSASS, но набор команд, которые отправил хакер, остается в оперативной памяти компьютера и обязательно будет выполнен, будь то приказ на перезагрузку компьютера или открытие и выполнение файла. Но проблемы такого рода в системе безопасности компьютеров нельзя отнести к техническим, так как виноват исключительно человеческий фактор. Через много месяцев после того, как об уязвимости в службе LSASS стало известно и даже компанией Microsoft был выпущен специальный патч для ее устранения, в Сети насчитывалось несколько миллионов компьютеров, на которых он просто не был установлен. Злоумышленники, которые действуют в виртуальном пространстве, постоянно находятся в поиске новых жертв и используют не только самые свежие лазейки и уязвимости, но и полный набор старых, ставших классическими, дыр. Время не стоит на месте. Совершенствуются программные технологии, и сегодня боты могут создаваться в виде руткитов (rootkit) — кода, который самостоятельно встраивает себя в операционную систему и может модифицировать ключевые функции, выполняемые ею. В варианте, который использовал Анчета, бот-программу можно было обнаружить — во всяком случае, ее могли найти специалисты, которые знали, что и где нужно искать. Она размещалась в определенной области, отведенной под задачи пользователя, вместе с такими стандартными приложениями, как веб-браузер и текстовый редактор. Но когда бот создается в виде руткита, он встраивает себя в ядро операционной системы (kernel) — то, что является ее сердцем — туда, где живут и вершатся невидимые и очень важные задачи и процессы, работают сетевые драйверы, компоненты, отвечающие за взаимодействие аппаратного и программного обеспечения. Так как руткит способен изменять ключевые функции операционной системы, он может скрыть вирус, сделать его невидимым. Например, если антивирусная программа обращается к операционной системе с запросом на доступ к определенному участку памяти в поисках вредоносного кода, руткит может перехватить это обращение и в ответ на запрос передать фальшивую информацию о том, что никаких вирусов там и в помине нету. Жизнь бота на инфицированной системе гораздо дольше, если он невидим антивирусной программе. Куда более серьезная опасность состоит в том, что квалифицированный ботмастер может использовать руткит для того, чтобы встроить вредоносный код в аппаратное обеспечение, например, через микросхему памяти EPROM (Erasable Programmable Read-Only Memory), где хранятся первоначальные данные и наборы команд, используемые при включении и загрузке компьютера. Избавиться от такого вируса без отвертки невозможно.

Самой простой и распространенной лазейкой для проникновения вирусов и прочих вредоносных программ в компьютеры и корпоративные сети остается человеческий фактор, когда беспечный пользователь соглашается пойти по предложенной интернет-ссылке. Например, кто-то из сотрудников компании берет на выходные свой ноутбук домой, чтобы немного поработать или заняться поиском информации в сети Интернет. Попутно, ничего не подозревая, он может загрузить из Сети безопасную с виду программу — хранитель экрана или игру. Троянские кони известны тем, что умеют хорошо прятаться внутри других, безобидных, программ. Вернувшись в понедельник в офис, работник подключает свой компьютер к корпоративной локальной сети, и начинается представление: на сцену выходит вирус и рассылает всем коллегам сообщение следующего вида: "Привет, дружище, я отлично провел выходные, посмотри, какие чудесные фотки!" По предложенной гиперссылке на каждый компьютер будет загружен свежий вирус и превратит его в бот. Так как сообщение приходит от вполне реального знакомого человека, практически никто не будет долго раздумывать и сомневаться перед тем, как нажать клавишу мышки. Подобные методы социальной инженерии не только очень эффективны — их использование постоянно расширяется. Хакеры могут поражать компьютеры и без хитроумных программ — они играют на доверчивости, а иногда и на такой человеческой слабости, как глупость. Для того, чтобы поймать ботмастера — даже такого, который открыто рекламирует свои услуги потенциальным клиентам в IRC-чате, — нужно время. За Анчетой ФБР наблюдало четыре месяца, а он старательно заметал свои следы: менял как перчатки интернет-провайдеров, через которых выходил на связь, адреса электронной почты, доменные имена и IRC-каналы, псевдонимы, под которыми выступал в чатах.

Окончание следует

Екатерина Грень


Компьютерная газета. Статья была опубликована в номере 23 за 2006 год в рубрике безопасность

©1997-2024 Компьютерная газета