---
# System prepended metadata

title: 'Практика №7. Скрытое туннелирование ICMP, DNS'

---

Практика №7. Скрытое туннелирование ICMP, DNS
===

## Выполение задания
Инфраструктура:
![](https://hackmd.io/_uploads/ryMZLGBB3.png)


### ICMP server
Переходим на Kali-Машину и установим необходимые зависимости:
![](https://hackmd.io/_uploads/HkRwER7r3.png)
Узнаем ip-адрес:
![](https://hackmd.io/_uploads/Bk7jq0XSn.png)
Создадим папку icmp, склонируем репу и перейдем в нее:
![](https://hackmd.io/_uploads/rkAZH0QBh.png)
Скомпилируем проект:
![](https://hackmd.io/_uploads/rkHrHCQS2.png)

Запустим hans сервер командой `./hans -s 10.1.2.0 -p q123`:
![](https://hackmd.io/_uploads/SyCo8AXB3.png)
Командой `ip a` видим что интерфейс поднялся:
![](https://hackmd.io/_uploads/HJ5lvC7H3.png)

### ICMP client
Переходим на Debian-машину и установим необходимые зависимости:
![](https://hackmd.io/_uploads/B1PP_RQH3.png)
Склонируем репу:
![](https://hackmd.io/_uploads/HkqxFAmr3.png)
Переходим в директорию и собираем проект:
![](https://hackmd.io/_uploads/B1_vKAQrh.png)
Запустим hans клиент и подключимся к серверу (Kali) командой `./hans -c 192.168.198.133 -p q123`
![](https://hackmd.io/_uploads/HJP7sCQSh.png)
Командой `ip a` видим что интерфейс поднялся:
![](https://hackmd.io/_uploads/S14oiRXrn.png)
Командой пинг на Сервере проверяем соединение с Клиентом:
![](https://hackmd.io/_uploads/r1NQ2R7Hh.png)
Также можно подключиться по ssh:
![](https://hackmd.io/_uploads/Skk52RQB3.png)
Захват ICMP-трафика в Wireshark:
![](https://hackmd.io/_uploads/ryYDWk4r3.png)

### Простое DNS-туннелирование
Переходим на Kali-Машину и устанавливаем необходимые зависимости:
![](https://hackmd.io/_uploads/BygWU7yVB2.png)
Переходим на Debian-Машину и устанавливаем необходимые зависимости:
![](https://hackmd.io/_uploads/Sk0PEkEH3.png)
Запуск сервера (`sudo iodined -P q123 10.99.99.1/24 -c i.example.com`):
![](https://hackmd.io/_uploads/ByJfS1VB3.png)
Переходим на клиент и редактируем resolv.conf, в качестве nameserver устанавливаем ip сервера (`nano /etc/resolv.conf`):
![](https://hackmd.io/_uploads/r1MyL-4Bn.png)
Запуск клиента (`iodine -P q123 i.example.com`):
![](https://hackmd.io/_uploads/ryRsUZVH3.png)
Узнаем ip на интерфейсе клиента(`ip a`):
![](https://hackmd.io/_uploads/r1KZDW4r3.png)
Командой пинг на Сервере проверяем соединение с Клиентом:
![](https://hackmd.io/_uploads/SJh4D-Erh.png)
Также можно подключиться по ssh:
![](https://hackmd.io/_uploads/BkfawZVr2.png)
Захват DNS-трафика в Wireshark:
![](https://hackmd.io/_uploads/S1TFYbNr2.png)

### Сложное DNS-туннелирование
#### Настройка DNS-server-internal
Настройка ip-адреса DNS-серверу:
![](https://hackmd.io/_uploads/B1zYGBVB3.png)
Настройка имени DNS-сервера:
![](https://hackmd.io/_uploads/rkIDI44H2.png)
Изменение даты:
![](https://hackmd.io/_uploads/ry5H_VVSn.png)
Добавление роли DNS-сервера:
![](https://hackmd.io/_uploads/HkDztVEBh.png)
Добавление в форвардеров ip-адрес внешнего DNS-сервера:
![](https://hackmd.io/_uploads/Skc2Br4Hn.png)
Проверка работоспособности:
![](https://hackmd.io/_uploads/B10XQH4r2.png)



#### Настройка DNS-server-external
Настройка имени DNS-сервера:
![](https://hackmd.io/_uploads/HyzFcVNBh.png)
Изменение даты:
![](https://hackmd.io/_uploads/ByNM1rVr2.png)
Добавление роли DNS-сервера:
![](https://hackmd.io/_uploads/H1aEVBEHn.png)
Добавление в форвардеров ip-адрес DNS Yandex:
![](https://hackmd.io/_uploads/H1_e_rNr3.png)
Проверка работоспособности на сервере:
![](https://hackmd.io/_uploads/H1coOH4Hn.png)
Проверка работоспособности на клиенте:
![](https://hackmd.io/_uploads/rkoYtSVBn.png)

#### Настройка запрета любого трафика, кроме DNS:
Редактируем resolv.conf на Kali внутри сети:
![](https://hackmd.io/_uploads/HkeoQTNH2.png)
Ответ от внутреннего DNS-сервера:
![](https://hackmd.io/_uploads/Sy7bE64r2.png)
Ответ от google DNS-сервера:
![](https://hackmd.io/_uploads/ryHDNTEH3.png)
Добавим правило, которое бы разрешало только трафик внутреннего DNS-сервера:
![](https://hackmd.io/_uploads/H1DSLaESh.png)
Также отключим правило, чтобы не было выхода в интернет:
![](https://hackmd.io/_uploads/HykmwTNrh.png)
Убедимся, что теперь запрещен любой трафик, кроме внтутреннего DNS:
![](https://hackmd.io/_uploads/ryZ6wp4B2.png)

![](https://hackmd.io/_uploads/SJrXOpEBn.png)

Делегирование DNS-зоны: 
Заходим на внешюю Kali-машину и узнаем ip:
![](https://hackmd.io/_uploads/Hy1tYpEB2.png)
Добавим DNS зону:
![](https://hackmd.io/_uploads/Ska2cTVH3.png)
Добавим запись, которая, будет перенаправлять на внешний DNS сервер:
![](https://hackmd.io/_uploads/Syc1n6Vr2.png)
Добавим запись, которая, будет перенаправлять на внешнюю Kali машину:
![](https://hackmd.io/_uploads/BkVRhTNr2.png)
Добавляем tunnel как delegate зону:
![](https://hackmd.io/_uploads/r1dSyCEB3.png)
Итого:
![](https://hackmd.io/_uploads/r1t-MREr2.png)
Проверка работоспособности:
![](https://hackmd.io/_uploads/HksJm1BSh.png)
Проверим tunnel:
![](https://hackmd.io/_uploads/SykUEJSBn.png)
Настроим сервер:
![](https://hackmd.io/_uploads/SkGPS1SHh.png)
Отредактируем sysctl.conf:
![](https://hackmd.io/_uploads/BJSpdJSSn.png)
Результат:
![](https://hackmd.io/_uploads/ByEGY1rSn.png)
Ввведем команду iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE - она изменяет исходный адрес пакетов на адрес хоста, через который они отправляются:
![](https://hackmd.io/_uploads/BkaA6bBSh.png)
Настроим клиент:
![](https://hackmd.io/_uploads/rkSXIkSr2.png)
Проверим  соединение:
![](https://hackmd.io/_uploads/Sk-U8JSHh.png)
Изменим дефолтный путь через dns интерфейс внешней машины:
![](https://hackmd.io/_uploads/SyY38JrHh.png)
Проверка соединения:
![](https://hackmd.io/_uploads/H1ZS-MBH2.png)
Захватим DNS трафик:
![](https://hackmd.io/_uploads/BkBBhbrrh.png)
Вход на сайт:
![](https://hackmd.io/_uploads/H1FhnZHrn.png)
