Материал: Троянские программы в ОС Windows

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

.3 Как распознать троянскую программу

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

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

Может быть, иначе обстоит дело с размером файла? Отнюдь. Нередко текстовый файл, который изначально занимал, скажем, 8 Кбайт дискового пространства, после редактирования и сохранения имеет тот же самый размер. Несколько иначе ведут себя двоичные файлы. Вставить в чужую программу фрагмент собственного кода так, чтобы она не утратила работоспособности и в откомпилированном виде сохранила свой размер, достаточно непросто. Поэтому размер файла является более надежным показателем, чем отметка о времени внесения в него последних изменений.

Злоумышленник, решивший запустить в компьютер троянца, обычно пытается сделать его частью системного файла. Такие файлы входят в дистрибутив операционной системы и их присутствие на любом компьютере, где эта операционная система установлена, не вызывает никаких подозрений. Однако любой системный файл имеет вполне определенную длину. Если данный атрибут будет каким-либо образом изменен, это встревожит пользователя.

Зная это, злоумышленник постарается достать исходный текст соответствующей программы и внимательно проанализирует его на предмет присутствия в нем избыточных элементов, которые могут быть удалены безо всякого ощутимого ущерба. Тогда вместо найденных избыточных элементов он вставит в программу своего троянца и перекомпилирует ее заново. Если размер полученного двоичного файла окажется меньше или больше размера исходного, процедура повторяется. И так до тех пор, пока не будет получен файл, размер которого в наибольшей степени близок к оригиналу (если исходный файл достаточно большой, этот процесс может растянуться на несколько дней).

Итак, в борьбе с троянцами положиться на отметку о времени последней модификации файла и его размер нельзя, поскольку злоумышленник может их довольно легко подделать. Более надежной в этом отношении является так называемая контрольная сумма файла. Для ее подсчета элементы файла суммируются, и получившееся в результате число объявляется его контрольной суммой. Например, в операционной системе SunOS существует специальная утилита sum, которая выводит на устройство стандартного вывода STDOUT контрольную сумму файлов, перечисленных в строке аргументов этой утилиты.

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

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

Средства борьбы с троянцами в операционных системах семейства Windows традиционно являются частью их антивирусного программного обеспечения. Поэтому, чтобы отлавливать Back Orifice, Net Bus, SubSeven и другие подобные им троянские программы, необходимо обзавестись самыми современным антивирусами типа: ESET NOD32, DoctorWEB, Антивирус Касперского, Anti-Trojan и т.п.

Тем, кто хочет иметь в своем распоряжении утилиту, предназначенную именно для обнаружения троянцев в компьютерах, которые работают под управлением операционных систем семейства Windows (W9x, Windows NT, 2000 Professional и Server, XP Home Edition и XP Professional Windows 2003, Windows Vista, Windows 7) можно посоветовать популярную программу AVZ (Рис.1).

Антивирусная утилита AVZ предназначена для обнаружения и удаления:

·        SpyWare и AdWare модулей - это основное назначение утилиты

·              Dialer (Trojan.Dialer)

·              Троянских программ

·              BackDoor модулей

·              Сетевых и почтовых червей

·              TrojanSpy, TrojanDownloader, TrojanDropper

Утилита является прямым аналогом программ TrojanHunter и LavaSoft Ad-aware 6. Первичной задачей программы является удаление SpyWare и троянских программ.

Особенностями утилиты AVZ (помимо типового сигнатурного сканера) является:

·        Микропрограммы эвристической проверки системы. Микропрограммы проводят поиск известных SpyWare и вирусов по косвенным признакам - на основании анализа реестра, файлов на диске и в памяти.

