Ошибки в реализации защиты в распространенных коммерческих программных продуктах фирмы Microsoft

 

 

 

 

 

 

Реферат

по дисциплине «Защита  информации»

на тему:

Ошибки в  реализации защиты в распространенных коммерческих программных продуктах  фирмы Microsoft.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2011

СОДЕРЖАНИЕ

 

1. Ошибки, приводящие к  возможности атак на информацию……….…..….3

2. Получение пароля на основе ошибок в реализации……………..……..…..5

3. Распространенные средства  и методики взлома парольной  защиты офисных документов…………………………………………………..………10

4. Программа взлома пароля файлов Microsoft Office…………………….....13

5. Принципиальные недостатки  защитных механизмов ОС семейства  Windows…………………………………………………………………………17

6. Список использованной литературы………………………………………..26

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОШИБКИ, ПРИВОДЯЩИЕ К ВОЗМОЖНОСТИ АТАК НА ИНФОРМАЦИЮ

 

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

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

Для целых и дробных  чисел, значений времени и тому подобных типов данных запись производится всегда в фиксированном объеме (2 байта, 4 байта, 10 байт). А вот для строк  и массивов данных проверки длины  перед операциями записи необходимы. Для того, чтобы заставить ЭВМ выполнить код или записать данные туда, куда у него нет прав записи, злоумышленник специально заставляет систему обрабатывать строки очень большой длины, либо помещать в массив количество элементов большее, чем его объем. В случае успеха возможно либо попадание части строки в сегмент кода или стека с последующим исполнением, либо модификация каких-либо служебных данных, что позволит затем злоумышленнику войти в систему в обход системы защиты. Естественно, что содержимое конца строки (оказывающееся после переполнения буфера в ненадлежащей области памяти) подбирается специальным образом. Сами данные или строки могут быть абсолютно бессмысленными.

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПОЛУЧЕНИЕ ПАРОЛЯ НА ОСНОВЕ ОШИБОК В РЕАЛИЗАЦИИ

 

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

Первая группа методов  основана на том, что любой системе  приходится где-либо хранить подлинники паролей всех клиентов для того, чтобы сверять их в момент регистрации. При этом пароли могут храниться  как в открытом текстовом виде, как это имеет место во многих клонах UNIX, так и представленные в виде малозначащих контрольных  сумм (хеш-значений), как это реализовано в ОС Windows, Novell NetWare и многих других. Проблема в том, что в данном случае для хранения паролей на носителе не может быть использована основная методика защиты – шифрование. Действительно, если все пароли зашифрованы каким-либо ключом, то этот ключ тоже должен храниться в самой системе для того, чтобы она работала автоматически, не спрашивая каждый раз у администратора разрешение «Пускать или не пускать пользователя Anton, Larisa, Victor и т.д.?». Поэтому, получив доступ к подобной информации, злоумышленник может либо восстановить пароль в читабельном виде (что бывает довольно редко), либо отправлять запросы, подтвержденные данным хеш-значением, не раскодируя его. Все рекомендации по предотвращению хищений паролей состоят в проверке не доступен ли файл с паролями, либо таблица в базе данных, хранящая эти пароли, кому-либо еще кроме администраторов системы, не создается ли системой резервных файлов, в местах доступных другим пользователям и т.п.. В принципе, поскольку кража паролей является самым грубым вторжением в систему, разработчики уделяют ей довольно пристальное внимание, и соблюдения всех рекомендаций по использованию системы обычно достаточно для предотвращения подобных ситуаций.

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

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

Работа программы-перехватчика паролей (так называемого «троянского коня») на рабочей станции незаметна.

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

Двумя основными методами борьбы с копированием паролей являются:

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

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

Следующий метод получения  паролей относится только к сетевому программному обеспечению. Проблема заключается  в том, что во многих программах не учитывается возможность перехвата  любой информации, идущей по сети –  так называемого сетевого трафика. Первоначально, с внедрением локальных  компьютерных сетей так оно и  было. Сеть располагалась в пределах 2-3 кабинетов, либо здания с ограниченным физическим доступом к кабелям. Однако, стремительное развитие глобальных сетей затребовало на общий рынок те же версии программного обеспечения без какого-либо промедления для усиления безопасности. Теперь мы пожинаем плоды этой тенденции. Более половины протоколов сети Интернет передают пароли в нешифрованном виде – открытым текстом. К ним относятся протоколы передачи электронной почты SMTP и POP3, протокол передачи файлов FTP, одна из схем авторизации на WWW-серверах.

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

1) это может сделать  служащий компании со своего  рабочего компьютера,

2) злоумышленник, подключившийся  к сегменту с помощью портативной  ЭВМ или более мобильного устройства.

Наконец, трафик, идущий от Вас  к Вашему партнеру или в другой офис по сети Интернет, технически может  прослушиваться со стороны Вашего непосредственного  провайдера, со стороны любой организации, предоставляющей транспортные услуги для сети Интернет (переписка внутри страны в среднем идет через 3-4 компании, за пределы страны – через 5-8). Кроме  того, если в должной мере будет  реализовываться план СОРМ (система  оперативно-розыскных мероприятий  в компьютерных сетях), то возможно прослушивание и со стороны силовых  ведомств страны.

