Envia e-mails de teste com links de rastreamento para medir a conscientização dos funcionários.
Contexto
O elo mais fraco de qualquer arquitetura de segurança costuma ser o usuário. O Phishing Ético consiste em simular ataques reais para treinar a equipe. O objetivo deste módulo é:
- Automação de Envio: Disparar e-mails formatados em HTML para uma lista de alvos.
- Métrica de Cliques: Incluir um link de rastreamento (tracking link) que aponta para um servidor controlado pelo Pentester.
- Educação: Redirecionar o usuário que clicou para uma página de treinamento imediato ("Página de conscientização").
Possibilidades de Implementação
- Biblioteca
smtplib: Nativa do Python para envio de e-mails via protocolo SMTP. - Suporte a HTML/MIME: Enviar e-mails que pareçam profissionais, com imagens e botões, usando
email.mime. - Servidor de Tracking: Integrar com um mini-servidor Flask que registra o IP, User-Agent e o horário de cada clique no link.
Código
Este script utiliza um servidor SMTP (pode ser um local como o MailHog para testes ou um serviço de relay) para enviar a campanha.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_phishing_email(target_email, tracker_url):
# Configurações do servidor SMTP (Exemplo com MailHog ou servidor de teste)
smtp_server = "localhost"
smtp_port = 1025 # Porta comum para simuladores de SMTP
sender_email = "suporte@empresa-segura.com.br"
# Criando a estrutura da mensagem
message = MIMEMultipart("alternative")
message["Subject"] = "⚠️ Ação Necessária: Atualização de Segurança Obrigatória"
message["From"] = f"Segurança de TI <{sender_email}>"
message["To"] = target_email
# Corpo do e-mail em HTML
html = f"""
<html>
<body>
<p>Prezado colaborador,</p>
<p>Detectamos uma tentativa de acesso não autorizada em sua conta corporativa.</p>
<p>Para garantir sua segurança, solicitamos que valide suas credenciais no novo portal de autenticação:</p>
<p style="text-align: center;">
<a href="{tracker_url}?user={target_email}"
style="background-color: #eb4034; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px;">
VALIDAR MINHA CONTA AGORA
</a>
</p>
<p>Atenciosamente,<br>Equipe de Infraestrutura e Segurança.</p>
</body>
</html>
"""
part = MIMEText(html, "html")
message.attach(part)
try:
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.sendmail(sender_email, target_email, message.as_string())
print(f"[+] E-mail de teste enviado para: {target_email}")
except Exception as e:
print(f"[!] Erro ao enviar para {target_email}: {e}")
def main():
print("=" * 60)
print("Módulo: Phishing Automator | Projeto: 30 Lessons in Python")
print("=" * 60)
# URL do seu servidor de captura de cliques (ex: Lição 02: Flask Tracker)
tracking_base_url = "http://seu-servidor-pentest.com/track"
lista_alvos = ["funcionario1@alvo.com", "diretor@alvo.com"]
print(f"[*] Iniciando campanha de conscientização...")
for alvo in lista_alvos:
send_phishing_email(alvo, tracking_base_url)
print("\n" + "=" * 60)
print("[*] Disparos concluídos. Monitore os logs do seu servidor web.")
if __name__ == "__main__":
main()
Observações
- SPF/DKIM/DMARC: E-mails enviados de servidores não autorizados serão bloqueados ou cairão no Spam se o domínio alvo tiver essas proteções ativadas.
- Uso de SMTP Real: Para enviar via Gmail ou Outlook, você precisará usar "Senhas de Aplicativo" e SSL/TLS (
smtplib.SMTP_SSL). - Ética e Legalidade: Nunca utilize nomes de marcas reais (como Microsoft ou bancos) para ataques fora de um contrato de Pentest, pois isso pode acarretar problemas jurídicos graves.