·              Обновляемая база безопасных файлов. В нее входят цифровые подписи десятков тысяч системных файлов и файлов известных безопасных процессов. База подключена ко всем системам AVZ и работает по принципу "свой/чужой" - безопасные файлы не вносятся в карантин, для них заблокировано удаление и вывод предупреждений, база используется антируткитом, системой поиска файлов, различными анализаторами. В частности, встроенный диспетчер процессов выделяет безопасные процессы и сервисы цветом, поиск файлов на диске может исключать из поиска известные файлы (что очень полезно при поиске на диске троянских программ);

·              Встроенная система обнаружения Rootkit. В системе Windows термином "RootKit" принято называть программу, которая внедряется в систему и перехватывает системные функции или производит замену системных библиотек. Поиск RootKit идет без применения сигнатур на основании исследования базовых системных библиотек на предмет перехвата их функций. AVZ может не только обнаруживать RootKit, но и производить корректную блокировку работы UserMode RootKit для своего процесса и KernelMode RootKit на уровне системы. Противодействие RootKit распространяется на все сервисные функции AVZ, в результате сканер AVZ может обнаруживать маскируемые процессы, система поиска в реестре "видит" маскируемые ключи и т.п. Антируткит снабжен анализатором, который проводит обнаружение процессов и сервисов, маскируемых RootKit. Главной особенностью является универсальная система обнаружения и блокирования KernelMode RootKit, работоспособная под Windows NT, Windows 2000 pro/server, XP, XP SP1, XP SP2, XP SP3 Windows 2003 Server, Windows 2003 Server SP1

·              Детектор клавиатурных шпионов (Keylogger) и троянских DLL. Поиск Keylogger и троянских DLL ведется на основании анализа системы без применения базы сигнатур, что позволяет достаточно уверенно детектировать заранее неизвестные троянские DLL и Keylogger; и пр.

·             

Рис.1. Внешний вид антивирусной утилиты AVZ

6. Клавиатурные шпионы


Одна из наиболее распространенных разновидностей программных закладок - клавиатурные шпионы. Такие программные закладки нацелены на перехват паролей пользователей операционной системы, а также на определение их легальных полномочий и прав доступа к компьютерным ресурсам.

Клавиатурные шпионы - явление отнюдь не новое в мире компьютеров. В свое время они разрабатывались и для OS/370, и для UNIX, и для DOS. Их поведение в общем случае является довольно традиционным: типовой клавиатурный шпион обманным путем завладевает пользовательскими паролями, а затем переписывает эти пароли туда, откуда их может без особого труда извлечь злоумышленник. Различия между клавиатурными шпионами касаются только способа, который применяется ими для перехвата пользовательских паролей. Соответственно все клавиатурные шпионы делятся на три типа - имитаторы, фильтры и заместители.

.1 Имитаторы

Клавиатурные шпионы этого типа работают по следующему алгоритму. Злоумышленник внедряет в операционную систему программный модуль, который имитирует приглашение пользователю зарегистрироваться для того, чтобы войти в систему. Затем внедренный модуль (в принятой терминологии - имитатор) переходит в режим ожидания ввода пользовательского идентификатора и пароля. После того как пользователь идентифицирует себя и введет свой пароль, имитатор сохраняет эти данные там, где они доступны злоумышленнику. Далее имитатор инициирует выход из системы (что в большинстве случаев можно сделать программным путем, используя системную процедуру ShutDown), и в результате перед глазами у ничего не подозревающего пользователя появляется еще одно, но на этот раз уже настоящее приглашение для входа в систему.

Обманутый пользователь, видя, что ему предлагается еще раз внести пароль приходит к выводу о том, что он допустил какую-то ошибку во время предыдущего ввода пароля, и послушно повторяет всю процедуру входи в систему заново. Некоторые имитаторы для убедительности выдают на экран монитора правдоподобное сообщение о, якобы, совершенной пользователем ошибке. Например, такое: "НЕВЕРНЫЙ ПАРОЛЬ. ПОПРОБУЙТЕ ЕЩЕ РАЗ".

