Отчёт лаб 2
BIN
lab1/img/lab2-access-log.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
lab1/img/lab2-bruteforce.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
lab1/img/lab2-confaccess-auth.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
lab1/img/lab2-confaccess-commands.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
lab1/img/lab2-passwd.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
lab1/img/lab2-setup.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
lab1/img/lab2-usermgr-add.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
lab1/img/lab2-usermgr-list.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
215
lab1/report.tex
@@ -119,14 +119,6 @@
|
||||
% убрать отступ у subsection
|
||||
\setlength{\cftsubsecindent}{0pt}
|
||||
|
||||
% subsubsection курсивом
|
||||
\usepackage{titlesec}
|
||||
|
||||
\titleformat{\subsubsection}
|
||||
{\normalfont\large\itshape} % стиль: обычный + курсив
|
||||
{\thesubsubsection} % номер (убери если не нужен)
|
||||
{1em}
|
||||
{}
|
||||
|
||||
|
||||
\begin{document}
|
||||
@@ -183,11 +175,12 @@
|
||||
В отчёте представлены результаты следующих практических работ:
|
||||
\begin{enumerate}
|
||||
\item Практическая работа №1. Анализ уязвимостей программного обеспечения. Данная практическая работа посвящена анализу уязвимостей программного обеспечения с использованием Банка данных угроз безопасности информации ФСТЭК России~\cite{fstec-bdu}. В ходе выполнения работы предусмотрено изучение структуры разделов «Угрозы» и «Уязвимости», а также поиск уязвимостей по заданным критериям. Особое внимание уделяется выявлению уязвимостей, соответствующих используемым версиям операционных систем личных устройств, и рассмотрению возможных мер по их устранению.
|
||||
\item Практическая работа №2. Разработка и исследование системы аутентификации и авторизации. Данная практическая работа посвящена разработке системы доступа пользователей к конфиденциальным данным и исследованию стойкости паролей к атаке методом грубой силы. В ходе выполнения работы реализованы утилита управления пользователями, утилита доступа к конфиденциальным данным и программа перебора паролей, а также проведено экспериментальное исследование зависимости времени взлома от длины пароля.
|
||||
\end{enumerate}
|
||||
|
||||
\newpage
|
||||
\section{Анализ уязвимостей программного обеспечения}
|
||||
\section*{Введение}
|
||||
\subsection{Цели и задачи работы}
|
||||
|
||||
Практическая работа №1 по дисциплине «Защита информации» посвящена анализу уязвимостей программного обеспечения с использованием Банка данных угроз безопасности информации ФСТЭК Российской Федерации.
|
||||
|
||||
@@ -353,12 +346,216 @@ A: C (Availability Impact: Complete) — полное нарушение дос
|
||||
|
||||
\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) предоставляет следующие подкоманды: \texttt{add} — добавление пользователя с интерактивным вводом ФИО, прав доступа, пароля и его подтверждения; \texttt{edit} — редактирование ФИО и прав доступа существующего пользователя; \texttt{passwd} — изменение пароля; \texttt{delete} — удаление пользователя; \texttt{list} — вывод списка всех пользователей. Пароль хранится в виде SHA-256-хэша. Все операции с файлом паролей регистрируются в журнале \texttt{log/usermgr.log}.
|
||||
|
||||
Утилита доступа к конфиденциальным данным (confaccess) при запуске запрашивает логин и пароль. При успешной аутентификации выводится приветствие <<Привет, <ФИО>>> и справка по доступным командам. При вводе неверных данных запрос повторяется. Завершение работы происходит по команде \texttt{exit} или сигналу SIGINT (Ctrl+C). Все попытки входа и действия с конфиденциальными данными регистрируются в журнале \texttt{log/access.log}.
|
||||
|
||||
Поддерживаемые команды приведены в таблице~\ref{tab:commands}.
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\caption{Команды утилиты confaccess}
|
||||
\label{tab:commands}
|
||||
\begin{tabularx}{\textwidth}{llX}
|
||||
\toprule
|
||||
Команда & Требуемые права & Описание \\
|
||||
\midrule
|
||||
\texttt{create <file>} & w & Создание нового пустого файла в confdata \\
|
||||
\texttt{read <file>} & r & Вывод содержимого файла \\
|
||||
\texttt{append <file> <text>} & w & Добавление строки в конец файла \\
|
||||
\texttt{copy <src> <dst>} & r, w & Копирование файла в confdata \\
|
||||
\texttt{remove <file>} & d & Удаление файла из confdata \\
|
||||
\texttt{help} & — & Вывод справки \\
|
||||
\texttt{exit} & — & Выход из программы \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{table}
|
||||
|
||||
Копирование разрешено только в каталог \texttt{confdata} или внутри него. Копирование из \texttt{confdata} в другие каталоги и перезапись существующих файлов запрещены.
|
||||
|
||||
Программа взлома паролей (bruteforce) выполняет последовательный перебор паролей начиная с длины 1, проверяя все допустимые комбинации символов. Для каждой комбинации вычисляется SHA-256-хэш и сравнивается с целевым хэшем из файла паролей. При нахождении совпадения фиксируются найденный пароль, количество итераций и затраченное время. Перебор прекращается при обнаружении пароля, достижении заданной максимальной длины или истечении восьмичасового лимита.
|
||||
|
||||
\subsection{Развёртывание системы}
|
||||
|
||||
Для создания структуры каталогов и установки утилит предусмотрен скрипт \texttt{setup.sh}. При запуске с правами суперпользователя скрипт также выставляет ограничительные права доступа. Базовый каталог задаётся переменной окружения \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.85\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$ — скорость хэширования, измеренная экспериментально. По результатам серии запусков на паролях длиной 3 и 4 символа (по 5 запусков для каждой длины с различными паролями) средняя скорость составила $v \approx 1{,}50 \times 10^6$ хэш-операций в секунду.
|
||||
|
||||
На рисунке~\ref{fig:lab2-bruteforce} показан пример вывода программы взлома для пароля длиной 3 символа.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{img/lab2-bruteforce.png}
|
||||
\caption{Результат работы программы взлома bruteforce}
|
||||
\label{fig:lab2-bruteforce}
|
||||
\end{figure}
|
||||
|
||||
Эксперименты проводились для длин 3, 4 и 5 символов. Для длины 5 расчётное максимальное время составляет около 930~с ($\approx 15{,}5$ мин), что не превышает допустимый предел в 8 часов. Для длин 6 символов и более расчётное максимальное время превышает 8 часов, поэтому эксперименты не проводились. Результаты приведены в таблице~\ref{tab:bruteforce}.
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\caption{Результаты исследования стойкости паролей (SHA-256, $v = 1{,}50 \times 10^6$ Х/с)}
|
||||
\label{tab:bruteforce}
|
||||
\begin{tabularx}{\textwidth}{crrcc}
|
||||
\toprule
|
||||
Длина & $N$ & $t_{\max}$, с & Эксп. итераций & Эксп. время, с \\
|
||||
\midrule
|
||||
3 & $269\,568$ & $0{,}18$ & $163\,000$ & $0{,}22$ \\
|
||||
4 & $19\,408\,896$ & $12{,}9$ & $14\,160\,000$ & $9{,}5$ \\
|
||||
5 & $1\,397\,440\,512$ & $930$ & $698\,000\,000$ & $464$ \\
|
||||
6 & $1{,}01 \times 10^{11}$ & $66\,954$ & \multicolumn{2}{c}{не проводился} \\
|
||||
7 & $7{,}24 \times 10^{12}$ & ${\approx}4{,}8 \times 10^{6}$ & \multicolumn{2}{c}{не проводился} \\
|
||||
8 & $5{,}22 \times 10^{14}$ & ${\approx}3{,}5 \times 10^{8}$ & \multicolumn{2}{c}{не проводился} \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{table}
|
||||
|
||||
\subsection{Выводы}
|
||||
|
||||
В ходе практической работы была разработана система доступа пользователей к конфиденциальным данным, включающая утилиту управления пользователями, утилиту доступа и программу взлома паролей методом грубой силы. Реализован механизм хэширования паролей на основе алгоритма SHA-256, система разграничения прав доступа и журналирование всех операций.
|
||||
|
||||
Теоретический анализ показал, что количество итераций, необходимых для полного перебора паролей, экспоненциально возрастает с увеличением их длины. Экспериментальное исследование позволило оценить реальную скорость перебора и подтвердить теоретические оценки. Полученные результаты демонстрируют, что использование паролей длиной 6 символов и более существенно затрудняет атаку методом грубой силы, а пароли длиной 8 и более символов при применении SHA-256 практически не поддаются взлому за приемлемое время.
|
||||
|
||||
\newpage
|
||||
\section*{Заключение}
|
||||
\addcontentsline{toc}{section}{Заключение}
|
||||
|
||||
В ходе выполнения практической работы №1 был проведён анализ уязвимостей программного обеспечения с использованием Банка данных угроз ФСТЭК России. Были изучены структура разделов <<Угрозы>> и <<Уязвимости>>, определены версии операционных систем личного компьютера и смартфона, а также выполнен поиск уязвимостей с уровнем опасности <<Критический>> и <<Высокий>>. Проведён анализ наиболее актуальных уязвимостей, рассмотрены их характеристики и векторы CVSS, а также рекомендации по устранению. В процессе выполнения работы были получены практические навыки поиска, анализа и оценки уязвимостей информационных систем.
|
||||
|
||||
В ходе выполнения практической работы №2 была разработана система доступа пользователей к конфиденциальным данным. Реализованы утилита управления пользователями с хэшированием паролей по алгоритму SHA-256, утилита доступа с разграничением прав и журналированием операций, а также программа взлома паролей методом грубой силы. Проведено исследование стойкости паролей в зависимости от их длины, результаты которого подтвердили экспоненциальную зависимость числа итераций от длины пароля и продемонстрировали практическую устойчивость достаточно длинных паролей к атаке полного перебора.
|
||||
|
||||
\newpage
|
||||
\printbibliography[heading=bibintoc]
|
||||
|
||||
|
||||