Материал: Анализ методов перехвата паролей пользователей компьютерных систем и методов противодействия им

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

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

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

Популярные Снифферы

Снифферы являются инструментами как для хакера, так и для системных администраторов. Следующий список содержит наиболее популярные снифферы:: Это - один из первых снифферов и он по прежнему хорош. Этот сниффер сохраняет первые 400 байтов пакета по умолчанию, но может быть запрограммирован так, чтобы он захватывал целую сессию и вырубал пароль.: Это - тоже хороший сниффер поскольку скорректирован более четко чем Sniffit, имеет кучу опций.: Очень знаменитый сниффер. Считается, профессиональным административным средством.: известная, очень квалифицированная группа хакеров ADM написала хороший сниффер.: известный сниффер разработанный для платформы Linux .: Это хорошо известный сниффер.: этот сниффер сделан под платформу SunOS. Возможно один из наиболее известных снифферов т.к. был сделан почти десять лет назад.: сниффер для Solaris. Это - просто модификация Sunsniff разработанная, для компиляции на платформу Solaris.

Есть много хороших снифферов подобно Snort, которые умеют работать на многочисленных платформах.

Обнаружение и Предотвращение атаки

Если необходимо проверить сеть на наличие снифферов, следующие программы могут сильно в этом помочь. Первая программа которая вам поможет - promisc.c, написаная на С. Когда она скомпилируется, она проверит локальную машину с любым типом карты NICs. Следующая программа тоже на Сneped.c, умеет делать дистанционные проверки на любые типы снифферов, но она компилируется только под Linux. Для поиска вручную, следует набрать команду 'ifconfig -', и посмотреть все сетевые интерфейсы, которые будут носить флаг PROMISC. Не так давно комманда L0pht выпустила бета-версию программы AntiSniff<#"871951.files/image001.jpg">

рис. 1. Модель аппаратного ввода системы Windows

При возникновении неких событии ввода (нажатии клавиш, перемещении мыши) события обрабатываются соответствующим драйвером и помещается в системную очередь аппаратного ввода. В системе имеется особый поток необработанного ввода, называемый RIT (RawInputThread), который извлекает события из системной очереди и преобразует их в сообщения. Полученные сообщения помещаются в конец очереди виртуального ввода одного из потоков (виртуальная очередь потока называется VIQ - VirtualizedInputQueue-). При этом RIT сам выясняет, в очередь какого конкретно потока необходимо поместить событие. Для событий мыши поток определяется поиском окна, над которым расположен курсор мыши. Клавиатурные события отправляются только одному потоку - так называемому активному потоку (т.е. потоку, которому принадлежит окно, с которым работает пользователь). На самом деле это не совсем так - в частности, на рисунке 1 показан поток A, не имеющий очереди виртуального ввода. В данном случае получатся, что потоки A и B совместно используют одну очередь виртуального ввода. Это достигается при помощи вызова API функции AttachThreadInput, которая позволяет одному потоку подключиться к очереди виртуального ввода другого потока. Следует отметить, что поток необработанного ввода отвечает за обработку специальных сочетаний клавиш, в частности Alt+Tab и Ctrl+Alt+Del.

Слежение за клавиатурным вводом при помощи ловушек

Данная методика является классической для клавиатурных шпионов. Суть метода состоит в применении механизма ловушек (hook) операционной системы. Ловушки позволяют наблюдать за сообщениями, которые обрабатываются окнами других программ. Установка и удаление ловушек производится при помощи хорошо документированных функций API библиотеки user32.dll (функция SetWindowsHookEx позволяет установить ловушку, UnhookWindowsHookEx - снять ее). При установке ловушки указывается тип сообщений, для которых должен вызываться обработчик ловушки. В частности, есть два специальных типа ловушки WH_KEYBOARD и WH_MOUSE - для регистрации событий клавиатуры и мыши соответственно. Ловушка может быть установлена для заданного потока и для всех потоков системы. Ловушка для всех потоков системы очень удобна для построения клавиатурного шпиона.

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

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

Слежение за клавиатурным вводом при помощи опроса клавиатуры

