Практика №7. Скрытое туннелирование ICMP, DNS
===
## Выполение задания
Инфраструктура:

### ICMP server
Переходим на Kali-Машину и установим необходимые зависимости:

Узнаем ip-адрес:

Создадим папку icmp, склонируем репу и перейдем в нее:

Скомпилируем проект:

Запустим hans сервер командой `./hans -s 10.1.2.0 -p q123`:

Командой `ip a` видим что интерфейс поднялся:

### ICMP client
Переходим на Debian-машину и установим необходимые зависимости:

Склонируем репу:

Переходим в директорию и собираем проект:

Запустим hans клиент и подключимся к серверу (Kali) командой `./hans -c 192.168.198.133 -p q123`

Командой `ip a` видим что интерфейс поднялся:

Командой пинг на Сервере проверяем соединение с Клиентом:

Также можно подключиться по ssh:

Захват ICMP-трафика в Wireshark:

### Простое DNS-туннелирование
Переходим на Kali-Машину и устанавливаем необходимые зависимости:

Переходим на Debian-Машину и устанавливаем необходимые зависимости:

Запуск сервера (`sudo iodined -P q123 10.99.99.1/24 -c i.example.com`):

Переходим на клиент и редактируем resolv.conf, в качестве nameserver устанавливаем ip сервера (`nano /etc/resolv.conf`):

Запуск клиента (`iodine -P q123 i.example.com`):

Узнаем ip на интерфейсе клиента(`ip a`):

Командой пинг на Сервере проверяем соединение с Клиентом:

Также можно подключиться по ssh:

Захват DNS-трафика в Wireshark:

### Сложное DNS-туннелирование
#### Настройка DNS-server-internal
Настройка ip-адреса DNS-серверу:

Настройка имени DNS-сервера:

Изменение даты:

Добавление роли DNS-сервера:

Добавление в форвардеров ip-адрес внешнего DNS-сервера:

Проверка работоспособности:

#### Настройка DNS-server-external
Настройка имени DNS-сервера:

Изменение даты:

Добавление роли DNS-сервера:

Добавление в форвардеров ip-адрес DNS Yandex:

Проверка работоспособности на сервере:

Проверка работоспособности на клиенте:

#### Настройка запрета любого трафика, кроме DNS:
Редактируем resolv.conf на Kali внутри сети:

Ответ от внутреннего DNS-сервера:

Ответ от google DNS-сервера:

Добавим правило, которое бы разрешало только трафик внутреннего DNS-сервера:

Также отключим правило, чтобы не было выхода в интернет:

Убедимся, что теперь запрещен любой трафик, кроме внтутреннего DNS:


Делегирование DNS-зоны:
Заходим на внешюю Kali-машину и узнаем ip:

Добавим DNS зону:

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

Добавим запись, которая, будет перенаправлять на внешнюю Kali машину:

Добавляем tunnel как delegate зону:

Итого:

Проверка работоспособности:

Проверим tunnel:

Настроим сервер:

Отредактируем sysctl.conf:

Результат:

Ввведем команду iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE - она изменяет исходный адрес пакетов на адрес хоста, через который они отправляются:

Настроим клиент:

Проверим соединение:

Изменим дефолтный путь через dns интерфейс внешней машины:

Проверка соединения:

Захватим DNS трафик:

Вход на сайт:
