ПЗ (1219668), страница 4
Текст из файла (страница 4)
Мониторинг интернет активности. Интернет – серьёзный канал утечки конфиденциальных данных, поэтому системы контроля за действиями пользователя отслеживают многие аспекты интернет активности работника:
-
мониторинг посещаемых web-сайтов позволяет выявить не целевое использование рабочего времени, отслеживать поисковые запросы сотрудника. Сохраняются Url, заголовки посещённых страниц, время их посещения;
-
социальные сети. Помимо не целевой траты рабочего времени на социальные сети, через них может утекать конфиденциальная информация;
-
перехват и сохранение сообщений большинства популярных IM-протоколов и месседжеров (ICQ, Skype и т.п.);
-
мониторинг электронной почты. Ведётся полное журналирование всех сообщений электронной почты;
Мониторинг локальных действий:
-
мониторинг клавиатуры. Позволяет контролировать использование конфиденциальной информации, восстанавливать забытые пароли, отслеживать объём проделанной работы (для стенографисток);
-
буфер обмена. Система сохраняет всё, что было скопировано в буфер обмена, и почти всегда, сопутствующую информацию. Это позволяет предотвратить потерю информации, даёт возможность обнаружить разглашение конфиденциальной информации;
-
запоминаются все действия с файлами: копирование, удаление, редактирование, и программа через которое действие совершено;
-
печать файлов. Через принтер может утечь конфиденциальная информация, достаточно распечатать важный документ и вынести с предприятия, поэтому сохраняются названия печатаемых файлов, времени и даты печати. Так же, печатаемые файлы могут сохраняться, как в виде исходного файла, так и в виде графического файла.
Программный комплекс требует доработки большого объема функционала, может строиться из отдельных модулей, использовать встроенные утилиты для администрирования и журналирования. Полная реализация такого комплекса требует значительного времени как на создание, так и на тестирование. Поэтому в рамках выпускной квалификационной работы:
-
сбор информации о содержимом каталогов и дисков ;
-
мониторинг процессов;
-
мониторинг рабочего стола;
-
мониторинг доступа к USB.
-
Создание и доработка программного комплекса
Реализация программы выполняется в QT Creator – кроссплатформенной свободной IDE для разработки на C, C++, QML и ECMAscript. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML [20].
В качестве БД для хранения информации в программном комплексе используется реляционная база данных MySQL.
-
Сбор информации о содержимом каталогов и дисков
Для написания скрипта сбора и хранения информации о хранимых файлах на компьютере используется команда:
@echo off
c:
@chcp 1251
dir D: /q /s /a-d /ah /as /ar /aa /-c /tw /4 /on > c:\%computername%.txt.
Команда DIR позволяет отобразить список файлов и подкаталогов для указанного каталога. Список может быть отсортирован по множеству критериев, задаваемых параметрами командной строки.
Формат командной строки: DIR [диск:][путь][имя_файла] [ /A[[:] атрибуты]] [/B] [/C] [/D] [/L] [/N] [/O[[:]порядок]] [/P] [/Q] [/S] /T[[:]время]] [/W] [/X] [/4] Параметры командной строки:
-
[диск:][путь][имя_файла] Диск, каталог и/или файлы, которые следует включить в список;
-
/A вывод файлов с указанными атрибутами;
-
D каталоги R Доступные только для чтения;
-
H скрытые файлы A Файлы для архивирования;
-
S системные файлы Префикс "-" имеет значение НЕ;
-
-S не системные файлы;
-
/B вывод только имен файлов;
-
/C применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения этого режима служит ключ /-C;
-
/D вывод списка в несколько столбцов с сортировкой по столбцам.
-
/L использование нижнего регистра для имен файлов;
-
/N отображение имен файлов в крайнем правом столбце.
-
/O сортировка списка отображаемых файлов;
-
порядок: N – По имени (алфавитная), S – По размеру (сперва меньшие);
-
E по расширению (алфавитная) D По дате (сперва более старые);
-
G начать список с каталогов Префикс "-" имеет значение НЕ;
-
/P пауза после заполнения каждого экрана;
-
/Q вывод сведений о владельце файла;
-
/S вывод списка файлов из указанного каталога и его подкаталогов;
-
/T выбор поля времени для отображения и сортировки время: C – Создание (время создания - Create ), A – Последнее использование (последний доступ - Accsess ), W – Последнее изменение (последняя модификация Write);
-
/W вывод списка в несколько столбцов.
Поле выполнения команды получим список содержимого каталогов и диска в виде, представленном на рисунке 6.
-
Выполнение команды DIR
Команда DIR является стандартной процедурой командной строки и не требует установки дополнительного программного обеспечения.
-
Мониторинг процессов
Для написания скрипта получения информации о запущенных процессах используем команду:
@echo off
c:
@chcp 1251
tasklist /v /FO CSV > c:\%username%.txt.
Команда TASKLIST используется для получения списка процессов, выполняющихся на локальном или удаленном компьютере в данный момент времени.
Формат командной строки:
TASKLIST [/S <система> [/U <имя пользователя> [/P [<пароль>]]]][/M [<модуль>] | /SVC | /V] [/FI <фильтр>] [/FO <формат>] [/NH]
Список параметров:
-
/S <система> подключаемый удаленный компьютер;
-
/U [<домен>\]<пользователь> Пользовательский контекст, в котором должна выполняться эта команда;
-
/P [<пароль>] пароль для этого пользовательского контекста. Запрашивает ввод пароля, если он не задан;
-
/M [<модуль>] отображение всех задач, которые используют данное имя exe/dll. Если имя модуля не указано, то отображаются все загруженные модули;
-
/SVC отображение служб для каждого процесса;
-
/V ведение подробного протоколирования;
-
/FI <фильтр> отображение списка задач, которые отвечают указанному в фильтре критерию;
-
/FO <формат> описание формата выходного файла. Допустимые значения: "TABLE", "LIST", "CSV".
После выполнения команды TASKLIST получим файл в виде представленном на рисунке 7.
-
Выполнение команды TASKLIST
Команда TASKLIST является стандартной процедурой командной строки и не требует установки дополнительного ПО. Так же для мониторинга процессов можно использовать и другие утилиты входящие в состав ОС Windows, например WMIC.
-
Мониторинг usb подключении
Для написания скрипта для отслеживания скрипта используется WMI.
Опишем алгоритм работы скрипта:
-
В самом начале создаём объект для работы с WMI
-
Вызов objWMIService.ExecNotificationQueryAsync привязывает событие в классе Win32_PnPEntity к ранее созданному объекту WBemScripting.SWbemSink;
-
Как только происходит событие в привязанном классе Win32_PnPEntity, асинхронно вызывается функция с указанным нами префиксом event_ и именем OnObjectReady, где мы уже и обрабатываем события WMI, нужные нам. В данном случае, это будут события "InstanceCreationEvent" и "InstanceDeletionEvent", которые для класса Win32_PnPEntity как раз и означают, соответственно, появление или исчезновение какого-то устройства. При первом событии мы порождаем процесс, при втором процесс убиваем.
-
Создание базы данных для хранения журналов мониторинга
В качестве хранилища данных используем базу данных MySQL.
Проанализировав полученную информацию в процессе формирования журналов мониторинга процессов и содержимого каталогов и дисков, мониторинга usb подключений и мониторинга рабочего стола, выявляем необходимые сущности для построения базы данных, а так же нормализуя ее, приступаем к написанию скрипта для создания БД. Ниже приведен код скрипта.
create schema monitoring;
use monitoring;
create table PC(
ID_name_user_PC int not null auto_increment primary key,
Name_user_PC text);
create table Catalogs(ID_Catalog int not null auto_increment primary key, Catalog_path text);
create table Domen_t( ID_domen int not null auto_increment primary key, Domen text);
create table Type_files( ID_file int not null auto_increment primary key, Type_name text);
create table Dates_create(ID_date_create int not null auto_increment primary key, Date_create datetime);
create table files( id_file int not null auto_increment primary key, Date_create_id int, foreign key (Date_create_id) references Dates_create(ID_date_create),name_worker_id int, foreign key (name_worker_id) references PC(ID_name_user_PC), name_file text,type_file_id int, foreign key (type_file_id) references Type_files(ID_file), size_file int,domen_id int, foreign key (domen_id) references Domen_t(ID_domen), date_time_ch datetime,catalog_id int, foreign key (catalog_id) references Catalogs(ID_Catalog));
create table Names_proc(ID_Names_proc int not null auto_increment primary key, Name_proc text);
create table Names_session( ID_Names_session int not null auto_increment primary key, Session_name text);
create table States(ID_States int not null auto_increment primary key,State text);
create table Windows_title( ID_Windows_title int not null auto_increment primary key, Title_window text);
create table logs_proc(ID_log_proc int not null auto_increment primary key,Name_proc_id int,foreign key (Name_proc_id) references Names_proc(ID_Names_proc),PID int,Session_name_id int,foreign key (Session_name_id)references Names_session(ID_Names_session),Session_number int,Memory_proc text,State_id int,foreign key (State_id) references States(ID_States),name_worker_id int,foreign key(name_worker_id) references PC(ID_name_user_PC),CPU_time time,Title_window_id int,foreign key (Title_window_id) references Windows_title(ID_Windows_title),Date_create_id int,foreign key (Date_create_id) references Dates_create(ID_date_create));
create table Names_scr(ID_Names_scr int not null auto_increment primary key, Name_scr text);
create table scr_mon(id_csr int not null auto_increment primary key,name_worker_id int, foreign key (name_worker_id) references PC(ID_name_user_PC),Name_scr_id int,foreign key (Name_scr_id) references Names_scr(ID_Names_scr),Catalog_id int, foreign key (Catalog_id) references Catalogs(ID_Catalog),Date_create_id int, foreign key (Date_create_id) references Dates_create(ID_date_create));
create table usb_log(usb_ID int not null auto_increment primary key,name_worker_id int,foreign key (name_worker_id) references PC(ID_name_user_PC),Name_usb text,Size_usb int,Metka_toma text,Date_use text,Date_create_id int,foreign key (Date_create_id) references Dates_create(ID_date_create));
Выполнив данный скрипт, создастся база данных с именем «Monitorin», а внутри нее создадутся необходимые таблицы. ER модель базы данных представлена на рисунке 6.
-
ER модель базы данных
-
Написание программы и создание графического интерфейса
После создания базы данных и получения журнала мониторинга, необходимо занести данные журналирования в базу данных.
Для начала необходимо настроить соединение с базой данных MySQL. Для этого загружаем драйвер и настраиваем подключение. Интерфейс подключения, написанный в QT представлен на рисунке 9.
-
Интерфейс подключения к БД
Далее необходимо написать «парсер» для разбора журналов логов для того чтобы определить необходимую информацию и занести в базу данных. Для разбора информации из журналов логирования используем стандартные библиотеки QT: QFIle, QTextStream. Код разбора содержимого файлов и каталогов представлен ниже.