Для комплексной защиты от подобной возможности кражи паролей  необходимо выполнять следующие  меры:

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

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

Ко всем информационным потокам, выходящим за пределы фирмы, должны применяться те же правила, что и  только что описанные выше для  объединения разноуровневых терминалов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РАСПРОСТРАНЕННЫЕ  СРЕДСТВА И МЕТОДИКИ ВЗЛОМА ПАРОЛЬНОЙ  ЗАЩИТЫ ОФИСНЫХ ДОКУМЕНТОВ

 

При установке пароля на открытие документ Microsoft Office шифруется по симметричному алгоритму RCA. В документе хранится зашифрованный хеш пароля, используемый при проверке. Единственный способ нахождения пароля – перебор. Количество попыток (K), необходимое для полного перебора всех возможных вариантов пароля можно вычислить по формуле (1):

                                                                                                                    

где N — число символов, которые возможно использовать в  пароле, L — предельная длина пароля.

Как следует из формулы (1), величина K может быть достаточно большой, что свидетельствует о потенциально высокой стойкости парольной  защиты приложений Microsoft Office.  Однако, экспортные ограничения США на криптоалгоритмы значительно снижают криптостойкость этой защиты. Ключ, используемый при шифровании, имеет длину всего 40 бит, что явно не достаточно в современных условиях.

Во многих случаях можно  предположить, что попытка НСД  к офисным документам осуществляется злоумышленником в условиях реализации на предприятии грамотной политики безопасности. Это предопределяет невозможность  использования злоумышленником  средств технического съема пароля при вводе, модификации механизма  парольной защиты, а также модификации  учетных данных на защищаемом объекте. Эта предпосылка позволяет ограничить анализ набора средств и методик  взлома парольной защиты только теми, которые предназначены для подбора  пароля.  К доступным программным  пакетам, реализующим подбора пароля можно отнести   Accent Office, Advanced Office 97, Advanced ZIP, а также Advanced ARJ. Первые два предназначены для взлома парольной защиты файлов Word и Exсel, третий и четвертый позволяют взломать пароли Zip и ARJ файлов.  

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

Прямой перебор. Суть метода заключается в переборе всех возможные  комбинации символов, используемых в  качестве пароля. Время (T) необходимое для гарантированного взлома пароля можно рассчитать так (2):

                                                                                                                          где К - количество вариантов возможных комбинаций символов в пароле, рассчитанное по формуле 1, t – время необходимое для проверки одного варианта.

Очевидно, что T - напрямую зависит от количества символов, которые можно применять в пароле, максимальной длины пароля,  мощности компьютера, алгоритма перебора вариантов, а также эффективности программной реализации. При этом, результаты тестирования показывают, что на компьютере с процессором Celeron 416 МГц и объемом оперативной памяти 128 Мб программа Advanced Office 97 позволяет гарантированно взломать пароль, состоящий из 6 символов за 90 дней. Необходимо отметить, что результаты исследований проведенных автором показывают, что квалифицированный пользователь, как правило, использует пароль длиной от 6 до 16 символов. Этот результат был получен на основании опроса примерно 200 студентов старших курсов экономических специальностей. 

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

Разумеется, в процессе перебора может случиться так, что искомый  пароль встретится быстро, и все  возможные комбинации перебирать не придется.

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

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

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

 

 

 

 

 

 

 

ПРОГРАММА ВЗЛОМА ПАРОЛЯ ФАЙЛОВ MICROSOFT OFFICE

 

В качестве языка программирования  был выбран VBA. Выбор основан на тесной интеграции VBA со всеми приложениями Microsoft Office, а также наличием в этом языке методов позволяющих открывать файлы Excel, Word, Access, а также PowerPoint, защищенные паролем. Рассмотрим программу для взлома пароля файла Excel методом полного перебора символов, которые можно использовать в пароле. Программа для взлома была реализована в файле Excel break.xls. Предположим, что паролем защищен файл test.xls, расположенный в корневом каталоге диска Е. В файле break.xls создана пользовательская форма с кнопкой, выбор которой запускает процедуру CommandButton1_Click(),  инициализирующую подбор пароля. Для удобства символы, применяемые в пароле, записаны в столбце «А» первой страницы файла break.xls. Полный код программы с подробными комментариями показан в листинге 1:

Листинг 1.

'Объявляем  массив для хранения символов

Dim ch(1 To 47) As String 

'Объявляем  переменную для хранения ожидаемой  длины пароля

Dim lenthP As Integer

'Объявляем  переменную (флаг) для проверки открытия  файла

Dim doc As Variant 

'Процедура инициализирующая подбор пароля

