|
|
Любая ценная информация, хранимая в компьютерах, нуждается в надежной защите от злоумышленников. Сейчас эту аксиому вряд ли кто решится оспаривать всерьез. Однако относительно степени защищенности информации у специалистов имеются значительные разногласия. И для разногласий этих есть довольно веские основания.
Практика показывает, что одновременно с развитием средств компьютерной защиты происходит совершенствование средств нападения. Хакерские атаки становятся все более разнообразными и изощренными. Поэтому однозначно и со знанием дела сказать, каких из них следует опасаться в первую очередь, а на какие можно не обращать особого внимания, сегодня не в состоянии никто. О компьютерных вирусах теперь знает каждый. Тем не менее существует и другая разновидность вредоносных программ, о которой должны иметь представление все без исключения пользователи компьютерных систем. Это так называемая программная закладка.
Закладка представляет собой программу, скрытно внедренную в компьютерную систему и позволяющую внедрившему ее злоумышленнику осуществлять несанкционированный доступ к ресурсам этой системы. Программные закладки опасны в первую очередь тем, что, становясь частью защищаемой компьютерной системы, они способны предпринимать активные действия для маскировки своего присутствия в системе. Поэтому неудивительно, что в условиях дефицита развитых средств борьбы с программными закладками выявление подобного рода вредоносных программ происходит чаще всего либо благодаря ошибкам, допущенным хакерами при их создании, либо совершенно случайно.
Одной из наиболее распространенных разновидностей программных закладок являются перехватчики паролей пользователей операционных систем. Эти закладки перехватывают пароли, применяемые для регистрации пользователей операционной системы, а также для определения их легальных полномочий и прав доступа к компьютерным ресурсам.
Перехватчики паролей – явление отнюдь не новое в мире компьютеров. В свое время они разрабатывались и для OS/370, и для Unix, и для DOS. Их поведение в общем случае является довольно традиционным: типовой перехватчик паролей обманным путем завладевает паролями, вводимыми пользователями при входе в операционную систему, а затем переписывает эти пароли туда, откуда они могут без особого труда быть извлечены злоумышленником или его сообщником. Различия между перехватчиками паролей касаются только способа, который применяется ими для получения пользовательских паролей. Соответственно все перехватчики паролей делятся на три типа: имитаторы, фильтры и заместители.
Перехватчики паролей этого типа работают по следующему алгоритму. Злоумышленник внедряет в операционную систему программный модуль, который имитирует приглашение пользователю зарегистрироваться для того, чтобы войти в систему. Затем внедренный модуль (в принятой терминологии – имитатор) переходит в режим ожидания ввода пользовательского идентификатора и пароля. После того, как пользователь идентифицирует себя и задаст свой пароль, имитатор сохраняет введенные пользователем данные там, где они доступны злоумышленнику. Далее имитатор инициирует выход из системы (что в большинстве случаев можно сделать программным путем), и в результате перед глазами у ничего не подозревающего пользователя появляется еще одно, но на этот раз уже настоящее регистрационное приглашение для входа в систему.
Обманутый пользователь, видя, что ему предлагается еще раз ввести пароль, приходит к выводу о том, что он допустил какую-то ошибку во время предыдущего ввода пароля, и послушно повторяет всю процедуру входа в систему заново. Некоторые имитаторы для пущей убедительности выдают на экран терминала правдоподобное сообщение о якобы совершенной пользователем ошибке. Например, такое: "Неверный пароль. Попробуйте еще раз".
Написание имитатора не требует от его создателя каких-либо особых навыков. Злоумышленнику, умеющему программировать на одном из универсальных языков программирования (к примеру, на бейсике), понадобятся на это считанные часы. Единственная трудность, с которой он может столкнуться, состоит в том, чтобы отыскать в документации соответствующую программную функцию, реализующую выход пользователя из системы.
Перехват пароля зачастую облегчают сами разработчики операционных систем, которые не затрудняют себя созданием усложненных по форме приглашений пользователю зарегистрироваться для входа в систему. Подобное пренебрежительное отношение характерно для большинства версий операционной системы Unix, в которых регистрационное приглашение состоит из двух текстовых строк, выдаваемых поочередно на экран терминала:
login:
password:
Чтобы подделать такое приглашение, не нужно быть семи пядей во лбу. Однако само по себе усложнение внешнего вида приглашения не создает для хакера, задумавшего внедрить в операционную систему имитатор, каких-либо непреодолимых препятствий. Для этого требуется прибегнуть к более сложным и изощренным защитным мерам. В качестве примера операционной системы, в которой такие меры в достаточно полном объеме реализованы на практике, можно привести Windows NT.
Системный процесс WinLogon, отвечающий в операционной системе Windows NT за аутентификацию пользователей, имеет свой собственный Рабочий стол – совокупность окон, одновременно видимых на экране дисплея. Этот Рабочий стол называется Рабочим столом аутентификации. Никакой другой процесс, в том числе и имитатор, не имеет доступа к Рабочему столу аутентификации и не может расположить на нем свое окно.
После запуска Windows NT на экране компьютера возникает так называемое начальное окно Рабочего стола аутентификации, содержащее указание нажать на клавиатуре комбинацию клавиш Ctrl+Alt+Del. Сообщение о нажатии этих клавиш передается только системному процессу WinLogon, а для остальных процессов, в частности для всех прикладных программ, их нажатие происходит совершенно незаметно. Далее производится переключение на другое, так называемое регистрационное окно Рабочего стола аутентификации. В нем-то как раз и размещается приглашение пользователю ввести свое идентификационное имя и пароль, которые будут восприняты и проверены процессом WinLogon.
Для перехвата пользовательского пароля внедренный в Windows NT имитатор обязательно должен уметь обрабатывать нажатие пользователем комбинации клавиш Ctrl+Alt+Del. В противном случае произойдет переключение на регистрационное окно Рабочего стола аутентификации, имитатор станет неактивным и не сможет ничего перехватить, поскольку все символы пароля, введенные пользователем, минуют имитатор и станут достоянием исключительно системного процесса WinLogon. Как уже говорилось, процедура регистрации в Windows NT устроена таким образом, что нажатие Ctrl+Alt+Del проходит бесследно для всех процессов, кроме WinLogon, и поэтому пользовательский пароль поступит на вход именно ему и никому более.
Конечно, имитатор может попытаться воспроизвести не начальное окно Рабочего стола аутентификации (в котором высвечивается указание пользователю одновременно нажать Ctrl+Alt+Del), а регистрационное (где содержится приглашение ввести идентификационное имя и пароль пользователя). Однако при отсутствии в системе имитаторов регистрационное окно автоматически заменяется на начальное по прошествии короткого промежутка времени (в зависимости от версии Windows NT он может составлять от 30 секунд до 1 минуты), если в течение этого промежутка пользователь не предпринимает никаких попыток зарегистрироваться в системе. Таким образом, сам факт слишком долгого присутствия на экране регистрационного окна должен насторожить пользователя Windows NT и заставить его тщательно проверить свою компьютерную систему на предмет наличия в ней программных закладок.
Подводя итог сказанному, можно отметить, что степень защищенности Windows NT от имитаторов достаточно высока. Рассмотрение защитных механизмов, реализованных в этой операционной системе, позволяет сформулировать два необходимых условия, соблюдение которых является обязательным для обеспечения надежной защиты от имитаторов:
• системный процесс, который при входе пользователя в систему получает от него соответствующие регистрационное имя и пароль, должен иметь свой собственный Рабочий стол, недоступный другим процессам;
• переключение на регистрационное окно Рабочего стола аутентификации должно происходить абсолютно незаметно для прикладных программ, которые к тому же никак не могут повлиять на это переключение (например, запретить его).
К сожалению, эти два условия ни в одной из операционных систем, за исключением Windows NT, не соблюдаются. Поэтому для повышения их защищенности от имитаторов можно порекомендовать воспользоваться административными мерами. Например, обязать каждого пользователя немедленно сообщать системному администратору, когда вход в систему оказывается невозможен с первого раза, несмотря на корректно заданное идентификационное имя и правильно набранный пароль.
Фильтры "охотятся" за всеми данными, которые пользователь операционной системы вводит с клавиатуры компьютера. Самые элементарные фильтры просто скидывают перехваченный клавиатурный ввод на жесткий диск или в какое-то другое место, к которому имеет доступ злоумышленник или его сообщник. Более изощренные программные закладки этого типа подвергают перехваченные данные анализу и отфильтровывают информацию, имеющую отношение к пользовательским паролям.
Фильтры являются резидентными программами, перехватывающими одно или несколько прерываний, которые связаны с обработкой сигналов от клавиатуры. Эти прерывания возвращают информацию о нажатой клавише и введенном символе, которая анализируется фильтрами на предмет выявления данных, имеющих отношение к паролю пользователя.
Известны несколько фильтров, созданных специально для различных версий операционной системы DOS. В 1997 году отмечено появление фильтров для операционных систем Windows 3.11 и Windows 95.
Надо сказать, что изготовить подобного рода программную закладку не составляет большого труда. В операционных системах Windows 3.11 и Windows 95 предусмотрен специальный программный механизм, с помощью которого в них решается ряд задач, связанных с получением доступа к клавиатурному вводу, в том числе и проблема поддержки национальных раскладок клавиатур. К примеру, любой клавиатурный русификатор для Windows представляет собой самый что ни на есть настоящий фильтр, поскольку призван перехватывать все данные, вводимые пользователем с клавиатуры компьютера. Нетрудно "доработать" его таким образом, чтобы вместе со своей основной сервисной функцией (поддержка национальной раскладки клавиатуры) он заодно выполнял бы действия по перехвату паролей. Тем более, что во многих учебных пособиях и руководствах пользователя по операционным системам Windows имеются исходные тексты программных русификаторов клавиатуры. "Перепрофилировав" этот русификатор так, чтобы он взял на себя выполнение функций перехватчика паролей, его можно встроить перед настоящим русификатором или после него, и в результате вся информация, вводимая пользователем с клавиатуры, пойдет и через перехватчик. Таким образом задача создания фильтра становится настолько простой, что не требует наличия каких-либо специальных знаний у злоумышленника. Ему остается только незаметно внедрить изготовленную им закладку в операционную систему и умело замаскировать ее присутствие.
В общем случае можно утверждать, что если в операционной системе разрешается переключать клавиатурную раскладку во время ввода пароля, то для этой операционной системы возможно создание фильтра. Поэтому, чтобы обезопасить операционную систему от фильтров, необходимо обеспечить выполнение следующих трех условий:
• во время ввода пароля переключение раскладок клавиатуры не разрешается;
• конфигурировать цепочку программных модулей, участвующих в работе с паролем пользователя, может только системный администратор;
• доступ к файлам этих модулей имеет исключительно системный администратор.
Соблюсти первое из этих условий в локализованных для России версиях операционных систем принципиально невозможно. Дело в том, что средства создания учетных пользовательских записей на русском языке являются неотъемлемой частью таких операционных систем. Только в англоязычных версиях операционных систем Windows NT и Unix предусмотрены средства, позволяющие поддерживать уровень безопасности, при котором соблюдаются все три перечисленные условия.
Заместители полностью или частично подменяют собой программные модули операционной системы, отвечающие за аутентификацию пользователей. Подобного рода перехватчики паролей могут быть созданы для работы в среде практически любой многопользовательской операционной системы. Трудоемкость написания заместителя определяется сложностью алгоритмов, реализуемых подсистемой аутентификации, и интерфейсов между ее отдельными модулями. Также при оценке трудоемкости следует принимать во внимание степень документированности этой подсистемы. В целом можно сказать, что задача создания заместителя значительно сложнее задачи написания имитатора или фильтра. Поэтому фактов использования подобного рода программных закладок злоумышленниками пока отмечено не было. Однако в связи с тем, что в настоящее время все большее распространение получает операционная система Windows NT, имеющая мощные средства защиты от имитаторов и фильтров, в самом скором будущем от хакеров следует ожидать более активного использования заместителей в целях получения несанкционированного доступа к компьютерным системам.
Поскольку заместители берут на себя выполнение функций подсистемы аутентификации, перед тем, как приступить к перехвату паролей пользователей операционной системы, они должны выполнить следующие действия:
• подобно компьютерному "вирусу" внедриться в один или несколько системных файлов;
• использовать интерфейсные связи между программными модулями подсистемы аутентификации для встраивания себя в цепочку обработки введенного пользователем пароля.
Для того чтобы защититься от внедрения заместителя в компьютерную систему, ее администраторы должны строго соблюдать адекватную политику безопасности. И что особенно важно, подсистема аутентификации должна быть одним из самых защищенных мест в операционной системе. Однако, как показывает практика, администраторы, подобно всем людям, склонны к совершению ошибок, и следовательно соблюдение адекватной политики безопасности в течение неограниченного периода времени является невыполнимой задачей. Кроме того, как только заместитель попал в компьютерную систему, любые меры по защите от внедрения программных закладок перестают быть адекватными, поэтому необходимо предусмотреть использование эффективных средств обнаружения и удаления внедренных перехватчиков паролей. Это значит, что от администратора неукоснительно требуется вести самый тщательный контроль целостности исполняемых системных файлов и интерфейсных функций, используемых подсистемой аутентификации для решения своих задач.
Но и эти меры могут оказаться недостаточно эффективными. Ведь машинный код заместителя выполняется в контексте операционной системы, и поэтому заместитель может предпринимать особые меры, чтобы максимально затруднить свое обнаружение. Например, он может перехватывать системные вызовы, используемые администратором для выявления программных закладок, с целью подмены возвращаемой ими информации или фильтровать сообщения, регистрируемые подсистемой аудита, чтобы отсеивать те из них, которые свидетельствуют о его присутствии в компьютере.
Перехватчики паролей представляют реальную угрозу безопасности современных операционных систем. Чтобы отвести от себя эту угрозу, требуется реализовать целый комплекс административных мер и программно-аппаратных средств защиты. Надежная защита от перехватчиков паролей может быть построена, только если операционная система обладает определенными возможностями, затрудняющими работу перехватчиков. Они были подробно описаны выше, и не имеет смысла снова на них останавливаться. Однако необходимо еще раз отметить, что единственной операционной системой, в которой построение такой защиты возможно, является Windows NT. Да и то с оговорками, поскольку все равно ее придется снабдить дополнительными программными средствами, повышающими степень ее защищенности. В частности, в состав Windows NT необходимо ввести контроль целостности системных файлов и интерфейсных связей подсистемы аутентификации.
Кроме того, для надежной защиты от перехватчиков паролей администратору операционной системы требуется соблюдать меры безопасности, когда только он может:
• конфигурировать цепочки программных модулей, участвующих в процессе аутентификации пользователей;
• осуществлять доступ к файлам этих программных модулей;
• конфигурировать саму подсистему аутентификации.
И наконец, при организации защиты от перехватчиков паролей всегда следует иметь в виду, что ни неукоснительное соблюдение адекватной политики безопасности, ни использование операционной системы, имеющей в своем составе средства, существенно затрудняющие внедрение перехватчиков паролей и облегчающие их своевременное обнаружение, ни дополнительная реализация контроля за целостностью системных файловой и интерфейсных связей сами по себе не могут служить залогом надежной защиты информации в компьютере. Все эти меры должны осуществляться в едином комплексе. Ведь жертвой перехватчика паролей может стать всякий пользователь операционной системы, поскольку ее администраторы такие же люди, время от времени и они допускают ошибки в своей работе, а для внедрения перехватчика паролей достаточно всего одной ошибки.
источник: http://www.submarine.ru/