\documentclass[spec, och, pract]{Practice} % параметр - тип обучения - одно из значений: % spec - специальность % bachelor - бакалавриат (по умолчанию) % master - магистратура % параметр - форма обучения - одно из значений: % och - очное (по умолчанию) % zaoch - заочное % параметр - тип работы - одно из значений: % referat - реферат % coursework - курсовая работа (по умолчанию) % diploma - дипломная работа % pract - отчет по практике % параметр - включение шрифта % times - включение шрифта Times New Roman (если установлен) % по умолчанию выключен \usepackage{subfigure} \usepackage{tikz,pgfplots} \pgfplotsset{compat=1.5} \usepackage{float} %\usepackage{titlesec} \setcounter{secnumdepth}{4} %\titleformat{\paragraph} %{\normalfont\normalsize}{\theparagraph}{1em}{} %\titlespacing*{\paragraph} %{35.5pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} \titleformat{\paragraph}[block] {\hspace{1.25cm}\normalfont} {\theparagraph}{1ex}{} \titlespacing{\paragraph} {0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} % --------------------------------------------------------------------------% \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage{graphicx} \graphicspath{ {./images/} } \usepackage{tempora} \usepackage[sort,compress]{cite} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsthm} \usepackage{fancyvrb} \usepackage{listings} \usepackage{listingsutf8} \usepackage{longtable} \usepackage{array} \usepackage[english,russian]{babel} % \usepackage[colorlinks=true]{hyperref} \usepackage{url} \newcommand{\eqdef}{\stackrel {\rm def}{=}} \newcommand{\bsl}{\textbackslash{}} \renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}} \newtheorem{lem}{Лемма} \begin{document} % Кафедра (в родительном падеже) \chair{теоретических основ компьютерной безопасности и криптографии} % Тема работы \title{отчет} % Курс \course{второй} % Группа \group{231} % Факультет (в родительном падеже) (по умолчанию "факультета КНиИТ") \department{факультета компьютерных наук и информационных технологий} % Специальность/направление код - наименование %\napravlenie{09.03.04 "--- Программная инженерия} %\napravlenie{010500 "--- Математическое обеспечение и администрирование информационных систем} %\napravlenie{230100 "--- Информатика и вычислительная техника} %\napravlenie{231000 "--- Программная инженерия} \napravlenie{090301 "--- Компьютерная безопасность} % Для студентки. Для работы студента следующая команда не нужна. % \studenttitle{Студентки} % Фамилия, имя, отчество в родительном падеже \author{Гущина Андрея Юрьевича} % Заведующий кафедрой \chtitle{д.~ф.-м.~н.,~доцент} % степень, звание \chname{М.~Б.~Абросимов} %Научный руководитель (для реферата преподаватель проверяющий работу) \satitle{доцент} %должность, степень, звание \saname{Н.~Н.~Бондарев} % Руководитель практики от организации (только для практики, % для остальных типов работ не используется) % \patitle{к.ф.-м.н.} % \paname{С.~В.~Миронов} % Семестр (только для практики, для остальных % типов работ не используется) \term{третий} % Наименование практики (только для практики, для остальных % типов работ не используется) \practtype{Ознакомительная} % Продолжительность практики (количество недель) (только для практики, % для остальных типов работ не используется) \duration{2} % Даты начала и окончания практики (только для практики, для остальных % типов работ не используется) \practStart{22 июня 2020} \practFinish{05 июля 2020} % Год выполнения отчета \date{2020} \maketitle % Включение нумерации рисунков, формул и таблиц по разделам % (по умолчанию - нумерация сквозная) % (допускается оба вида нумерации) % \secNumbering \tableofcontents \intro Идея о соединении нескольких компьютеров в одну сеть появилась практически во время зарождения самих ЭВМ. Сегодня сетевые технологии уже показывают себя как самое важное направление развития компьютерной индустрии. Даже небольшие предприятия активно используют сетевые технологии, в то время как существование корпораций уже немыслимо без использования сетей. Из-за повсеместности технологии появляются люди, готовые использовать её в корыстных целях. В данной работе я рассмотрел некоторые из наиболее известных видов сетевых атак. Во второй части работы рассмотрен процесс создания следов программами, а так же процесс поиска этих следов в системе. Как пример следообразующего элемента рассмотрена программа mspaint. В качестве следовоспринимающего элемента была использована программа Process Monitor от компании Sysinternals. \section{Сетевые атаки} Атака на сетевую инфраструктуру может производиться по разным причинам: от уничтожения или кражи данных до получения доступа к другой сети, недоступной извне. \subsection{Сканирование портов} Сканирование портов -- основной способ добычи информации о внутренней инфраструктуре сети. Позволяет обнаружить используемые сервисы на атакуемом сервере и, отталкиваясь от этих данных, составить план последующей атаки \cite{wiki_scanner}. Целью данной атаки является именно подготовка последующей атаки, основанной на уязвимостях обнаруженных сетевых служб, а не кража конфиденциальной информации. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{nmap.png} \caption{Пример работы сетевого сканера nmap} \label{fig:nmap} \end{figure} Самым простым способом сканирования портов является TCP сканирование с помощью сетевых функций операционной системы. Но данный способ обычно применяется тогда, когда использование других, более точных, способов не представляется возможным. Это связано с тем, что при использовании создаётся и быстро закрывается большое количество TCP соединений. Это создаёт нагрузку на сканирующую систему, а также позволяет быстро обнаружить активность сканера в сети. Для изучения сети более предпочтительным является SYN сканирование, так как при его использовании не создаётся полноценных сетевых соединений, либо другие методы, если этот не является осуществимым. \cite{kaspersky_scanner} Для защиты от сканирования портов следует применять межсетевой экран с правильно настроенными правилами фильтрации пакетов. \subsection{Человек посередине} Человек посередине -- при доступе к каналу связи в сети, злоумышленник перехватывает сетевые пакеты для их изучения. В данных пакетах может содержаться конфиденциальная информация, так как некоторые протоколы передают информацию не используя шифрование. Помимо этого в трафике может содержаться информация о сети и её пользователях \cite{kader2003}. \begin{figure}[H] \centering \includegraphics[width=0.9\textwidth]{burpsuite.png} \caption{Пример программы, осуществляющей прослушивание трафика} \label{fig:burpsuite} \end{figure} При отсутствии шифрования пользователь будет думать, что общается напрямую с сервисом, но на самом деле весь трафик перехватывается посредником и происходит утечка конфиденциальной информации. Основным способом защиты от такого типа атак является шифрование трафика. Даже если злоумышленник сможет перехватить канал связи и начать <<слушать>> весь проходящий трафик, у него всё равно не получится получить никакой осмысленной информации за разумный промежуток времени. Помимо этого, современные технологии позволяют обнаруживать данный тип атак и предотвращать утечки информации. \subsection{Подмена IP-адресов} Смысл атаки заключается в формировании IP пакета данных с изменённым обратным IP адресом. Если на атакуемом сервере не включена защита от спуфинга (подмены) IP адресов, то такой пакет может отправиться во внутреннюю сеть и открыть доступ злоумышленникам. Обычно IP спуфинг ограничивается введением опасных данных или команд в существующий поток данных, который проходит между клиентом и сервером или при связи равноправных узлов сети. Чтобы обеспечить двунаправленное соединение, злоумышленник должен изменить все таблицы маршрутизации, чтобы направить на подмененный IP адрес. Иногда используется другой подход -- просто не беспокоиться по поводу получения какого-либо отклика от приложений. Если хакер пробует получить критически важный файл системы, ответы приложений ему не важны. Однако если хакер сможет изменить таблицы маршрутизации, чтобы направить на поддельный IP адрес, он сможет получать все сетевые пакеты, которые направляются на поддельный адрес и отвечать именно так, как отвечал бы доверенный пользователь \cite{borshevikov2011}. \subsection{DoS атака} DoS или Denial of Service атака -- вид атаки, при которой атакуемый сервис выводится из строя (затрудняется использование сервиса обычными пользователями). \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{ddos.png} \caption{Схема DDoS атаки с помощью зомби-сети} \label{} \end{figure} Данный тип атаки использует ограниченную пропускную способность атакуемых серверов. DoS атаки можно использовать для дальнейшего завладения атакуемой системой, так как при критических нагрузках могут происходить ошибки в ПО и, в следствие этого выдаваться критические данные о внутренней инфраструктуре сетевого ресурса. Но, обычно, DoS атаки проводятся исключительно для вывода сервиса из строя. Таким образом можно <<экономически>> давить на атакуемую систему, так как защита от DoS атаки или восстановление работы после атаки могут обойтись в значительную сумму денег. Для более эффективного вывода сервиса из строя используются распределённые DoS (Distributed DoS или DDoS) атаки. Для формирования зомби-сети используются вирусы, троянские программы или обычные купленные сервера. После этого зомби-сеть заполняет пропускную способность атакуемого сервиса, тем самым выводя его из строя \cite{kaspersky_ddos}. \subsection{XSS атака} XSS или Cross-Site Scripting -- вид атаки, при котором в выдаваемую сервисом страницу внедряется вредоносный код. XSS атаки занимают высокое место в списке основных уязвимостей веб-систем, однако им долгое время не уделяли должного внимания. Выделяются два вида XSS атак -- отражённый и хранимый. Отражённая атака происходит когда пользователь переходит по заранее подготовленной ссылке и в следствие уязвимостей сервера, пользователю выдаётся страница со встроенным вредоносным кодом. При этом код хранится только на стороне клиента и не является опасным для других пользователей. При хранимом типе XSS атаки вредоносный код встраивается в серверное ПО и позволяет заразить все клиенты, которые запрашивают страницу с вредоносным кодом с сервера. Благодаря этому могут пополняться зомби-сети, используемые для DDoS атак \cite{wiki_xss}. Второй тип атаки является наиболее опасным, так как представляет непосредственную угрозу для всех пользователей заражённого веб-сервиса. Несвоевременное обнаружение и закрытие этого вектора атаки может грозить разрушительными последствиями для атакованного сервиса. \section{Отслеживание следов в системе} Вариант 9. mspaint: запуск, чтение файла (ранее созданного без мониторинга), изменение представления <<Вид>> - убрать палитру, изменение рисунка, выход без изменения в файле. Для отслеживания следов, оставляемых программой mspaint после выполнения указанных действий я воспользовался программой procmon. При первом запуске procmon показывает множество <<событий>>, но большая часть из них лишняя для выполнения поставленной задачи (рис. \ref{fig:firstStart}). \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{procmon_start.png} \caption{procmon при первом запуске} \label{fig:firstStart} \end{figure} Для того, чтобы убрать лишнюю информацию можно установить фильтры. Я установил фильтры, которые делают какие-либо видимые изменения в системе, то есть оставляют следы. Среди них: RegCreateKey, RegRenameKey, RegDeleteKey, RegSetValue, RegDeleteValue, CreateFile, WriteFile (рис. \ref{fig:filters}). \begin{figure}[H] \centering \includegraphics[width=0.7\textwidth]{filters.png} \caption{Установленные фильтры} \label{fig:filters} \end{figure} Первыми среди событий появились CreateFile. Можно заметить, что все запросы на создание файлов произошли по пути <>. При детальном рассмотрении этих файлов я выяснил, что единственным реальным следом оказался тот файл, что был записан в <> (рис. \ref{fig:prefetch}), в то время как остальные запросы являются фантомными, на что указывает дата последнего изменения этих файлов (рис. \ref{fig:system32}). Это можно объяснить тем, что директория system32 является системной, а .dll файлы в ней являются системными библиотеками. В связи с этим в дальнейшем я буду опускать запросы такого рода, так как их не имеет смысла рассматривать. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{paint_prefetch.png} \caption{Файл в директории Prefetch} \label{fig:prefetch} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{sys32.png} \caption{Файлы в директории system32} \label{fig:system32} \end{figure} Следующей за этими событиями появилась небольшая группа записей в <>. (рис. \ref{fig:rngSeed}). Судя по названию, это <<семя>> для ГПСЧ. Данную запись нельзя считать следом, так как этот ключ реестра при каждом запуске системы разный и невозможно установить источник значения, записанного в нём. \begin{figure}[H] \centering \includegraphics[width=0.7\textwidth]{rng_seed.png} \caption{Изменение ключа RNG{\bsl}Seed} \label{fig:rngSeed} \end{figure} Далее следует множество однотипных операций типа RegCreateKey в ветке <>. Изучив эту ветку через программу regedit я обнаружил указанные ключи. Проверив на новой виртуальной машине, я выяснил, что данной ветки не существует при установке. Эти записи можно считать одним из искомых следов. (рис. \ref{fig:appletsCreate}) \begin{figure}[H] \centering \includegraphics[width=0.75\textwidth]{reg_create1.png} \caption{RegCreateKey в Applets и ключ в ветке Recent File List} \label{fig:appletsCreate} \end{figure} Далее в списке находится большое количество однотипных операций типа CreateFile (рис. \ref{fig:phantomFiles}). При детальном рассмотрении все записи оказались фантомными: дата последнего изменения файлов не изменилась. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{phantomFiles.png} \caption{Фантомные CreateFile} \label{fig:phantomFiles} \end{figure} С операциями RegCreateKey/RegSetValue (рис. \ref{fig:phantomRegistry}) другая ситуация -- записи в ветки HKLM и Explorer{\bsl}User Shell Folders не являются следами, так как они создаются при установке. А оставшиеся записи реестра в ветку HKCU можно считать следом. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{phantomRegistry.png} \caption{Операции записи в реестр} \label{fig:phantomRegistry} \end{figure} Также среди этих операций выделились записи в ветку ComDlg32 (рис. \ref{fig:comdlg}). В этой ветке хранятся записи о файлах, которые были открыты или сохранены с помощью диалогового окна Проводника Windows. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{comdlg.png} \caption{Обнаруженные операции записи в реестр} \label{fig:comdlg} \end{figure} В ветке OpenSaveMRU хранится список последних использованных файлов с определенным расширением (в данном случае bmp) (рис. \ref{fig:opensavemru}). \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{opensavemru.png} \caption{Ветка OpenSaveMRU} \label{fig:opensavemru} \end{figure} В ветке LastVisitedMRU хранится последний путь, который был открыт в диалоговом окне при использовании программы. В данном случае я в при работе с программой <> я открыл файл в директории <>. Название программы в этом ключе я выделил красным прямоугольником, а начало пути к директории -- синим (рис. \ref{fig:lastvisitedmru}). Обе эти ветки являются важными следами, так как по ним можно отследить какие файлы с помощью указанных программ открывались на данной системе. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{lastvisitedmru.png} \caption{Ветка LastVisitedMRU} \label{fig:lastvisitedmru} \end{figure} Далее я скрыл панель палитры, изменил файл и вышел без сохранения. В procmon снова появились однотипные операции, похожие на рассмотренные выше (рис. \ref{fig:appletsCreate}), но с одним важным исключением. Ключ <> появился впервые. Судя по его названию можно предположить, что он отвечает за видимость палитры. В нём записано значение 0, а во время эксперимента я скрыл панель палитры (рис. \ref{fig:visibleBar}). \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{visible_bar.png} \caption{Ключ Visible} \label{fig:visibleBar} \end{figure} При включении панели палитры этот ключ пропадает из реестра, из чего можно сделать вывод, что предположение было верным. Это важный след, который указывает на состояние, в котором находится программа после её закрытия. \conclusion В теоретической части отчёта я рассмотрел основные векторы сетевых атак и способы их предупреждения и предотвращения. Для предотвращения большинства атак необходима базовая компьютерная грамотность и внимательность со стороны пользователя, а также хорошо спланированная и защищённая архитектура веб-приложений со стороны программистов. Каждый день появляется огромное количество новых сетевых уязвимостей, но все они попадают в одну из базовых категорий, которые уже известны проектировщикам приложений, что позволяет им защитить от сетевых угроз обычных пользователей. В практической части отчета я изучил процесс отслеживания следов, которые оставляет за собой программа mspaint в системе Windows. Во время эксперимента мною были обнаружены следы, указывающие на недавние взаимодействия пользователя с файлами на диске. Также я обнаружил следы, указывающие на состояние, в котором находилась программа во время её закрытия. \begin{thebibliography}{99} \bibitem{borshevikov2011} Боршевников, А. Е. Сетевые атаки. Виды. Способы борьбы / А. Е. Боршевников. — Текст : непосредственный // Современные тенденции технических наук : материалы I Междунар. науч. конф. (г. Уфа, октябрь 2011 г.). — Уфа : Лето, 2011. — С. 8-13. — URL: \url{https://moluch.ru/conf/tech/archive/5/1115/} (дата обращения: 05.07.2020). \bibitem{kader2003} Кадер М. Разновидности сетевых атак. [Электронный ресурс] -- URL:~\url{https://www.cnews.ru/reviews/free/security/part7/net_attack.shtml} (дата обращения 05.07.2020) -- Загл. с экрана. Яз. рус. \bibitem{kaspersky_ddos} Распределенные сетевые атаки / DDoS [Электронный ресурс] -- URL:~\url{https://www.kaspersky.ru/resource-center/threats/ddos-attacks} (дата обращения 05.07.2020) -- Загл. с экрана. Яз. рус. \bibitem{kaspersky_scanner} Сканирование портов [Электронный ресурс] // Энциклопедия <<Касперского>> -- URL:~\url{https://encyclopedia.kaspersky.ru/glossary/port-scanning/} (дата обращения 05.07.2020) -- Загл. с экрана. Яз. рус. \bibitem{wiki_xss} Cross-site scripting [Электронный ресурс] // Википедия [Электронный ресурс] : свободная энциклопедия / текст доступен по лицензии Creative Commons Attribution-ShareAlike ; Wikimedia Foundation, Inc, некоммерческой организации. - Wikipedia®, 2001- . - URL: \url{https://en.wikipedia.org/wiki/Cross-site_scripting} (дата обращения: 05.07.2020). - Загл. с экрана. - Последнее изменение страницы: 14:49, 1 июля 2020 года. - Яз. англ. \bibitem{wiki_scanner} Port scanner [Электронный ресурс] // Википедия [Электронный ресурс] : свободная энциклопедия / текст доступен по лицензии Creative Commons Attribution-ShareAlike ; Wikimedia Foundation, Inc, некоммерческой организации. - Wikipedia®, 2001- . - URL: \url{https://en.wikipedia.org/wiki/Port_scanner} (дата обращения: 05.07.2020). -- Загл. с экрана. - Последнее изменение страницы: 16:56, 9 мая 2020 года. -- Яз. англ. \end{thebibliography} % \bibliographystyle{gost780uv} % \bibliography{thesis} \end{document}