pwncat netcat con Esteroides Firewall, evasión IDS IPS
pwncat netcat con Esteroides Firewall, evasión IDS IPS

pwncat: netcat con Esteroides con Firewall, evasión IDS/IPS…

CRÉDITOS NO HEREDADOS

El siguiente contenido es una traducción no oficial del repositorio original (Github) citado al final del artículo. La única intención es la comprensión de la herramienta en idioma español.

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 Ctrlc en reverse shell y desapareció para siempre? ¿Alguna vez esperaste por siempre que tu cliente se volviera a conectar contigo porque el Firewall no lo dejó salir? ¿Alguna vez tuviste una pérdida de conexión porque un IPS cerró puertos sospechosos? ¿Alguna vez necesitaste un reenvío rápido de puertos?

Esto te tiene cubierto.

Aparte de eso, las características actuales de ncncatsocat 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).

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ísticaDescripción
PSETotalmente programable con el motor de scripts de Pwncat para permitir todo tipo de cosas extravagantes en el envío y recepción
port scanningEscaneo de puertos TCP y UDP con soporte de detección de versiones básicas
Self-injecting rshellModo de auto-inyección para desplegarse e iniciar un shell inverso irrompible de vuelta a ti automáticamente
Bind shellCrear bind shells
Reverse shellCrear reverse shells
Port ForwardReenvío de puertos locales y remotos (Servidor/cliente proxy)
Ctrl+cReverse shell puede reconectarse si accidentalmente pulsas Ctrl+c
Detect EgressEscanear y reportar los puertos de salida abiertos en el objetivo (salto de puerto)
Evade FWEvitar los firewalls de salida mediante puertos de salida de round-robin (salto de puerto)
Evade IPSEvitar 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 shellPrueba esto con el tradicional netcat
Stateful UDPFase de conexión de estado para el modo de cliente UDP
TCP / UDPSoporte completo de TCP y UDP
IPv4 / IPv6Soporte de IPv4 e IPv6 de doble o simple stack
Python 2+3Funciona con Python 2, Python 3, pypy2 y pypy3
MultiplataformaTrabaja en Linux, MacOS y Windows mientras Python esté disponible.
CompatibilidadUsar el netcatncat o socat como cliente o servidor junto con pwncat
PortableUn ú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

ComportamientoLinuxOSxWindows
Quit (SIGINT)Ctrl+cCtrl+cCtrl+c
Quit (SIGQUIT)Ctrl+\??
Quit (SIGQUIT)Ctrl+4??
Quit STDINCtrl+dCtrl+dCtrl+z and Ctrl+Enter
Send (NL)Ctrl+j??
Send (EOL)Ctrl+m??
Send (EOL)EnterEnterEnter
[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

Tip

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

Cuando se conecta con un reverse shell o bind shell, notarás que ningún comando interactivo funcionará y al pulsar Ctrl+c terminará tu sesión. Para solucionarlo, tendrás que conectarlo a un TTY (hacerlo interactivo). A continuación te explicamos cómo hacerlo:

python3 -c 'import pty; pty.spawn("/bin/bash")'

Ctrl + z

# 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 netcatncat 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.

Dark Mode

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)

Más artículos
Kizuna Tool to encrypt and decrypt files using AES-256-GCM
Kizuna: Tool to encrypt and decrypt files using AES-256-GCM