Private Sub CommandButton1_Click()

  ‘Оператор подавления ошибки

    On Error Resume Next

    'Определяем максимальную длину пароля. В качестве примера 2

    lenthP = 2

    'Пока флаг равен «no» файл не открыт, т.е. пароль не найден

    doc = «no» 

    'Из первого листа рабочей книги  переписываем в массив символы, 

    'которые могут применяется в пароле

    For i = 1 To 47 

        ch(i) = ActiveWorkbook.Sheets(“1”).Cells(I, 1)

    Next I

    'Открываем файл, предположив   отсутствие пароля

    doc = Application.Workbooks.Open(“E:\test.xls”)

    'Если флаг сигнализирует об открытии файла, то выводим соответствующее

    'окно сообщения и закрываем  программу

    If doc <> «no» Then

        'Показываем окно сообщения  

        MsgBox «Пароля нет»

        End

    End If

    'Вызов функции подбора пароля

    FuncPass « «, lenthP

End Sub

'Объявление  функции открытия файла.

'Параметр  mypass - пароль на открытие файла

Sub OpenFile(mypass As String)

    On Error Resume Next

   ‘Стандартный метод открытия файла.

    doc = Application.Workbooks.Open(“E:\test.xls”, , , , Trim(mypass))

    If doc <> “no” Then

        MsgBox mypass

        End

    End If

End Sub

'Объявление  функции подбора пароля

'Параметры  mypass - текущий пароль, depth - максимальная длина пароля

Sub FuncPass(mypass As String, depth As Integer)

    'Вызов функции открытия файла

    OpenFile mypass

    For k = 1 To 47

        If depth > 0 Then

            FuncPass mypass + ch(k), depth – 1

        End If

    Next k

End Sub

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

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

Проведенные эксперименты показали, что с помощью  описанной программы на компьютере с процессором Pentium-3 600 МГц и объемом  оперативной памяти 384 МБ, работающего  под управлением операционной системы  Windows 2000, один вариант пароля подбирается за время 0,01-0,015с.

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

В качестве   мероприятий направленных  на усиление парольной защиты можно предложить:

  • Добавление в приложениях Microsoft Office опции отключения программного интерфейса открытия файла.
  • Использование в пароле символов расположенных в алфавите как можно дальше друг от друга.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИНЦИПИАЛЬНЫЕ  НЕДОСТАТКИ ЗАЩИТЫ ОС СЕМЕСТВА WINDOWS

 

В ОС Windows принята концепция реализации разграничительной политики доступа к ресурсам (для NTFS). В рамках этой концепции разграничения для файла приоритетнее ,чем для каталога, а в общем случае — разграничения для включаемого файлового объекта приоритетнее, чем для включающего (более подробно данный вопрос анализируется в четвертой части книги).Это приводит к тому, что пользователь, создавая файл и являясь его «владельцем», может назначить любые атрибуты доступа к такому файлу (т.е.разрешить к нему доступ любому иному пользователю). При этом обратиться к этому файлу может пользователь (которому назначил права доступа «владелец »)вне зависимости от установленных администратором атрибутов доступа на каталог, в котором пользователь создает файл. Данная проблема непосредственно связана с реализуемой в ОС Windows концепцией защиты информации.

В Windows (NT/2000/XP) не в полном объеме реализуется дискреционная модель доступа, в частности, не могут разграничиваться права доступа для пользователя «Система » .В ОС присутствуют не только пользовательские, но и системные процессы, которые запускаются непосредственно системой. При этом доступ системных процессов не может быть разграничен. Соответственно, все запускаемые системные процессы имеют неограниченный доступ к защищаемым ресурсам. С этим недостатком системы защиты связано множество атак, в частности, несанкционированный запуск собственного процесса с правами системного. Это возможно и вследствие некорректной реализации механизма обеспечения замкнутости программной среды.

В ОС семейства  Windows (NT/2000/XP)невозможно в общем случае обеспечить замкнутость (или целостность) программной среды.

Рассмотрим  два способа, которыми в общем случае можно реализовать данный механизм, и покажем их несостоятельность в ОС Windows. Итак, механизм замкнутости программной среды в общем случае может быть обеспечен:

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

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

связана с невозможностью установки атрибута «исполнение » на устройства ввода (дисковод или CD-ROM).В связи с этим при разграничении доступа пользователь может запустить несанкционированную программу с дискеты, либо с диска CD-ROM (как далее увидим – это очень распространенная атака на ОС данного семейства).

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

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

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

В ОС семейства  Windows (NT/2000/XP) невозможно встроенными средствами гарантированно удалять остаточную информацию.

Кроме того, ОС семейства Windows (NT/2000/XP) не обладают в полном объеме возможностью контроля целостности файловой системы. Встроенные механизмы системы позволяют контролировать только собственные системные файлы, не обеспечивая контроль целостности файлов пользователя. Кроме того, они не решают важнейшую задачу данных механизмов — контроль целостности программ (приложений)перед их запуском,

контроль  файлов данных пользователя и др.

Что касается регистрации (аудита),то в ОС семейства Windows (NT/2000/XP) не обеспечивается регистрация выдачи документов на «твердую копию »,а также некоторые другие требования к регистрации событий.

Опять же, если трактовать требования к управлению доступом в общем случае, то при защите компьютера в составе ЛВС необходимо управление доступом к хостам (распределенный пакетный фильтр).В ОС семейства Windows (NT/2000/XP)механизм управления доступа к хостам в полном объеме не реализуется.

Ошибки в реализации защиты в распространенных коммерческих программных продуктах фирмы Microsoft