
Explorez le réseau en utilisant l'outil VPNPivot
Parfois, lors de tests de pénétration externes, lorsque nous compromettons la cible distante, nous souhaitons explorer le réseau interne derrière et tirer parti de cette compromission, comme posséder Active Directory, accéder à des fichiers partagés, mener des attaques MITM... etc. Il existe de nombreuses techniques comme le port forwarding, socks4..., mais chacune a ses avantages et inconvénients. C'est pourquoi la technique de VPN pivoting a été développée ; elle résout tous les problèmes rencontrés en utilisant les deux techniques mentionnées ci-dessus. Elle vous permet d'interagir avec des réseaux internes bloqués par des pare-feux, NAT, etc.
Ceci est une implémentation de la technique de VPN pivoting sous Linux utilisant des sockets bas niveau purs au sein d'un périphérique tap. Il crée un tunnel entièrement chiffré utilisant SSL/TLS entre la machine cible et l'attaquant.
VPN Pivot envoie et reçoit une pile TCP/IP entièrement chiffrée via une socket TCP stream, puis les pairs la transmettent au périphérique/hôte souhaité. L'attaquant explore le réseau interne comme s'il en faisait partie avec une adresse IP locale obtenue du serveur DHCP ou configurée statiquement.
yaourt -S vpnpivot-git
L'installation est assez simple, tapez simplement les commandes suivantes :
root@pwnies:~# git clone https://github.com/0x36/VPNPivot.git
root@pwnies:~# cd VPNPivot
root@pwnies:~/VPNPivot# ./autogen.sh
root@pwnies:~/VPNPivot# ./configure
root@pwnies:~/VPNPivot# make && make install
Le serveur VPNPivot doit être exécuté sur la machine de l'attaquant. Il crée un périphérique virtuel (tap) avec la possibilité de changer l'adresse MAC (utile pour le spoofing et le changement de MAC), l'adresse IP, le MTU et également le propriétaire de l'interface. Les périphériques TAP interagissent avec la machine cible, ils envoient/reçoivent des trames Ethernet brutes. Une fois que l'attaquant obtient une connexion tunnel réussie, le périphérique tap peut interagir avec le serveur DHCP du réseau interne compromis, recevoir/envoyer des paquets broadcast et réutiliser des adresses IP.
Travailler avec pivots est très simple, il suffit de connaître chaque option :
root@pwnies:~/VPNPivot# ./src/pivots -h
__ _______ _ _ _____ _ _
\ \ / / __ \| \ | | __ (_) | |
\ \ / /| |__) | \| | |__) |__ _____ | |_
\ \/ / | ___/| . ` | ___/ \ \ / / _ \| __|
\ / | | | |\ | | | |\ V / (_) | |_
\/ |_| |_| \_|_| |_| \_/ \___/ \__|
VPNPivot server v1.0 by Simo36
-i --iface <device> Create a non persistent tap device
-I --ifconf <ip/mask> Inteface configuration (IP/MASK)
-p --port <port> Server port listener (default: 12345)
-m --mtu <size> Virtual devince MTU size (default: 1550)
-u --user <user> User device owner (OPTIONAL)
-H --hw <MAC> Set MAC address for the iface
-C --cert <server_cert> Filename of PEM certificate
-P --pkey <private_key> Filename of PEM private key
-v --verbose Verbose mode
-d Deamonize
root@pwnies:~/VPNPivot#
Toutes les options ci-dessus sont facultatives, mais elles méritent d'être expliquées même si leurs descriptions sont explicites :
Le client VPN Pivot doit être exécuté sur la machine cible. Il crée deux fichiers socket, le premier en tant que client pour le tunnel et le second pour interagir directement avec le réseau du périphérique. Cela fonctionne comme si nous créions un périphérique tap indétectable, ce qui le rend plus difficile à détecter.
Travailler avec pivotc est plus facile qu'avec le serveur, il faut simplement ne pas se tromper lorsque vous tentez de le connecter à pivots :
root@pwnies:~/VPNPivot# ./src/pivotc
Usage :
./src/pivotc <server IP> <server port> <locale IP> [MTU]
root@pwnies:~/VPNPivot#
Les options sont :
Il n'y a rien de mieux qu'une démonstration en direct, c'est pourquoi j'ai réalisé une vidéo expliquant l'utilisation de base de VPNPivot, et la vidéo est sur youtube.
Voilà ! Amusez-vous bien à pwn :-) À bientôt