Social Engineering in Penetration Testing: Techniques and Defenses