Данная методика основана на периодическом опросе состояния клавиатуры. Для опроса состояния клавиш в системе предусмотрена специальная функция GetKeyboardState, возвращающая массив из 255 байт, в котором каждый байт содержит состояние определенной клавиши на клавиатуре. Данный метод уже не требует внедрения DLL в GUI процессы и в результате шпион менее заметен.

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

Недостатком клавиатурных шпионов такого типа является необходимость периодического опроса состояния клавиатуры с достаточно высокой скоростью, не менее 10-20 опросов в секунду.

Слежение за клавиатурным вводом при помощи перехвата API функций

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

Простейшим способом может быть перехват функций GetMessage, PeekMessage и TranslateMessage библиотеки User32, что позволит вести мониторинг всех сообщений, получаемых GUI приложениями.

Аппаратные клавиатурные шпионы

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

·              Установка устройства слежения в разрыв кабеля клавиатуры (например, устройство может быть выполнено в виде переходника PS/2);

·              Встраивание устройства слежения в клавиатуру;

·              Считывание данных путем регистрации ПЭМИН (побочных электромагнитных излучений и наводок);

·              Визуальное наблюдение за клавиатурой

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

Пример клавиатурного шпиона

 

Рис.2 Диалоговое окно программы «Actual Spy»

В настоящее время сотни клавиатурных шпионов, рассмотрим в качестве примера достаточно распространенную коммерческую программу ActualSpy(Диалоговое окно программы (#"871951.files/image003.jpg">

Рис. 3 Интерфейс программы Anti-keylogger

Программа Anti-keylogger работает в фоновом режиме и производит обнаружение программ, подозреваемых в слежении за клавиатурой. В случае необходимости можно вручную разблокировать работу любой из обнаруженных программ (например, на рисунке видно, что в список «шпионов» попали MSCTF и программа закачки из Интернета FlashGet). Для обнаружения клавиатурных шпионов не применяются базы сигнатур, обнаружение ведется эвристическими методами.

Тестирование программы показало, что она эффективно противодействует клавиатурным шпионам, основанным на применении ловушек, циклического опроса и клавиатурного драйвера-фильтра.

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

клавиатурный шпион защита пароль

Глава 2. Основные методы противодействия перехвату паролей

.1 Противодействие раскрытию и угадыванию пароля

Раскрытие - свободный доступ к секретному паролю со стороны злоумышленника. Существует множество причин утечки секретной информации. Например, несекретный режим хранения: легальный пользователь, чтобы не забыть пароль, записывает его на бумаге. В некоторых случаях пароли хранятся в открытых файлах данных или исполняемых программ. Необходимую секретную информацию можно получить, просматривая распечатки системных протоколов. А разве нельзя, в конце концов, просто позвонить системному администратору, представиться легальным пользователем и потребовать замены пароля? Очевидно, что угроза раскрытия усугубляется в случае, если один и тот же пароль известен группе пользователей.

Меры противодействия раскрытию сводятся к следующему:

• разъяснение специфики существующих угроз;

• строгая политика безопасности;

• регулярная смена паролей;

• индивидуальные пароли;

• секретные методы ввода и хранения паролей;

• легко запоминающиеся пароли.

.2 Противодействие пассивному перехвату

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

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

Предположим: заданы пароль ри уникальный идентификатор пользователя id. Для получения доступа пользователь (или злоумышленник) вводит идентификатор id и некоторый пароль р'. Вычисленное значение хэш-функции от введенного пароля q' = h(p'} и идентификатор id передаются проверяющему. В базе данных проверяющего для каждого id содержится значение q = h(p). В случае q' = q проверяющий заключает, что введенный пароль р1 соответствует истинному р. Суть механизма защиты - знание q не позволяет просто определить р (требуется обратить хэш-функцию, а это вычислительно-трудоемкая задача).

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

Будет ли раскрыт пароль, зависит от объема данных, полученных в результате мониторинга запросов на предоставление доступа, и от того, насколько выбранное распределение вероятностей для р соответствует реальному. Недостаток может быть устранен простым изменением схемы защищенных паролей (рис.IX.2).

В предлагаемом варианте хэш-функция вычисляется не от пароля, а от конкатенации пароля и идентификатора:

Источник: https://www.bibliofond.ru/view.aspx?id=871951