
Explore a rede usando a ferramenta VPNPivot
Às vezes fazemos testes de penetração externos e quando comprometemos o alvo remoto, gostaríamos de explorar a rede interna por trás e obter comprometimentos como dominar o Active Directory, acessar arquivos compartilhados, realizar ataques MITM ... etc. Existem muitas técnicas como port forwarding, socks4 ..., mas cada uma tem seus prós e contras. Esta é a razão pela qual as técnicas de VPN pivoting surgiram, elas resolvem todos os problemas encontrados ao usar ambas as técnicas mencionadas acima. Permite interagir com redes internas que são impedidas por firewalls, NATs... etc.
Esta é uma implementação da técnica de VPN pivoting no Linux usando sockets puros de baixo nível no dispositivo tap. Cria um túnel totalmente criptografado usando SSL/TLS entre a máquina alvo e o atacante.
VPN Pivot envia e recebe uma pilha TCP/IP totalmente criptografada sobre um socket de fluxo TCP, então os pares encaminham para o dispositivo/host desejado. O atacante explora a rede interna como se pertencesse a ela, com um endereço IP local obtido do servidor DHCP ou configurado estaticamente.
yaourt -S vpnpivot-git
A instalação é bastante simples, basta digitar os seguintes comandos:
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
O servidor VPNPivot deve ser executado na máquina do atacante, ele cria um dispositivo virtual (tap) com a possibilidade de alterar MAC (o que parece bom para spoofing e troca de MAC), endereço IP, MTU e também o proprietário da interface. Os dispositivos TAP interagem com a máquina alvo, enviando/recebendo quadros Ethernet brutos. Uma vez que o atacante obtém uma conexão de túnel bem-sucedida, o dispositivo tap pode interagir com o servidor DHCP da rede interna comprometida, receber/enviar pacotes broadcast e também reutilizar endereços IP.
Trabalhar com pivots é muito fácil, você só precisa saber o que cada opção faz:
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#
Todas as opções acima são opcionais, mas vale a pena explicá-las, mesmo que suas descrições sejam autoexplicativas:
O cliente VPN Pivot deve ser executado na máquina alvo, ele cria dois arquivos socket, o primeiro como cliente para o túnel e o segundo para interagir diretamente com a rede do dispositivo. Funciona como se estivéssemos criando um dispositivo tap indetectável, o que torna mais difícil de detectar.
Trabalhar com pivotc é mais fácil do que com o servidor, você só precisa não se confundir ao tentar conectá-lo ao pivots :
root@pwnies:~/VPNPivot# ./src/pivotc
Usage :
./src/pivotc <server IP> <server port> <locale IP> [MTU]
root@pwnies:~/VPNPivot#
As opções são:
Não há nada melhor do que uma demonstração ao vivo, por isso fiz um vídeo explicando o uso básico do VPNPivot, e o vídeo está no youtube.
É isso! aproveite seu pwning :-) Abraço!