Shells are programs that provide a command-line interface to control a computer system. Reverse shells and bind shells are two types of shells that are used for malicious purposes. Reverse shells are initiated by the attacker and allow them to control a compromised system from a remote location.