Now that we have understood the basics of subprocessing, multiprocessing, and so on, implementing a basic TCP reverse shell with Python is pretty straightforward. For this example, rev_tcp.py, we will be using the bash-based reverse TCP shell. In the later chapters of the book, we will see how to pass a reverse shell entirely with Python:
It should be noted that OS.dup2 is used to create a duplicate of a file descriptor in Python. The stdin is defined to be file descriptor 0, stdout is defined to be file descriptor 1, and stderr is defined to be file descriptor 2. The code line OS.dup2(s.fileno(),0) indicates that we should create a duplicate of stdin and redirect the traffic to the socket file, which happens to be on the localhost and port 1234 (where Netcat is listening). Finally, we invoke the shell in interactive mode and since we are not specifying...