Лабораторные работы по

по курсу "Защита данных и программного обеспечения"

Лабораторная работа № 1

Шифрование - дешифрование файла

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

Скачать лабораторную работу № 1 (4,13 КБ)

Лабораторная работа № 2

Заражение DOS exe-файла по методу переноса

Этим методом могут быть инфицированы даже антивирусы, которые проверяют свой код на целостность, так как запускаемая вирусом программа имеет в точности такой же код, как и до инфицирования [1].

Описание реализации

Используемые файлы:

1. Vir.exe - программа-заразитель DOS exe-файла.
2. Vpatch.vrs - вирусная закладка, требующая ввода пароля для продолжения работы заражённой программы. Это переименнованный exe-файл Vpatch.exe.
3. Unvir.exe (необязательно) - программа-обеззараживатель DOS exe-файла.  Обратна Vir.exe.
4. Сам заражаемый DOS exe-файл (возможно, с оверлеями). Условно назовём его Victim.exe. В качестве него можно применить tpx.exe, bp.exe, tc.exe, bc.exe, fox.exe, foxpro.exe - foxpro.ovl, foxprox.exe.

Программы лабораторной работы написаны на Паскале.

Алгоритм лабораторной работы

Заражение файла-жертвы

Запускаем Vir.exe, чтобы заразить Victim.exe. Vir.exe открывает файл Victim.exe и побайтно считывает, начиная с его нулевого смещения, участок, равный по длине Vpatch.vrs, записывая каждый считанный байт за конец Victim.exe.
Затем Vir.exe побайтно записывает в Victim.exe, начиная с его нулевого смещения, содержимое файла Vpatch.vrs.
После этого Vir.exe внедряет в теперь уже заражённый файл Victim.exe в определённые его участки его же имя ("Victim.exe") и зашифрованный пароль.
И, наконец, Vir.exe шифрует Victim.exe, начиная со смещения, равному по длине Vpatch.vrs, методом гаммирования с использованием генератора псевдослучайных чисел.

Запуск файла-жертвы

Запускаем заражённый Victim.exe. Сначала управление получает внедрённый в Victim.exe (начиная с его нулевого смещения) переименованный исполняемый файл Vpatch.vrs. Внедрённый Vpatch.vrs сначала выполняет предусмотренные вредоносные действия - здесь просит ввести пароль и, в случае совпадения, продолжает работу.

Если введённый пароль правильный, то внедрённый Vpatch.vrs открывает файл Victim.exe, из которого он был запущен на исполнение, и восстанавливает Victim.exe на жёстком диске в исходное незаражённое состояние путём перемещения с конца Victim.exe куска Victim.exe, равного по длине Vpatch.vrs, на начало Victim.exe.
После этого внедрённый Vpatch.vrs запускает EXEC'ом Victim.exe. Когда Victim.exe заканчивает работу, то он возвращает управление заснувшему в оперативной памяти внедрённому Vpatch.vrs. Внедрённый Vpatch.vrs опять возвращает Victim.exe в заражённое состояние по алгоритму Vir.exe, но только используя временный файл, создаваемый на жёстком диске в качестве промежуточного буфера. После этого внедрённый Vpatch.vrs заканчивает свою работу и возвращает управление операционной системе.

Скачать лабораторную работу № 2 (10,4 КБ)

Лабораторная работа № 3

Заражение DOS exe-файла по методу переноса. Привязка программы к конкретному компьютеру

Описание реализации

Используемые файлы:

1. Vir3.exe - программа-заразитель DOS exe-файла.
2. Vpatch3.vrs - вирусная закладка, требующая ввода пароля для продолжения работы заражённой программы. Это переименнованный exe-файл Vpatch3.exe.
3. Unvir.exe (необязательно) - программа-обеззараживатель DOS exe-файла.  Совершенно та же, что и в лабораторной работе  № 2. Обратна Vir3.exe.
4. Сам заражаемый DOS exe-файл (возможно, с оверлеями). Условно назовём его Victim.exe. В качестве него можно применить tpx.exe, bp.exe, tc.exe, bc.exe, fox.exe, foxpro.exe - foxpro.ovl, foxprox.exe.

Программы лабораторной работы написаны на Паскале.

Алгоритм лабораторной работы

Эта лабораторная работа практически идентична лабораторной работе № 2, за исключением выполняемых вирусом действий. Если во 2 лабораторной работе вирус запускал заражённую программу после ввода правильного пароля, то здесь вирус используется для "привязки" заражённой программы к данному компьютеру для защиты этой программы от несанкционированного копирования.
В качестве критерия уникальности в лабораторной работе № 3 использована сумма байтов сегмента по адресу С000 (при адресации реального режима). Этот сегмент относится к области ROM BIOS видеокарты.   Эта сумма проявила себя уникальной, хотя я не могу гарантировать, что она никогда не совпадёт на каких-нибудь 2 компьютерах. Скорее всего, ROM BIOS видеокарты имеет всё-таки что-то вроде уникального серийного номера, но его смещение в памяти для видеокарт разных фирм разное. Суммируя байты всего сегмента, удаётся таким образом не зависеть от его точного смещения и тем не менее получить признак уникальности. Я обнаружил, что значение этой суммы зависит не только от компьютера, но даже от текущего пользователя Windows! Т.е. "привязанная программа" не будет работать не только на другом компьютере, но даже и на этом, если зайти под другим пользователем. Я написал 2 программы, каждая из которых суммирует байты сегмента по адресу С000 (при адресации реального режима), одна на Си (16-битная) и вторая на Паскале. Запуская одну из программ на разных компьютерах, можно проверить, разные ли она возвращает суммы. Если суммы возвратятся всё-таки одинаковые (т. е. не уникальные для каждого компьютера) то это значит, что уникальный серийный номер ROM BIOS видеокарты не попал в этот сегмент. В этом случае можно изменить в файле Mlimits.txt (из которого программа считывает адрес сегмента, начальное и конечное смещение в сегменте) соответствующие начальные и конечные адреса суммирования и проверять любые участоки оперативной памяти в пределах первого мегабайта, начиная со смежных с С000, до тех пор, пока возвращаемые суммы на 2 компьютерах не будут разными.

Скачать лабораторную работу № 3 (11 КБ)

Лабораторная работа № 4

Технология шифрования RSA

Эта лабораторная работа не сдаётся, а рассказывается на экзамене. Для её выполнения необходим файл pgp.exe и больше ничего. Для получения помощи вызываем pgp -h и pgp -k. Сначала генерируем две пары ключей через pgp -kg. Шифруем какой-нибудь файл через pgp -e textfile her_userid [other userids] (produces textfile.pgp). Дешифруем зашифрованный файл через pgp -s textfile [-u your_userid] (produces textfile.pgp). Для шифрования или дешифрования необходим свой секретный ключ и чужой открытый. Соответствующие ключи на момент совершения соответствующего действия должны находиться в той же папке, что и pgp.exe и обрабатываемый файл.

Скачать лабораторную работу № 4 (77,6 КБ вместе с pgp.exe)

Литература:

1. Компьютерные вирусы. Взгляд изнутри. (И. А. Гульев).

2. Библиотека системного программиста. (А. Фролов, Г. Фролов)

Сайт создан в системе uCoz