Написание имитатора не требует от его создателя каких-либо особых навыков. Злоумышленнику, умеющему программировать на одном из универсальных языков программирования (к примеру, на языке BASIC), понадобятся на это считанные часы. Единственная трудность, с которой он может столкнуться, состоит в том, чтобы отыскать в документации соответствующую программную функцию, реализующую выход пользователя из системы.

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

login:

password:

Чтобы подделать такое приглашение, не нужно быть семи пядей во лбу. Однако само по себе усложнение внешнего вида приглашения не создает для хакера, задумавшего внедрить в операционную систему имитатор, каких-либо непреодолимых препятствий. Для этого требуется прибегнуть к более сложным и изощренным мерам защиты. В качестве примера операционной системы, в которой такие меры в достаточно полном объеме реализованы на практике, можно привести ОС семейства Windows или Apple Macintosh.

Системный процесс WinLogon, отвечающий в операционной системе Windows за аутентификацию пользователей, имеет свой собственный рабочий стол - совокупность окон, одновременно видимых на экране дисплея. Этот рабочий стол называется столом аутентификации. Никакой другой процесс, в том числе и имитатор, не имеет доступа к рабочему столу аутентификации и не может расположить на нем свое окно.

После запуска Windows на экране компьютера возникает так называемое начальное окно рабочего стола аутентификации, содержащее указание нажать на клавиатуре клавиши Ctrl + Alt + Del. Сообщение о нажатии этих клавиш передается только системному процессу WinLogon, а для остальных процессов, в частности, для всех прикладных программ, их нажатие происходит совершенно незаметно. Далее производится переключение на другое, так называемое регистрационное окно рабочего стола аутентификации. В нем-то как раз и размещается приглашение пользователю ввести свое идентификационное имя и пароль, которые будут восприняты и проверены процессом WinLogon.

Схематично работу такого вируса можно представить следующим образом:

. При первом получении управления в процессе загрузки MBR (Master Boot Record) вирус перехватывает int 16h;

. Обработчик прерывания int 16h следит за вектором int 21h, вызывая его недокументированной функцией AX=0babch - контроль на перехват;

. Если вектор int 21h не отвечает стандартным образом, то считается, что необходимо выполнить перехват int 21h;

. Обработчик int 21h следит за сменой диска, контролируя функцию 0eh.

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

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

§   переключение на регистрационное окно рабочего стола аутентификации должно происходить абсолютно незаметно для прикладных программ, которые к тому же никак не могут повлиять на это переключение (например, запретить его).

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

.2 Фильтры

 

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

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

Известны несколько фильтров, созданных специально для различных версий операционной системы DOS. В 1997 г. отмечено появление фильтров для операционных систем Windows 3.11 и Windows 95.

Надо сказать, что изготовить подобного рода программную закладку не составляет большого труда. В операционных системах Windows 3.11 и старше предусмотрен специальный программный механизм, с помощью которого в них решается ряд задач, связанных с получением доступа к вводу с клавиатуры, в том числе и проблема поддержки национальных раскладок клавиатур. К примеру, любой клавиатурный русификатор для Windows представляет собой самый, что ни на есть настоящий фильтр, поскольку призван перехватывать все данные, вводимые пользователем с клавиатуры компьютера. Нетрудно "доработать" его таким образом, чтобы вместе со своей основной функцией (поддержка национальной раскладки клавиатуры) он заодно выполнял бы и действия по перехвату паролей. Тем более что во многих учебных пособиях и руководствах пользователя операционных систем Windows имеются исходные тексты программных русификаторов клавиатуры. "Перепрофилировав" этот русификатор так, чтобы он взял на себя выполнение функций клавиатурного шпиона, его можно встроить перед настоящим русификатором или после него, и в результате вся информация вводимая пользователем с клавиатуры, пойдет и через клавиатурного шпиона. Таким образом, задача создания фильтра становится такой простой, что не требует наличия каких-либо специальных знаний у злоумышленника. Ему остается только незаметно внедрить изготовленную им программную закладку в операционную систему и умело замаскировать ее присутствие.