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.