\documentclass[a4paper, final]{article} %\usepackage{literat} % Нормальные шрифты \usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта \usepackage{tabularx} \usepackage{booktabs} \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[russian]{babel} \usepackage{amsmath} \usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry} \usepackage{ragged2e} %для растягивания по ширине \usepackage{setspace} %для межстрочного интервала \usepackage{moreverb} %для работы с листингами \usepackage{indentfirst} % для абзацного отступа \usepackage{moreverb} %для печати в листинге исходного кода программ \usepackage{pdfpages} %для вставки других pdf файлов \usepackage{tikz} \usepackage{graphicx} \usepackage{afterpage} \usepackage{longtable} \usepackage{float} % Рекомендуется для biblatex (кавычки/локализация цитат и т.п.) \usepackage{csquotes} % ГОСТ-стили для biblatex \usepackage[ backend=biber, bibstyle=gost-numeric, % ссылки вида: [1] citestyle=gost-numeric, sorting=none % порядок в списке = по первому цитированию ]{biblatex} % Все источники хранятся в отдельном файле \addbibresource{refs.bib} \renewcommand*{\bibfont}{\small} % \usepackage[paper=A4,DIV=12]{typearea} \usepackage{pdflscape} % \usepackage{lscape} \usepackage{array} \usepackage{multirow} \renewcommand\verbatimtabsize{4\relax} \renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге \renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице \usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы \usepackage{listings} %листинги \usepackage{xcolor} % цвета % \usepackage{hyperref}% для гиперссылок \usepackage{enumitem} %для перечислений \newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}} \setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях % \hypersetup{colorlinks, % allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные) % подгружаемые языки — подробнее в документации listings (это всё для листингов) \lstloadlanguages{ SQL} % включаем кириллицу и добавляем кое−какие опции \lstset{tabsize=2, breaklines, basicstyle=\footnotesize, columns=fullflexible, flexiblecolumns, numbers=left, numberstyle={\footnotesize}, keywordstyle=\color{blue}, inputencoding=cp1251, extendedchars=true } \lstdefinelanguage{MyC}{ language=SQL, % ndkeywordstyle=\color{darkgray}\bfseries, % identifierstyle=\color{black}, % morecomment=[n]{/**}{*/}, % commentstyle=\color{blue}\ttfamily, % stringstyle=\color{red}\ttfamily, % morestring=[b]", % showstringspaces=false, % morecomment=[l][\color{gray}]{//}, keepspaces=true, escapechar=\%, texcl=true } \textheight=24cm % высота текста \textwidth=16cm % ширина текста \oddsidemargin=0pt % отступ от левого края \topmargin=-1.5cm % отступ от верхнего края \parindent=24pt % абзацный отступ \parskip=5pt % интервал между абзацами \tolerance=2000 % терпимость к "жидким" строкам \flushbottom % выравнивание высоты страниц % Настройка листингов \lstset{ language=python, extendedchars=\true, inputencoding=utf8, keepspaces=true, % captionpos=b, % подписи листингов снизу } % Настройка содержания \usepackage{tocloft} \usepackage[hidelinks]{hyperref} % section в содержании НЕ жирным \renewcommand{\cftsecfont}{\normalfont} \renewcommand{\cftsecpagefont}{\normalfont} % убрать отступ у subsection \setlength{\cftsubsecindent}{0pt} \begin{document} % ТИТУЛЬНЫЙ ЛИСТ \begin{center} \hfill \break \hfill \break \normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\ федеральное государственное автономное образовательное учреждение высшего образования \\ САНКТ-ПЕТЕРБУРГСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ПЕТРА ВЕЛИКОГО\\[10pt]} \normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt] \normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt] \normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\ \hfill \break \hfill \break \hfill \break \large{Отчёт по практическим работам по дисциплине}\\ \large{<<Защита информации>>}\\ \hfill \break \hfill \break \hfill \break \end{center} \small{ \begin{tabular}{lrrl} \!\!\!Студент, & \hspace{2cm} & & \\ \!\!\!группы 5130201/20101 & \hspace{2cm} & \underline{\hspace{3cm}} & Тищенко А. А. \\\\ \!\!\!Руководитель & \hspace{2cm} & & \\ \!\!\! & \hspace{2cm} & \underline{\hspace{3cm}} & Силиненко А. В. \\\\ &&\hspace{4cm} \end{tabular} \begin{flushright} <<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2026г. \end{flushright} } \hfill \break \hfill \break \begin{center} \small{Санкт-Петербург, 2026} \end{center} \thispagestyle{empty} % выключаем отображение номера для этой страницы \newpage \tableofcontents \thispagestyle{empty} % выключаем отображение номера для этой страницы \newpage \section*{Введение} \addcontentsline{toc}{section}{Введение} В рамках курса <<Защита информации>> было выполнено несколько практических работ, по результатам которых был составлен данный отчёт, содержащий информацию по всем практическим работам. Отчетная информация по каждой работе – это отдельный раздел в общем отчете. В отчёте представлены результаты следующих практических работ: \begin{enumerate} \item Практическая работа №1. Анализ уязвимостей программного обеспечения. Данная практическая работа посвящена анализу уязвимостей программного обеспечения с использованием Банка данных угроз безопасности информации ФСТЭК России~\cite{fstec-bdu}. В ходе выполнения работы предусмотрено изучение структуры разделов «Угрозы» и «Уязвимости», а также поиск уязвимостей по заданным критериям. Особое внимание уделяется выявлению уязвимостей, соответствующих используемым версиям операционных систем личных устройств, и рассмотрению возможных мер по их устранению. \item Практическая работа №2. Разработка и исследование системы аутентификации и авторизации. Данная практическая работа посвящена разработке системы доступа пользователей к конфиденциальным данным и исследованию стойкости паролей к атаке методом грубой силы. В ходе выполнения работы реализованы утилита управления пользователями, утилита доступа к конфиденциальным данным и программа перебора паролей, а также проведено экспериментальное исследование зависимости времени взлома от длины пароля. \end{enumerate} \newpage \section{Анализ уязвимостей программного обеспечения} \subsection{Цели и задачи работы} Практическая работа №1 по дисциплине «Защита информации» посвящена анализу уязвимостей программного обеспечения с использованием Банка данных угроз безопасности информации ФСТЭК Российской Федерации. Цель работы: получение практических навыков работы с Банком данных угроз ФСТЭК России~\cite{fstec-bdu}, содержащим сведения об угрозах безопасности информации и уязвимостях программного обеспечения. Для достижения поставленной цели в ходе выполнения работы были определены следующие задачи: \begin{enumerate} \item Ознакомление со структурой раздела <<Угрозы>> Банка данных угроз безопасности информации ФСТЭК России. \item Ознакомление со структурой раздела <<Уязвимости>> Банка данных угроз. \item Поиск информации в разделе <<Уязвимости>> по заданным критериям. \item Определение версий операционных систем, используемых на личном смартфоне и персональном компьютере. \item Поиск уязвимостей с уровнем опасности <<Критический>> и <<Высокий>>, соответствующих используемым версиям операционных систем, а также анализ и применение рекомендованных мер по их устранению. \end{enumerate} Выполнение данной работы позволяет сформировать практические навыки анализа актуальных угроз и уязвимостей, а также повысить уровень понимания механизмов обеспечения информационной безопасности современных информационных систем. \subsection{Знакомство с разделом <<Угрозы>> Банка угроз} Раздел <<Угрозы>> Банка данных угроз безопасности информации ФСТЭК России предназначен для систематизированного представления сведений об актуальных угрозах безопасности информации. Данный раздел содержит структурированную информацию, позволяющую оценить характер угроз, возможные последствия их реализации и способы противодействия. Раздел включает в себя следующие основные аспекты: \begin{enumerate} \item Классификация угроз: угрозы распределяются по различным категориям в зависимости от источника возникновения, способа реализации и объекта воздействия. Это позволяет упорядочить информацию и упростить её анализ. \item Описание угроз: для каждой угрозы приводится развернутое описание, включающее возможные сценарии реализации, цели нарушителя и потенциальные последствия для информационной системы. \item Объекты воздействия: указываются типы информационных систем, ресурсов или процессов, на которые может быть направлена угроза. \item Уровень опасности: каждой угрозе присваивается определённый уровень опасности, отражающий степень потенциального ущерба при её реализации. \item Рекомендации по противодействию: приводятся общие меры и подходы, направленные на предупреждение реализации угрозы или снижение возможных негативных последствий. \end{enumerate} \subsection{Знакомство с разделом <<Уязвимости>> Банка угроз} Раздел <<Уязвимости>> Банка данных угроз безопасности информации ФСТЭК России предназначен для получения сведений об актуальных уязвимостях программного обеспечения и их характеристиках. В рамках работы были рассмотрены подразделы: <<Список уязвимостей>>, <<Наиболее опасные уязвимости>> и <<Инфографика>>. Список уязвимостей представляет собой структурированный перечень выявленных уязвимостей в программном обеспечении. Для каждой уязвимости указывается идентификатор, наименование, описание, затронутое программное обеспечение и его версии, уровень опасности, а также оценка по шкале CVSS. Уязвимости классифицируются по уровню критичности (критический, высокий, средний и др.), что позволяет определить приоритетность их устранения. Также приводятся рекомендации по устранению или минимизации последствий эксплуатации уязвимости. Подраздел <<Наиболее опасные уязвимости>> содержит перечень уязвимостей с наивысшим уровнем опасности. Как правило, к ним относятся уязвимости, позволяющие выполнить удалённое выполнение кода, повысить привилегии, обойти механизмы аутентификации или получить несанкционированный доступ к информации. Данный раздел позволяет оперативно определить наиболее критичные риски для информационных систем (см. рис.~\ref{fig:top_vuln}). \begin{figure}[h!] \centering \includegraphics[width=0.7\linewidth]{img/top_vulnerabilities.png} \caption{Пример отображения наиболее опасных уязвимостей} \label{fig:top_vuln} \end{figure} Подраздел <<Инфографика>> предназначен для наглядного представления статистических данных по уязвимостям. В нём отображается распределение уязвимостей по уровням опасности, типам ошибок, видам программного обеспечения и производителям. Инфографика позволяет визуально оценить текущее состояние защищённости программных продуктов и выявить наиболее проблемные направления (см. рис.~\ref{fig:stats_vuln}). \begin{figure}[h!] \centering \includegraphics[width=0.7\linewidth]{img/vulnerability_stats.png} \caption{Пример статистического распределения уязвимостей} \label{fig:stats_vuln} \end{figure} \newpage \subsection{Версии ОС, используемые в личных устройствах} На личном компьютере используется операционная система Ubuntu 25.10 (см. рис.~\ref{fig:laptop-os-version}). \begin{figure}[h!] \centering \includegraphics[width=0.5\linewidth]{img/laptop-os-version.png} \caption{Версия операционной системы личного компьютера} \label{fig:laptop-os-version} \end{figure} На личном мобильном устройстве используется операционная система Android 11 с графической оболочкой MIUI Global 12.5.14, сборка 12.5.14.0 RKURUXM (см. рис.~\ref{fig:mobile-os-version}). \begin{figure}[h!] \centering \includegraphics[width=0.5\linewidth]{img/mobile-os-version.jpg} \caption{Версия операционной системы личного мобильного устройства} \label{fig:mobile-os-version} \end{figure} \subsection{Уязвимости ОС личного компьютера} Для поиска уязвимостей ОС личного компьютера на сайте Банка данных угроз безопасности информации ФСТЭК России были использованы следующие критерии: \begin{enumerate} \item Операционная система: Ubuntu 25.10. \item Уровень опасности: высокий. \end{enumerate} Использовался уровень опасности <<высокий>>, так как критических уязвимостей для данной ОС не найдено. По заданным критериям было найдено 10 уязвимостей (см. рис.~\ref{fig:laptop-vulnerabilities}). \begin{figure}[h!] \centering \includegraphics[width=0.8\linewidth]{img/laptop-vulnerabilities.png} \caption{Уязвимости ОС личного компьютера} \label{fig:laptop-vulnerabilities} \end{figure} Наиболее свежей является уязвимость BDU:2025-15300 <<Уязвимость интерфейсов cpu\_latency\_qos\_add, remove, update\_request модуля drivers/ufs/core/ufs-sysfs.c драйвера поддержки устройств SCSI ядра операционной системы Linux связана с ошибками синхронизации при использовании общего ресурса («Ситуация гонки»). Эксплуатация уязвимости может позволить нарушителю, действующему удаленно, вызвать отказ в обслуживании>>. Развёрнутое описание уязвимости представлено на рисунке~\ref{fig:laptop-vulnerabilities-details}. Базовый вектор уязвимости CVSS 2.0: AV:A/AC:L/Au:S/C:C/I:C/A:C. AV: A (Access Vector: Adjacent Network) — параметр, указывающий на то, что атакующий должен находиться в той же локальной сети или в непосредственной сетевой близости (например, в одной Wi-Fi сети) для реализации атаки. AC: L (Access Complexity: Low) — низкая сложность эксплуатации уязвимости. Для успешной атаки не требуется выполнения сложных условий или специальной подготовки среды. Au: S (Authentication: Single) — для осуществления атаки требуется прохождение аутентификации один раз. Это означает, что атакующий должен обладать учетной записью или иным способом пройти проверку подлинности. C: C (Confidentiality Impact: Complete) — полное нарушение конфиденциальности. Уязвимость позволяет получить полный доступ к защищаемой информации. I: C (Integrity Impact: Complete) — полное нарушение целостности. Злоумышленник может изменять или уничтожать данные без ограничений. A: C (Availability Impact: Complete) — полное нарушение доступности. Эксплуатация уязвимости может привести к отказу в обслуживании или полной недоступности системы. \begin{figure}[h!] \centering \includegraphics[width=0.9\linewidth]{img/laptop-vulnerabilities-details.png} \caption{Развёрнутое описание уязвимости BDU:2025-15300} \label{fig:laptop-vulnerabilities-details} \end{figure} Уязвимость была устранена в версии 25.10-6.17.0-14.14, поэтому для её устранения достаточно было обновить ОС до этой версии. \newpage \subsection{Уязвимости ОС личного мобильного устройства} Для поиска уязвимостей ОС личного мобильного устройства на сайте Банка данных угроз безопасности информации ФСТЭК России были использованы следующие критерии: \begin{enumerate} \item Операционная система: Android 11. \item Уровень опасности: критический. \end{enumerate} По заданным критериям была найдена 1 уязвимость (см. рис.~\ref{fig:mobile-vulnerabilities}). \begin{figure}[h!] \centering \includegraphics[width=0.8\linewidth]{img/mobile-vulnerabilities.png} \caption{Уязвимости ОС личного мобильного устройства} \label{fig:mobile-vulnerabilities} \end{figure} Развёрнутое описание уязвимости BDU:2023-08587 <<Уязвимость функции \\ callback\_thread\_event (com\_android\_bluetooth\_btservice\_AdapterService.cpp) операционной системы Android связана с использованием памяти после её освобождения. Эксплуатация уязвимости может позволить нарушителю, действующему удалённо, выполнить произвольный код>>, представлено на рисунке~\ref{fig:mobile-vulnerabilities-details}. Базовый вектор уязвимости CVSS 2.0: AV:N/AC:L/Au:N/C:C/I:C/A:C. AV: N (Access Vector: Network) — параметр, указывающий на то, что атакующий может осуществить атаку удалённо через сеть (например, через Интернет), без необходимости физического доступа или нахождения в локальной сети. AC: L (Access Complexity: Low) — низкая сложность эксплуатации уязвимости. Для успешной атаки не требуется специальных условий или сложной подготовки. Au: N (Authentication: None) — для эксплуатации уязвимости не требуется аутентификация. Атакующий может выполнить атаку без наличия учетной записи или прохождения процедуры входа в систему. C: C (Confidentiality Impact: Complete) — полное нарушение конфиденциальности. Уязвимость позволяет злоумышленнику получить полный доступ к конфиденциальной информации. I: C (Integrity Impact: Complete) — полное нарушение целостности. Атакующий может изменять, подменять или удалять данные без ограничений. A: C (Availability Impact: Complete) — полное нарушение доступности. Эксплуатация уязвимости может привести к полной недоступности системы или отказу в обслуживании. \begin{figure}[h!] \centering \includegraphics[width=0.9\linewidth]{img/mobile-vulnerabilities-details.png} \caption{Развёрнутое описание уязвимости BDU:2023-08587} \label{fig:mobile-vulnerabilities-details} \end{figure} \newpage \phantom{} \newpage \section{Разработка и исследование системы аутентификации и авторизации} \subsection{Цели и задачи работы} Практическая работа №2 по дисциплине <<Защита информации>> посвящена разработке системы доступа пользователей к конфиденциальным данным и исследованию стойкости паролей к атаке методом грубой силы. Цель работы: разработать систему аутентификации и авторизации пользователей и исследовать стойкость паролей к атаке методом грубой силы. Для достижения поставленной цели в ходе выполнения работы были определены следующие задачи: \begin{enumerate} \item Разработать систему доступа пользователей к конфиденциальным данным, включающую утилиту управления пользователями и утилиту доступа к конфиденциальным данным. \item Разработать программу взлома паролей методом грубой силы. \item Исследовать стойкость паролей в зависимости от их длины при использовании алгоритма хэширования SHA-256. \end{enumerate} \subsection{Требования к системе} Для работы необходимо создать следующие каталоги: \begin{itemize} \item \texttt{/usr/local/practice2/etc} — каталог для хранения файла с данными аутентификации и авторизации; \item \texttt{/usr/local/practice2/confdata} — каталог для хранения файлов с конфиденциальной информацией; \item \texttt{/usr/local/practice2/bin} — каталог для хранения разработанных утилит; \item \texttt{/usr/local/practice2/log} — каталог для хранения файлов регистрации. \end{itemize} Права доступа на чтение, запись и выполнение всех каталогов и файлов системы предоставляются только пользователю root. Данные аутентификации хранятся в файле \texttt{/usr/local/practice2/etc/passwd}. Каждая строка соответствует одному пользователю и имеет структуру: \begin{center} \texttt{<логин>:<хэш\_пароля>:<идентификатор>:<права>:<ФИО>} \end{center} Поддерживаются следующие права доступа: \texttt{r} — чтение, \texttt{w} — запись, \texttt{d} — удаление. Права на файл паролей предоставляются только пользователю root. Пароль должен содержать только символы в кодировке ASCII: буквы A–Z и a–z, цифры 0–9, специальные символы \texttt{!@\#\$\%\^{}\&*()}. Первый символ пароля должен быть буквой. \subsection{Характеристики ПК и среда разработки} Работа выполнялась на персональном компьютере со следующими характеристиками: \begin{itemize} \item Процессор: AMD Ryzen 5 5500U \item Оперативная память: 16 ГБ \item Операционная система: Ubuntu 25.10 \end{itemize} В качестве среды разработки использовался редактор Cursor. Язык программирования — Python 3.14. Алгоритм хэширования — SHA-256, реализованный с использованием модуля \texttt{hashlib} стандартной библиотеки Python. \subsection{Описание реализации} Утилита управления пользователями (usermgr, исходный код в приложении 1) предоставляет следующие подкоманды: \texttt{add} — добавление пользователя с интерактивным вводом ФИО, прав доступа, пароля и его подтверждения; \texttt{edit} — редактирование ФИО и прав доступа существующего пользователя; \texttt{passwd} — изменение пароля; \texttt{delete} — удаление пользователя; \texttt{list} — вывод списка всех пользователей. Пароль хранится в виде SHA-256-хэша. Все операции с файлом паролей регистрируются в журнале \texttt{log/usermgr.log}. Утилита доступа к конфиденциальным данным (confaccess, исходный код в приложении 2) при запуске запрашивает логин и пароль. При успешной аутентификации выводится приветствие <<Привет, <ФИО>>> и справка по доступным командам. При вводе неверных данных запрос повторяется. Завершение работы происходит по команде \texttt{exit} или сигналу SIGINT (Ctrl+C). Все попытки входа и действия с конфиденциальными данными регистрируются в журнале \texttt{log/access.log}. Для неинтерактивной проверки учётных данных предусмотрен режим \texttt{--check <логин>}: утилита читает пароли построчно из stdin и выводит 0 или 1 на каждую строку; при совпадении завершает работу с кодом 0. Поддерживаемые команды приведены в таблице~\ref{tab:commands}. \begin{table}[h!] \centering \caption{Команды утилиты confaccess} \label{tab:commands} \begin{tabularx}{\textwidth}{llX} \toprule Команда & Требуемые права & Описание \\ \midrule \texttt{create } & w & Создание нового пустого файла в confdata \\ \texttt{read } & r & Вывод содержимого файла \\ \texttt{append } & w & Добавление строки в конец файла \\ \texttt{copy } & r, w & Копирование файла в confdata \\ \texttt{remove } & d & Удаление файла из confdata \\ \texttt{help} & — & Вывод справки \\ \texttt{exit} & — & Выход из программы \\ \bottomrule \end{tabularx} \end{table} Копирование разрешено только в каталог \texttt{confdata} или внутри него. Копирование из \texttt{confdata} в другие каталоги и перезапись существующих файлов запрещены. Программа взлома паролей (bruteforce, исходный код в приложении 3) не имеет доступа к файлу паролей и выполняет перебор исключительно через утилиту confaccess. При запуске bruteforce создаёт один процесс \texttt{confaccess --check <логин>} и передаёт ему пароли построчно; утилита проверяет каждый пароль (хэширование SHA-256 и сравнение с данными из \texttt{passwd}) и возвращает результат. Перебор выполняется последовательно, начиная с длины 1. При нахождении совпадения фиксируются найденный пароль, количество итераций и затраченное время. Перебор прекращается при обнаружении пароля, достижении заданной максимальной длины или истечении восьмичасового лимита. \subsection{Развёртывание системы} Для создания структуры каталогов и установки утилит предусмотрен скрипт \texttt{setup.sh} (приложение 4). При запуске с правами суперпользователя скрипт также выставляет ограничительные права доступа. Базовый каталог задаётся переменной окружения \texttt{PRACTICE2\_DIR}; при её отсутствии используется \texttt{/usr/local/practice2}. Установка системы выполняется следующим образом: \begin{verbatim} chmod +x setup.sh sudo ./setup.sh \end{verbatim} Результат выполнения скрипта представлен на рисунке~\ref{fig:lab2-setup}. \begin{figure}[h!] \centering \includegraphics[width=0.6\linewidth]{img/lab2-setup.png} \caption{Результат выполнения скрипта setup.sh} \label{fig:lab2-setup} \end{figure} \subsection{Примеры работы утилит} На рисунке~\ref{fig:lab2-usermgr-add} показан процесс добавления нового пользователя. На рисунке~\ref{fig:lab2-usermgr-list} — список пользователей после добавления нескольких учётных записей. \begin{figure}[h!] \centering \includegraphics[width=0.7\linewidth]{img/lab2-usermgr-add.png} \caption{Добавление нового пользователя} \label{fig:lab2-usermgr-add} \end{figure} \begin{figure}[h!] \centering \includegraphics[width=0.7\linewidth]{img/lab2-usermgr-list.png} \caption{Список пользователей системы} \label{fig:lab2-usermgr-list} \end{figure} Содержимое файла \texttt{etc/passwd} после добавления пользователей представлено на рисунке~\ref{fig:lab2-passwd}. \begin{figure}[h!] \centering \includegraphics[width=\linewidth]{img/lab2-passwd.png} \caption{Содержимое файла etc/passwd} \label{fig:lab2-passwd} \end{figure} На рисунке~\ref{fig:lab2-confaccess-auth} показан процесс аутентификации, включая реакцию системы на ввод неверных учётных данных. На рисунке~\ref{fig:lab2-confaccess-commands} — пример выполнения команд с проверкой прав доступа. \begin{figure}[h!] \centering \includegraphics[width=0.65\linewidth]{img/lab2-confaccess-auth.png} \caption{Аутентификация в утилите confaccess} \label{fig:lab2-confaccess-auth} \end{figure} \begin{figure}[h!] \centering \includegraphics[width=0.5\linewidth]{img/lab2-confaccess-commands.png} \caption{Работа команд утилиты confaccess} \label{fig:lab2-confaccess-commands} \end{figure} На рисунке~\ref{fig:lab2-access-log} представлен пример содержимого журнала \texttt{access.log} с записями об успешных и неуспешных попытках входа и выполненных операциях. \begin{figure}[h!] \centering \includegraphics[width=0.6\linewidth]{img/lab2-access-log.png} \caption{Содержимое файла журнала access.log} \label{fig:lab2-access-log} \end{figure} \subsection{Исследование стойкости паролей} Алфавит допустимых символов включает 72 символа: 52 буквы (A–Z, a–z), 10 цифр (0–9) и 10 специальных символов (\texttt{!@\#\$\%\^{}\&*()}). Поскольку первый символ пароля должен быть буквой, для него допустимы только 52 варианта. Максимальное количество итераций для пароля длиной $n$ вычисляется по формуле: \[ N(n) = 52 \cdot 72^{n-1} \] Расчётное максимальное время взлома определяется как $t_{\max}(n) = N(n)\,/\,v$, где $v$ — скорость проверки паролей через утилиту confaccess, измеренная экспериментально. По результатам серии запусков на паролях длиной 2, 3 и 4 символа (по 5 запусков для каждой длины с различными паролями) средняя скорость составила $v \approx 7{,}8 \times 10^4$ проверок в секунду. На рисунке~\ref{fig:lab2-bruteforce} показан пример вывода программы взлома для пароля длиной 3 символа. \begin{figure}[h!] \centering \includegraphics[width=0.5\linewidth]{img/lab2-bruteforce.png} \caption{Результат работы программы взлома bruteforce} \label{fig:lab2-bruteforce} \end{figure} Эксперименты проводились для длин 2, 3 и 4 символов. Для длины 5 расчётное максимальное время составляет около 18\,000~с ($\approx 5$ ч), что делает реальный эксперимент нецелесообразным; для длин 6 символов и более расчётное максимальное время превышает 8 часов. Результаты приведены в таблице~\ref{tab:bruteforce}. \begin{table}[h!] \centering \caption{Результаты исследования стойкости паролей (SHA-256, $v = 7{,}8 \times 10^4$ проверок/с)} \label{tab:bruteforce} \begin{tabularx}{\textwidth}{crrcc} \toprule Длина & $N$ & $t_{\max}$, с & Эксп. итераций & Эксп. время, с \\ \midrule 2 & $3\,744$ & $0{,}048$ & $1\,847$ & $0{,}024$ \\ 3 & $269\,568$ & $3{,}5$ & $134\,847$ & $1{,}73$ \\ 4 & $19\,408\,896$ & $249$ & $11\,623\,412$ & $149$ \\ 5 & $1\,397\,440\,512$ & $17\,916$ & \multicolumn{2}{c}{не проводился} \\ 6 & $1{,}01 \times 10^{11}$ & $1{,}29 \times 10^6$ & \multicolumn{2}{c}{не проводился} \\ 7 & $7{,}24 \times 10^{12}$ & ${\approx}9{,}3 \times 10^{7}$ & \multicolumn{2}{c}{не проводился} \\ 8 & $5{,}22 \times 10^{14}$ & ${\approx}6{,}7 \times 10^{9}$ & \multicolumn{2}{c}{не проводился} \\ \bottomrule \end{tabularx} \end{table} \subsection{Выводы} В ходе практической работы была разработана система доступа пользователей к конфиденциальным данным, включающая утилиту управления пользователями, утилиту доступа и программу взлома паролей методом грубой силы. Реализован механизм хэширования паролей на основе алгоритма SHA-256, система разграничения прав доступа и журналирование всех операций. Теоретический анализ показал, что количество итераций, необходимых для полного перебора паролей, экспоненциально возрастает с увеличением их длины. Экспериментальное исследование позволило оценить реальную скорость перебора и подтвердить теоретические оценки. Полученные результаты демонстрируют, что использование паролей длиной 6 символов и более существенно затрудняет атаку методом грубой силы. \newpage \section*{Заключение} \addcontentsline{toc}{section}{Заключение} В ходе выполнения практической работы №1 был проведён анализ уязвимостей программного обеспечения с использованием Банка данных угроз ФСТЭК России. Были изучены структура разделов <<Угрозы>> и <<Уязвимости>>, определены версии операционных систем личного компьютера и смартфона, а также выполнен поиск уязвимостей с уровнем опасности <<Критический>> и <<Высокий>>. Проведён анализ наиболее актуальных уязвимостей, рассмотрены их характеристики и векторы CVSS, а также рекомендации по устранению. В процессе выполнения работы были получены практические навыки поиска, анализа и оценки уязвимостей информационных систем. В ходе выполнения практической работы №2 была разработана система доступа пользователей к конфиденциальным данным. Реализованы утилита управления пользователями с хэшированием паролей по алгоритму SHA-256, утилита доступа с разграничением прав и журналированием операций, а также программа взлома паролей методом грубой силы. Проведено исследование стойкости паролей в зависимости от их длины, результаты которого подтвердили экспоненциальную зависимость числа итераций от длины пароля и продемонстрировали практическую устойчивость достаточно длинных паролей к атаке полного перебора. \newpage \printbibliography[heading=bibintoc] \newpage \section*{Приложение 1} \addcontentsline{toc}{section}{Приложение 1} \label{app:usermgr} \lstinputlisting{../lab2/usermgr.py} \newpage \section*{Приложение 2} \addcontentsline{toc}{section}{Приложение 2} \lstinputlisting{../lab2/access.py} \newpage \section*{Приложение 3} \addcontentsline{toc}{section}{Приложение 3} \label{app:bruteforce} \lstinputlisting{../lab2/bruteforce.py} \newpage \section*{Приложение 4} \addcontentsline{toc}{section}{Приложение 4} \lstinputlisting{../lab2/setup.sh} \end{document}