A shell is a user interface for accessing an operating system's services, either through a command-line interface or graphical user interface. A bind shell opens a listener port on the target machine and waits for an incoming connection from the attacker. A reverse shell is when the target machine connects back to the attacking machine. Netcat and PowerShell can be used to create bind and reverse shells for command execution on remote systems. Examples show how netcat can be used to establish each type of shell connection between an attacker and victim machine.