pwncat es como netcat en esteroides con Firewall, evasión IDS/IPS, bind y reverse shell, shell autoinyectable y reenvío de puertos – y es totalmente programable con Python (PSE)
¿Alguna vez presionaste accidentalmente
Esto te tiene cubierto.
Aparte de eso, las características actuales de nc
, ncat
o socat
simplemente no satisfacían mis necesidades, también quería tener una sola herramienta que funcionara en máquinas más antiguas y más nuevas (de ahí la compatibilidad con Python 2+3). Lo más importante es que 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 en breve).
Tabla de Contenido
Instalar
La versión actual es: 0.1.0
Pip:
pip install pwncat
ArchLinux:
yay -S pwncat
BlackArch:
pacman -S pwncat
MacOS:
brew install pwncat
Esto es sólo un resumen rápido para empezar. Para técnicas más avanzadas ver usos y ejemplos.
Características
De un vistazo
pwncat
tiene muchas características, a continuación sólo una lista de características sobresalientes.
Característica | Descripción |
---|---|
PSE | Totalmente programable con el motor de scripts de Pwncat para permitir todo tipo de cosas extravagantes en el envío y recepción |
port scanning | Escaneo de puertos TCP y UDP con soporte de detección de versiones básicas |
Self-injecting rshell | Modo de auto-inyección para desplegarse e iniciar un shell inverso irrompible de vuelta a ti automáticamente |
Bind shell | Crear bind shells |
Reverse shell | Crear reverse shells |
Port Forward | Reenvío de puertos locales y remotos (Servidor/cliente proxy) |
Ctrl+c | Reverse shell puede reconectarse si accidentalmente pulsas Ctrl+c |
Detect Egress | Escanear y reportar los puertos de salida abiertos en el objetivo (salto de puerto) |
Evade FW | Evitar los firewalls de salida mediante puertos de salida de round-robin (salto de puerto) |
Evade IPS | Evitar los sistemas de prevención de intrusiones mediante la posibilidad de sortear los puertos de salida en las interrupciones de conexión (salto de puerto) |
UDP rev shell | Prueba esto con el tradicional netcat |
Stateful UDP | Fase de conexión de estado para el modo de cliente UDP |
TCP / UDP | Soporte completo de TCP y UDP |
IPv4 / IPv6 | Soporte de IPv4 e IPv6 de doble o simple stack |
Python 2+3 | Funciona con Python 2, Python 3, pypy2 y pypy3 |
Multiplataforma | Trabaja en Linux, MacOS y Windows mientras Python esté disponible. |
Compatibilidad | Usar el netcat , ncat o socat como cliente o servidor junto con pwncat |
Portable | Un único archivo que sólo utiliza paquetes centrales – no se requieren dependencias externas. |
Documentación
La documentación evolucionará con el tiempo.
- Los documentos del API se pueden encontrar aquí: pwncat.api.html
- La cobertura del tipo de Python se puede encontrar aquí: pwncat.type.html
- La página HTML de manual se puede encontrar aquí: pwncat.man.html
- La página del manual en bruto se puede encontrar aquí: pwncat.1
Usar
Teclas
Comportamiento | Linux | OSx | Windows |
---|---|---|---|
Quit (SIGINT) | |||
Quit (SIGQUIT) | ? | ? | |
Quit (SIGQUIT) | ? | ? | |
Quit STDIN | |||
Send (NL) | ? | ? | |
Send (EOL) | ? | ? | |
Send (EOL) |
[1] Sólo funciona cuando no se usa --no-shutdown y --keep.
Entonces se apagará su socket para enviar, señalando el extremo remoto y EOF en su socket.
Argumentos de Línea de Comando
Escribe pwncat -h
para ver todas las opciones disponibles.
Ejemplos
Cuando se conecta con un reverse shell o bind shell, notarás que ningún comando interactivo funcionará y al pulsar
python3 -c 'import pty; pty.spawn("/bin/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 <num> columns <cols> # <num> and <cols> values found above by 'stty size'
Escaneo de puertos
TCP
$ 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
UDP
$ 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
$ 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
netcat
$ 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
$ 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
FAQ
Q: ¿Es pwncat
compatible con netcat
?
A: Sí, es totalmente compatible en la forma en que se comporta en el modo de conexión, escucha y zero i/o. Incluso puedes mezclar pwncat
con netcat
, ncat
o herramientas similares.
Q: ¿Funciona en X?
A: 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 (ver pruebas de integración).
Q: Encontré un error. ¡Tengo que sugerir una nueva función! ¿Qué puedo hacer?
A: Para informes de errores o mejoras, por favor abre un issue aquí.
Q: ¿Cómo puedo apoyar este proyecto?
A: ¡Gracias por preguntar! Primero que nada, inicia este proyecto para darme un poco de retroalimentación y ver CONTRIBUTING.md para más detalles.
pwncat (este enlace se abre en una nueva ventana) por cytopia (este enlace se abre en una nueva ventana)
pwncat – netcat on steroids with Firewall, IDS/IPS evasion, bind and reverse shell, self-injecting shell and port forwarding magic – and its fully scriptable with Python (PSE)