# Практика №7. Скрытое туннелирование ICMP, DNS. Топология корпоритавной инфраструктуры. **1. ICMP туннелирование.** ![](https://i.imgur.com/vrImnbE.png) На Kali Linux создаем папку icmp при помощи команды `mkdir icmp`. И переходим в директорию `cd icmp`. ![](https://i.imgur.com/beATvdS.png) Клонируем репозиторий hans с github в папку icmp на Kali Linux при помощи команды `git clone https://github.com/friedrich/hans`. ![](https://i.imgur.com/ZSOKDBI.png) После чего переходим в папку hans командой `cd hans` и компилим проект командой `make`. ![](https://i.imgur.com/QsbI5Jg.png) Обновляем репозитории `apt update`, установим утилиты `net-tools` и запустим `hans`. ![](https://i.imgur.com/zo1Cyh8.png) Запускаем hans от root при помощи команды `./hans -s 10.1.2.0 -p eve@123`. И проверяем командой `ip a`, что у нас поднялся интерфейс `tun0`. ![](https://i.imgur.com/EErSMm7.png) Проделаем аналогичные действия на машинке `Linux-VPN`. Обновим репозитории `apt update` и установим Git `apt install git`. ![](https://i.imgur.com/ax8Xo5E.png) Кнолируем репозиторий. ![](https://i.imgur.com/krDFBaS.png) Переходим в папку ./hans `cd hans`. Устанавливаем make командй `apt install make` и net-tools командой `apt install net-tools` и g++ командой `apt install g++`. Собираем проект командой `make`. Подключаемся к серверу командой `./hans -c 192.168.110.129 -p eve@123` и проверяем `ip a`. Туннель отобразился. ![](https://i.imgur.com/FfiAEkn.png) С нашей домашней Windows подключаемся к Kali при помощи команды `ssh user@192.168.110.129`. Пингуем туннель 10.1.2.100 командой `ping 10.1.2.100` и подключаемяся по SSH к этому IP командой `ssh root@10.1.2.100` ![](https://i.imgur.com/ZHyYJx6.png) Посмотрим через `WireShark pfSense` на внутреннем интерфейсе `e1` трафик. Как видим, в `data` есть маркировка `hans`. ![](https://i.imgur.com/pgkhaQD.png) При пинге с машинки `Linux-VPN` какого-либо адреса, например `8.8.8.8`, данной маркировки нет, что говорит о том, что пакет старнадартный. ![](https://i.imgur.com/sXuX5TC.png) **2. Простое DNS-Туннелирование** Используем ту же самую корпоративную инфраструктуру. Установим утилиту `iodine` на `Kali Linux` и `Linux-VPN машинки` командой `apt install iodine`. Запустим на `Kali Linux` сервер `iodine` командой `iodined -P eve@123 10.99.99.1/24 -c i.efanov.com`. ![](https://i.imgur.com/aUvemqu.png) ![](https://i.imgur.com/O1NvxGp.png) Настроим наш клиент `Linux-VPN`. Пропишем в конфигурации DNS, IP нашей Kali машинки командой `nano /etc/resolv.conf`. ![](https://i.imgur.com/shPOg3C.png) Запускаем `iodine` с клиента `Linux-VPN` командой `iodine -P eve@123 i.efanov.com.` ![](https://i.imgur.com/yXGub7h.png) ![](https://i.imgur.com/90M5o8L.png) Посмотрим на трафик в Wireshark с фильтром DNS. Видим Malformed packer (непонятный DNS запрос). ![](https://i.imgur.com/pzX6zZF.png) **3. Сложное DNS-Туннелирование** Инфраструктура корпоративной сети выкгядит следующим образом. ![](https://i.imgur.com/yxG7MHY.png) Начнем с настройки внутреннего DNS-сервера на машинке DNS-Internal. Зададим `статический IP` на машине и укажем `DNS-сервер свой` чтобы DNS обращался к себе на 127.0.0.1. ![](https://i.imgur.com/olfyj6N.png) Обновим страницу Server Manager и установим DNS-сервер на машинке. ![](https://i.imgur.com/GWOLlqf.png) ![](https://i.imgur.com/Ih3gt8q.png) ![](https://i.imgur.com/mHOtYWS.png) Выполним аналогичную настройку на машинке `DNS-External`. Но сначала поменяем этому серверу имя. ![](https://i.imgur.com/XnRYDES.png) ![](https://i.imgur.com/fG1g5Us.png) Настроим `DNS` на машинке `DNS-Internal`, чтобы неизвестные DNS-запросы перенаправлялись на наш DNS-External. ![](https://i.imgur.com/fWOWZ90.png) ![](https://i.imgur.com/rhPd2v3.png) Здесь указываем IP машинки `DNS-External`. ![](https://i.imgur.com/FShRRAV.png) На машинке `DNS-External` cделаем `Forwarders` На сервер `DNS Яндекса`. ![](https://i.imgur.com/MpWZbpX.png) Теперь перейдем к настройке конфигурационного файла DNS на машинке `Kali-Linux внутри инфраструктуры`. ![](https://i.imgur.com/zvNtgce.png) ![](https://i.imgur.com/UwEvomG.png) Проверим работу DNS `dig` запросом ![](https://i.imgur.com/tBbriQi.png) Теперь заблокируем все DNS запросы изнутри организации через `фаервол` кроме DNS нашего сервера. Заходим в фаервол. ![](https://i.imgur.com/gRCYd3A.png) Переходим в `Rules -> LAN` ![](https://i.imgur.com/LzWDjnI.png) Добавляем правило и отключим доступ в Интернет. ![](https://i.imgur.com/LFpOusE.png) ![](https://i.imgur.com/sqF54d6.png) Проверяем работу DNS. Видим, что DNS внутреннего нашего сервера отвечает. ![](https://i.imgur.com/6nscyl0.png) Добавим новую зону на `внешнем DNS-External`. ![](https://i.imgur.com/fCdaYqb.png) ![](https://i.imgur.com/62qx1Hc.png) ![](https://i.imgur.com/dW1IiQz.png) Теперь создадим две записи ![](https://i.imgur.com/n7ByziR.png) В первой укажем IP нашей windows server машинки. Во второй укажем IP внешней Kali на которую будем делегировать. ![](https://i.imgur.com/5oDcLIl.png) Добавим делегирование. ![](https://i.imgur.com/gulpuY8.png) ![](https://i.imgur.com/hCh9jtM.png) ![](https://i.imgur.com/Unxb7NG.png) Сделаем пинг до delegate.mirea.tech с нашей внутренней Кали. ![](https://i.imgur.com/gShpDh2.png) Отправим dig NS запрос. Таким образом, DNS настроены правильно. Мы с нашей внутренней Кали попадаем на внешнюю Кали, где настроен DNS сервер. То есть сначала мы попадаем с Кали на наш DNS-Internal, DNS-Internal идет до DNS-External, DNS-External видит, что у него есть зона mirea.tech и у неё есть делегация на tunnel.mirea.tech. ![](https://i.imgur.com/DAzpk72.png) Далее запустим наш фейковый DNS-сервер на внешней (сервер) машинке Kali-2021. ![](https://i.imgur.com/jMJaxB1.png) ![](https://i.imgur.com/Lqbuazc.png) Запустим iodine с внутренней (клиент) машинки Kali-Linux. ![](https://i.imgur.com/sTDAWqP.png) Пингуем внешнюю DNS машинку. ![](https://i.imgur.com/i5FQ7I8.png) Теперь организуем доступ в интернет с внутренней машинки Кали. Для этого на внешней машинке Кали выполним настройку файлы `/etc/sysctl.conf`, чтобы она могла маршрутизировать трафик. ![](https://i.imgur.com/oSPlbxW.png) Перезагрузим настройки файла ![](https://i.imgur.com/hQbsQww.png) Настроим `IPTABLES`, чтобы выходить в наружу и иметь доступ в интернет. ![](https://i.imgur.com/y1heBhq.png) На внутренней машинке КАЛИ настроим маршруты. ![](https://i.imgur.com/pIRynQ9.png) И видим, что мы молучили доступ в интернет. ![](https://i.imgur.com/3IO7VsF.png) ![](https://i.imgur.com/uoiRbbP.png)