# ***Практика 7 Апасов Василий БСБО-06-20***
Практическая работа №7
Выполнил студент 3 курса:
Апасов Василий Игоревич
Группа:
БСБО-06-20
**Задание к практической работе №7**
* Скрытое туннелирование ICMP, DNS
**Решение**
Для работы был использован следующий стенд:

# ICMP
На Kali вне инфрастурктуры создаём папку и скачиваем необходимые утилиты:

Компилируем необходимый файл:

Скачиваем net-tools:

Запускаем hans в сети 10.1.2.0 с паролем eve@123:

Получаем новый интерфейс tun0:

Далее октрываем Debian, который находится внутри инфраструктуры, обновляем репозиторий, скачиваем git и скачиваем hans:

Скачиваем make, net-tools, и g++:


И компилируем командой make:

Запускаем систему и получаем новый интерфейс:

Теперь с внешней Kali мы можем подключиться по выданному адресу на Debian внутри инфраструктуры. Запустим wireshark и захватим трафик на внутреннем интерфейсе фаервола:



Мы видим, что при выводе каких-либо команд захватывается трафик, в том числе и по ICMP протоколу.
# DNS 1
На Kali вне инфратсруктуры и на Debian внутри инфрастурктуры скачиваем iodine:
apt install iodine
На Kali вне инфраструктуры запускаем сервер iodine на адресе 10.99.99.1/24 с паролем eve@123

Видим новый интерфейс dns0:

На Debian внутри инфрастурктуры заходим в /etc/resolv.conf и меняем dns настройки:

И теперь с этой машинки подключаемся к нашему iodine серверу:

Видим интерфейс dns0:

И теперь мы можем с внешней Kali подключиться по ssh до нашей Debian внутри инфраструктуры по адресу 10.99.99.2:

Откроем Wireshark и захватим трафик фаервола на внутреннем интерфейсе:

Мы видим, что пошли неопознанные пакеты по протоколу DNS.
# DNS hard
Дополним наш стенд двумя DNS серверами - внутренним и внешним, а также добавим Kali Linux внутрь инфраструктуры:

Для начала настроим внутренний DNS сервер
Заходим в настройки сети и ставим статический ip адрес:

Заходим в Server Manager и добавляем роль:


Зайдём в настройки DNS и добавим адрес DNS-External сервера, чтобы перенаправлять запросы:

Изменим адрес для DNS запросов на 127.0.0.1:

Зайдём на DNS-External и сменим имя компьютера и поставим нужный часовой пояс, чтобы не возникало ошибок:


Также добавим роль, как и на внутреннем сервере:


Зайдём в настройки DNS и в качестве forwarder[куда обращаться] укажем 77.88.8.8(yandex):

Проверим, работает ли наша система. Для этого попробуем пропинговать что-нибудь с внутреннего сервера:

Далее откроем нашу Kali внутри инфраструктуры, зайдём в /etc/resolv.conf и изменим конфигурацию так, чтобы наша машинка обращалась к внутреннему DNS серверу:

Проверим, проходит ли трафик через наши DNS сервера:

Видим, что пришёл ответ, значит всё работает.
Зайдём на фаервол и создадим правило, которое будет разрешать выходить только через наш внутренний DNS сервер(192.168.1.200):


Видим, что восьмёрки не пингуются, запросы не проходят, а значит выхода в интернет нет:


Отправим запрос через наш внутренний DNS сервер и видим, что ответ приходит:

Зайдём на DNS-External и добавим новую зону:

Создаём две новые записи, одна с адресом DNS-External, вторая с адресом внешней Kali(делегирование):

Создаём new delegation с адресом внешней кали и зоной delegate.mirea.tech:

Теперь попробуем пропинговать delegate.mirea.tech с внутренней Kali:

Видим, что адрес пингуется и определяется как адрес нашей внешней Kali.
Запрашиваем NS запись tunnel.mirea.tech:

Ответ получен.
Заходим на внешнюю Kali и запускаем фейковый DNS сервер с помощью утилиты iodine на домене tunnel.mirea.tech:

Получаем новый интерфейс dns0 со своим ip:

Заходим на внутреннюю Kali и подключаемся к нашему фейковому DNS серверу через iodine:

Получаем ip адрес на новом интерфейсе dns0:

Теперь видим, что у нас проходят пинги наружу инфраструктуры:

На внешней Kali заходим в /etc/sysctl.conf и разрешаем маршрутизацию трафика:

И разрешаем выход наружу:

На внутренней кали меняем ip route default так, чтобы весь трафик шёл через наш внешний сервер:

И теперь с внутренней Kali у нас появился доступ в интернет:


Откроем wireshark и захватим трафик, выходящий через eth0:

Видим обмен пакетами между нашими DNS серверами.