# Задание

## Настройка виртуального окружения

Перед выполнением основного задания лабораторной работы необходимо произвести установку лабораторного стенда.  В первой лабораторной работе установка и настройка лабораторного окружения производилась вручную в целях полного разбора процесса сборки ядра и загружаемого модуля. В данной работе производить ручную настройку виртуального окружения не нужно, поскольку все действия можно выполнить за три шага.&#x20;

### Шаг 1. Скачать Vagrantfile

В первую очередь необходимо скачать Vagrantfile последней версии перейдя по ссылке: <https://github.com/kolyandaemon/linux-hevd/releases/>. После скачанный файл необходимо скопировать в директорию, путь к которой должен содержать только латинские буквы.&#x20;

### Шаг 2. Установить виртуальную среду&#x20;

Далее необходимо в  директории, куда был скопирован файл, необходимо выполнить следующую команду:&#x20;

```
$ vagrant up
```

Чтобы открыть терминал в Windows 10 в директории достаточно навести курсор мыши на пустое пространство окна проводника, зажать клавишу `Shift` и нажать правую кнопку мыши. В появившемся контекстном меню выбрать поле "Открыть окно PowerShell здесь".

### Шаг 3. Выполнить сборку и установку модуля

После того как процесс настройки модуля будет завершен необходимо осуществить вход в виртуальную среду и запустить сценарий сборки и установки модуля. Это производиться тремя командами:&#x20;

```
$ vagrant ssh
$ cd linux-hevd
$ sh compile_and_insmod.sh
```

Сразу после выполнения команд процесс сборки и установки виртуального окружения можно считать завершенным.

{% embed url="<https://www.youtube.com/watch?v=gnDlMtZOlak&ab_channel=KolyanDaemon>" %}
Видеоинструкция&#x20;
{% endembed %}

## Изучение уязвимости&#x20;

Задание данной лабораторной работы состоит из нескольких этапов

### 1 этап&#x20;

С учетом приобретенных навыков в предыдущей лабораторной работе необходимо отключить следующие средства защиты: KASLR, SMEP, SMAP и stack canary. Это нужно для облегчения понимания функционирования уязвимости в ядре.&#x20;

### 2 этап

Далее необходимо собрать модуль ядра, установить его. Сделать это можно с помощью инструкции выше.  Также рекомендуется изучить исходные файлы функции, демонстрирующую уязвимость: [buffer\_overflow-stack.py](https://github.com/kolyandaemon/linux-hevd/blob/master/exploit/buffer_overflow-stack.py),  [hevd.py](https://github.com/kolyandaemon/linux-hevd/blob/master/exploit/hevd.py),  [Common.h](https://github.com/kolyandaemon/linux-hevd/blob/master/sources/HEVD/Linux/Common.h),  [BufferOverflowStack.c](https://github.com/kolyandaemon/linux-hevd/blob/master/sources/HEVD/Linux/BufferOverflowStack.c),  [BufferOverflowStack.h](https://github.com/kolyandaemon/linux-hevd/blob/master/sources/HEVD/Linux/BufferOverflowStack.h).

### 3 этап&#x20;

Необходимо выполнить системный вызов функции, демонстрирующую уязвимость CWE-121(Stack-based Buffer Overflow) при разных условиях: с выключенными механизмами защиты, с включенными механизмами защиты. Выполнить ту же операцию при таких же условия с "secure" версией модуля и представить результаты сравнения в виде отчета.
