- Преподавателю
- Начальные классы
- Методическая разработка практических работ по дисциплине «Информационная безопасность»
Методическая разработка практических работ по дисциплине «Информационная безопасность»
Раздел | Начальные классы |
Класс | - |
Тип | Конспекты |
Автор | Муравцева Н.Д. |
Дата | 22.02.2014 |
Формат | docx |
Изображения | Нет |
Министерство образования и науки Республики Татарстан
Государственное автономное общеобразовательное учреждение
среднего профессионального образования
«Лениногорский нефтяной техникум»
Методическая разработка практических работ
по дисциплине «Информационная безопасность»
для специальности 230401 «Информационные системы»
Разработанная преподавателем
специальных дисциплин
Муравцевой Натальей Дмитриевной
Лениногорск, 2013.
Содержание
Аннотация………………………………………………………………3 Практическая работа №1……………………………………………...4 Практическая работа №2……………………………………………...8 Практическая работа №3……………………………………………..12 Список использованной литературы………………………………...15
Аннотация Быстрый рост глобальной сети Интернет и стремительное развитие информационных технологий привели к формированию информационной среды, оказывающей влияние на все сферы человеческой деятельности. Интернет сегодня - это технология, кардинально меняющая весь уклад нашей жизни: темпы научно - технического прогресса, характер работы, способы общения. Эффективное применение информационных технологий является общепризнанным стратегическим фактором роста конкурентоспособности компании. Многие предприятия в мире переходят к использованию широких возможностей Интернета и электроннго бизнеса, неотъемлемый элемент которого - электронные транзакции. Электронная коммерция, продажа информации в режиме on - line и многие другие услуги становятся основными видами деятельности для многих компаний, а их корпоративные информационные системы - главным инструментом управления бизнесом и, фактически, важнейшим средством производства. Новые технологические возможности облегчают распространение информации, повышают эффективность производственных процессов, способствуют расширению деловых отношений. Однако, несмотря на интенсивное развитие компьютерных средств, информационных технологий, уязвимость современных информационных систем и компьютерных сетей, к сожалению, не уменьшается. Поэтому проблемы обеспечения информационной безопасности привлекают пристальное внимание как специалистов в области компьютерных систем и сетей, так и многочисленных пользователей. Важным фактором, влияющим на развитие корпоративных информационных систем предприятия, является поддержание массовых и разнообразных связей предприятия через Интернет с одновременным обеспечением безопасности этих коммуникаций. Задача обеспечения информационной безопасности корпоративных информационных систем традиционно решается построением системы информационной безопасности, определяющим требованием к которой является сохранение вложенных в построение корпоративных информационных систем инвестиций. Иначе говоря, система информационной безопасности должна функционировать абсолютно прозрачно для уже существующих в корпоративных сетях приложений и быть полностью совместимой с используемыми в информационных системах сетевыми технологиями. Применение информационных технологий требует повышенного внимания к вопросам информационной безопасности. Разрушение информационного ресурса, его временная нетрудоспособность или несанкционированное использование могут нанести значительный материальный ущерб. Реализация решений, обеспечивающих безопасность информационных ресурсов, существенно повышает эффективность всего процесса информатизации в организации, обеспечивая целостность, подлинность и конфиденциальность дорогостоящей деловой информации, циркулирующей в локальных и глобальной информационных средах. Предлагаемая вниманию преподавателей и студентов методическая разработка практических работ по дисциплине «Информационная безопасность» посвящена систематическому изложению и анализу современных методов, средств и технологий защиты информации в компьютерных системах и сетях.
Практическая работа №1 Защита программ от дизассемблирования. Цель: освоить технологию работы с дизассемблером и декомпилятором В ходе проделанной работы студент должен знать:
- виды программ по режиму работы с пользователем;
- назначение дизассемблера и декомпилятора;
- работать с трансляторами;
- при помощи отладчика, просматривать работу системы
- использовать в своей работе разные алгоритмы защиты.
Дизассе́мблер - транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.
По режиму работы с пользователем делятся на
-
Автоматические
-
Интерактивные
Примером автоматических дизассемблеров может служить Sourcer. Такие дизассемблеры генерируют готовый листинг, который можно затем править в текстовом редакторе. Пример интерактивного - IDA. Он позволяет изменять правила дизассемблирования и является весьма удобным инструментом для исследования программ.
Дизассемблеры бывают однопроходные и многопроходные. Основная трудность при работе дизассемблера - отличить данные от машинного кода, поэтому на первых проходах автоматически или интерактивно собирается информация о границах процедур и функций, а на последнем проходе формируется итоговый листинг. Интерактивность позволяет улучшить этот процесс, так как просматривая дамп дизассемблируемой области памяти, программист может сразу выделить строковые константы, дать содержательные имена известным точкам входа, прокомментировать разобранные им фрагменты программы.
Чаще всего дизассемблер используют для анализа программы (или ее части), исходный текст которой неизвестен - с целью модификации, копирования или взлома. Реже - для поиска ошибок (багов) в программах и компиляторах, а также для анализа оптимизации создаваемого компилятором машинного кода. Обычно однопроходный дизассемблер (как и построчный ассемблер) является составной частью отладчика.
Защита от дизассемблирования
Первое направление защиты, как правило, реализуется значительно легче, чем второе, поэтому будет приведен лишь краткий обзор данного направления. При реализации защиты программ от дизассемблирования можно применять различные приемы. Среди них наиболее часто используемым и эффективным приемом является зашифровка и \ или запаковка отдельных участков исходного кода или всего кода целиком, при этом необходимо позаботиться о распаковке \ расшифровке программы на точке входа. Таким образом, при просмотре исполняемого машинного кода исполняемого файла вместо рабочего кода программы будет отображен лишь бессмысленный набор операций. При реализации защиты от дизассемблирования используется также множество приемов, которые реализуются с целью запутать потенциального взломщика. Можно навести несколько примеров такого вида приемов: - увеличение исходного кода программы добавлением множества «бессмысленных» операций, а рабочий участок программы записать в определенное место этого множества; - замена местами адресов обработчиков (векторов) прерываний, например, поменять местами вектор прерывания видео сервиса (INT 10h) с вектором прерывания сервиса DOS (INT 21h), после такой замены для вызова из программы какой-либо функции прерывания INT 21h необходимо пользоваться вызовом прерывания INT 10h. Для достижения наиболее надежной и эффективной защиты используется комбинация нескольких приемов. Защита от отладки Для защиты программы от трассировки отладчиком также существует несколько способов. Наиболее распространенными являются два из них. Первый способ Идея: При трассировке программы команды выполняются по команде человека, поэтому длительность выполнения операций(время от начала одной операции до начала следующей) изменяется. Поэтому в программу можно включать точки для проверки времени выполнения одинаковых участков кода программы. Если время выполнения выполнения одинаковых участков различна, то это означает, что программа трассируется в данный момент, необходимо выйти из программы, иначе - продолжить выполнение.Алгоритм реализации:
1. Запомнить текущее время;
2. Выполнить контрольный участок кода;
3. Запомнить текущее время и разность текущего и предыдущего запомненного времени;
4. Выполнить контрольный участок кода повторно;
5. Сравнить разность текущего времени и предыдущего запомненного текущего времени с предыдущей запомненной разностью;
6. Если разности совпадают, продолжить выполнение, иначе - выйти из программы.
- метаморфическое преобразование кода программы, позволяющее защитить программу от дизассемблирования и модификации;
- защита ключом отдельных участков кода программы (поддерживается только в зарегистрированной версии);
- полное разрушение логики защищенных фрагментов кода, не позволяющее анализировать программу с помощью дизассемблера или отладчика;
- обнаружение и противодействие отладчикам SoftIce, NtIce, TD и др.;
- защита точки входа;
- защита от модификации кода;
- защищенная работа с реестром, не позволяющая программам вроде RegMon определить, к какому ключу реестра обращается твоя программа;
- технология "динамического импорта", которая разрушает имена всех импортируемых функций, а также не использует функцию GetProcAddress;
- сжатие ресурсов и исполнимого кода приложения;
- поддержка коротких серийных номеров (12 символов);
- поддержка внешнего генератора серийных номеров с OLE/DLL-интерфейсом;
- технология OneTouch Trial (о ней читай ниже).
Самое главное, что нас интересует - это метаморфическое преобразование кода программы и поддержка серийных номеров. Метаморфическое кодирование позволяет изменить код программы до неузнаваемости и запутать отладчик и человека, который запустил этот отладчик.
Декомпилятор. Он переводит двоичный код в символьный на языке команд какого-нибудь языка. Например, диассемблеры, деклиппер и многие другие. Эти средства появились раньше отладчиков, т.к. вначале не было архитектуры со встроенными средствами отлаживания программ. С помощью декомпиляторов можно изменять исходный код программы. Допустим необходимо внести крупные изменения в код программы. Прямая вставка двоичных кодов не помогает, т.к. нарушается расположение меток перехода и процедур. Программа - это линейка кода, по которой нужно перемещаться нелинейно, переходить с определенным смещением. Если линейка удлиняется из-за добавления чего-то в середине, все смещения будут показывать не туда куда нужно. Повторная перекомпиляция вписывает новые смещения. Среди декомпиляторов можно выделить: Hacker-VIEW (HVIEW), IDA (интерактивный дизассемблер). С помощью Hacker-VIEW можно посмотреть любой исполняемый файл по любому смещению. Можно выполнить какую-то часть программы. Это позволяет расшифровывать программы и обходить защиту от дизассемблирования. Этот декомпилятор «понимает» как старые форматы исполняемых файлов DOS-COM и DOS-EXE, так и форматы исполняемых файлов Windows. IDA очень мощное средство работы с ассемблерными текстами программ. Обладает широким спектром возможностей, имеет более удобный интерфейс, чем Hacker-VIEW. Очень хорошо предусмотрена архитектура работы программ в Windows (такие вещи, как DLL, расширенный режим работы с памятью и т.д.). Декомпиляторы программ занимают свое место в инструментарии взломщика. В основном это совместное использование с отладчиками. Второе средство - отладчики. Отладчики позволяют запускать отдельные части программы и следить за изменениями, которые она производит, за результатами ее работы. Защите от отладки не стоит уделять много времени, т.к. все возможные хитрости и приемы уже известны и взломщикам и программистам. Так же и шифрование. Любой хакер, если получает заказ на взлом, имеет доступ к нормальной копии программы. То есть он ее либо может купить, либо попользоваться ею на компьютере покупателя. Среди отладчиков выделим: SOFTICE и WINICE. С появлением Windows отладка программ стала на порядок проще и намного удобнее дизассемблирования. Принципиально изменился стиль некоторых атак на защиту программ. Теперь не надо шаг за шагом смотреть на ассемблерный код, «продираться» сквозь дебри незначащих кодов и защит. Теперь надо отловить нужное событие и понять как на него реагирует программа. Это, конечно, не всегда бывает так просто, как выглядит на словах. Как и ранее, отладка требует знание архитектуры операционной системы. Неважно насколько сложным был бы механизм защиты, все сводится к простейшей проверке или дешифровке. И взлом, в случае с проверкой, можно разбить на два этапа: установка «брейков» на «подозрительные» флаги, обнаруженные в процедуре защиты; анализ обращений к флагам. По реакции программы можно судить флаг это или просто переменная.
Практическая часть.
-
Изучить теоретическую часть. Сделать записи в тетради.
-
По выше изложенному плану провести трассировку и декомпиляцию диска.
-
Провести сравнение декомпилятора и отладчика. По данным составить таблицу сравнений.
-
Ответить на контрольные вопросы
Контрольные вопросы:
-
Что такое дизассемблер?
-
Как происходит защита программ от дизассемблирования?
-
Как происходит защита программ от отладки?
-
Какие виды отладчиков вы знаете?
-
Что такое декомпилятор?
-
Какие он функции выполняет?
-
Что такое трассировка?
-
Какие виды дизассемблеров вам известны?
-
Какие приемы дизассемблирования вам известны?
Практическая работа №2. Приемы работы с защищенными программами. Цель: освоить технологию работы с программой шифрования и дешифрования. В ходе проделанной работы студент должен знать:
- виды защищенных программ;
- назначение программ шифрования и дешифрования;
- работать с ресурсами ОС;
- при помощи специальных программ проводить шифрование ресурсов ОС
- использовать в своей работе разные алгоритмы защиты.
- многоуровневая структура памяти (регистровая, оперативная, внешняя)
- стремление обеспечить пользователя характеристиками, отличными от реальных (виртуальная память)
- необходимость согласования распределения ОП с распределением центрального процессора
Шифрование текстовых строк. Алгоритм Triple DES
Создадим новый проект Windows Forms.
Добавим к проекту ссылку System.Security
Для этого Меню Проект -> Добавить ссылку...
На вкладке .NET добавляем нужную ссылку.
На форму выносим кнопки:
-
Encoding - Шифрование
-
Decoding - Расшифровка
Переходим в режим редактирования кода программы. (Двойной щелчок по форме)
Первым делом импортируем пространство имен:
Imports System.Security.Cryptography
Создаем новый класс - TripleDESClass.
Public NotInheritable Class TripleDESClass
End Class
В классе объявляем переменную для работы с алгоритмом шифрования Triple DES
Private TripleDes As New TripleDESCryptoServiceProvider
Создаем конструктор класса:
Sub New(ByVal key As String)
' Инициализация ключа шифрования и вектора шифрования на основе hash данных
TripleDes.Key = CreateHash(key, TripleDes.KeySize \ 8)
TripleDes.IV = CreateHash("", TripleDes.BlockSize \ 8)
End Sub
Функция CreateHash:
Private Function CreateHash(ByVal key As String, ByVal length As Integer) As Byte()
Dim sha1 As New SHA1CryptoServiceProvider
' получение массива байтов из ключа
Dim keyBytes() As Byte = System.Text.Encoding.Unicode.GetBytes(key)
' создание hash данных из байтового массива
Dim hash() As Byte = sha1.ComputeHash(keyBytes)
' удаление не нужных данных
ReDim Preserve hash(length - 1)
' возвращение результата
Return hash
End Function
Функция шифрования данных:
Public Function EncryptData(ByVal plaintext As String) As String
' Конвертация данных в байтовый массив
Dim plaintextBytes() As Byte = System.Text.Encoding.Unicode.GetBytes(plaintext)
' Создание потока данных
Dim ms As New System.IO.MemoryStream
' Создание зашифрованного потока
Dim encStream As New CryptoStream(ms, TripleDes.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
' запись данных в зашифрованный поток
encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
encStream.FlushFinalBlock()
'конвертация данных в тип string
Return Convert.ToBase64String(ms.ToArray)
End Function
Функция дешифровки:
Public Function DecryptData(ByVal encryptedtext As String) As String
' Конвертация данных в массив байтов
Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)
' Создание нового потока данных
Dim ms As New System.IO.MemoryStream
' Создание нового зашифрованного потока
Dim decStream As New CryptoStream(ms, TripleDes.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
' Использование зашифрованного потока для получения данных
decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
decStream.FlushFinalBlock()
' Преобразование байтов в тип string
Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
End Function
С помощью выше приведенных функций можно шифровать текстовые строки.
Для тестирования данных функций создадим оболочку программы, задача которой получение текстовой строки, получение пароля, сохранение зашифрованных данных в текстовый файл.
Перейдем в класс Form1:
Создадим два метода: Sub EncodingData() и Sub DecodingData().
Sub EncodingData()
Dim Text As String = InputBox("Текст для шифрования:")
Dim password As String = InputBox("Введите пароль:")
Dim TDSClass As New TripleDESClass(password) 'создание класса для шифрования
Dim CryptographyText As String = TDSClass.EncryptData(Text) ' использование функции шифрования
MsgBox("Зашифрованный текст: " & CryptographyText)
' запись данных в папку мои документы под именем Cryptography.txt
My.Computer.FileSystem.WriteAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Cryptography.txt", CryptographyText, False)
End Sub
Sub DecodingData()
' чтение данных из файла
Dim CryptographyText As String = My.Computer.FileSystem.ReadAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Cryptography.txt")
Dim password As String = InputBox("Введите пароль:")
' создание объекта для работы с Triple DES
Dim TDSClass As New TripleDESClass(password)
' расшифровка данных и вывод результата
Try
Dim plainText As String = TDSClass.DecryptData(CryptographyText)
MsgBox("Расшифрованный текст: " & plainText)
Catch ex As System.Security.Cryptography.CryptographicException
MsgBox("Ошибка расшифровки.")
End Try
End Sub
Код для запуска процессов шифрования и расшифровки данных:
Private Sub Encoding_Click(sender As System.Object, e As System.EventArgs) Handles Encoding.Click
EncodingData()
End Sub
Private Sub Decoding_Click(sender As System.Object, e As System.EventArgs) Handles Decoding.Click
DecodingData()
End Sub
End Class
Запустим проект. Кнопка Шифрование запустит процесс.
Практическая часть.
-
Используя теоретическую часть, описать основные методы работы с защищенными программами.
-
При помощи программы Visual Studio набрать код программы и выполнить её проверку
-
При помощи данной программы, зашифруйте любое предложение, включающее в себя 5 слов, ключ сообщите преподавателю для проверки
-
Ответить на контрольные вопросы и сдать работу преподавателю.
Контрольные вопросы:
- В чем заключается задача распределения Оперативной памяти?
- Что такое фрагментация памяти?
- Как происходит защита записи?
Практическая работа №3. Защита оперативной памяти компьютера. Цель: освоить технологию работы с программой защиты оперативной памяти В ходе проделанной работы студент должен знать:
- назначение оперативной памяти ПК;
- объем виртуальной памяти ПК;
- работать с виртуальными ресурсами памяти ПК;
- при помощи специальных программ проводить шифрование ресурсов виртуальной памяти ПК;
- использовать в своей работе разные методы работы для защиты памяти ПК.
Иногда возникает задача защиты данных хранящихся в оперативной памяти компьютера, что бы злоумышленник не получил к ним доступ.
Для таких случаев используется ProtectedData.
Практическая часть
Для демонстрации методов шифрования и расшифровки данных в оперативной памяти создадим приложение ConsoleApplication.
Создаем новый проект ConsoleApplication.
Импортируем в проект ссылку:
Imports System.Security.Cryptography
Так же необходимо подключить эту библиотеку к проекту, Меню Проект -> Добавить ссылку..
На вкладке .NET выбираем System.Security
Далее стираем весь код и создаем новый класс DataProtection.
Объявляем переменную:
Private Shared s_aditionalEntropy As Byte() = {3, 6, 2, 1, 5} ' Байтовый массив - ключ шифрования
В класс помещаем функции.
Функция шифрования:
Public Shared Function ProtectData(ByVal data() As Byte) As Byte()
Try
' DataProtectionScope.CurrentUser - доступ к данным может произвести только пользователь
Return ProtectedData.Protect(data, s_aditionalEntropy, DataProtectionScope.CurrentUser)
Catch e As CryptographicException
Console.WriteLine("Ошибка шифрования.")
Console.WriteLine(e.ToString())
Return Nothing
End Try
End Function
Функция расшифровки:
Public Shared Function UnprotectData(ByVal data() As Byte) As Byte()
Try
'Расшифровка данных
Return ProtectedData.Unprotect(data, s_aditionalEntropy, DataProtectionScope.CurrentUser)
Catch e As CryptographicException
Console.WriteLine("Ошибка расшифровки.")
Console.WriteLine(e.ToString())
Return Nothing
End Try
End Function
Функция вывода результата на экран:
Public Shared Sub PrintData(ParamArray Array() As Byte)
Dim i As Byte
For Each i In Array
Console.Write(vbTab + "{0}", i)
Next i
Console.WriteLine()
Console.ReadKey()
End Sub
И метод Main(), запускающий процесс шифрования и расшифровки памяти.
Public Shared Sub Main()
' Данные для шифрования
Dim secret As Byte() = {3, 6, 8, 1, 5, 4}
'Шифрование
Dim encryptedSecret As Byte() = ProtectData(secret)
Console.WriteLine("Зашифрованный массив данных:")
PrintData(encryptedSecret)
' Расшифровака
Dim originalData As Byte() = UnprotectData(encryptedSecret)
Console.WriteLine("{0} Расшифрованные данные:", Environment.NewLine)
PrintData(originalData)
End Sub
Ход работы
-
Переписать код программы
-
Набрать код данной программы
-
Запустив программу, выведется результат шифрования и расшифровки оперативной памяти компьютера.
-
Что отображено и всегда ли данное шифрование будет одинаковым? От чего этого зависит?
-
Ответить на контрольные вопросы.
Контрольные вопросы:
-
Какие методы защиты данных вы знаете?
-
Является ли данная программа сверхнадежной? Почему?
-
Возможно ли зашифровать информацию не переводя её в байты?
-
Как бы вы улучшили эту программу
Список использованной литературы
-
Астахов А. М. Аудит безопасности информационных систем. Конфидент. 2003. №2.
-
Галатенко В. А. Информационная безопасность - грани практического подхода. Конференция «Корпоративные информационные системы». М., 1999
-
ГОСТ 28147 - 89. Система обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. М., 1989
-
Грязное Е. С., Панасенко С. П. Безопасность локальных сетей // Мир и безопасность. 2003. №2.
-
Лукацкий А. Д. Обнаружение атак. СПб.: БХВ - Петербург, 2003.